Procházet zdrojové kódy

Merge branch 'feature/asyncOrder' of http://git.aseanbusiness.cn/qzyReal/market-admin-ui into feature/asyncOrder

qzyReal před 1 rokem
rodič
revize
d46257710a

+ 69 - 4
sa-frame/menu-list-sp.js

@@ -1,10 +1,10 @@
-// 此处定义所有有关 sa-plus 的路由菜单 
-// 如需添加自定义菜单,请不要更改此文件,请在 menu-list.js 里添加 (没有这个文件就新建) 
+// 此处定义所有有关 sa-plus 的路由菜单
+// 如需添加自定义菜单,请不要更改此文件,请在 menu-list.js 里添加 (没有这个文件就新建)
 window.menuList = window.menuList || [];
 window.menuList.unshift({
 		id: 'bas',
 		name: '身份相关',
-		isShow: false, // 隐藏显示 
+		isShow: false, // 隐藏显示
 		info: '身份相关权限,不显示在菜单上',
 		childList: [{
 				id: '1',
@@ -340,6 +340,28 @@ window.menuList.unshift({
 				]
 			},
 
+			{
+				id: 'tb-cooperative',
+				icon: 'el-icon-film',
+				name: '合作社列表',
+				url: 'sa-view/tb-cooperative/tb-cooperative-list.html',
+				childList: [{
+					id: 'tb-cooperative-add',
+					name: '添加合作社',
+					isShow: false
+				},
+					{
+						id: 'tb-cooperative-edit',
+						name: '更新合作社',
+						isShow: false
+					},
+					{
+						id: 'tb-cooperative-del',
+						name: '删除合作社',
+						isShow: false
+					},
+				]
+			},
 
 			{
 				id: 'tb-message',
@@ -425,6 +447,29 @@ window.menuList.unshift({
 					},
 				]
 			},
+			{
+				id: 'app-user',
+				icon: 'el-icon-user-solid',
+				name: 'app账号管理',
+				url: 'sa-view/app-user/app-user-list.html',
+				childList: [
+					{
+						id: 'app-user-add',
+						name: '添加',
+						isShow: false
+					},
+					{
+						id: 'app-user-edit',
+						name: '更新',
+						isShow: false
+					},
+					{
+						id: 'app-user-del',
+						name: '删除',
+						isShow: false
+					},
+				]
+			},
 		]
 	}, {
 		id: 'trade-manager',
@@ -500,7 +545,7 @@ window.menuList.unshift({
 				id: 'order-list',
 				name: '订单管理',
 				parent: true,
-				icon: 'el-icon-s-grid',
+				//icon: 'el-icon-s-grid',
 				childList: [
 					{
 						id: 'ht-trade-settlement',
@@ -545,6 +590,26 @@ window.menuList.unshift({
 						]
 					},
 					{
+						id: 'tb-import-order',
+						name: '进口申报单',
+						url: 'sa-view/tb-import-order/tb-import-order-list.html',
+						childList: [
+							{id:'tb-import-order-add',name:'订单添加',isShow:false},
+							{id:'tb-import-order-edit',name:'订单更新',isShow:false},
+							{id:'tb-import-order-del',name:'订单删除',isShow:false},
+						]
+					},
+					{
+						id: 'tb-import-goods',
+						name: '进口申报单商品管理',
+						url: 'sa-view/tb-import-goods/tb-import-goods-list.html',
+						childList: [
+							{id:'tb-import-goods-add',name:'订单添加',isShow:false},
+							{id:'tb-import-goods-edit',name:'订单更新',isShow:false},
+							{id:'tb-import-goods-del',name:'订单删除',isShow:false},
+						]
+					},
+					{
 						id: 'tb-orders',
 						name: '二级市场订单',
 						url: 'sa-view/tb-orders/tb-orders-list.html',

+ 122 - 83
sa-view-sp/console/com-chart-1.vue

@@ -1,108 +1,147 @@
 <!-- 统计图1 -->
 <template>
-	<div class="echarts-div" id='bar-chart' ref="bar-chart"></div>
+	<div class="echarts-div" id="bar-chart" ref="bar-chart" style="height: 220px;"></div>
 </template>
 
 <script>
-	module.exports = {
-		data() {
-			return {
-				
+module.exports = {
+	props: {
+		chartData: {
+			type: Array,
+			required: true
+		},
+		type: {
+			type: String,
+			default: 'bar'
+		}
+	},
+	data() {
+		return {};
+	},
+	watch: {
+		chartData: {
+			deep: true,
+			handler(val) {
+				this.setOptions(val);
 			}
 		},
-		methods: {
-			// 刷新柱状图
-			f5BarChart: function() {
-				// ===========================================  定义数据 
-				var x_name = '';	// new Date().getFullYear() + "年"; // x轴名称
-				var y_name = "注册数量"; // y轴名称
-				var dataArray = []; // 坐标X轴数据
-				var valueArray = []; //  坐标Y轴数据
-			
-				var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
-				for (var i in arr) {
-					i = parseInt(i) + 1;
-					dataArray.push(i + '月');
-					if (i < 10) {
-						i = "0" + i;
+		type: {
+			deep: true,
+			handler(val) {
+				this.setOptions(this.chartData);
+			}
+		}
+	},
+	created() {
+		// 刷新所有图标数据
+		this.$nextTick(() => {
+			this.setOptions(this.chartData);
+		});
+	},
+	methods: {
+		// 刷新柱状图
+		setOptions: function (chartData) {
+			let xAxisData = [];
+			let seriesData = [];
+			if (chartData) {
+				chartData.forEach((item, index) => {
+					xAxisData.push(item.name + '月份');
+					seriesData.push(item.value);
+				});
+			}
+			//开始渲染
+			var ele = this.$refs['bar-chart'];
+			var myChart = echarts.init(ele);
+			var option = {
+				color: ['rgba(37, 97, 239, 1)'],
+				tooltip: {
+					trigger: 'axis',
+					formatter: '{b} 交易额:{c}',
+					axisPointer: {
+						type: 'shadow'
 					}
-					i = i + "";
-					valueArray.push(sa.randomNum(100, 1000) || 0);
-				}
-				
-				// ===========================================  开始渲染
-			
-				var ele = this.$refs['bar-chart'];
-				var myChart = echarts.init(ele);
-				var option = {
-					tooltip: {
-						trigger: 'axis',
-						formatter: '{b}<br/> ' + y_name + ':{c}',
-						axisPointer: {
-							type: 'shadow'
-						}
-					},
-					grid:{x: 50, y: 30, x2: 25, y2: 25},	//设置canvas内部表格的内距
-					toolbox: {
-						show: true,
-						top: 0,
-						feature: {
-							saveAsImage: {
-								show: true
+				},
+				grid: { x: 50, y: 30, x2: 25, y2: 25 }, //设置canvas内部表格的内距
+				xAxis: [
+					{
+						type: 'category',
+						data: xAxisData,
+						axisTick: {
+							show: false
+						},
+						axisLine: {
+							lineStyle: {
+								color: '#e6e6e6'
+							}
+						},
+						axisLabel: {
+							show: true,
+							textStyle: {
+								color: '#545555',
+								fontSize: '14'
 							}
 						}
-					},
-					xAxis: {
-						name: x_name,
-						type: 'category',
-						// axisLabel: {
-						// 	'interval': 0
-						// }, //强制不缩略x轴刻度,
-						data: dataArray
-					},
-					yAxis: {
-						name: y_name,
-						type: 'value'
-					},
-					series: [{
-						name: y_name,
-						data: valueArray,
-						type: 'bar',
-						label: {
-							normal: {
-								show: true,
-								position: 'top',
-								formatter: '{c}'
+					}
+				],
+				yAxis: [
+					{
+						type: 'value',
+						minInterval: 1,
+						axisTick: {
+							show: false
+						},
+						splitArea: {
+							show: false
+						},
+						splitLine: {
+							lineStyle: {
+								color: '#e6e6e6',
+								width: 0.7
+							}
+						},
+						axisLine: {
+							lineStyle: {
+								color: '#e6e6e6'
 							}
 						},
+						axisLabel: {
+							textStyle: {
+								color: '#545555'
+							}
+						}
+					}
+				],
+				series: [
+					{
+						type: this.type,
+						barWidth: '40%',
+						data: seriesData,
+						smooth: true,
 						itemStyle: {
 							normal: {
-								color: '#5DB1FF',
+								opacity: 1,
+								barBorderRadius: [3, 3, 0, 0],
+								areaStyle: {
+									color: '#8fc3f8'
+								},
 								label: {
 									show: true,
+									position: 'top',
 									textStyle: {
-										color: 'black'
+										color: '#545555',
+										fontSize: 14
 									}
 								}
 							}
 						}
-					}]
-				};
-				myChart.setOption(option);
-				window.myChartList.push(myChart);
-				// window.myChartList[0] = myChart;
-				// myChartList[1] = myChart;
-			},
-		},
-		created() {
-			// 刷新所有图标数据
-			this.$nextTick(function() {
-				this.f5BarChart();
-			});
+					}
+				]
+			};
+			myChart.setOption(option);
+			window.myChartList.push(myChart);
 		}
 	}
+};
 </script>
 
-<style scoped>
-	
-</style>
+<style scoped></style>

+ 68 - 80
sa-view-sp/console/com-sta-data.vue

@@ -3,55 +3,55 @@
 	<el-row :gutter="14">
 		<el-col :lg="4" :sm="8" :xs="24">
 			<div class="sa-wnk">
-				<img src="../../static/icon/icon-user.png" >
+				<img src="../../static/icon/icon-user.png" />
 				<div class="sa-wnk-tv">
-					<p class="sa-wnk-title">用户</p>
-					<p class="sa-wnk-value">{{sta.userCount}}</p>
+					<p class="sa-wnk-title">边民数量</p>
+					<p class="sa-wnk-value">{{ sta.bm }}</p>
 				</div>
 			</div>
 		</el-col>
 		<el-col :lg="4" :sm="8" :xs="24">
 			<div class="sa-wnk">
-				<img src="../../static/icon/icon-goods.png" >
+				<img src="../../static/icon/icon-goods.png" />
 				<div class="sa-wnk-tv">
-					<p class="sa-wnk-title">商品</p>
-					<p class="sa-wnk-value">{{sta.goodsCount}}</p>
+					<p class="sa-wnk-title">收购商数量</p>
+					<p class="sa-wnk-value">{{ sta.purchaser }}</p>
 				</div>
 			</div>
 		</el-col>
 		<el-col :lg="4" :sm="8" :xs="24">
 			<div class="sa-wnk">
-				<img src="../../static/icon/icon-order.png" >
+				<img src="../../static/icon/icon-order.png" />
 				<div class="sa-wnk-tv">
-					<p class="sa-wnk-title">订单</p>
-					<p class="sa-wnk-value">{{sta.orderCount}}</p>
+					<p class="sa-wnk-title">全部订单</p>
+					<p class="sa-wnk-value">{{ sta.orders }}</p>
 				</div>
 			</div>
 		</el-col>
 		<el-col :lg="4" :sm="8" :xs="24">
 			<div class="sa-wnk">
-				<img src="../../static/icon/icon-article.png" >
+				<img src="../../static/icon/jyz.png" />
 				<div class="sa-wnk-tv">
-					<p class="sa-wnk-title">文章</p>
-					<p class="sa-wnk-value">{{sta.articleCount}}</p>
+					<p class="sa-wnk-title">交易中</p>
+					<p class="sa-wnk-value">{{ sta.totalMoney-sta.finishMoney }}</p>
 				</div>
 			</div>
 		</el-col>
 		<el-col :lg="4" :sm="8" :xs="24">
 			<div class="sa-wnk">
-				<img src="../../static/icon/icon-comment.png" >
+				<img src="../../static/icon/finishMoney.png" />
 				<div class="sa-wnk-tv">
-					<p class="sa-wnk-title">评论</p>
-					<p class="sa-wnk-value">{{sta.commentCount}}</p>
+					<p class="sa-wnk-title">完成交易额</p>
+					<p class="sa-wnk-value">{{ sta.finishMoney }}</p>
 				</div>
 			</div>
 		</el-col>
 		<el-col :lg="4" :sm="8" :xs="24">
 			<div class="sa-wnk">
-				<img src="../../static/icon/icon-money.png" >
+				<img src="../../static/icon/icon-money.png" />
 				<div class="sa-wnk-tv">
-					<p class="sa-wnk-title">额</p>
-					<p class="sa-wnk-value">{{sta.moneyCount}}</p>
+					<p class="sa-wnk-title">累计交易额</p>
+					<p class="sa-wnk-value">{{ sta.totalMoney }}</p>
 				</div>
 			</div>
 		</el-col>
@@ -59,71 +59,59 @@
 </template>
 
 <script>
-	module.exports = {
-		data() {
-			return {
-				// 统计数据 
-				sta: {
-					userCount: 0,
-					goodsCount: 0,
-					orderCount: 0,
-					articleCount: 0,
-					commentCount: 0,
-					moneyCount: 0,
-				},
-			}
-		},
-		methods: {
-			// 数值跳动 
-			// 对象、属性、结束值、所用时间 
-			slowMotion: function(obj, prop, endValue, time) {
-				let timeNow = 0; 
-				let fn = function() {
-					// 如果已经接近 or 时间已到,则立即结束 
-					var jdz = Math.abs(obj[prop] - endValue);
-					if(jdz < 2 || timeNow >= time) {
-						// console.log('到点了');
-						obj[prop] = endValue;
-					} else {
-						if(jdz < 100) {
-							obj[prop] += 1;
-						} else {
-							obj[prop] += parseInt((endValue - obj[prop]) / 10);		 // 平均一下 
-						}
-						timeNow += 30;
-						setTimeout(fn, 30);
-					}
-				}
-				fn();
-			},
-			// 设置统计数据的数值 
-			setStaDataValue: function(staData) {
-				for (let key in staData) {
-					this.slowMotion(this.sta, key, staData[key], 3000);
-				}
-			},
-		},
-		created() {
-			// 写入数据
-			this.setStaDataValue({
-				userCount: 12361,
-				goodsCount: 12541,
-				orderCount: 63222,
-				articleCount: 10368,
-				commentCount: 2048,
-				moneyCount: 13654.32,
-			});
+module.exports = {
+	props: {
+		sta: {
+			type: Object,
+			default:{}
 		}
+	},
+	data() {
+		return {};
+	},
+	methods: {
+
+	},
+	created() {
+		
 	}
+};
 </script>
 
 <style scoped>
-	/* 第一行 */
-	.sa-wnk{background-color: #FFF; border: 1px #ddd solid; margin-bottom: 14px; min-height: 100px; 
-		cursor: pointer; transition: all 0.3s; overflow: hidden;}
-	.sa-wnk:hover{box-shadow: 0 0 20px #999;}
-	.sa-wnk img{float: left; line-height: 100px; margin: 25px 0px 0 20px; width: 50px; height: 50px; vertical-align: middle;}
-	.sa-wnk .sa-wnk-tv{float: left; margin-left: 10px; max-width: calc(100% - 100px);}
-	.sa-wnk-title{margin-top: 25px; font-size: 16px;}
-	.sa-wnk-value{margin-top: 4px; font-size: 24px; padding-bottom: 20px;}
+/* 第一行 */
+.sa-wnk {
+	background-color: #fff;
+	border: 1px #ddd solid;
+	margin-bottom: 14px;
+	min-height: 100px;
+	cursor: pointer;
+	transition: all 0.3s;
+	overflow: hidden;
+}
+.sa-wnk:hover {
+	box-shadow: 0 0 20px #999;
+}
+.sa-wnk img {
+	float: left;
+	line-height: 100px;
+	margin: 25px 0px 0 20px;
+	width: 50px;
+	height: 50px;
+	vertical-align: middle;
+}
+.sa-wnk .sa-wnk-tv {
+	float: left;
+	margin-left: 10px;
+	max-width: calc(100% - 100px);
+}
+.sa-wnk-title {
+	margin-top: 25px;
+	font-size: 16px;
+}
+.sa-wnk-value {
+	margin-top: 4px;
+	font-size: 24px;
+	padding-bottom: 20px;
+}
 </style>

+ 57 - 28
sa-view-sp/console/console-main.html

@@ -13,40 +13,36 @@
 			.s-row{/* background-color: antiquewhite; */ padding: 0 14px; padding-bottom: 0px;}
 			.s-row-1{padding-top: 14px;}
 			.s-row-2{/* margin-top: -10px; */}
-			.s-row-2 .el-card .el-card__body{height: 250px;}
+			.s-row-2 .el-card .el-card__body{height: 230px;}
 			.s-row-3 .el-card{/* height: 100%; */}
-
 			.echarts-div{height: 100%;}
 			.s-row-3 .el-alert{margin-bottom: 14px;}
+			.years {float: right;margin-top: -63px;overflow: hidden;}
+			.ctype {float: left;margin-right: 30px;}
+			.year {float: left;padding: 5px 10px;background-color: #f6f6f6;cursor: pointer;font-size: 14px;color: #545555;}
+			.year.active{background-color: rgba(37, 97, 239, 1);color: white;}
 		</style>
 	</head>
 	<body>
 		<div class="vue-box" style="display: none;" :style="'display: block;'">
-
 			<!-- ------------ 第一栏 - 统计数据 ------------- -->
 			<div class="s-row s-row-1">
-				<com-sta-data></com-sta-data>
+				<com-sta-data :sta="sta"></com-sta-data>
 			</div>
-
 			<!-- ------------ 第二栏 - 图表 ------------- -->
 			<div class="s-row s-row-2">
-				<el-row :gutter="14">
-					<el-col :lg="8" :xs="24">
-						<el-card shadow="never" header="柱状图">
-							<com-chart-1></com-chart-1>
-						</el-card>
-					</el-col>
-					<el-col :lg="8" :xs="24">
-						<el-card shadow="never" header="饼图">
-							<com-chart-2></com-chart-2>
-						</el-card>
-					</el-col>
-					<el-col :lg="8" :xs="24">
-						<el-card shadow="never" header="折线图">
-							<com-chart-3></com-chart-3>
-						</el-card>
-					</el-col>
-				</el-row>
+				<el-card shadow="never" header="订单交易额">
+					<div class="years">
+						<div class="ctype">
+							<div class="year" :class="{ active: currentType == index }" @click="currentType = index" v-for="(item, index) in types" :key="index">{{ item.name }}</div>
+						</div>
+						<div class="year" :class="{ active: currentYear == index }" v-for="(item, index) in year" :key="index" @click="selectYear(index)">{{ item.year}}年</div>
+					</div>
+					<com-chart-1 :chart-data="chartData.money" :type="types[currentType].value"></com-chart-1>
+				</el-card>
+				<el-card shadow="never" header="订单交易量">
+					<com-chart-1 :chart-data="chartData.count" :type="types[currentType].value"></com-chart-1>
+				</el-card>
 			</div>
 		</div>
 		<script src="https://unpkg.com/vue@2.6.10/dist/vue.js"></script>
@@ -57,7 +53,7 @@
 		<script src="https://unpkg.com/echarts@4.6.0/dist/echarts-en.min.js"></script>
 		<script src="../../static/sa.js"></script>
 		<script type="text/javascript">
-			var app = new Vue({
+			new Vue({
 				components: {
 					'com-sta-data': httpVueLoader('com-sta-data.vue'),
 					'com-chart-1': httpVueLoader('com-chart-1.vue'),
@@ -66,14 +62,46 @@
 					'com-stack': httpVueLoader('com-stack.vue'),
 					'com-update-log': httpVueLoader('com-update-log.vue'),
 					'com-origin': httpVueLoader('com-origin.vue'),
-					// 'com-intro': httpVueLoader('com-intro.vue'),
 				},
 				el: '.vue-box',
 				data: {
-				},
-				methods: {
+					sta: {bm: 0,purchaser: 0,orderCount: 0,totalMoney: 0,orders: 0,finishMoney: 0,},
+					chartData: {money: [],count: []},
+					year: [], //订单所有年份
+					currentType: 0, //当前图表类型
+					currentYear: 0, //当前年份
+					types: [{name: '柱状图',value: 'bar'}, {name: '折线图',value: 'line'}],
 				},
 				mounted: function() {
+					this.getYear();
+					this.getUsers();
+				},
+				methods: {
+					getOrderStatistics() {
+						sa.ajax('/level-two-server/TbOrders/orderStatistics', {year: this.year[this.currentYear].year}, res => {
+							this.chartData = res.data;
+						});
+					},
+					getUsers() {
+						sa.ajax('/sp-admin/AppUser/selectUsers', res => {
+							this.sta.bm=parseInt(res.data.bmzz)+parseInt(res.data.bm);
+							this.sta.purchaser=res.data.purchaser;
+						});
+					},
+					getYear() {
+						sa.ajax('/level-two-server/TbOrders/selectYear', res => {
+							this.year = res.data.year;
+							this.currentYear = this.year.length - 1;
+							this.sta.totalMoney = res.data.count.totalMoney;
+							this.sta.finishMoney = res.data.count.finishMoney;
+							this.sta.orders = res.data.count.orders;
+							this.getOrderStatistics();
+						});
+					},
+					selectYear(index) {
+						this.currentYear = index;
+						this.getOrderStatistics();
+					}
 				}
 			})
 
@@ -87,7 +115,8 @@
 		</script>
 		<!-- 百度统计(下载到本地后请删除) -->
 		<div style="height: 0px; overflow: hidden;">
-			<script type="text/javascript" src="https://v1.cnzz.com/z_stat.php?id=1279021391&web_id=1279021391"></script>
+			<script type="text/javascript" src="https://v1.cnzz.com/z_stat.php?id=1279021391&web_id=1279021391">
+			</script>
 		</div>
 	</body>
-</html>
+</html>

+ 22 - 44
sa-view/app-user/app-user-add.html

@@ -28,13 +28,8 @@
 					<el-form v-if="m">
 						<sa-item type="text" name="手机号码" v-model="m.phone" br></sa-item>
 						<sa-item type="text" name="姓名" v-model="m.name" br></sa-item>
-						<sa-item type="enum" name="类型" v-model="m.userType" :jv="{1: '边民', 2: '组长', 3: '商户', 4: '收购商', 5: '司机'}" jtype="3" br></sa-item>
-						<!-- <sa-item type="text" name="外联id,user_type=1=>边民ID;user_type=3=>商户ID" v-model="m.fkId" br></sa-item> -->
+						<sa-item type="enum" name="类型" v-model="m.userType" :jv="{1: '普通边民', 2: '边民组长', 3: '收购商', 4: '司机', 5: '外籍商户', 6: '合作社'}" jtype="3" br></sa-item>
 						<sa-item type="enum" name="状态" v-model="m.status" :jv="{0: '禁用', 1: '启用'}" jtype="3" br></sa-item>
-						<sa-item type="enum" name="是否认证" v-model="m.auth" :jv="{0: '未认证', 1: '已认证'}" jtype="3" br></sa-item>
-						<sa-item type="text" name="人证时间" v-model="m.authTime" br></sa-item>
-						<sa-item type="text" name="登录次数" v-model="m.loginCount" br></sa-item>
-						<sa-item type="text" name="上次登录时间" v-model="m.lastLoginTime" br></sa-item>
 						<sa-item name="" class="s-ok" br>
 							<el-button type="primary" icon="el-icon-plus" @click="ok()">保存</el-button>
 						</sa-item>
@@ -48,59 +43,42 @@
 			</div>
 		</div>
         <script>
-			
+
 			var app = new Vue({
 				components: {
 					"sa-item": httpVueLoader('../../sa-frame/com/sa-item.vue')
 				},
 				el: '.vue-box',
 				data: {
-					id: sa.p('id', 0),		// 获取超链接中的id参数(0=添加,非0=修改) 
-					m: null,		// 实体对象 
+					id: sa.p('id', 0),		// 获取超链接中的id参数(0=添加,非0=修改)
+					m: null,		// 实体对象
 				},
 				methods: {
-					// 创建一个 默认Model 
+					// 创建一个 默认Model
 					createModel: function() {
 						return {
-							phone: '',		// 手机号码 
-							name: '',		// 姓名 
-							userType: '',		// 类型(1=边民,2=组长,3=商户,4=收购商,5=司机) 
-							fkId: '',		// 外联id,user_type=1=>边民ID;user_type=3=>商户ID 
-							status: '',		// 状态(0=禁用,1=启用) 
-							auth: '',		// 是否认证(0=未认证,1=已认证) 
-							authTime: '',		// 人证时间 
-							loginCount: '',		// 登录次数 
-							lastLoginTime: '',		// 上次登录时间 
+							phone: '',		// 手机号码
+							name: '',		// 姓名
+							userType: '',	// 类型{1=普通边民,2=边民组长,3=收购商,4=司机,5=外籍商户,6=合作社}
+							status: '',		// 状态(0=禁用,1=启用)
 						}
 					},
-					// 提交数据 
+					// 提交数据
 					ok: function(){
-						// 表单校验 
+						// 表单校验
 						let m = this.m;
-						// sa.checkNull(m.id, '请输入 [主键]');
 						sa.checkNull(m.phone, '请输入 [手机号码]');
 						sa.checkNull(m.name, '请输入 [姓名]');
 						sa.checkNull(m.userType, '请输入 [类型]');
-						sa.checkNull(m.fkId, '请输入 [外联id,user_type=1=>边民ID;user_type=3=>商户ID]');
 						sa.checkNull(m.status, '请输入 [状态]');
-						sa.checkNull(m.auth, '请输入 [是否认证]');
-						sa.checkNull(m.authTime, '请输入 [人证时间]');
-						sa.checkNull(m.loginCount, '请输入 [登录次数]');
-						sa.checkNull(m.lastLoginTime, '请输入 [上次登录时间]');
-						// sa.checkNull(m.createTime, '请输入 [创建时间]');
-						sa.checkNull(m.updateById, '请输入 [更新者id]');
-						sa.checkNull(m.updateByName, '请输入 [更新者名称]');
-						// sa.checkNull(m.updateTime, '请输入 [更新时间]');
-				
+
 						// 开始增加或修改
-						this.m.createTime = undefined;		// 不提交属性:创建时间
-						this.m.updateTime = undefined;		// 不提交属性:更新时间
 						if(this.id <= 0) {	// 添加
-							sa.ajax('/AppUser/add', m, function(res){
-								sa.alert('增加成功', this.clean); 
+							sa.ajax('/sp-admin/AppUser/add', m, function(res){
+								sa.alert('增加成功', this.clean);
 							}.bind(this));
 						} else {	// 修改
-							sa.ajax('/AppUser/update', m, function(res){
+							sa.ajax('/sp-admin/AppUser/update', m, function(res){
 								sa.alert('修改成功', this.clean);
 							}.bind(this));
 						}
@@ -111,16 +89,16 @@
 							this.m = this.createModel();
 						} else {
 							parent.app.f5();		// 刷新父页面列表
-							sa.closeCurrIframe();	// 关闭本页 
+							sa.closeCurrIframe();	// 关闭本页
 						}
 					}
 				},
 				mounted: function(){
-					// 初始化数据 
-					if(this.id <= 0) {	
+					// 初始化数据
+					if(this.id <= 0) {
 						this.m = this.createModel();
-					} else {	
-						sa.ajax('/AppUser/getById?id=' + this.id, function(res) {
+					} else {
+						sa.ajax('/sp-admin/AppUser/getById?id=' + this.id, function(res) {
 							this.m = res.data;
 							if(res.data == null) {
 								sa.alert('未能查找到 id=' + this.id + " 详细数据");
@@ -129,7 +107,7 @@
 					}
 				}
 			})
-			
+
 		</script>
 	</body>
-</html>
+</html>

+ 5 - 5
sa-view/app-user/app-user-info.html

@@ -33,7 +33,7 @@
 						</el-row>
 						<el-row :gutter="50">
 							<el-col :span="12">
-								<sa-info type="enum" name="类型" :value="m.userType" :jv="{1: '边民', 2: '组长', 3: '商户', 4: '收购商', 5: '司机'}" br></sa-info>
+								<sa-info type="enum" name="类型" :value="m.userType" :jv="{1: '普通边民', 2: '边民组长', 3: '收购商', 4: '司机', 5: '外籍商户', 6: '合作社'}" br></sa-info>
 							</el-col>
 							<el-col :span="12">
 								<sa-info type="enum" name="状态" :value="m.status" :jv="{0: '禁用', 1: '启用'}" br></sa-info>
@@ -55,7 +55,7 @@
 								<sa-info name="上次登录时间" br>{{m.lastLoginTime}}</sa-info>
 							</el-col>
 						</el-row>
-						
+
 						<!-- <sa-info name="外联id,user_type=1=>边民ID;user_type=3=>商户ID" br>{{m.fkId}}</sa-info> -->
 					</el-form>
 				</div>
@@ -73,13 +73,13 @@
 				},
 				el: '.vue-box',
 				data: {
-					id: sa.p('id', 0),	// 获取数据ID 
+					id: sa.p('id', 0),	// 获取数据ID
 					m: null
 				},
 				methods: {
 				},
 				mounted: function() {
-					sa.ajax('/AppUser/getById?id=' + this.id, function(res) {
+					sa.ajax('/sp-admin/AppUser/getById?id=' + this.id, function(res) {
 						this.m = res.data;
 						if(res.data == null) {
 							sa.alert('未能查找到 id=' + this.id + " 详细数据");
@@ -87,7 +87,7 @@
 					}.bind(this))
 				}
 			})
-			
+
 		</script>
 	</body>
 </html>

+ 22 - 32
sa-view/app-user/app-user-list.html

@@ -20,25 +20,22 @@
 				<!-- ------------- 检索参数 ------------- -->
 				<!-- <div class="c-title">检索参数</div> -->
 				<el-form ref="form" :model='p' @submit.native.prevent>
-					<sa-item type="text" name="手机号码" v-model="p.phone"></sa-item>
+					<sa-item type="text" name="手机号码" v-model="p.phone" width="100px"></sa-item>
 					<sa-item type="text" name="姓名" v-model="p.name"></sa-item>
 					<el-button type="primary" icon="el-icon-search" @click="p.pageNo = 1; f5()">查询</el-button>
 					<el-button type="info" icon="el-icon-refresh" @click="sa.f5()">重置</el-button>
-				</el-form>
-				<div class="fast-btn">
 					<el-button v-if="sa.isAuth('app-user-add')" size="mini" type="primary" @click="add()">新增</el-button>
-					<el-button size="mini" type="success" @click="getBySelect()">查看</el-button>
-				</div>
+				</el-form>
 				<!-- ------------- 数据列表 ------------- -->
 				<el-table class="data-table" ref="data-table" :data="dataList" >
 					<sa-td type="selection"></sa-td>
 					<sa-td name="手机号码" prop="phone" ></sa-td>
 					<sa-td name="姓名" prop="name" ></sa-td>
-					<sa-td name="类型" prop="userType" type="enum" :jv="{1: '边民', 2: '组长', 3: '商户', 4: '收购商', 5: '司机'}"></sa-td>
+					<sa-td name="类型" prop="userType" type="enum" :jv="{1: '普通边民', 2: '边民组长', 3: '收购商', 4: '司机', 5: '外籍商户', 6: '合作社'}"></sa-td>
 					<!-- <sa-td name="外联id,user_type=1=>边民ID;user_type=3=>商户ID" prop="fkId" ></sa-td> -->
 					<sa-td name="状态" prop="status" type="enum" :jv="{0: '禁用', 1: '启用'}"></sa-td>
 					<sa-td name="是否认证" prop="auth" type="enum" :jv="{0: '未认证', 1: '已认证'}"></sa-td>
-					<sa-td name="证时间" prop="authTime" ></sa-td>
+					<sa-td name="证时间" prop="authTime" ></sa-td>
 					<sa-td name="登录次数" prop="loginCount" ></sa-td>
 					<sa-td name="上次登录时间" prop="lastLoginTime" ></sa-td>
 					<el-table-column label="操作" fixed="right"  width="240px">
@@ -56,35 +53,28 @@
 		<script>
 			var app = new Vue({
 				components: {
-					"sa-item": httpVueLoader('../../sa-frame/com/sa-item.vue'),  
-					"sa-td": httpVueLoader('../../sa-frame/com/sa-td.vue'),		
+					"sa-item": httpVueLoader('../../sa-frame/com/sa-item.vue'),
+					"sa-td": httpVueLoader('../../sa-frame/com/sa-td.vue'),
 				},
 				el: '.vue-box',
 				data: {
-					p: { // 查询参数  
-						phone: '',		// 手机号码 
-						name: '',		// 姓名 
-						userType: '',		// 类型(1=边民,2=组长,3=商户,4=收购商,5=司机) 
-						fkId: '',		// 外联id,user_type=1=>边民ID;user_type=3=>商户ID 
-						status: '',		// 状态(0=禁用,1=启用) 
-						auth: '',		// 是否认证(0=未认证,1=已认证) 
-						authTime: '',		// 人证时间 
-						loginCount: '',		// 登录次数 
-						lastLoginTime: '',		// 上次登录时间 
-						pageNo: 1,		// 当前页 
-						pageSize: 10,	// 页大小 
-						sortType: 0		// 排序方式 
+					p: { // 查询参数
+						phone: '',		// 手机号码
+						name: '',		// 姓名
+						pageNo: 1,		// 当前页
+						pageSize: 10,	// 页大小
+						sortType: 0		// 排序方式
 					},
 					dataCount: 0,
-					dataList: [], // 数据集合 
+					dataList: [], // 数据集合
 				},
 				methods: {
 					// 刷新
 					f5: function() {
-						sa.ajax('/AppUser/getList', sa.removeNull(this.p), function(res) {
+						sa.ajax('/sp-admin/AppUser/getList', sa.removeNull(this.p), function(res) {
 							this.dataList = res.data; // 数据
-							this.dataCount = res.dataCount; // 数据总数 
-							sa.f5TableHeight();		// 刷新表格高度 
+							this.dataCount = res.dataCount; // 数据总数
+							sa.f5TableHeight();		// 刷新表格高度
 						}.bind(this));
 					},
 					// 查看
@@ -110,27 +100,27 @@
 					// 删除
 					del: function(data) {
 						sa.confirm('是否删除,此操作不可撤销', function() {
-							sa.ajax('/AppUser/delete?id=' + data.id, function(res) {
+							sa.ajax('/sp-admin/AppUser/delete?id=' + data.id, function(res) {
 								sa.arrayDelete(this.dataList, data);
 								sa.ok('删除成功');
-								sa.f5TableHeight();		// 刷新表格高度 
+								sa.f5TableHeight();		// 刷新表格高度
 							}.bind(this))
 						}.bind(this));
 					},
 					// 批量删除
 					deleteByIds: function() {
-						// 获取选中元素的id列表 
+						// 获取选中元素的id列表
 						let selection = this.$refs['data-table'].selection;
 						let ids = sa.getArrayField(selection, 'id');
 						if(selection.length == 0) {
 							return sa.msg('请至少选择一条数据')
 						}
-						// 提交删除 
+						// 提交删除
 						sa.confirm('是否批量删除选中数据?此操作不可撤销', function() {
-							sa.ajax('/AppUser/deleteByIds', {ids: ids.join(',')}, function(res) {
+							sa.ajax('/sp-admin/AppUser/deleteByIds', {ids: ids.join(',')}, function(res) {
 								sa.arrayDelete(this.dataList, selection);
 								sa.ok('删除成功');
-								sa.f5TableHeight();		// 刷新表格高度 
+								sa.f5TableHeight();		// 刷新表格高度
 							}.bind(this))
 						}.bind(this));
 					},

+ 170 - 0
sa-view/tb-import-goods/tb-import-goods-add.html

@@ -0,0 +1,170 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<title>进口申报单商品信息-添加/修改</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
+		<!-- 所有的 css js 资源 -->
+		<link rel="stylesheet" href="../../static/kj/element-ui/theme-chalk/index.css">
+		<link rel="stylesheet" href="../../static/sa.css">
+		<script src="../../static/kj/vue.min.js"></script>
+		<script src="../../static/kj/element-ui/index.js"></script>
+		<script src="../../static/kj/httpVueLoader.js"></script>
+		<script src="../../static/kj/jquery.min.js"></script>
+		<script src="../../static/kj/layer/layer.js"></script>
+		<script src="../../static/sa.js"></script>
+		<style type="text/css">
+			.c-panel .el-form .c-label{width: 7em !important;}
+			.c-panel .el-form .el-input, .c-panel .el-form .el-textarea__inner{width: 250px;}
+		</style>
+	</head>
+	<body>
+		<div class="vue-box" :class="{sbot: id}" style="display: none;" :style="'display: block;'">
+			<!-- ------- 内容部分 ------- -->
+			<div class="s-body">
+				<div class="c-panel">
+                    <div class="c-title" v-if="id == 0">数据添加</div>
+					<div class="c-title" v-else>数据修改</div>
+					<el-form v-if="m">
+						<sa-item type="text" name="业务编号" v-model="m.platSeqNo" br></sa-item>
+						<sa-item type="text" name="商品序号" v-model="m.gNo" br></sa-item>
+						<sa-item type="text" name="商品编码" v-model="m.codeTs" br></sa-item>
+						<sa-item type="text" name="商品名称" v-model="m.gName" br></sa-item>
+						<sa-item type="text" name="规格型号" v-model="m.gModel" br></sa-item>
+						<sa-item type="text" name="申报数量" v-model="m.gQty" br></sa-item>
+						<sa-item type="text" name="第一数量" v-model="m.qty1" br></sa-item>
+						<sa-item type="text" name="商品第二数量" v-model="m.qty2" br></sa-item>
+						<sa-item type="text" name="商品毛重" v-model="m.grossWt" br></sa-item>
+						<sa-item type="text" name="商品净重" v-model="m.netWt" br></sa-item>
+						<sa-item type="text" name="商品产销国" v-model="m.originCountry" br></sa-item>
+						<sa-item type="text" name="申报计量单位:参见计量单位参数表" v-model="m.gUnit" br></sa-item>
+						<sa-item type="text" name="商品第一计量单位" v-model="m.unit1" br></sa-item>
+						<sa-item type="text" name="商品第二计量单位" v-model="m.unit2" br></sa-item>
+						<sa-item type="text" name="商品申报单价" v-model="m.declPrice" br></sa-item>
+						<sa-item type="text" name="申报总价" v-model="m.declTotal" br></sa-item>
+						<sa-item type="text" name="储存条件:1常温2冷藏3冷冻" v-model="m.storageEnvm" br></sa-item>
+						<sa-item type="text" name="商品用途" v-model="m.useTo" br></sa-item>
+						<sa-item type="text" name="商铺编码" v-model="m.shopNo" br></sa-item>
+						<sa-item type="text" name="商铺名称" v-model="m.shopName" br></sa-item>
+						<sa-item type="text" name="检疫检疫代码" v-model="m.ciqCode" br></sa-item>
+						<sa-item type="text" name="检疫检疫名称" v-model="m.ciqName" br></sa-item>
+						<sa-item type="text" name="包装类型" v-model="m.wrapType" br></sa-item>
+						<sa-item name="" class="s-ok" br>
+							<el-button type="primary" icon="el-icon-plus" @click="ok()">保存</el-button>
+						</sa-item>
+					</el-form>
+				</div>
+			</div>
+			<!-- ------- 底部按钮 ------- -->
+			<div class="s-foot">
+				<el-button type="primary" @click="ok()">确定</el-button>
+				<el-button @click="sa.closeCurrIframe()">取消</el-button>
+			</div>
+		</div>
+        <script>
+
+			var app = new Vue({
+				components: {
+					"sa-item": httpVueLoader('../../sa-frame/com/sa-item.vue')
+				},
+				el: '.vue-box',
+				data: {
+					id: sa.p('id', 0),		// 获取超链接中的id参数(0=添加,非0=修改)
+					m: null,		// 实体对象
+				},
+				methods: {
+					// 创建一个 默认Model
+					createModel: function() {
+						return {
+							platSeqNo: '',		// 业务编号
+							gNo: '',		// 商品序号
+							codeTs: '',		// 商品编码
+							gName: '',		// 商品名称
+							gModel: '',		// 规格型号
+							gQty: '',		// 申报数量
+							qty1: '',		// 第一数量
+							qty2: '',		// 商品第二数量
+							grossWt: '',		// 商品毛重
+							netWt: '',		// 商品净重
+							originCountry: '',		// 商品产销国
+							gUnit: '',		// 申报计量单位:参见计量单位参数表
+							unit1: '',		// 商品第一计量单位
+							unit2: '',		// 商品第二计量单位
+							declPrice: '',		// 商品申报单价
+							declTotal: '',		// 申报总价
+							storageEnvm: '',		// 储存条件:1常温 2冷藏 3冷冻
+							useTo: '',		// 商品用途
+							shopNo: '',		// 商铺编码
+							shopName: '',		// 商铺名称
+							ciqCode: '',		// 检疫检疫代码
+							ciqName: '',		// 检疫检疫名称
+							wrapType: '',		// 包装类型
+						}
+					},
+					// 提交数据
+					ok: function(){
+						// 表单校验
+						let m = this.m;
+						sa.checkNull(m.platSeqNo, '请输入 [业务编号]');
+						sa.checkNull(m.gNo, '请输入 [商品序号]');
+						sa.checkNull(m.codeTs, '请输入 [商品编码]');
+						sa.checkNull(m.gName, '请输入 [商品名称]');
+						sa.checkNull(m.gModel, '请输入 [规格型号]');
+						sa.checkNull(m.gQty, '请输入 [申报数量]');
+						sa.checkNull(m.qty1, '请输入 [第一数量]');
+						sa.checkNull(m.qty2, '请输入 [商品第二数量]');
+						sa.checkNull(m.grossWt, '请输入 [商品毛重]');
+						sa.checkNull(m.netWt, '请输入 [商品净重]');
+						sa.checkNull(m.originCountry, '请输入 [商品产销国]');
+						sa.checkNull(m.gUnit, '请输入 [申报计量单位:参见计量单位参数表]');
+						sa.checkNull(m.unit1, '请输入 [商品第一计量单位]');
+						sa.checkNull(m.unit2, '请输入 [商品第二计量单位]');
+						sa.checkNull(m.declPrice, '请输入 [商品申报单价]');
+						sa.checkNull(m.declTotal, '请输入 [申报总价]');
+						sa.checkNull(m.storageEnvm, '请输入 [储存条件:1常温2冷藏3冷冻]');
+						sa.checkNull(m.useTo, '请输入 [商品用途]');
+						sa.checkNull(m.shopNo, '请输入 [商铺编码]');
+						sa.checkNull(m.shopName, '请输入 [商铺名称]');
+						sa.checkNull(m.ciqCode, '请输入 [检疫检疫代码]');
+						sa.checkNull(m.ciqName, '请输入 [检疫检疫名称]');
+						sa.checkNull(m.wrapType, '请输入 [包装类型]');
+
+						// 开始增加或修改
+						if(this.id <= 0) {	// 添加
+							sa.ajax('/level-one-server/TbImportGoods/add', m, function(res){
+								sa.alert('增加成功', this.clean);
+							}.bind(this));
+						} else {	// 修改
+							sa.ajax('/level-one-server/TbImportGoods/update', m, function(res){
+								sa.alert('修改成功', this.clean);
+							}.bind(this));
+						}
+					},
+					// 添加/修改 完成后的动作
+					clean: function() {
+						if(this.id == 0) {
+							this.m = this.createModel();
+						} else {
+							parent.app.f5();		// 刷新父页面列表
+							sa.closeCurrIframe();	// 关闭本页
+						}
+					}
+				},
+				mounted: function(){
+					// 初始化数据
+					if(this.id <= 0) {
+						this.m = this.createModel();
+					} else {
+						sa.ajax('/TbImportGoods/getById?id=' + this.id, function(res) {
+							this.m = res.data;
+							if(res.data == null) {
+								sa.alert('未能查找到 id=' + this.id + " 详细数据");
+							}
+						}.bind(this))
+					}
+				}
+			})
+
+		</script>
+	</body>
+</html>

+ 82 - 0
sa-view/tb-import-goods/tb-import-goods-info.html

@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<title>进口申报单商品信息-详情</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
+		<!-- 所有的 css js 资源 -->
+		<link rel="stylesheet" href="../../static/kj/element-ui/theme-chalk/index.css">
+		<link rel="stylesheet" href="../../static/sa.css">
+		<script src="../../static/kj/vue.min.js"></script>
+		<script src="../../static/kj/element-ui/index.js"></script>
+		<script src="../../static/kj/httpVueLoader.js"></script>
+		<script src="../../static/kj/jquery.min.js"></script>
+		<script src="../../static/kj/layer/layer.js"></script>
+		<script src="../../static/sa.js"></script>
+		<style type="text/css">
+			.c-panel .c-label{width: 8em;}
+		</style>
+	</head>
+	<body>
+		<div class="vue-box sbot" style="display: none;" :style="'display: block;'">
+			<!-- ------- 内容部分 ------- -->
+			<div class="s-body">
+				<div class="c-panel">
+					<el-form v-if="m">
+						<sa-info name="业务编号" br>{{m.platSeqNo}}</sa-info>
+						<sa-info name="商品序号" br>{{m.gNo}}</sa-info>
+						<sa-info name="商品编码" br>{{m.codeTs}}</sa-info>
+						<sa-info name="商品名称" br>{{m.gName}}</sa-info>
+						<sa-info name="规格型号" br>{{m.gModel}}</sa-info>
+						<sa-info name="申报数量" br>{{m.gQty}}</sa-info>
+						<sa-info name="第一数量" br>{{m.qty1}}</sa-info>
+						<sa-info name="商品第二数量" br>{{m.qty2}}</sa-info>
+						<sa-info name="商品毛重" br>{{m.grossWt}}</sa-info>
+						<sa-info name="商品净重" br>{{m.netWt}}</sa-info>
+						<sa-info name="商品产销国" br>{{m.originCountry}}</sa-info>
+						<sa-info name="申报计量单位:参见计量单位参数表" br>{{m.gUnit}}</sa-info>
+						<sa-info name="商品第一计量单位" br>{{m.unit1}}</sa-info>
+						<sa-info name="商品第二计量单位" br>{{m.unit2}}</sa-info>
+						<sa-info name="商品申报单价" br>{{m.declPrice}}</sa-info>
+						<sa-info name="申报总价" br>{{m.declTotal}}</sa-info>
+						<sa-info name="储存条件:1常温2冷藏3冷冻" br>{{m.storageEnvm}}</sa-info>
+						<sa-info name="商品用途" br>{{m.useTo}}</sa-info>
+						<sa-info name="商铺编码" br>{{m.shopNo}}</sa-info>
+						<sa-info name="商铺名称" br>{{m.shopName}}</sa-info>
+						<sa-info name="检疫检疫代码" br>{{m.ciqCode}}</sa-info>
+						<sa-info name="检疫检疫名称" br>{{m.ciqName}}</sa-info>
+						<sa-info name="包装类型" br>{{m.wrapType}}</sa-info>
+					</el-form>
+				</div>
+			</div>
+			<!-- ------- 底部按钮 ------- -->
+			<div class="s-foot">
+				<el-button type="success" @click="sa.closeCurrIframe()">确定</el-button>
+				<el-button @click="sa.closeCurrIframe()">取消</el-button>
+			</div>
+		</div>
+		<script>
+			var app = new Vue({
+				components: {
+					"sa-info": httpVueLoader('../../sa-frame/com/sa-info.vue')
+				},
+				el: '.vue-box',
+				data: {
+					id: sa.p('id', 0),	// 获取数据ID
+					m: null
+				},
+				methods: {
+				},
+				mounted: function() {
+					sa.ajax('/level-one-server/TbImportGoods/getById?id=' + this.id, function(res) {
+						this.m = res.data;
+						if(res.data == null) {
+							sa.alert('未能查找到 id=' + this.id + " 详细数据");
+						}
+					}.bind(this))
+				}
+			})
+
+		</script>
+	</body>
+</html>

+ 146 - 0
sa-view/tb-import-goods/tb-import-goods-list.html

@@ -0,0 +1,146 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<title>进口申报单商品信息-列表</title>
+		<meta charset="utf-8">
+		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
+		<!-- 所有的 css & js 资源 -->
+		<link rel="stylesheet" href="../../static/kj/element-ui/theme-chalk/index.css">
+		<link rel="stylesheet" href="../../static/sa.css">
+		<script src="../../static/kj/vue.min.js"></script>
+		<script src="../../static/kj/element-ui/index.js"></script>
+		<script src="../../static/kj/httpVueLoader.js"></script>
+		<script src="../../static/kj/jquery.min.js"></script>
+		<script src="../../static/kj/layer/layer.js"></script>
+		<script src="../../static/sa.js"></script>
+	</head>
+	<body>
+		<div class="vue-box" style="display: none;" :style="'display: block;'">
+			<div class="c-panel">
+				<!-- ------------- 检索参数 ------------- -->
+				<div class="c-title">检索参数</div>
+				<el-form ref="form" :model='p' @submit.native.prevent>
+					<sa-item type="text" name="业务编号" v-model="p.platSeqNo" width="100px"></sa-item>
+					<sa-item type="text" name="商品名称" v-model="p.gName" width="100px"></sa-item>
+					<el-button type="primary" icon="el-icon-search" @click="p.pageNo = 1; f5()">查询</el-button>
+					<el-button size="mini" type="info" @click="sa.f5()">重置</el-button>
+				</el-form>
+				<!-- ------------- 数据列表 ------------- -->
+				<el-table class="data-table" ref="data-table" :data="dataList" >
+					<sa-td type="selection"></sa-td>
+					<sa-td name="业务编号" prop="platSeqNo" ></sa-td>
+					<sa-td name="商品序号" prop="gNo" ></sa-td>
+					<sa-td name="商品编码" prop="codeTs" ></sa-td>
+					<sa-td name="商品名称" prop="gName" ></sa-td>
+					<sa-td name="规格型号" prop="gModel" ></sa-td>
+					<sa-td name="申报数量" prop="gQty" ></sa-td>
+					<sa-td name="第一数量" prop="qty1" ></sa-td>
+					<sa-td name="商品第二数量" prop="qty2" ></sa-td>
+					<sa-td name="商品毛重" prop="grossWt" ></sa-td>
+					<sa-td name="商品净重" prop="netWt" ></sa-td>
+					<sa-td name="商品产销国" prop="originCountry" ></sa-td>
+					<sa-td name="申报计量单位:参见计量单位参数表" prop="gUnit" ></sa-td>
+					<sa-td name="商品第一计量单位" prop="unit1" ></sa-td>
+					<sa-td name="商品第二计量单位" prop="unit2" ></sa-td>
+					<sa-td name="商品申报单价" prop="declPrice" ></sa-td>
+					<sa-td name="申报总价" prop="declTotal" ></sa-td>
+					<sa-td name="储存条件:1常温2冷藏3冷冻" prop="storageEnvm" ></sa-td>
+					<sa-td name="商品用途" prop="useTo" ></sa-td>
+					<sa-td name="商铺编码" prop="shopNo" ></sa-td>
+					<sa-td name="商铺名称" prop="shopName" ></sa-td>
+					<sa-td name="检疫检疫代码" prop="ciqCode" ></sa-td>
+					<sa-td name="检疫检疫名称" prop="ciqName" ></sa-td>
+					<sa-td name="包装类型" prop="wrapType" ></sa-td>
+					<el-table-column label="操作" fixed="right"  width="240px">
+						<template slot-scope="s">
+							<el-button class="c-btn" type="success" icon="el-icon-view" @click="get(s.row)">查看</el-button>
+						</template>
+					</el-table-column>
+				</el-table>
+				<!-- ------------- 分页 ------------- -->
+				<sa-item type="page" :curr.sync="p.pageNo" :size.sync="p.pageSize" :total="dataCount" @change="f5()"></sa-item>
+			</div>
+		</div>
+		<script>
+			var app = new Vue({
+				components: {
+					"sa-item": httpVueLoader('../../sa-frame/com/sa-item.vue'),
+					"sa-td": httpVueLoader('../../sa-frame/com/sa-td.vue'),
+				},
+				el: '.vue-box',
+				data: {
+					p: { // 查询参数
+						platSeqNo: '',		// 业务编号
+						gName: '',		// 商品名称
+						pageNo: 1,		// 当前页
+						pageSize: 10,	// 页大小
+						sortType: 0		// 排序方式
+					},
+					dataCount: 0,
+					dataList: [], // 数据集合
+				},
+				methods: {
+					// 刷新
+					f5: function() {
+						sa.ajax('/level-one-server/TbImportGoods/getList', sa.removeNull(this.p), function(res) {
+							this.dataList = res.data; // 数据
+							this.dataCount = res.dataCount; // 数据总数
+							sa.f5TableHeight();		// 刷新表格高度
+						}.bind(this));
+					},
+					// 查看
+					get: function(data) {
+						sa.showIframe('数据详情', 'tb-import-goods-info.html?id=' + data.id, '1050px', '90%');
+					},
+					// 查看 - 根据选中的
+					getBySelect: function(data) {
+						var selection = this.$refs['data-table'].selection;
+						if(selection.length == 0) {
+							return sa.msg('请选择一条数据')
+						}
+						this.get(selection[0]);
+					},
+					// 修改
+					update: function(data) {
+						sa.showIframe('修改数据', 'tb-import-goods-add.html?id=' + data.id, '1000px', '90%');
+					},
+					// 新增
+					add: function(data) {
+						sa.showIframe('新增数据', 'tb-import-goods-add.html?id=-1', '1000px', '90%');
+					},
+					// 删除
+					del: function(data) {
+						sa.confirm('是否删除,此操作不可撤销', function() {
+							sa.ajax('/level-one-server/TbImportGoods/delete?id=' + data.id, function(res) {
+								sa.arrayDelete(this.dataList, data);
+								sa.ok('删除成功');
+								sa.f5TableHeight();		// 刷新表格高度
+							}.bind(this))
+						}.bind(this));
+					},
+					// 批量删除
+					deleteByIds: function() {
+						// 获取选中元素的id列表
+						let selection = this.$refs['data-table'].selection;
+						let ids = sa.getArrayField(selection, 'id');
+						if(selection.length == 0) {
+							return sa.msg('请至少选择一条数据')
+						}
+						// 提交删除
+						sa.confirm('是否批量删除选中数据?此操作不可撤销', function() {
+							sa.ajax('/level-one-server/TbImportGoods/deleteByIds', {ids: ids.join(',')}, function(res) {
+								sa.arrayDelete(this.dataList, selection);
+								sa.ok('删除成功');
+								sa.f5TableHeight();		// 刷新表格高度
+							}.bind(this))
+						}.bind(this));
+					},
+				},
+				created: function() {
+					this.f5();
+					sa.onInputEnter();
+				}
+			})
+		</script>
+	</body>
+</html>

+ 254 - 0
sa-view/tb-import-order/tb-import-order-add.html

@@ -0,0 +1,254 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<title>进口申报单-添加/修改</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
+		<!-- 所有的 css js 资源 -->
+		<link rel="stylesheet" href="../../static/kj/element-ui/theme-chalk/index.css">
+		<link rel="stylesheet" href="../../static/sa.css">
+		<script src="../../static/kj/vue.min.js"></script>
+		<script src="../../static/kj/element-ui/index.js"></script>
+		<script src="../../static/kj/httpVueLoader.js"></script>
+		<script src="../../static/kj/jquery.min.js"></script>
+		<script src="../../static/kj/layer/layer.js"></script>
+		<script src="../../static/sa.js"></script>
+		<style type="text/css">
+			.c-panel .el-form .c-label{width: 7em !important;}
+			.c-panel .el-form .el-input, .c-panel .el-form .el-textarea__inner{width: 250px;}
+		</style>
+	</head>
+	<body>
+		<div class="vue-box" :class="{sbot: id}" style="display: none;" :style="'display: block;'">
+			<!-- ------- 内容部分 ------- -->
+			<div class="s-body">
+				<div class="c-panel">
+                    <div class="c-title" v-if="id == 0">数据添加</div>
+					<div class="c-title" v-else>数据修改</div>
+					<el-form v-if="m">
+						<sa-item type="text" name="主键" v-model="m.id" br></sa-item>
+						<sa-item type="text" name="地方平台的内部业务编号,每次申请都是新编号" v-model="m.platSeqNo" br></sa-item>
+						<sa-item type="text" name="预录入编号" v-model="m.preNo" br></sa-item>
+						<sa-item type="text" name="关联进出境申报单编号" v-model="m.itrdclDeclareId" br></sa-item>
+						<sa-item type="text" name="进出口申报单编号变更、撤销类型时必填" v-model="m.declareId" br></sa-item>
+						<sa-item type="text" name="1-边民,2-商铺业主或其代理人,3-合作社代表,4-互助组代表" v-model="m.declareType" br></sa-item>
+						<sa-item type="text" name="申报人姓名" v-model="m.declareName" br></sa-item>
+						<sa-item type="text" name="申报人身份证号" v-model="m.ciphertextIdno" br></sa-item>
+						<sa-item type="text" name="申报人类别为2时商铺编码必填" v-model="m.shopNo" br></sa-item>
+						<sa-item type="text" name="申报人类别为2时商铺名称必填" v-model="m.shopName" br></sa-item>
+						<sa-item type="text" name="申报人类别为3、4时互助组/合作社备案编号" v-model="m.orgPutrecNo" br></sa-item>
+						<sa-item type="text" name="申报人类别为3、4时互助组/合租社名称" v-model="m.orgName" br></sa-item>
+						<sa-item type="text" name="申报人类别为4时边民合作社社会统一信用代码" v-model="m.orgScc" br></sa-item>
+						<sa-item type="text" name="车牌号" v-model="m.veNo" br></sa-item>
+						<sa-item type="text" name="运输工具类型:1-三轮车;2-货车;3-电动车;4-拖拉机;5-其他;6-轻型货车;7-微型货车;" v-model="m.vehicleType" br></sa-item>
+						<sa-item type="text" name="业务模式:进出口标志为进口时,01区内交易、02落地加工、03原装提离。进出口标志为出口时,04:直接出口,05:出口销售" v-model="m.btrnbBizModecd" br></sa-item>
+						<sa-item type="text" name="商品流向:进出口标志为进口时,必填,01-二次销售;02-生活自用;03-落地加工" v-model="m.gFlow" br></sa-item>
+						<sa-item type="text" name="进出口标志:I进口E出口" v-model="m.iEFlag" br></sa-item>
+						<sa-item type="text" name="监管场所编号" v-model="m.fieldCode" br></sa-item>
+						<sa-item type="text" name="监管场所名称" v-model="m.fieldName" br></sa-item>
+						<sa-item type="text" name="申报口岸代码" v-model="m.customsCode" br></sa-item>
+						<sa-item type="text" name="是否拼车:1-是、0-否" v-model="m.carPool" br></sa-item>
+						<sa-item type="text" name="备注" v-model="m.note" br></sa-item>
+						<sa-item type="text" name="总金额" v-model="m.sumAmt" br></sa-item>
+						<sa-item type="text" name="总毛重" v-model="m.sumGrossWt" br></sa-item>
+						<sa-item type="text" name="总净重" v-model="m.sumNetWt" br></sa-item>
+						<sa-item type="text" name="运输方式" v-model="m.trafMode" br></sa-item>
+						<sa-item type="text" name="币制" v-model="m.currCode" br></sa-item>
+						<sa-item type="text" name="件数,正整数" v-model="m.packNo" br></sa-item>
+						<sa-item type="text" name="贸易国别" v-model="m.tradeCountry" br></sa-item>
+						<sa-item type="text" name="落地加工企业名称" v-model="m.mName" br></sa-item>
+						<sa-item type="text" name="落地加工企业社会统一信用代码" v-model="m.mScc" br></sa-item>
+						<sa-item type="text" name="是否均摊:0否1是" v-model="m.shareFlag" br></sa-item>
+						<sa-item type="text" name="申报单类型" v-model="m.dclType" br></sa-item>
+						<sa-item type="text" name="改单/撤销原因,撤销时必填" v-model="m.mdfblRvkRsn" br></sa-item>
+						<sa-item type="text" name="边民备案编号标记:值为true,则borderList信息border_putrec_no字段必填;值不为true,则边民身份证号等信息必填" v-model="m.borderFlag" br></sa-item>
+						<sa-item type="text" name="数据状态" v-model="m.delStatus" br></sa-item>
+						<sa-item type="text" name="申报状态" v-model="m.declStatus" br></sa-item>
+						<sa-item type="text" name="申报时间" v-model="m.declTime" br></sa-item>
+						<sa-item type="text" name="回执时间" v-model="m.rcptTime" br></sa-item>
+						<sa-item type="text" name="审核备注" v-model="m.auditRemark" br></sa-item>
+						<sa-item type="text" name="运输工具代理企业代码" v-model="m.agentCode" br></sa-item>
+						<sa-item type="text" name="运输工具批次号" v-model="m.manifestId" br></sa-item>
+						<sa-item type="text" name="商铺备案编号" v-model="m.shopPutrecNo" br></sa-item>
+						<sa-item type="text" name="边民id" v-model="m.borderId" br></sa-item>
+						<sa-item type="text" name="" v-model="m.msgId" br></sa-item>
+						<sa-item type="text" name="企业编码" v-model="m.entCode" br></sa-item>
+						<sa-item type="text" name="企业名称" v-model="m.entName" br></sa-item>
+						<sa-item type="text" name="委托边民体信息对象" v-model="m.borderPeopleList" br></sa-item>
+						<sa-item type="text" name="委托边民额度体对象" v-model="m.borderPeopleLimitList" br></sa-item>
+						<sa-item type="text" name="申报单商品体信息对象" v-model="m.goodsList" br></sa-item>
+						<sa-item name="" class="s-ok" br>
+							<el-button type="primary" icon="el-icon-plus" @click="ok()">保存</el-button>
+						</sa-item>
+					</el-form>
+				</div>
+			</div>
+			<!-- ------- 底部按钮 ------- -->
+			<div class="s-foot">
+				<el-button type="primary" @click="ok()">确定</el-button>
+				<el-button @click="sa.closeCurrIframe()">取消</el-button>
+			</div>
+		</div>
+        <script>
+
+			var app = new Vue({
+				components: {
+					"sa-item": httpVueLoader('../../sa-frame/com/sa-item.vue')
+				},
+				el: '.vue-box',
+				data: {
+					id: sa.p('id', 0),		// 获取超链接中的id参数(0=添加,非0=修改)
+					m: null,		// 实体对象
+				},
+				methods: {
+					// 创建一个 默认Model
+					createModel: function() {
+						return {
+							id: '',		// 主键
+							platSeqNo: '',		// 地方平台的内部业务编号,每次申请都是新编号
+							preNo: '',		// 预录入编号
+							itrdclDeclareId: '',		// 关联进出境申报单编号
+							declareId: '',		// 进出口申报单编号变更、撤销类型时必填
+							declareType: '',		// 1-边民,2-商铺业主或其代理人,3-合作社代表,4-互助组代表
+							declareName: '',		// 申报人姓名
+							ciphertextIdno: '',		// 申报人身份证号
+							shopNo: '',		// 申报人类别为 2时商铺编码必填
+							shopName: '',		// 申报人类别为 2时商铺名称必填
+							orgPutrecNo: '',		// 申报人类别为3、4 时互助组/合作社备案编号
+							orgName: '',		// 申报人类别为3、4 时互助组/合租社名称
+							orgScc: '',		// 申报人类别为 4时边民合作社社会统一信用代码
+							veNo: '',		// 车牌号
+							vehicleType: '',		// 运输工具类型:1-三轮车;2-货车;3-电动车;4-拖拉机;5-其他 ; 6- 轻 型 货车 ; 7- 微 型 货车;
+							btrnbBizModecd: '',		// 业务模式:进出口标志为进口时,01 区内交易、02 落地加工、03 原装提离。进出口标志为出口时,04:直接出口,05:出口销售
+							gFlow: '',		// 商品流向:进出口标志为进口时,必填,01- 二次销售;02- 生活自用;03- 落地加工
+							iEFlag: '',		// 进出口标志:I进口 E出口
+							fieldCode: '',		// 监管场所编号
+							fieldName: '',		// 监管场所名称
+							customsCode: '',		// 申报口岸代码
+							carPool: '',		// 是否拼车:1- 是、0-否
+							note: '',		// 备注
+							sumAmt: '',		// 总金额
+							sumGrossWt: '',		// 总毛重
+							sumNetWt: '',		// 总净重
+							trafMode: '',		// 运输方式
+							currCode: '',		// 币制
+							packNo: '',		// 件数,正整数
+							tradeCountry: '',		// 贸易国别
+							mName: '',		// 落地加工企业名称
+							mScc: '',		// 落地加工企业社会统一信用代码
+							shareFlag: '',		// 是否均摊:0否 1是
+							dclType: '',		// 申报单类型
+							mdfblRvkRsn: '',		// 改单/撤销原因,撤销时必填
+							borderFlag: '',		// 边民备案编号标记:值为true,则borderList信息border_putrec_no字段必填;值不为true,则边民身份证号等信息必填
+							delStatus: '',		// 数据状态
+							declStatus: '',		// 申报状态
+							declTime: '',		// 申报时间
+							rcptTime: '',		// 回执时间
+							auditRemark: '',		// 审核备注
+							agentCode: '',		// 运输工具代理企业代码
+							manifestId: '',		// 运输工具批次号
+							shopPutrecNo: '',		// 商铺备案编号
+							borderId: '',		// 边民id
+							msgId: '',		//
+							entCode: '',		// 企业编码
+							entName: '',		// 企业名称
+							borderPeopleList: '',		// 委托边民体信息对象
+							borderPeopleLimitList: '',		// 委托边民额度体对象
+							goodsList: '',		// 申报单商品体信息对象
+						}
+					},
+					// 提交数据
+					ok: function(){
+						// 表单校验
+						let m = this.m;
+						sa.checkNull(m.id, '请输入 [主键]');
+						sa.checkNull(m.platSeqNo, '请输入 [地方平台的内部业务编号,每次申请都是新编号]');
+						sa.checkNull(m.preNo, '请输入 [预录入编号]');
+						sa.checkNull(m.itrdclDeclareId, '请输入 [关联进出境申报单编号]');
+						sa.checkNull(m.declareId, '请输入 [进出口申报单编号变更、撤销类型时必填]');
+						sa.checkNull(m.declareType, '请输入 [1-边民,2-商铺业主或其代理人,3-合作社代表,4-互助组代表]');
+						sa.checkNull(m.declareName, '请输入 [申报人姓名]');
+						sa.checkNull(m.ciphertextIdno, '请输入 [申报人身份证号]');
+						sa.checkNull(m.shopNo, '请输入 [申报人类别为2时商铺编码必填]');
+						sa.checkNull(m.shopName, '请输入 [申报人类别为2时商铺名称必填]');
+						sa.checkNull(m.orgPutrecNo, '请输入 [申报人类别为3、4时互助组/合作社备案编号]');
+						sa.checkNull(m.orgName, '请输入 [申报人类别为3、4时互助组/合租社名称]');
+						sa.checkNull(m.orgScc, '请输入 [申报人类别为4时边民合作社社会统一信用代码]');
+						sa.checkNull(m.veNo, '请输入 [车牌号]');
+						sa.checkNull(m.vehicleType, '请输入 [运输工具类型:1-三轮车;2-货车;3-电动车;4-拖拉机;5-其他;6-轻型货车;7-微型货车;]');
+						sa.checkNull(m.btrnbBizModecd, '请输入 [业务模式:进出口标志为进口时,01区内交易、02落地加工、03原装提离。进出口标志为出口时,04:直接出口,05:出口销售]');
+						sa.checkNull(m.gFlow, '请输入 [商品流向:进出口标志为进口时,必填,01-二次销售;02-生活自用;03-落地加工]');
+						sa.checkNull(m.iEFlag, '请输入 [进出口标志:I进口E出口]');
+						sa.checkNull(m.fieldCode, '请输入 [监管场所编号]');
+						sa.checkNull(m.fieldName, '请输入 [监管场所名称]');
+						sa.checkNull(m.customsCode, '请输入 [申报口岸代码]');
+						sa.checkNull(m.carPool, '请输入 [是否拼车:1-是、0-否]');
+						sa.checkNull(m.note, '请输入 [备注]');
+						sa.checkNull(m.sumAmt, '请输入 [总金额]');
+						sa.checkNull(m.sumGrossWt, '请输入 [总毛重]');
+						sa.checkNull(m.sumNetWt, '请输入 [总净重]');
+						sa.checkNull(m.trafMode, '请输入 [运输方式]');
+						sa.checkNull(m.currCode, '请输入 [币制]');
+						sa.checkNull(m.packNo, '请输入 [件数,正整数]');
+						sa.checkNull(m.tradeCountry, '请输入 [贸易国别]');
+						sa.checkNull(m.mName, '请输入 [落地加工企业名称]');
+						sa.checkNull(m.mScc, '请输入 [落地加工企业社会统一信用代码]');
+						sa.checkNull(m.shareFlag, '请输入 [是否均摊:0否1是]');
+						sa.checkNull(m.dclType, '请输入 [申报单类型]');
+						sa.checkNull(m.mdfblRvkRsn, '请输入 [改单/撤销原因,撤销时必填]');
+						sa.checkNull(m.borderFlag, '请输入 [边民备案编号标记:值为true,则borderList信息border_putrec_no字段必填;值不为true,则边民身份证号等信息必填]');
+						sa.checkNull(m.delStatus, '请输入 [数据状态]');
+						sa.checkNull(m.declStatus, '请输入 [申报状态]');
+						sa.checkNull(m.declTime, '请输入 [申报时间]');
+						sa.checkNull(m.rcptTime, '请输入 [回执时间]');
+						sa.checkNull(m.auditRemark, '请输入 [审核备注]');
+						sa.checkNull(m.agentCode, '请输入 [运输工具代理企业代码]');
+						sa.checkNull(m.manifestId, '请输入 [运输工具批次号]');
+						sa.checkNull(m.shopPutrecNo, '请输入 [商铺备案编号]');
+						sa.checkNull(m.borderId, '请输入 [边民id]');
+						sa.checkNull(m.msgId, '请输入 []');
+						sa.checkNull(m.entCode, '请输入 [企业编码]');
+						sa.checkNull(m.entName, '请输入 [企业名称]');
+						sa.checkNull(m.borderPeopleList, '请输入 [委托边民体信息对象]');
+						sa.checkNull(m.borderPeopleLimitList, '请输入 [委托边民额度体对象]');
+						sa.checkNull(m.goodsList, '请输入 [申报单商品体信息对象]');
+
+						// 开始增加或修改
+						if(this.id <= 0) {	// 添加
+							sa.ajax('/level-one-server/TbImportOrder/add', m, function(res){
+								sa.alert('增加成功', this.clean);
+							}.bind(this));
+						} else {	// 修改
+							sa.ajax('/level-one-server/TbImportOrder/update', m, function(res){
+								sa.alert('修改成功', this.clean);
+							}.bind(this));
+						}
+					},
+					// 添加/修改 完成后的动作
+					clean: function() {
+						if(this.id == 0) {
+							this.m = this.createModel();
+						} else {
+							parent.app.f5();		// 刷新父页面列表
+							sa.closeCurrIframe();	// 关闭本页
+						}
+					}
+				},
+				mounted: function(){
+					// 初始化数据
+					if(this.id <= 0) {
+						this.m = this.createModel();
+					} else {
+						sa.ajax('/level-one-server/TbImportOrder/getById?id=' + this.id, function(res) {
+							this.m = res.data;
+							if(res.data == null) {
+								sa.alert('未能查找到 id=' + this.id + " 详细数据");
+							}
+						}.bind(this))
+					}
+				}
+			})
+
+		</script>
+	</body>
+</html>

+ 108 - 0
sa-view/tb-import-order/tb-import-order-info.html

@@ -0,0 +1,108 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<title>进口申报单-详情</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
+		<!-- 所有的 css js 资源 -->
+		<link rel="stylesheet" href="../../static/kj/element-ui/theme-chalk/index.css">
+		<link rel="stylesheet" href="../../static/sa.css">
+		<script src="../../static/kj/vue.min.js"></script>
+		<script src="../../static/kj/element-ui/index.js"></script>
+		<script src="../../static/kj/httpVueLoader.js"></script>
+		<script src="../../static/kj/jquery.min.js"></script>
+		<script src="../../static/kj/layer/layer.js"></script>
+		<script src="../../static/sa.js"></script>
+		<style type="text/css">
+			.c-panel .c-label{width: 8em;}
+		</style>
+	</head>
+	<body>
+		<div class="vue-box sbot" style="display: none;" :style="'display: block;'">
+			<!-- ------- 内容部分 ------- -->
+			<div class="s-body">
+				<div class="c-panel">
+					<el-form v-if="m">
+						<sa-info name="业务编号" br>{{m.platSeqNo}}</sa-info>
+						<sa-info name="预录入编号" br>{{m.preNo}}</sa-info>
+						<sa-info name="关联进境申报单编号" br>{{m.itrdclDeclareId}}</sa-info>
+						<sa-info name="进出口申报单编号变更、撤销类型时必填" br>{{m.declareId}}</sa-info>
+						<sa-info type="enum" name="申报人类别" :value="m.declareType" :jv="{1: '边民', 2: '商铺业主或其代理人', 3: '合作社代表', 4: '互助组代表'}" br></sa-info>
+						<sa-info name="申报人姓名" br>{{m.declareName}}</sa-info>
+						<sa-info name="申报人身份证号" br>{{m.ciphertextIdno}}</sa-info>
+						<sa-info name="申报人类别为2时商铺编码必填" br>{{m.shopNo}}</sa-info>
+						<sa-info name="申报人类别为2时商铺名称必填" br>{{m.shopName}}</sa-info>
+						<sa-info name="申报人类别为3、4时互助组/合作社备案编号" br>{{m.orgPutrecNo}}</sa-info>
+						<sa-info name="申报人类别为3、4时互助组/合租社名称" br>{{m.orgName}}</sa-info>
+						<sa-info name="申报人类别为4时合作社社会统一信用代码" br>{{m.orgScc}}</sa-info>
+						<sa-info name="车牌号" br>{{m.veNo}}</sa-info>
+
+						<sa-info type="enum" name="运输工具类型" :value="m.vehicleType" :jv="{1: '三轮车', 2: '货车', 3: '电动车', 4: '拖拉机', 5: '其他', 6: '轻型货车', 7: '微型货车'}" br></sa-info>
+						<sa-info type="enum" name="业务模式" :value="m.btrnbBizModecd" :jv="{1: '区内交易', 2: '落地加工', 3: '原装提离', 4: '直接出口', 5: '出口销售'}" br></sa-info>
+						<sa-info type="enum" name="商品流向" :value="m.gFlow" :jv="{1: '二次销售', 2: '生活自用', 3: '落地加工'}" br></sa-info>
+						<sa-info type="enum" name="进出口标志" :value="m.iEFlag" :jv="{'I': '进口', 'E': '出口'}" br></sa-info>
+
+						<sa-info name="监管场所编号" br>{{m.fieldCode}}</sa-info>
+						<sa-info name="监管场所名称" br>{{m.fieldName}}</sa-info>
+						<sa-info name="申报口岸代码" br>{{m.customsCode}}</sa-info>
+						<sa-info type="enum" name="是否拼车" :value="m.carPool" :jv="{'1': '是', '0': '否'}" br></sa-info>
+						<sa-info name="备注" br>{{m.note}}</sa-info>
+						<sa-info name="总金额" br>{{m.sumAmt}}</sa-info>
+						<sa-info name="总毛重" br>{{m.sumGrossWt}}</sa-info>
+						<sa-info name="总净重" br>{{m.sumNetWt}}</sa-info>
+						<sa-info name="运输方式" br>{{m.trafMode}}</sa-info>
+						<sa-info name="币制" br>{{m.currCode}}</sa-info>
+						<sa-info name="件数" br>{{m.packNo}}</sa-info>
+						<sa-info name="贸易国别" br>{{m.tradeCountry}}</sa-info>
+						<sa-info name="落地加工企业名称" br>{{m.mName}}</sa-info>
+						<sa-info name="落地加工企业社会统一信用代码" br>{{m.mScc}}</sa-info>
+						<sa-info type="enum" name="是否均摊" :value="m.shareFlag" :jv="{'1': '是', '0': '否'}" br></sa-info>
+						<sa-info name="申报单类型" br>{{m.dclType}}</sa-info>
+						<sa-info name="改单/撤销原因,撤销时必填" br>{{m.mdfblRvkRsn}}</sa-info>
+						<sa-info name="边民备案编号标记" br>{{m.borderFlag}}</sa-info>
+						<sa-info name="数据状态" br>{{m.delStatus}}</sa-info>
+						<sa-info name="申报状态" br>{{m.declStatus}}</sa-info>
+						<sa-info name="申报时间" br>{{m.declTime}}</sa-info>
+						<sa-info name="回执时间" br>{{m.rcptTime}}</sa-info>
+						<sa-info name="审核备注" br>{{m.auditRemark}}</sa-info>
+						<sa-info name="运输工具代理企业代码" br>{{m.agentCode}}</sa-info>
+						<sa-info name="运输工具批次号" br>{{m.manifestId}}</sa-info>
+						<sa-info name="商铺备案编号" br>{{m.shopPutrecNo}}</sa-info>
+						<sa-info name="边民id" br>{{m.borderId}}</sa-info>
+						<sa-info name="" br>{{m.msgId}}</sa-info>
+						<sa-info name="企业编码" br>{{m.entCode}}</sa-info>
+						<sa-info name="企业名称" br>{{m.entName}}</sa-info>
+					</el-form>
+				</div>
+			</div>
+			<!-- ------- 底部按钮 ------- -->
+			<div class="s-foot">
+				<el-button type="success" @click="sa.closeCurrIframe()">确定</el-button>
+				<el-button @click="sa.closeCurrIframe()">取消</el-button>
+			</div>
+		</div>
+		<script>
+			var app = new Vue({
+				components: {
+					"sa-info": httpVueLoader('../../sa-frame/com/sa-info.vue')
+				},
+				el: '.vue-box',
+				data: {
+					id: sa.p('id', 0),	// 获取数据ID
+					m: null
+				},
+				methods: {
+				},
+				mounted: function() {
+					sa.ajax('/level-one-server/TbImportOrder/getById?id=' + this.id, function(res) {
+						this.m = res.data;
+						if(res.data == null) {
+							sa.alert('未能查找到 id=' + this.id + " 详细数据");
+						}
+					}.bind(this))
+				}
+			})
+
+		</script>
+	</body>
+</html>

+ 146 - 0
sa-view/tb-import-order/tb-import-order-list.html

@@ -0,0 +1,146 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<title>进口申报单-列表</title>
+		<meta charset="utf-8">
+		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
+		<!-- 所有的 css & js 资源 -->
+		<link rel="stylesheet" href="../../static/kj/element-ui/theme-chalk/index.css">
+		<link rel="stylesheet" href="../../static/sa.css">
+		<script src="../../static/kj/vue.min.js"></script>
+		<script src="../../static/kj/element-ui/index.js"></script>
+		<script src="../../static/kj/httpVueLoader.js"></script>
+		<script src="../../static/kj/jquery.min.js"></script>
+		<script src="../../static/kj/layer/layer.js"></script>
+		<script src="../../static/sa.js"></script>
+	</head>
+	<body>
+		<div class="vue-box" style="display: none;" :style="'display: block;'">
+			<div class="c-panel">
+				<!-- ------------- 检索参数 ------------- -->
+				<div class="c-title">检索参数</div>
+				<el-form ref="form" :model='p' @submit.native.prevent>
+					<sa-item type="text" name="业务编号" v-model="p.platSeqNo" width="100px"></sa-item>
+					<sa-item type="text" name="车牌号" v-model="p.veNo" width="100px"></sa-item>
+					<el-button type="primary" icon="el-icon-search" @click="p.pageNo = 1; f5()">查询</el-button>
+					<el-button size="mini" type="info" @click="sa.f5()">重置</el-button>
+				</el-form>
+				<!-- ------------- 数据列表 ------------- -->
+				<el-table class="data-table" ref="data-table" :data="dataList" >
+					<sa-td type="selection"></sa-td>
+					<sa-td name="业务编号" prop="platSeqNo" ></sa-td>
+					<sa-td name="预录入编号" prop="preNo" ></sa-td>
+					<sa-td name="申报人姓名" prop="declareName" ></sa-td>
+					<sa-td name="申报人身份证号" prop="ciphertextIdno" ></sa-td>
+					<sa-td name="车牌号" prop="veNo" ></sa-td>
+					<sa-td name="监管场所名称" prop="fieldName" ></sa-td>
+					<sa-td name="总金额" prop="sumAmt" ></sa-td>
+					<sa-td name="总毛重" prop="sumGrossWt" ></sa-td>
+					<sa-td name="总净重" prop="sumNetWt" ></sa-td>
+					<sa-td name="运输方式" prop="trafMode" ></sa-td>
+					<sa-td name="币制" prop="currCode" ></sa-td>
+					<sa-td name="件数" prop="packNo" ></sa-td>
+					<sa-td name="贸易国别" prop="tradeCountry" ></sa-td>
+					<sa-td name="申报单类型" prop="dclType" ></sa-td>
+					<sa-td name="数据状态" prop="delStatus" ></sa-td>
+					<sa-td name="申报状态" prop="declStatus" ></sa-td>
+					<sa-td name="申报时间" prop="declTime" ></sa-td>
+					<sa-td name="回执时间" prop="rcptTime" ></sa-td>
+					<sa-td name="审核备注" prop="auditRemark" ></sa-td>
+					<sa-td name="商铺备案编号" prop="shopPutrecNo" ></sa-td>
+					<sa-td name="边民id" prop="borderId" ></sa-td>
+					<sa-td name="企业编码" prop="entCode" ></sa-td>
+					<sa-td name="企业名称" prop="entName" ></sa-td>
+					<el-table-column label="操作" fixed="right"  width="240px">
+						<template slot-scope="s">
+							<el-button class="c-btn" type="success" icon="el-icon-view" @click="get(s.row)">查看</el-button>
+						</template>
+					</el-table-column>
+				</el-table>
+				<!-- ------------- 分页 ------------- -->
+				<sa-item type="page" :curr.sync="p.pageNo" :size.sync="p.pageSize" :total="dataCount" @change="f5()"></sa-item>
+			</div>
+		</div>
+		<script>
+			var app = new Vue({
+				components: {
+					"sa-item": httpVueLoader('../../sa-frame/com/sa-item.vue'),
+					"sa-td": httpVueLoader('../../sa-frame/com/sa-td.vue'),
+				},
+				el: '.vue-box',
+				data: {
+					p: { // 查询参数
+						platSeqNo: '',		// 业务编号
+						veNo: '',		// 车牌号
+						pageNo: 1,		// 当前页
+						pageSize: 10,	// 页大小
+						sortType: 0		// 排序方式
+					},
+					dataCount: 0,
+					dataList: [], // 数据集合
+				},
+				methods: {
+					// 刷新
+					f5: function() {
+						sa.ajax('/level-one-server/TbImportOrder/getList', sa.removeNull(this.p), function(res) {
+							this.dataList = res.data; // 数据
+							this.dataCount = res.dataCount; // 数据总数
+							sa.f5TableHeight();		// 刷新表格高度
+						}.bind(this));
+					},
+					// 查看
+					get: function(data) {
+						sa.showIframe('数据详情', 'tb-import-order-info.html?id=' + data.id, '1050px', '90%');
+					},
+					// 查看 - 根据选中的
+					getBySelect: function(data) {
+						var selection = this.$refs['data-table'].selection;
+						if(selection.length == 0) {
+							return sa.msg('请选择一条数据')
+						}
+						this.get(selection[0]);
+					},
+					// 修改
+					update: function(data) {
+						sa.showIframe('修改数据', 'tb-import-order-add.html?id=' + data.id, '1000px', '90%');
+					},
+					// 新增
+					add: function(data) {
+						sa.showIframe('新增数据', 'tb-import-order-add.html?id=-1', '1000px', '90%');
+					},
+					// 删除
+					del: function(data) {
+						sa.confirm('是否删除,此操作不可撤销', function() {
+							sa.ajax('/level-one-server/TbImportOrder/delete?id=' + data.id, function(res) {
+								sa.arrayDelete(this.dataList, data);
+								sa.ok('删除成功');
+								sa.f5TableHeight();		// 刷新表格高度
+							}.bind(this))
+						}.bind(this));
+					},
+					// 批量删除
+					deleteByIds: function() {
+						// 获取选中元素的id列表
+						let selection = this.$refs['data-table'].selection;
+						let ids = sa.getArrayField(selection, 'id');
+						if(selection.length == 0) {
+							return sa.msg('请至少选择一条数据')
+						}
+						// 提交删除
+						sa.confirm('是否批量删除选中数据?此操作不可撤销', function() {
+							sa.ajax('/level-one-server/TbImportOrder/deleteByIds', {ids: ids.join(',')}, function(res) {
+								sa.arrayDelete(this.dataList, selection);
+								sa.ok('删除成功');
+								sa.f5TableHeight();		// 刷新表格高度
+							}.bind(this))
+						}.bind(this));
+					},
+				},
+				created: function() {
+					this.f5();
+					sa.onInputEnter();
+				}
+			})
+		</script>
+	</body>
+</html>

binární
static/icon/finishMoney.png


binární
static/icon/jyz.png