28 Commits b75d348e37 ... 157723b6e2

Auteur SHA1 Message Date
  qzy 157723b6e2 Merge remote-tracking branch 'origin/feature/wxPay' into feature/temp il y a 1 mois
  qzy e8b0695379 查询优化 il y a 1 mois
  qzy c4f257b4ea 银行卡修改,结算单优化,退转售 il y a 1 mois
  linbl d248f18984 查看二级市场银行回执 il y a 1 mois
  linbl 7a13c6edb8 页面修改 il y a 1 mois
  qzy edce8662af 部分功能优化 il y a 1 mois
  qzy 13c1f20415 部分功能优化 il y a 1 mois
  linbl e9df5a437a 数字金额转大写 il y a 1 mois
  linbl c7ba467feb 展示修改 il y a 1 mois
  linbl 2d8915e03e 二级市场-新增查询交易凭证、电子协议 il y a 1 mois
  linbl 754677ccc8 新增互助社确认进境结算单功能 il y a 1 mois
  linbl 334ecd1028 新增订单补扣款、订单推结关 il y a 1 mois
  linbl 28a0d7d232 新增补推009按钮 il y a 1 mois
  linbl edc24f88ee bug修改 il y a 1 mois
  panlijun 6eaa673a66 修改交易凭证内容 il y a 1 mois
  panlijun b79478381f 增加了打印凭证和打印协议功能 il y a 2 mois
  panlijun 8db0cb3b99 修订表格标签问题 il y a 2 mois
  panlijun 8aa1659b07 修改生成PDF为A4规格 il y a 2 mois
  panlijun 80f9805f58 1、增加交易凭证 il y a 2 mois
  qzy 1c615ec420 退单 il y a 2 mois
  linbl 75dac0b989 Merge remote-tracking branch 'origin/feature/asyncOrder' into feature/asyncOrder il y a 2 mois
  linbl 70b77627ef 二级市场采购商补扣款 il y a 2 mois
  linbl 47d8b75f14 二级市场采购商补扣款 il y a 2 mois
  qzy 099763ce0c 退运退单查询 il y a 2 mois
  linbl 0a58ed5032 代码提交 il y a 2 mois
  qzy 997c24ccf3 '外网和本地改成一个' il y a 2 mois
  qzy f94236e990 Merge branch 'feature/asyncOrder' of http://git.aseanbusiness.cn/qzyReal/market-admin-ui into feature/asyncOrder il y a 2 mois
  qzy 56336deda5 边民手机号修改 il y a 2 mois
43 fichiers modifiés avec 3718 ajouts et 880 suppressions
  1. 32 18
      login.html
  2. 434 421
      sa-frame/menu-list-sp.js
  3. 9 9
      sa-frame/menu-list.js
  4. 3 3
      sa-view-sp/console/com-sta-data.vue
  5. 13 3
      sa-view/app-user/app-user-list.html
  6. 122 0
      sa-view/ht-byte/ht-byte-add.html
  7. 61 0
      sa-view/ht-byte/ht-byte-info.html
  8. 120 0
      sa-view/ht-byte/ht-byte-list.html
  9. 108 0
      sa-view/ht-settlement-error/ht-trade-chargebacks-list.html
  10. 106 0
      sa-view/ht-settlement-error/ht-trade-returns-list.html
  11. 190 0
      sa-view/ht-settlement-error/ht-trade-settlement-info.html
  12. 111 0
      sa-view/ht-settlement-error/ht-trade-settlement-order.html
  13. 74 66
      sa-view/ht-trade-settlement/ht-trade-settlement-list.html
  14. 102 54
      sa-view/ht-trade-settlement/ht-trade-settlement-order.html
  15. 153 0
      sa-view/ht-trade-settlement/tb-order-deductionByVeNo.html
  16. 149 0
      sa-view/ht-trade-settlement/tb-order-sendCXB001ByVeNo.html
  17. 222 95
      sa-view/listing-management/listing-management-order.html
  18. 11 15
      sa-view/listing-management/listing-management.html
  19. 116 0
      sa-view/tb-app/tb-app-add.html
  20. 66 0
      sa-view/tb-app/tb-app-info.html
  21. 132 0
      sa-view/tb-app/tb-app-list.html
  22. 11 14
      sa-view/tb-group/tb-group-leader.html
  23. 1 1
      sa-view/tb-group/tb-group-list.html
  24. 7 5
      sa-view/tb-import-order/tb-import-order-list.html
  25. 3 3
      sa-view/tb-order/tb-order-info.html
  26. 211 66
      sa-view/tb-order/tb-order-list.html
  27. 70 0
      sa-view/tb-orders/tb-orders-bank-list.html
  28. 357 0
      sa-view/tb-orders/tb-orders-email.html
  29. 6 6
      sa-view/tb-orders/tb-orders-info.html
  30. 65 12
      sa-view/tb-orders/tb-orders-list.html
  31. 190 0
      sa-view/tb-orders/tb-orders-print.html
  32. 10 5
      sa-view/tb-people/tb-people-bank.html
  33. 19 24
      sa-view/tb-people/tb-people-list.html
  34. 1 1
      sa-view/tb-port-news/tb-port-news-add.html
  35. 3 3
      sa-view/tb-purchaser-personal/tb-purchaser-personal-list.html
  36. 28 28
      sa-view/tb-purchaser/tb-purchaser-add.html
  37. 142 0
      sa-view/tb-purchaser/tb-purchaser-bank.html
  38. 9 5
      sa-view/tb-purchaser/tb-purchaser-list.html
  39. 142 0
      sa-view/tb-shop/tb-shop-bank.html
  40. 35 21
      sa-view/tb-shop/tb-shop-list.html
  41. 19 0
      static/kj/html2canvas.min.js
  42. 50 0
      static/kj/jspdf.umd.min.js
  43. 5 2
      static/sa.js

+ 32 - 18
login.html

@@ -191,7 +191,7 @@
 			// 所有参考属性
 			var page_title = '你好,欢迎登录系统'; // 页面标题
 			var key = 'admin'; // 默认的账号
-			var password = '123456'; // 默认的password   fdsg@3,;27Rf
+			var password = 'admin123'; // 默认的password   fdsg@3,;27Rf
 			var logo = 'sa-frame/admin-logo.png'; // logo地址,为空字符串则不显示
 			var codeKey = '';
 			var pKey = '';
@@ -232,27 +232,41 @@
 				let res = encrypt.encrypt(p.password);
 				let s = encrypt.decrypt(res);
 				p.password = res;
-				// 3、请求后台
-				sa.ajax('/sp-admin/AccAdmin/doLogin', p, function(res) {
-					// 写入token
-					if (res.data.tokenInfo) {
-						localStorage.tokenName = res.data.tokenInfo.tokenName;
-						localStorage.tokenValue = res.data.tokenInfo.tokenValue;
-					}
-					// 写入权限码
-					sa.setAuth(res.data.per_list);
-					// 打个招呼,进入 index.html
-					sa.msg('登录成功,欢迎你:' + p.key);
-					setTimeout(function() {
-						if (parent == window) {
-							location.href = "index.html";
+				$.ajax({
+					url: sa.cfg.api_url + '/sp-admin/AccAdmin/doLogin',
+					data: p,
+					method: 'post',
+					success: function(res) {
+						let code = res.code;
+						if (code == 200) {
+							successLogin(res)
 						} else {
-							sa.closeCurrIframe();
-							parent.location.reload();
+							let msg=res.msg;
+							sa.error(msg)
+							getCaptcha();
 						}
-					}, 500);
+					}
 				})
 			}
+			function successLogin(res){
+				// 写入token
+				if (res.data.tokenInfo) {
+					localStorage.tokenName = res.data.tokenInfo.tokenName;
+					localStorage.tokenValue = res.data.tokenInfo.tokenValue;
+				}
+				// 写入权限码
+				sa.setAuth(res.data.per_list);
+				// 打个招呼,进入 index.html
+				sa.msg('登录成功');
+				setTimeout(function() {
+					if (parent == window) {
+						location.href = "index.html";
+					} else {
+						sa.closeCurrIframe();
+						parent.location.reload();
+					}
+				}, 500);
+			}
 			// 你所有要改的代码全在这里   ↑↑↑↑↑
 		</script>
 		<script type="text/javascript">

Fichier diff supprimé car celui-ci est trop grand
+ 434 - 421
sa-frame/menu-list-sp.js


+ 9 - 9
sa-frame/menu-list.js

@@ -1,20 +1,20 @@
-// 一个菜单可以包括的所有属性 
+// 一个菜单可以包括的所有属性
 // {
 // 	id: '12345',		// 菜单id, 必须唯一
 // 	name: '用户中心',		// 菜单名称, 同时也是tab选项卡上显示的名称
 // 	icon: 'el-icon-user',	// 菜单图标, 参考地址:  https://element.eleme.cn/#/zh-CN/component/icon
-//	info: '管理所有用户',	// 菜单介绍, 在菜单预览和分配权限时会有显示 
+//	info: '管理所有用户',	// 菜单介绍, 在菜单预览和分配权限时会有显示
 // 	url: 'sa-html/user/user-list.html',	// 菜单指向地址
-// 	parentId: 1,			// 所属父菜单id, 如果指定了一个值, sa-admin在初始化时会将此菜单转移到指定菜单上 
+// 	parentId: 1,			// 所属父菜单id, 如果指定了一个值, sa-admin在初始化时会将此菜单转移到指定菜单上
 // 	isShow: true,			// 是否显示, 默认true
-// 	isBlank: false,		// 是否属于外部链接, 如果为true, 则点击菜单时从新窗口打开 
+// 	isBlank: false,		// 是否属于外部链接, 如果为true, 则点击菜单时从新窗口打开
 // 	childList: [			// 指定这个菜单所有的子菜单, 子菜单可以继续指定子菜单, 至多支持三级菜单
-// 		// .... 
+// 		// ....
 // 	],
-//	click: function(){}		// 点击菜单执行一个函数 
+//	click: function(){}		// 点击菜单执行一个函数
 // }
 
-// 定义菜单列表 
+// 定义菜单列表
 var menuList =	[
-	
-]
+
+]

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

@@ -46,7 +46,7 @@
 				</div>
 			</div>
 		</el-col>
-		<el-col :lg="4" :sm="8" :xs="24">
+		<!-- <el-col :lg="4" :sm="8" :xs="24">
 			<div class="sa-wnk">
 				<img src="../../static/icon/jyz.png" />
 				<div class="sa-wnk-tv">
@@ -54,7 +54,7 @@
 					<p class="sa-wnk-value">{{ sta.totalMoney-sta.finishMoney }}</p>
 				</div>
 			</div>
-		</el-col>
+		</el-col> -->
 
 	</el-row>
 </template>
@@ -120,4 +120,4 @@
 		font-size: 24px;
 		padding-bottom: 20px;
 	}
-</style>
+</style>

+ 13 - 3
sa-view/app-user/app-user-list.html

@@ -22,6 +22,15 @@
 				<el-form ref="form" :model='p' @submit.native.prevent>
 					<sa-item type="text" name="手机号码" v-model="p.phone" width="100px"></sa-item>
 					<sa-item type="text" name="姓名" v-model="p.name"></sa-item>
+					<sa-item name="类型">
+						<el-select v-model="p.userType">
+							<el-option label="全部" value=""></el-option>
+							<el-option label="边民" value="1"></el-option>
+							<el-option label="组长" value="2"></el-option>
+							<el-option label="收购商" value="3"></el-option>
+							<el-option label="外籍商户" value="5"></el-option>
+						</el-select>
+					</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-button v-if="sa.isAuth('app-user-add')" size="mini" type="primary" @click="add()">新增</el-button>
@@ -29,7 +38,7 @@
 				<!-- ------------- 数据列表 ------------- -->
 				<el-table class="data-table" ref="data-table" :data="dataList" >
 					<sa-td type="index" name="序号"></sa-td>
-					<sa-td name="手机号码" prop="phone" ></sa-td>
+					<sa-td name="手机号码" prop="phone" width="120" ></sa-td>
 					<sa-td name="姓名" prop="name" width="100"></sa-td>
 					<sa-td name="类型" prop="userType" type="enum" :jv="{1: '普通边民', 2: '边民组长', 3: '收购商', 4: '司机', 5: '外籍商户', 6: '合作社'}"></sa-td>
 					<sa-td name="状态" prop="enable" width="90" align="center">
@@ -44,9 +53,10 @@
 							<el-tag type="danger" v-if="scope.row.auth==0">未认证</el-tag>
 						</template>
 					</sa-td>
-					<sa-td name="认证时间" prop="authTime" ></sa-td>
+					<sa-td name="认证时间" prop="authTime" width="160"></sa-td>
 					<sa-td name="登录次数" prop="loginCount" width="90"></sa-td>
-					<sa-td name="上次登录时间" prop="lastLoginTime" ></sa-td>
+					<sa-td name="上次登录时间" prop="lastLoginTime" width="160" ></sa-td>
+					<sa-td name="创建时间" prop="createTime" width="160" ></sa-td>
 					<el-table-column label="操作" fixed="right"  width="270px">
 						<template slot-scope="s">
 							<el-button class="c-btn" type="success" icon="el-icon-view" @click="get(s.row)">查看</el-button>

+ 122 - 0
sa-view/ht-byte/ht-byte-add.html

@@ -0,0 +1,122 @@
+<!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="mq消息主键" v-model="m.messageId" br></sa-item>
+						<sa-item type="text" name="**001=边民备案**002=商铺备案**003=边民互助组备案**004=边民合作社备案**005=车辆**006=进境申报单**007=进口申报单" v-model="m.dataType" br></sa-item>
+						<sa-item type="text" name="字节数据主体" v-model="m.body" br></sa-item>
+						<sa-item type="text" name="mq队列名称" v-model="m.queueName" br></sa-item>
+						<sa-item type="text" name="完成对象转换状态" v-model="m.finishStatus" br></sa-item>
+						<sa-item type="text" name="创建时间" v-model="m.createTime" 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: '',		// 字节表主键 
+							messageId: '',		// mq消息主键 
+							dataType: '',		//      *      * 001=边民备案     *      * 002=商铺备案     *      * 003=边民互助组备案     *      * 004=边民合作社备案     *      * 005=车辆     *      * 006=进境申报单     *      * 007=进口申报单 
+							body: '',		// 字节数据主体 
+							queueName: '',		// mq队列名称 
+							finishStatus: '',		// 完成对象转换状态 
+							createTime: '',		// 创建时间 
+						}
+					},
+					// 提交数据 
+					ok: function(){
+						// 表单校验 
+						let m = this.m;
+						sa.checkNull(m.id, '请输入 [字节表主键]');
+						sa.checkNull(m.messageId, '请输入 [mq消息主键]');
+						sa.checkNull(m.dataType, '请输入 [**001=边民备案**002=商铺备案**003=边民互助组备案**004=边民合作社备案**005=车辆**006=进境申报单**007=进口申报单]');
+						sa.checkNull(m.body, '请输入 [字节数据主体]');
+						sa.checkNull(m.queueName, '请输入 [mq队列名称]');
+						sa.checkNull(m.finishStatus, '请输入 [完成对象转换状态]');
+						sa.checkNull(m.createTime, '请输入 [创建时间]');
+				
+						// 开始增加或修改
+						if(this.id <= 0) {	// 添加
+							sa.ajax('/HtByte/add', m, function(res){
+								sa.alert('增加成功', this.clean); 
+							}.bind(this));
+						} else {	// 修改
+							sa.ajax('/HtByte/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('/HtByte/getById?id=' + this.id, function(res) {
+							this.m = res.data;
+							if(res.data == null) {
+								sa.alert('未能查找到 id=' + this.id + " 详细数据");
+							}
+						}.bind(this))
+					}
+				}
+			})
+			
+		</script>
+	</body>
+</html>

+ 61 - 0
sa-view/ht-byte/ht-byte-info.html

@@ -0,0 +1,61 @@
+<!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><div style="line-height: 35px;">{{m.details}}</div></sa-info>
+						<sa-info name="创建时间" br>{{m.createTime}}</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('/async-server/HtByte/getById?id=' + this.id, function(res) {
+						this.m = res.data;
+						if(res.data == null) {
+							sa.alert('未能查找到 id=' + this.id + " 详细数据");
+						}
+					}.bind(this))
+				}
+			})
+			
+		</script>
+	</body>
+</html>

+ 120 - 0
sa-view/ht-byte/ht-byte-list.html

@@ -0,0 +1,120 @@
+<!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 name="状态">
+						<el-select v-model="p.finishStatus">
+							<el-option label="全部" value=""></el-option>
+							<el-option label="成功" :value="1"></el-option>
+							<el-option label="失败" :value="2"></el-option>
+							<el-option label="未处理" :value="0"></el-option>
+						</el-select>
+					</sa-item>
+					<sa-item name="类型" width="90px">
+						<el-select v-model="p.dataType" style="width: 120px;">
+							<el-option label="全部" value=""></el-option>
+							<el-option label="边民" value="001"></el-option>
+							<el-option label="商铺" value="002"></el-option>
+							<el-option label="合作社" value="003"></el-option>
+							<el-option label="互助组" value="004"></el-option>
+							<el-option label="商品信息" value="005"></el-option>
+							<el-option label="结算单" value="006"></el-option>
+							<el-option label="过卡3" value="007"></el-option>
+							<el-option label="进口申报单" value="008"></el-option>
+							<el-option label="边民确认" value="009"></el-option>
+							<el-option label="退单" value="010"></el-option>
+						</el-select>
+					</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 name="序号" type="index"></sa-td>
+					<sa-td name="类型" prop="dataType"></sa-td>
+					<sa-td name="处理结果" prop="createTime">
+						<template slot-scope="s">
+							<div v-if="s.row.finishStatus==0">未处理</div>
+							<div v-if="s.row.finishStatus==1">处理成功</div>
+							<div v-if="s.row.finishStatus==2">处理失败</div>
+						</template>
+					</sa-td>
+					<sa-td name="时间" prop="createTime"></sa-td>
+					<el-table-column label="操作" fixed="right" width="120px">
+						<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: { // 查询参数  
+						id: '', // 字节表主键 
+						messageId: '', // mq消息主键 
+						dataType: '', //      *      * 001=边民备案     *      * 002=商铺备案     *      * 003=边民互助组备案     *      * 004=边民合作社备案     *      * 005=车辆     *      * 006=进境申报单     *      * 007=进口申报单 
+						body: '', // 字节数据主体 
+						queueName: '', // mq队列名称 
+						finishStatus: '', // 完成对象转换状态 
+						createTime: '', // 创建时间 
+						pageNo: 1, // 当前页 
+						pageSize: 10, // 页大小 
+						sortType: 0 // 排序方式 
+					},
+					dataCount: 0,
+					dataList: [], // 数据集合 
+				},
+				methods: {
+					// 刷新
+					f5: function() {
+						sa.ajax('/async-server/HtByte/getList', sa.removeNull(this.p), function(res) {
+							this.dataList = res.data; // 数据
+							this.dataCount = res.dataCount; // 数据总数 
+							sa.f5TableHeight(); // 刷新表格高度 
+						}.bind(this));
+					},
+					// 查看
+					get: function(data) {
+						sa.showIframe('数据详情', 'ht-byte-info.html?id=' + data.id, '900px', '800px');
+					},
+				
+				},
+				created: function() {
+					this.f5();
+					sa.onInputEnter();
+				}
+			})
+		</script>
+	</body>
+</html>

+ 108 - 0
sa-view/ht-settlement-error/ht-trade-chargebacks-list.html

@@ -0,0 +1,108 @@
+<!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="8em"></sa-item>
+					<sa-item type="text" name="申报单编号" v-model="p.declareId" width="8em"></sa-item>
+					<sa-item type="text" name="商品名称" v-model="p.goodsNames" width="7em"></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="index" name="序号"></sa-td>
+					<sa-td name="申报单编号" prop="declareId" width="220px"></sa-td>
+					<sa-td name="申报人姓名" prop="declareName" ></sa-td>
+					<sa-td name="互市区" prop="fieldName" width="160"></sa-td>
+					<sa-td name="商铺名称" prop="shopName"  width="160"></sa-td>
+					<sa-td name="商品名称" prop="goodsNames"  width="160"></sa-td>
+					<sa-td name="总金额" prop="sumAmt" ></sa-td>
+					<sa-td name="总毛重(kg)" prop="sumGrossWt" ></sa-td>
+					<sa-td name="总净重(kg)" 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="veNo" ></sa-td>
+					<sa-td name="提运单号" prop="billNo"  width="160"></sa-td>
+					<sa-td name="航次号" prop="voyageNo"  width="160"></sa-td>
+					<sa-td name="申报日期" prop="createTime"  width="160">
+						<template slot-scope="s">
+							{{sa.forDate(s.row.declTime, 1)}}
+						</template>
+					</sa-td>
+					<sa-td name="退单时间" prop="returnsTime"  width="160"></sa-td>
+					<el-table-column label="操作" width="140px" fixed="right" >
+						<template slot-scope="s">
+							<el-button class="c-btn" type="success" @click="get(s.row)">查看</el-button>
+							<el-button class="c-btn" type="primary"  @click="getOrder(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: '',		// 预申报编号
+						declareId: '',		// 申报单编号
+						goodsNames: '',		// 商品名称
+						chargebacks:1,
+						pageNo: 1,		// 当前页
+						pageSize: 10,	// 页大小
+						sortType: 0		,// 排序方式
+					},
+					dataCount: 0,
+					dataList: [], // 数据集合
+				},
+				methods: {
+					// 刷新
+					f5: function() {
+						sa.ajax('/level-one-server/HtTradeSettlement/getList', sa.removeNull(this.p), function(res) {
+							this.dataList = res.data; // 数据
+							this.dataCount = res.dataCount; // 数据总数
+							sa.f5TableHeight();		// 刷新表格高度
+						}.bind(this));
+					},
+					// 查看
+					get: function(data) {
+						sa.showIframe('数据详情', 'ht-trade-settlement-info.html?id=' + data.id+'&type=chargebacks', '1050px', '90%');
+					},
+					getOrder(data){
+						sa.showIframe('边民订单', 'ht-trade-settlement-order.html?mainId='+data.id, '90%', '94%');
+					},
+				
+				},
+				created: function() {
+					this.f5();
+					sa.onInputEnter();
+				}
+			})
+		</script>
+	</body>
+</html>

+ 106 - 0
sa-view/ht-settlement-error/ht-trade-returns-list.html

@@ -0,0 +1,106 @@
+<!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="8em"></sa-item>
+					<sa-item type="text" name="申报单编号" v-model="p.declareId" width="8em"></sa-item>
+					<sa-item type="text" name="商品名称" v-model="p.goodsNames" width="7em"></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="index" name="序号"></sa-td>
+					<!-- <sa-td name="预申报编号" prop="platSeqNo" width="160px"></sa-td> -->
+					<sa-td name="申报单编号" prop="declareId" width="220px"></sa-td>
+					<sa-td name="申报人姓名" prop="declareName" ></sa-td>
+					<sa-td name="互市区" prop="fieldName" width="160"></sa-td>
+					<sa-td name="商铺名称" prop="shopName"  width="160"></sa-td>
+					<sa-td name="商品名称" prop="goodsNames"  width="160"></sa-td>
+					<sa-td name="总金额" prop="sumAmt" ></sa-td>
+					<sa-td name="总毛重(kg)" prop="sumGrossWt" ></sa-td>
+					<sa-td name="总净重(kg)" 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="veNo" ></sa-td>
+					<sa-td name="提运单号" prop="billNo"  width="160"></sa-td>
+					<sa-td name="航次号" prop="voyageNo"  width="160"></sa-td>
+					<sa-td name="申报日期" prop="createTime"  width="160">
+						<template slot-scope="s">{{sa.forDate(s.row.declTime, 1)}}</template>
+					</sa-td>
+					<sa-td name="退运时间" prop="returnsTime"  width="160"></sa-td>
+					<el-table-column label="操作" width="140px" fixed="right" >
+						<template slot-scope="s">
+							<el-button class="c-btn" type="success" @click="get(s.row)">查看</el-button>
+							<el-button class="c-btn" type="primary"  @click="getOrder(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: '',		// 预申报编号
+						declareId: '',		// 申报单编号
+						goodsNames: '',		// 商品名称
+						returns:1,
+						pageNo: 1,		// 当前页
+						pageSize: 10,	// 页大小
+						sortType: 0		// 排序方式
+					},
+					dataCount: 0,
+					dataList: [], // 数据集合
+				},
+				methods: {
+					// 刷新
+					f5: function() {
+						sa.ajax('/level-one-server/HtTradeSettlement/getList', sa.removeNull(this.p), function(res) {
+							this.dataList = res.data; // 数据
+							this.dataCount = res.dataCount; // 数据总数
+							sa.f5TableHeight();		// 刷新表格高度
+						}.bind(this));
+					},
+					// 查看
+					get: function(data) {
+						sa.showIframe('数据详情', 'ht-trade-settlement-info.html?id=' + data.id+'&type=returns', '1050px', '90%');
+					},
+					getOrder(data){
+						sa.showIframe('边民订单', 'ht-trade-settlement-order.html?mainId='+data.id, '90%', '94%');
+					},
+				},
+				created: function() {
+					this.f5();
+					sa.onInputEnter();
+				}
+			})
+		</script>
+	</body>
+</html>

+ 190 - 0
sa-view/ht-settlement-error/ht-trade-settlement-info.html

@@ -0,0 +1,190 @@
+<!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: 18em;}
+			table {
+			  font-family: arial, sans-serif;
+			  border-collapse: collapse;
+			  width: 90%;
+			  margin-top: 20px ;
+			  margin-left: auto;
+			  margin-right: auto;
+			}
+			th {
+			  border: 1px solid darkgray;
+			  text-align: left;
+			  height: 24px;
+			  padding: 8px;
+			  background-color: #dddddd;
+			}
+			td {
+			  border: 1px solid darkgray;
+			  text-align: left;
+			  padding: 8px;
+			}
+		</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">
+						<table>
+							<tr>
+								<th>预申报编号</th>
+								<td>{{m.platSeqNo}}</td>
+								<th>申报单编号</th>
+								<td>{{m.declareId}}</td>
+							</tr>
+							<tr>
+								<th>申报人类型</th>
+								<td>
+									<b v-if="m.declareType == 1">边民</b>
+									<b v-if="m.declareType == 2">商铺业主或其代理人</b>
+									<b v-if="m.declareType == 3">合作社代表</b>
+									<b v-if="m.declareType == 4">互助组代表</b>
+								</td>
+								<th>申报人姓名</th>
+								<td>{{m.declareName}}</td>
+							</tr>
+							<tr>
+								<th>申报时间</th>
+								<td>{{sa.forDate(m.declTime, 2)}}</td>
+								<th>身份证号码</th>
+								<td>{{m.idno}}</td>
+							</tr>
+							<tr>
+								<th>商铺编码</th>
+								<td>{{m.shopNo}}</td>
+								<th>商铺名称</th>
+								<td>{{m.shopName}}</td>
+							</tr>
+							<tr>
+								<th>商品名称</th>
+								<td>{{m.goodsNames}}</td>
+								<th>总金额</th>
+								<td>{{m.sumAmt}}</td>
+							</tr>
+							<tr>
+								<th>总毛重</th>
+								<td>{{m.sumGrossWt}}</td>
+								<th>总净重</th>
+								<td>{{m.sumNetWt}}</td>
+							</tr>
+							<tr>
+								<th>运输方式</th>
+								<td>{{m.trafMode}}</td>
+								<th>币制</th>
+								<td>{{m.currCode}}</td>
+							</tr>
+							<tr>
+								<th>件数</th>
+								<td>{{m.packNo}}</td>
+								<th>合作社社会统一信用代码</th>
+								<td>{{m.orgScc}}</td>
+							</tr>
+							<tr>
+								<th>互助组/合作社备案编号</th>
+								<td>{{m.orgPutrecNo}}</td>
+								<th>互助组/合租社名称</th>
+								<td>{{m.orgName}}</td>
+							</tr>
+							<tr>
+								<th>车牌号</th>
+								<td>{{m.veNo}}</td>
+								<th>业务模式</th>
+								<td>
+									<b v-if="m.btrnbBizModecd == 1">区内交易</b>
+									<b v-if="m.btrnbBizModecd == 2">落地加工</b>
+									<b v-if="m.btrnbBizModecd == 3">原装提离</b>
+									<b v-if="m.btrnbBizModecd == 4">直接出口</b>
+									<b v-if="m.btrnbBizModecd == 5">出口销售</b>
+								</td>
+							</tr>
+							<tr>
+								<th>商品流向</th>
+								<td>
+									<b v-if="m.gFlow == 1">二次销售</b>
+									<b v-if="m.gFlow == 2">生活自用</b>
+									<b v-if="m.gFlow == 3">落地加工</b>
+								</td>
+								<th>进出口标志</th>
+								<td>
+									<b v-if="m.iEFlag === 'I'">进口</b>
+									<b v-if="m.iEFlag === 'E'">出口</b>
+								</td>
+							</tr>
+							<tr>
+								<th>互市区编号</th>
+								<td>{{m.fieldCode}}</td>
+								<th>互市区</th>
+								<td>{{m.fieldName}}</td>
+							</tr>
+							<tr>
+								<th>提运单号</th>
+								<td>{{m.billNo}}</td>
+								<th>航次号</th>
+								<td>{{m.voyageNo}}</td>
+							</tr>
+							<tr>
+								<th>单证代码</th>
+								<td>{{m.preNo}}</td>
+								<th>
+									<div v-if="type=='chargebacks'">退单时间</div>
+									<div v-if="type=='returns'">退运时间</div>
+								</th>
+								<td>
+								<div v-if="type=='chargebacks'">{{sa.forDate(m.chargebacksTime, 2)}}</div>
+								<div v-if="type=='returns'">{{sa.forDate(m.returnsTime, 2)}}</div>
+								</td>
+							</tr>
+						</table>
+					</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 
+					type:sa.p('type','chargebacks'),
+					m: null
+				},
+				methods: {
+				},
+				mounted: function() {
+					sa.ajax('/level-one-server/HtTradeSettlement/getById?id=' + this.id, function(res) {
+						this.m = res.data;
+						if(res.data == null) {
+							sa.alert('未能查找到 id=' + this.id + " 详细数据");
+						}
+					}.bind(this))
+				}
+			})
+			
+		</script>
+	</body>
+</html>

+ 111 - 0
sa-view/ht-settlement-error/ht-trade-settlement-order.html

@@ -0,0 +1,111 @@
+<!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>
+		<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" 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.tradeNo" width="5em"></sa-item>
+					<sa-item type="text" name="边民" v-model="p.buyUserName"></sa-item>
+					<sa-item type="text" name="商家名称" v-model="p.enterpriseName" width="6em"></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>
+				<!-- ------------- 数据列表 ------------- -->
+				<el-table class="data-table" ref="data-table" :data="dataList" >
+					<sa-td type="index" width="30px"></sa-td>
+					<sa-td name="车牌号" prop="veNo" ></sa-td>
+					<sa-td name="订单号" prop="tradeNo" width="180px"></sa-td>
+					<sa-td name="边民" prop="buyUserName" ></sa-td>
+					<sa-td name="商家名称" prop="enterpriseName" width="280px"></sa-td>
+					<sa-td name="商品名称" prop="goodsNames" width="200px"></sa-td>
+					<sa-td name="净重(kg)" prop="netWt"></sa-td>
+					<sa-td name="总金额" prop="totalPrice" ></sa-td>
+					<sa-td name="上架金额" prop="upPrice" >
+					</sa-td>
+					<sa-td name="订单状态" prop="upPrice" >
+						<template slot-scope="s">
+							<div v-if="s.row.upStatus==2">已上架</div>
+							<div v-else>未上架</div>
+						</template>
+					</sa-td>
+					<el-table-column label="操作" fixed="right"  width="100px">
+						<template slot-scope="s">
+							<el-button class="c-btn" type="success" icon="el-icon-view" @click="getBank(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: {
+					model: {
+						title: '修改价格',
+						visible: false,
+						form: {
+							id:'',
+							upPrice:'',
+							selPrice:0
+						}
+					},
+					p: { // 查询参数
+						tradeNo: '',		    // 订单号
+						buyUserName: '',		// 买家
+						enterpriseName: '',		// 商家名称
+						saleMainId: sa.p('mainId', 0),
+						pageNo: 1,		// 当前页
+						pageSize: 20,	// 页大小
+						sortType: 0		// 排序方式
+					},
+					dataCount: 0,
+					dataList: [], // 数据集合
+				},
+				methods: {
+					// 刷新
+					f5: function() {
+						sa.ajax('/level-one-server/TbOrder/getList', sa.removeNull(this.p), function(res) {
+							this.dataList = res.data; // 数据
+							this.dataCount = res.dataCount; // 数据总数
+							sa.f5TableHeight();		// 刷新表格高度
+						}.bind(this));
+					},
+					// 查看银行回执
+					getBank: function(data) {
+						sa.showIframe('银行回执', 'tb-order-bank-list.html?tradeNo=' + data.tradeNo, '1300px', '90%');
+					}
+				},
+				created: function() {
+					this.f5();
+					sa.onInputEnter();
+				}
+			})
+		</script>
+	</body>
+</html>

+ 74 - 66
sa-view/ht-trade-settlement/ht-trade-settlement-list.html

@@ -3,7 +3,8 @@
 	<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" />
+		<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">
@@ -13,6 +14,11 @@
 		<script src="../../static/kj/jquery.min.js"></script>
 		<script src="../../static/kj/layer/layer.js"></script>
 		<script src="../../static/sa.js"></script>
+		<style>
+			.el-dialog__body {
+				padding: 0 20px 30px 20px
+			}
+		</style>
 	</head>
 	<body>
 		<div class="vue-box" style="display: none;" :style="'display: block;'">
@@ -20,41 +26,53 @@
 				<!-- ------------- 检索参数 ------------- -->
 				<div class="c-title">检索参数</div>
 				<el-form ref="form" :model='p' @submit.native.prevent>
-					<sa-item type="text" name="预申报编号" v-model="p.platSeqNo" width="8em"></sa-item>
-					<sa-item type="text" name="申报单编号" v-model="p.declareId" width="8em"></sa-item>
-					<sa-item type="text" name="商品名称" v-model="p.goodsNames" width="7em"></sa-item>
+					<sa-item type="text" name="车牌号" v-model="p.veNo" width="7em"></sa-item>
+					<sa-item type="date" name="申报日期" v-model="p.declTime" width="7em"></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" >
+				<el-table class="data-table" ref="data-table" :data="dataList">
 					<sa-td type="index" name="序号"></sa-td>
-					<!-- <sa-td name="预申报编号" prop="platSeqNo" width="160px"></sa-td> -->
-					<sa-td name="申报单编号" prop="declareId" width="220px"></sa-td>
-					<sa-td name="申报人姓名" prop="declareName" ></sa-td>
-					<sa-td name="互市区" prop="fieldName" width="160"></sa-td>
-					<sa-td name="商铺名称" prop="shopName"  width="160"></sa-td>
-					<sa-td name="商品名称" prop="goodsNames"  width="160"></sa-td>
-					<sa-td name="总金额" prop="sumAmt" ></sa-td>
-					<sa-td name="总毛重(kg)" prop="sumGrossWt" ></sa-td>
-					<sa-td name="总净重(kg)" 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="veNo" ></sa-td>
-					<sa-td name="提运单号" prop="billNo"  width="160"></sa-td>
-					<sa-td name="航次号" prop="voyageNo"  width="160"></sa-td>
-					<sa-td name="单证代码" prop="preNo"  width="160"></sa-td>
-					<sa-td name="时间" prop="createTime"  width="160"></sa-td>
-					<el-table-column label="操作" width="140px" fixed="right" >
+					<sa-td name="预申报编号" prop="platSeqNo" width="160px"></sa-td>
+					<sa-td name="车牌号" prop="veNo"></sa-td>
+					<sa-td name="申报时间" prop="declTime" width="160"></sa-td>
+					<sa-td name="航次号" prop="voyageNo" width="160"></sa-td>
+					<sa-td name="申报人姓名" prop="declareName"></sa-td>
+					<sa-td name="商品名称" prop="goodsNames" width="160"></sa-td>
+					<sa-td name="总金额" prop="sumAmt"></sa-td>
+					<sa-td name="总毛重(kg)" prop="sumGrossWt"></sa-td>
+					<sa-td name="总净重(kg)" prop="sumNetWt"></sa-td>
+					<sa-td name="商铺名称" prop="shopName" width="160"></sa-td>
+					<sa-td name="件数" prop="packNo"></sa-td>
+					<sa-td type="enum" name="互助社确认" prop="hzsConfirmStatus"
+						:jv="{1: '已确认[green]', 0: '未确认[#ff910a]'}"></sa-td>
+					<sa-td name="确认时间" prop="hzsConfirmTime" width="160"></sa-td>
+					<sa-td name="申报单编号" prop="declareId" width="160px"></sa-td>
+					<sa-td name="提运单号" prop="billNo" width="160"></sa-td>
+					<el-table-column label="操作" width="280px" fixed="right" align="center">
 						<template slot-scope="s">
 							<el-button class="c-btn" type="success" @click="get(s.row)">查看</el-button>
-							<el-button class="c-btn" type="primary"  @click="getOrder(s.row)">边民订单</el-button>
+							<el-button class="c-btn" type="primary" @click="getOrder(s.row)">边民订单</el-button>
+							<span>
+								<el-button
+									v-if="s.row.hzsConfirmStatus===0 &&sa.isAuth('ht-trade-settlement-hzsconfirm')"
+									class="c-btn" type="info" @click="hzsConfirm(s.row)">互助社确认</el-button>
+							</span>
+							<span>
+								<el-button v-if="sa.isAuth('tb-order-deduction')&&s.row.hzsConfirmStatus==1" class="c-btn" type="warning"
+									@click="ToDeductionByVeNo(s.row)">按车订单扣款</el-button>
+							</span>
+							<span>
+								<el-button v-if="sa.isAuth('tb-order-sendCXB001')&&s.row.hzsConfirmStatus==1" class="c-btn" type="warning"
+									@click="ToSendCXB001ByVeNo(s.row)">推送结关</el-button>
+							</span>
 						</template>
 					</el-table-column>
 				</el-table>
 				<!-- ------------- 分页 ------------- -->
-				<sa-item type="page" :curr.sync="p.pageNo" :size.sync="p.pageSize" :total="dataCount" @change="f5()"></sa-item>
+				<sa-item type="page" :curr.sync="p.pageNo" :size.sync="p.pageSize" :total="dataCount"
+					@change="f5()"></sa-item>
 			</div>
 		</div>
 		<script>
@@ -66,12 +84,16 @@
 				el: '.vue-box',
 				data: {
 					p: { // 查询参数
-						platSeqNo: '',		// 预申报编号
-						declareId: '',		// 申报单编号
-						goodsNames: '',		// 商品名称
-						pageNo: 1,		// 当前页
-						pageSize: 10,	// 页大小
-						sortType: 0		// 排序方式
+						platSeqNo: '', // 预申报编号
+						declareId: '', // 申报单编号
+						veNo: '',
+						goodsNames: '', // 商品名称
+						returns: 0,
+						chargebacks: 0,
+						pageNo: 1, // 当前页
+						pageSize: 10, // 页大小
+						sortType: 0 // 排序方式
+
 					},
 					dataCount: 0,
 					dataList: [], // 数据集合
@@ -82,50 +104,36 @@
 						sa.ajax('/level-one-server/HtTradeSettlement/getList', sa.removeNull(this.p), function(res) {
 							this.dataList = res.data; // 数据
 							this.dataCount = res.dataCount; // 数据总数
-							sa.f5TableHeight();		// 刷新表格高度
+							sa.f5TableHeight(); // 刷新表格高度
 						}.bind(this));
 					},
 					// 查看
 					get: function(data) {
 						sa.showIframe('数据详情', 'ht-trade-settlement-info.html?id=' + data.id, '1050px', '90%');
 					},
-					getOrder(data){
-						sa.showIframe('边民订单', 'ht-trade-settlement-order.html?platSeqNo='+data.platSeqNo, '90%', '94%');
+					getOrder(data) {
+						sa.showIframe('边民订单', '../tb-order/tb-order-list.html?mainId=' + data.id, '90%', '94%');
 					},
-					// 修改
-					update: function(data) {
-						sa.showIframe('修改数据', 'ht-trade-settlement-add.html?id=' + data.id, '1000px', '90%');
-					},
-					// 新增
-					add: function(data) {
-						sa.showIframe('新增数据', 'ht-trade-settlement-add.html?id=-1', '1000px', '90%');
-					},
-					// 删除
-					del: function(data) {
-						sa.confirm('是否删除,此操作不可撤销', function() {
-							sa.ajax('/HtTradeSettlement/delete?id=' + data.id, function(res) {
-								sa.arrayDelete(this.dataList, data);
-								sa.ok('删除成功');
-								sa.f5TableHeight();		// 刷新表格高度
+					hzsConfirm(data) {
+						sa.confirm('是否确认订单', function() {
+							sa.ajax('/level-one-server/HtTradeSettlement/hzsConfirm?id=' + data.id, function(
+							res) {
+								sa.ok('确认成功');
+								this.f5();
 							}.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('/HtTradeSettlement/deleteByIds', {ids: ids.join(',')}, function(res) {
-								sa.arrayDelete(this.dataList, selection);
-								sa.ok('删除成功');
-								sa.f5TableHeight();		// 刷新表格高度
-							}.bind(this))
-						}.bind(this));
+					ToDeductionByVeNo(data) {
+						let veNo = data.veNo;
+						let id = data.id;
+						sa.showIframe('按车订单扣款【' + veNo + '】', 'tb-order-deductionByVeNo.html?veNo=' + veNo + '&id=' + id,
+							'1660px', '97%');
+					},
+					ToSendCXB001ByVeNo(data) {
+						let veNo = data.veNo;
+						let id = data.id;
+						sa.showIframe('按车推送结关【' + veNo + '】', 'tb-order-sendCXB001ByVeNo.html?veNo=' + veNo + '&id=' +
+							id, '1200px', '97%');
 					},
 				},
 				created: function() {
@@ -135,4 +143,4 @@
 			})
 		</script>
 	</body>
-</html>
+</html>

+ 102 - 54
sa-view/ht-trade-settlement/ht-trade-settlement-order.html

@@ -3,7 +3,8 @@
 	<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" />
+		<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">
@@ -14,42 +15,81 @@
 		<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;}
+			.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" 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.tradeNo" width="5em"></sa-item>
-					<sa-item type="text" name="买家" v-model="p.buyUserName"></sa-item>
-					<sa-item type="text" name="商家名称" v-model="p.enterpriseName" width="6em"></sa-item>
+				<div>
+					<sa-item type="text" name="边民" v-model="p.buyUserName" width="80px"></sa-item>
+					<sa-item name="确认状态" width="120px">
+						<el-select v-model="p.applyConfirmStatus">
+							<el-option label="全部" value=""></el-option>
+							<el-option label="未确认" value="0"></el-option>
+							<el-option label="已确认" value="1"></el-option>
+						</el-select>
+					</sa-item>
+				</div>
+				<div>
+					<sa-item name="出卡3" width="120px">
+						<el-select v-model="p.finishStatus">
+							<el-option label="全部" value=""></el-option>
+							<el-option label="未出卡3" value="0"></el-option>
+							<el-option label="已出卡3" value="1"></el-option>
+						</el-select>
+					</sa-item>
+					<sa-item name="上架状态" width="120px">
+						<el-select v-model="p.upStatus">
+							<el-option label="全部" value=""></el-option>
+							<el-option label="未上架" value="1"></el-option>
+							<el-option label="已上架" value="2"></el-option>
+						</el-select>
+					</sa-item>
+					<sa-item name="扣款状态" width="120px">
+						<el-select v-model="p.Sxb010Status">
+							<el-option label="全部" value=""></el-option>
+							<el-option label="未扣款" value="0"></el-option>
+							<el-option label="扣款失败" value="2"></el-option>
+							<el-option label="已扣款" value="1"></el-option>
+						</el-select>
+					</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>
+				</div>
 				</el-form>
 				<!-- ------------- 数据列表 ------------- -->
-				<el-table class="data-table" ref="data-table" :data="dataList" >
+				<el-table class="data-table" ref="data-table" :data="dataList">
 					<sa-td type="index" width="30px"></sa-td>
-					<sa-td name="订单号" prop="tradeNo" width="180px"></sa-td>
-					<sa-td name="买家" prop="buyUserName" ></sa-td>
-					<sa-td name="商家名称" prop="enterpriseName" width="280px"></sa-td>
+					<sa-td name="车牌号" prop="veNo"></sa-td>
+					<sa-td name="订单号" prop="tradeNo" width="190px"></sa-td>
+					<sa-td name="边民" prop="buyUserName"></sa-td>
 					<sa-td name="商品名称" prop="goodsNames" width="200px"></sa-td>
-					<sa-td name="总重量" prop="totalWeight" ></sa-td>
-					<sa-td name="车牌号" prop="veNo" ></sa-td>
-					<sa-td name="总金额" prop="totalPrice" ></sa-td>
-					<sa-td name="上架金额(元)" prop="upPrice" >
-						<!--<template slot-scope="s">
-							<div >{{s.row.upPrice}}
-							<el-link v-if="s.row.upStatus==2&&s.row.resaleStatus==0&&sa.isAuth('tb-order-edit-price')" style="font-size: 12px;"  type="primary" @click="editPrice(s.row)">
-								修改
-							</el-link>
-							</div>
-						</template>-->
+					<sa-td name="净重(kg)" prop="netWt"></sa-td>
+					<sa-td name="总金额" prop="totalPrice"  width="90px"></sa-td>
+					<sa-td name="确认状态" prop="totalPrice">
+						<template slot-scope="s">
+							<div v-if="s.row.applyConfirmStatus==1">已确认</div>
+							<div v-else>未确认</div>
+						</template>
+					</sa-td>
+					<sa-td name="过卡状态" prop="finishStatus">
+						<template slot-scope="s">
+							<div v-if="s.row.finishStatus===1">已过卡3</div>
+							<div v-else>未过卡3</div>
+						</template>
+					</sa-td>
+					<sa-td name="上架金额(元)" prop="upPrice"  width="90px">
 					</sa-td>
-					<sa-td name="订单状态" prop="upPrice" >
+					<sa-td name="订单状态" prop="upPrice">
 						<template slot-scope="s">
 							<div v-if="s.row.upStatus==2">已上架</div>
 							<div v-else>未上架</div>
@@ -58,14 +98,16 @@
 					<!-- <sa-td type="enum" name="交易确认" prop="peopleConfirmStatus" :jv="{1: '已确认[green]', 0: '未确认[#ff910a]'}" ></sa-td>
 					<sa-td type="enum" name="委托确认" prop="cooperEntrustStatus" :jv="{1: '已确认[green]', 0: '未确认[#ff910a]'}" ></sa-td>
 					<sa-td type="enum" name="进口确认" prop="applyConfirmStatus" :jv="{1: '已确认[green]', 0: '未确认[#ff910a]'}" ></sa-td> -->
-					<el-table-column label="操作" fixed="right"  width="100px">
+					<el-table-column label="操作" fixed="right" width="100px">
 						<template slot-scope="s">
-							<el-button class="c-btn" type="success" icon="el-icon-view" @click="getBank(s.row)">银行回执</el-button>
+							<el-button class="c-btn" type="success"
+								@click="getBank(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>
+				<sa-item type="page" :curr.sync="p.pageNo" :size.sync="p.pageSize" :total="dataCount"
+					@change="f5()"></sa-item>
 			</div>
 			<el-dialog :title="model.title" :visible.sync="model.visible" width="500px">
 				<div>
@@ -91,51 +133,57 @@
 						title: '修改价格',
 						visible: false,
 						form: {
-							id:'',
-							upPrice:'',
-							selPrice:0
+							id: '',
+							upPrice: '',
+							selPrice: 0
 						}
 					},
 					p: { // 查询参数
-						tradeNo: '',		    // 订单号
-						buyUserName: '',		// 买家
-						enterpriseName: '',		// 商家名称
-						platSeqNo: sa.p('platSeqNo', 0),
-						pageNo: 1,		// 当前页
-						pageSize: 20,	// 页大小
-						sortType: 0		// 排序方式
+						tradeNo: '', // 订单号
+						buyUserName: '', // 买家
+						applyConfirmStatus: '', // 商家名称
+						saleMainId: sa.p('mainId', 0),
+						pageNo: 1, // 当前页
+						pageSize: 10, // 页大小
+						sortType: 0 // 排序方式
 					},
 					dataCount: 0,
 					dataList: [], // 数据集合
 				},
 				methods: {
-					editPrice(item){
-						this.model={
-							title:'修改订单【'+item.tradeNo+'】价格',
-							visible:true,
-							form:item
+					editPrice(item) {
+						this.model = {
+							title: '修改订单【' + item.tradeNo + '】价格',
+							visible: true,
+							form: item
 						}
 					},
-					save(){
-						let price=this.model.form.selPrice;
-						if(!price){
+					save() {
+						let price = this.model.form.selPrice;
+						if (!price) {
 							sa.error('请输入金额')
 							return;
 						}
-						sa.ajax('/level-one-server/TbOrder/editUpPrice', {id:this.model.form.id,price:price}, function(res) {
+						sa.ajax('/level-one-server/TbOrder/editUpPrice', {
+							id: this.model.form.id,
+							price: price
+						}, function(res) {
 							this.f5();
-							this.model.visible=false;
+							this.model.visible = false;
 						}.bind(this));
 					},
-					sel(){
-						let price=this.model.form.selPrice;
-						if(!price){
+					sel() {
+						let price = this.model.form.selPrice;
+						if (!price) {
 							sa.error('请输入金额')
 							return;
 						}
-						sa.ajax('/level-two-server/TbOrders/addOrderByResale', {id:this.model.form.id,resalePrice:price}, function(res) {
+						sa.ajax('/level-two-server/TbOrders/addOrderByResale', {
+							id: this.model.form.id,
+							resalePrice: price
+						}, function(res) {
 							this.f5();
-							this.model.visible=false;
+							this.model.visible = false;
 						}.bind(this));
 					},
 					// 刷新
@@ -143,7 +191,7 @@
 						sa.ajax('/level-one-server/TbOrder/getList', sa.removeNull(this.p), function(res) {
 							this.dataList = res.data; // 数据
 							this.dataCount = res.dataCount; // 数据总数
-							sa.f5TableHeight();		// 刷新表格高度
+							sa.f5TableHeight(); // 刷新表格高度
 						}.bind(this));
 					},
 					// 查看银行回执
@@ -158,4 +206,4 @@
 			})
 		</script>
 	</body>
-</html>
+</html>

+ 153 - 0
sa-view/ht-trade-settlement/tb-order-deductionByVeNo.html

@@ -0,0 +1,153 @@
+<!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>
+		<style>
+			hr {
+				border: none;          /* 移除默认边框 */
+				height: 1px;           /* 设置高度 */
+				background-color: gainsboro;/* 设置颜色 */
+				margin: 5px 0;        /* 设置上下外边距 */
+			}
+		</style>
+	</head>
+	<body>
+		<div class="vue-box" style="display: none;" :style="'display: block;'">
+			<div class="c-panel">
+				<el-form v-if="bigData">
+					<div style="color: red;font-weight: bold">请核对当前进境结算单信息,以下列表为未执行扣款的订单:</div>
+					<el-row style="margin-left: 200px;">
+						<el-col span="8">
+							<sa-info name="车牌号" br>{{bigData.veNo}}</sa-info>
+							<sa-info name="预申报编号" br>{{bigData.platSeqNo}}</sa-info>
+							<sa-info name="商品名称" br>{{bigData.goodsNames}}</sa-info>
+						</el-col>
+						<el-col span="8">
+							<sa-info name="总毛重(kg)" br>{{bigData.sumGrossWt}}</sa-info>
+							<sa-info name="总净重(kg)" br>{{bigData.sumNetWt}}</sa-info>
+							<sa-info name="总金额" br>{{bigData.sumAmt}}</sa-info>
+						</el-col>
+						<el-col span="8">
+							<sa-info name="互市区" br>{{bigData.fieldName}}</sa-info>
+							<sa-info name="创建时间" br>{{bigData.createTime}}</sa-info>
+						</el-col>
+					</el-row>
+				</el-form>
+				<hr>
+				<el-form ref="form" @submit.native.prevent>
+					<el-button type="success" icon="el-icon-info" @click="deductionByVeNo()">按车扣款</el-button>
+				</el-form>
+				<!-- ------------- 数据列表 ------------- -->
+				<el-table class="data-table" ref="data-table" :data="dataList" >
+					<sa-td type="index" width="30px"></sa-td>
+					<sa-td name="车牌号" prop="veNo" ></sa-td>
+					<sa-td name="订单号" prop="tradeNo" width="180"></sa-td>
+					<sa-td name="买家" prop="buyUserName" ></sa-td>
+					<sa-td name="商家名称" prop="enterpriseName" width="280px"></sa-td>
+					<sa-td name="商品名称" prop="goodsNames" width="200px"></sa-td>
+					<sa-td name="总重量" prop="netWt" ></sa-td>
+					<sa-td name="总金额" prop="totalPrice" ></sa-td>
+					<sa-td name="上架金额(元)" prop="upPrice" ></sa-td>
+					<sa-td name="订单状态" prop="upStatus" >
+						<template slot-scope="s">
+							<div v-if="s.row.upStatus===2">已上架</div>
+							<div v-else>未上架</div>
+						</template>
+					</sa-td>
+					<sa-td name="过卡状态" prop="finishStatus" >
+						<template slot-scope="s">
+							<div v-if="s.row.finishStatus===1">已过卡3</div>
+							<div v-else>未过卡3</div>
+						</template>
+					</sa-td>
+					<!--(一级市场)订单扣款回执状态[0=初始值 1=扣款成功 2=扣款失败]-->
+					<sa-td name="扣款状态" prop="sxb010Status" >
+						<template slot-scope="s">
+							<div v-if="s.row.sxb010Status===1">扣款成功</div>
+							<div v-else-if="s.row.sxb010Status===2">扣款失败</div>
+							<div v-else-if="s.row.peopleConfirmStatus===1 && s.row.applyConfirmStatus===1">已确认</div>
+							<div v-else>未确认</div>
+						</template>
+					</sa-td>
+					<sa-td name="补扣次数" prop="deductionCount">
+						<template slot-scope="s">
+							<div v-if="s.row.deductionCount==0">0</div>
+							<div v-else>{{s.row.deductionCount}}</div>
+						</template>
+					</sa-td>
+					<sa-td name="补扣时间" prop="deductionTime" width="140px"></sa-td>
+					<sa-td name="创建时间" prop="createTime" width="140px"></sa-td>
+				</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'),
+					"sa-info": httpVueLoader('../../sa-frame/com/sa-info.vue')
+				},
+				el: '.vue-box',
+				data: {
+					veNo: sa.p('veNo', 0),
+					id: sa.p('id', 0),
+					bigData: [],
+					p: { // 查询参数
+						id: sa.p('id', 0),
+						veNo: sa.p('veNo', 0),	// 车牌号
+						pageNo: 1,		// 当前页
+						pageSize: 10,	// 页大小
+						sortType: 0		// 排序方式
+					},
+					dataCount: 0,
+					dataList: [], // 数据集合
+				},
+				methods: {
+					deductionByVeNo() {
+						if(this.dataCount === 0 ) {
+							sa.error('当前车没有需要执行扣款的订单')
+							return;
+						}
+						sa.confirm('是否执行当前列表订单的扣款操作', function() {
+							sa.ajax('/level-one-server/TbOrder/deductionByVeNo?veNo=' + this.veNo + '&id='+this.id, function(res) {
+								sa.alert('操作成功', this.clean);
+							}.bind(this))
+						}.bind(this));
+					},
+					clean: function() {
+						parent.app.f5();		// 刷新父页面列表
+						sa.closeCurrIframe();	// 关闭本页
+					},
+					f5: function() {
+						sa.ajax('/level-one-server/TbOrder/getDeductionByVeNoList', sa.removeNull(this.p), function(res) {
+							this.dataList = res.data; // 数据
+							this.dataCount = res.dataCount; // 数据总数
+							sa.f5TableHeight();		// 刷新表格高度
+						}.bind(this));
+					},
+				},
+				created: function() {
+					this.f5();
+					sa.ajax('/level-one-server/HtTradeSettlement/getById', {id : this.id}, function(res) {
+						this.bigData = res.data; // 数据
+						sa.f5TableHeight();		// 刷新表格高度
+					}.bind(this));
+					sa.onInputEnter();
+				}
+			})
+		</script>
+	</body>
+</html>

+ 149 - 0
sa-view/ht-trade-settlement/tb-order-sendCXB001ByVeNo.html

@@ -0,0 +1,149 @@
+<!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>
+		<style>
+			hr {
+				border: none;
+				/* 移除默认边框 */
+				height: 1px;
+				/* 设置高度 */
+				background-color: gainsboro;
+				/* 设置颜色 */
+				margin: 5px 0;
+				/* 设置上下外边距 */
+			}
+		</style>
+	</head>
+	<body>
+		<div class="vue-box" style="display: none;" :style="'display: block;'">
+			<div class="c-panel">
+				<el-form v-if="bigData">
+					<el-divider content-position="left">结算单信息</el-divider>
+					<el-row style="margin-left: 50px;">
+						<el-col span="8">
+							<sa-info name="车牌号" br>{{bigData.veNo}}</sa-info>
+							<sa-info name="预申报编号" br>{{bigData.platSeqNo}}</sa-info>
+							<sa-info name="商品名称" br>{{bigData.goodsNames}}</sa-info>
+						</el-col>
+						<el-col span="8">
+							<sa-info name="总毛重(kg)" br>{{bigData.sumGrossWt}}</sa-info>
+							<sa-info name="总净重(kg)" br>{{bigData.sumNetWt}}</sa-info>
+							<sa-info name="总金额(元)" br>{{bigData.sumAmt}}</sa-info>
+						</el-col>
+						<el-col span="8">
+							<sa-info name="互市区" br>{{bigData.fieldName}}</sa-info>
+							<sa-info name="创建时间" br>{{bigData.createTime}}</sa-info>
+						</el-col>
+						<el-button type="success" icon="el-icon-info" @click="sendCXB001ByVeNo()">按车推送结关</el-button>
+					</el-row>
+				</el-form>
+				<el-divider content-position="left">边民订单</el-divider>
+				<!-- ------------- 数据列表 ------------- -->
+				<el-table class="data-table" ref="data-table" :data="dataList">
+					<sa-td type="index" name="序号" width="80px"></sa-td>
+					<sa-td name="车牌号" prop="veNo"></sa-td>
+					<sa-td name="买家" prop="buyUserName"></sa-td>
+					<sa-td name="商品名称" prop="goodsNames" width="200px"></sa-td>
+					<sa-td name="总重量" prop="netWt"></sa-td>
+					<sa-td name="总金额" prop="totalPrice"></sa-td>
+					<sa-td name="上架金额(元)" prop="upPrice" width="100px"></sa-td>
+					<sa-td name="订单状态" prop="upStatus">
+						<template slot-scope="s">
+							<div v-if="s.row.upStatus===2">已上架</div>
+							<div v-else>未上架</div>
+						</template>
+					</sa-td>
+					<sa-td name="过卡状态" prop="finishStatus">
+						<template slot-scope="s">
+							<div v-if="s.row.finishStatus===1">已过卡3</div>
+							<div v-else>未过卡3</div>
+						</template>
+					</sa-td>
+					<!--(一级市场)订单扣款回执状态[0=初始值 1=扣款成功 2=扣款失败]-->
+					<sa-td name="扣款状态" prop="sxb010Status">
+						<template slot-scope="s">
+							<div v-if="s.row.sxb010Status===1">扣款成功</div>
+							<div v-else-if="s.row.sxb010Status===2">扣款失败</div>
+							<div v-else-if="s.row.peopleConfirmStatus===1 && s.row.applyConfirmStatus===1">已确认</div>
+							<div v-else>未确认</div>
+						</template>
+					</sa-td>
+					<sa-td name="创建时间" prop="createTime" width="140px"></sa-td>
+				</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'),
+					"sa-info": httpVueLoader('../../sa-frame/com/sa-info.vue')
+				},
+				el: '.vue-box',
+				data: {
+					veNo: sa.p('veNo', 0),
+					id: sa.p('id', 0),
+					p: { // 查询参数
+						id: sa.p('id', 0),
+						veNo: sa.p('veNo', 0), // 车牌号
+						pageNo: 1, // 当前页
+						pageSize: 10, // 页大小
+						sortType: 0 // 排序方式
+					},
+					dataCount: 0,
+					dataList: [], // 数据集合
+					bigData: [],
+				},
+				methods: {
+					sendCXB001ByVeNo() {
+						sa.confirm('是否执行推送当前列表订单的结关信息操作', function() {
+							sa.ajax('/level-one-server/TbOrder/sendCXB001ByVeNo?veNo=' + this.veNo + '&id=' +
+								this.id,
+								function(res) {
+									sa.alert('执行成功', this.clean);
+								}.bind(this))
+						}.bind(this));
+					},
+					clean: function() {
+						parent.app.f5(); // 刷新父页面列表
+						sa.closeCurrIframe(); // 关闭本页
+					},
+					f5: function() {
+						sa.ajax('/level-one-server/TbOrder/getSendCXB001ByVeNoList', sa.removeNull(this.p), function(
+							res) {
+							this.dataList = res.data; // 数据
+							this.dataCount = res.dataCount; // 数据总数
+							sa.f5TableHeight(); // 刷新表格高度
+						}.bind(this));
+					},
+				},
+				created: function() {
+					this.f5();
+					sa.ajax('/level-one-server/HtTradeSettlement/getById', {
+						id: this.id
+					}, function(res) {
+						this.bigData = res.data; // 数据
+						sa.f5TableHeight(); // 刷新表格高度
+					}.bind(this));
+					sa.onInputEnter();
+				}
+			})
+		</script>
+	</body>
+</html>

+ 222 - 95
sa-view/listing-management/listing-management-order.html

@@ -3,7 +3,8 @@
 	<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" />
+		<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">
@@ -15,13 +16,24 @@
 		<script src="../../static/sa.js"></script>
 		<style type="text/css">
 			hr {
-				border: none;          /* 移除默认边框 */
-				height: 1px;           /* 设置高度 */
-				background-color: gainsboro;/* 设置颜色 */
-				margin: 5px 0;        /* 设置上下外边距 */
+				border: none;
+				/* 移除默认边框 */
+				height: 1px;
+				/* 设置高度 */
+				background-color: gainsboro;
+				/* 设置颜色 */
+				margin: 5px 0;
+				/* 设置上下外边距 */
+			}
+
+			.c-panel .el-form .c-label {
+				width: 7em !important;
+			}
+
+			.c-panel .el-form .el-input,
+			.c-panel .el-form .el-textarea__inner {
+				width: 150px;
 			}
-			.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>
@@ -41,58 +53,105 @@
 						</el-col>
 					</el-row>
 				</el-form>
-				<hr>
+				<el-divider content-position="left">边民订单-列表</el-divider>
 				<el-form ref="form" :model='p' @submit.native.prevent>
-					<div style="margin: 15px 0px 15px 0px;">详情-边民订单</div>
-					<el-button v-if="sa.isAuth('tb-order-edit-price')"
-							type="primary" style="margin-bottom:10px;" @click="editPriceByIds()">批量修改总价</el-button>
-							<el-button v-if="sa.isAuth('tb-order-edit-price')"
-									type="primary" style="margin-bottom:10px;" @click="saleBatch()">批量转售</el-button>
-							<el-button 
-									type="primary" style="margin-bottom:10px;" @click="f5()">刷新</el-button>
+					<div>
+						<sa-item name="上架状态">
+							<el-select v-model="p.upStatus" style="width: 120px;">
+								<el-option label="全部" value=""></el-option>
+								<el-option label="未上架" value="1"></el-option>
+								<el-option label="已上架" value="2"></el-option>
+							</el-select>
+						</sa-item>
+						<sa-item name="转售状态">
+							<el-select v-model="p.resaleStatus" style="width: 120px;">
+								<el-option label="全部" value=""></el-option>
+								<el-option label="未转售" value="0"></el-option>
+								<el-option label="已转售" value="1"></el-option>
+							</el-select>
+						</sa-item>
+					</div>
+					<div>
+						<sa-item name="销售状态">
+							<el-select v-model="p.beingOrder" style="width: 120px;">
+								<el-option label="全部" value=""></el-option>
+								<el-option label="未销售" value="0"></el-option>
+								<el-option label="已销售" value="1"></el-option>
+							</el-select>
+						</sa-item>
+						<sa-item type="text" name="边民" v-model="p.buyUserName" width="11em"></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-button v-if="sa.isAuth('tb-order-edit-price')" type="primary" style="margin-bottom:10px;"
+							@click="editPriceByIds()">批量修改总价</el-button>
+						<el-button v-if="sa.isAuth('tb-order-edit-price')" type="primary" style="margin-bottom:10px;"
+							@click="saleBatch()">批量转售</el-button>
+						<el-button v-if="sa.isAuth('tb-order-edit-price')" type="warning" style="margin-bottom:10px;"
+							@click="callBackSleBatch()">批量撤销转售</el-button>
+						
+					</div>
 				</el-form>
+				<div style="display: flex;padding: 10px;font-size: 16px;">
+					<div>订单总数:{{dataCount}};</div>
+					<div style="margin-left: 10px;">已上架:{{statics.upSize}};</div>
+					<div style="margin-left: 10px;">未上架:<span style="color:red">{{statics.notUpSize}}</span>;</div>
+					<div style="margin-left: 10px;">上架总金额:<span
+							style="color:red;font-weight: bold;">{{statics.upTotalPrice}}元</span>;</div>
+					<div style="margin-left: 10px;">已转售:{{statics.saleSize}};</div>
+					<div style="margin-left: 10px;">未转售:<span style="color:red">{{statics.notSaleSize}}</span></div>
+				</div>
 				<!-- ------------- 数据列表 ------------- -->
-				<el-table class="data-table" ref="data-table" :data="dataList" >
+				<el-table class="data-table" ref="data-table" :data="dataList">
 					<sa-td type="selection"></sa-td>
-					<sa-td name="订单号" prop="tradeNo" width="180px"></sa-td>
-					<sa-td name="买家" prop="buyUserName" ></sa-td>
-					<sa-td name="商家名称" prop="enterpriseName" width="280px"></sa-td>
+					<sa-td name="车牌号" prop="veNo"></sa-td>
+					<sa-td name="边民" prop="buyUserName"></sa-td>
 					<sa-td name="商品名称" prop="goodsNames" width="200px"></sa-td>
-					<sa-td name="总重量" prop="totalWeight" ></sa-td>
-					<sa-td name="车牌号" prop="veNo" ></sa-td>
-					<sa-td name="总金额" prop="totalPrice" ></sa-td>
-					<sa-td name="上架金额(元)" prop="upPrice" ></sa-td>
-					<sa-td name="是否上架" prop="upStatus" >
+					<sa-td name="净重(kg)" prop="netWt"></sa-td>
+					<sa-td name="总金额" prop="totalPrice"></sa-td>
+					<sa-td name="上架金额(元)" prop="upPrice" width="180"></sa-td>
+					<sa-td name="边民确认" prop="peopleConfirmStatus">
+						<template slot-scope="s">
+							<div v-if="s.row.peopleConfirmStatus==1">已确认</div>
+							<div v-else>未确认</div>
+						</template>
+					</sa-td>
+					<sa-td name="是否上架" prop="upStatus">
 						<template slot-scope="s">
 							<div v-if="s.row.upStatus==2">已上架</div>
 							<div v-else>未上架</div>
 						</template>
 					</sa-td>
-					<sa-td name="是否转售" prop="resaleStatus" >
+					<sa-td name="是否转售" prop="resaleStatus">
 						<template slot-scope="s">
 							<div v-if="s.row.resaleStatus==1">已转售</div>
 							<div v-else>未转售</div>
 						</template>
 					</sa-td>
-					<el-table-column label="操作" fixed="right"  width="100px">
+					<sa-td name="销售状态" prop="beingOrder"><!--订单转售后是否在二级市场被下单-->
+						<template slot-scope="s">
+							<div v-if="s.row.beingOrder==1">已销售</div>
+							<div v-else>未销售</div>
+						</template>
+					</sa-td>
+					<el-table-column label="操作" fixed="right" width="150px">
 						<template slot-scope="s">
 							<div>
-								<el-button v-if="s.row.upStatus==2&&s.row.resaleStatus==0&&sa.isAuth('tb-order-edit-price')"
-										   class="c-btn" type="success" icon="el-icon-view" @click="editPrice(s.row)">修改总价</el-button>
-								<el-button v-else :disabled="true"
-										   class="c-btn" type="success" icon="el-icon-view" @click="editPrice(s.row)">修改总价</el-button>
-							</div>
-							<div>
-								<el-button v-if="s.row.upStatus==2&&s.row.resaleStatus==0&&sa.isAuth('tb-order-edit-price')"
-										   class="c-btn" type="primary" icon="el-icon-plus" @click="sel(s.row)">转售二级</el-button>
-								<el-button v-else :disabled="true"
-										   class="c-btn" type="primary" icon="el-icon-plus" @click="sel(s.row)">转售二级</el-button>
+								<el-button
+									v-if="s.row.upStatus==2&&s.row.resaleStatus==0&&sa.isAuth('tb-order-edit-price')"
+									class="c-btn" type="success" @click="editPrice(s.row)">修改总价</el-button>
+								<el-button
+									v-if="s.row.peopleConfirmStatus==1&&s.row.upStatus==2&&s.row.resaleStatus==0&&sa.isAuth('tb-order-edit-price')"
+									class="c-btn" type="primary" @click="sel(s.row)">转售二级</el-button>
+								<el-button
+									v-if="s.row.beingOrder==0&&s.row.peopleConfirmStatus==1&&s.row.upStatus==2&&s.row.resaleStatus==1&&sa.isAuth('tb-order-edit-price')"
+									class="c-btn" type="warning" @click="callBackSel(s.row)">撤销转售</el-button>
 							</div>
 						</template>
 					</el-table-column>
 				</el-table>
 				<!-- ------------- 分页 ------------- -->
-				<sa-item type="page" :curr.sync="p.pageNo" :size.sync="p.pageSize" :total="dataCount" @change="f5()"></sa-item>
+				<sa-item type="page" :curr.sync="p.pageNo" :size.sync="p.pageSize" :total="dataCount"
+					@change="f5()"></sa-item>
 			</div>
 			<el-dialog :title="model.title" :visible.sync="model.visible" width="500px">
 				<div>
@@ -129,135 +188,201 @@
 						title: '修改价格',
 						visible: false,
 						form: {
-							id:'',
-							upPrice:'',
-							selPrice:0
+							id: '',
+							upPrice: '',
+							selPrice: 0
 						}
 					},
+					statics: {
+						notSaleSize: '',
+						notUpSize: '',
+						saleSize: '',
+						upSize: '',
+						upTotalPrice: ''
+					},
 					model1: {
 						title: '批量修改订单价格',
 						visible: false,
-						ids:'',
-						selPrice:0
+						ids: '',
+						selPrice: 0
 					},
 					p: { // 查询参数
-						tradeNo: '',		    // 订单号
-						buyUserName: '',		// 买家
-						enterpriseName: '',		// 商家名称
-						platSeqNo: sa.p('platSeqNo', 0),
-						pageNo: 1,		// 当前页
-						pageSize: 20,	// 页大小
-						sortType: 0		// 排序方式
+						tradeNo: '', // 订单号
+						upStatus: '', // 买家
+						resaleStatus: '', // 商家名称
+						saleMainId: sa.p('mainId', 0),
+						pageNo: 1, // 当前页
+						pageSize: 20, // 页大小
+						sortType: 0 // 排序方式
 					},
 					dataCount: 0,
 					dataList: [], // 数据集合
 				},
 				methods: {
+					callBackSleBatch(){
+						let selection = this.$refs['data-table'].selection;
+						let ids = sa.getArrayField(selection, 'id');
+						if (selection.length == 0) {
+							return sa.msg('请至少选择一条数据')
+						}
+						let selectList = [];
+						selectList = this.dataList.filter(item => ids.includes(item.id));
+						for (let i = 0; i < selectList.length; i++) {
+							if (selectList[i].resaleStatus == 0) {
+								return sa.msg('当前选中数据包含未转售订单,请重新选择!');
+							}
+							if (selectList[i].upStatus != 2) {
+								return sa.msg('当前选中数据包含未上架订单,请重新选择!');
+							}
+							if (selectList[i].peopleConfirmStatus == 0) {
+								return sa.msg('当前选中数据包含未确认订单,请重新选择!');
+							}
+							if (selectList[i].beingOrder == 1) {
+								return sa.msg('当前选中数据包含已销售订单,请重新选择!')
+							}
+						}
+						sa.confirm('批量撤销转售总数【' + selectList.length + '】单?', function() {
+							sa.ajax('/level-one-server/TbOrder/cancelSaleBatch', {
+								ids: ids.join(',')
+							}, function(res) {
+								this.f5();
+							}.bind(this));
+						}.bind(this));
+					},
+					callBackSel(data) {
+						sa.confirm('是否撤销转售订单【' + data.buyUserName + '】订单到二级市场?', function() {
+							sa.ajax('/level-one-server/TbOrder/cancelSale', {
+								id: data.id
+							}, function(res) {
+								this.f5();
+							}.bind(this));
+						}.bind(this));
+					},
+
+					getStatic() {
+						sa.ajax('/level-one-server/TbOrder/staticsStatus', {
+							saleMainId: this.p.saleMainId
+						}, function(res) {
+							this.statics = res.data;
+						}.bind(this));
+					},
 					// 批量修改总价
-					 editPriceByIds: function() {
+					editPriceByIds: function() {
 						// 获取选中元素的id列表
 						let selection = this.$refs['data-table'].selection;
 						let ids = sa.getArrayField(selection, 'id');
-						if(selection.length == 0) {
+						if (selection.length == 0) {
 							return sa.msg('请至少选择一条数据')
 						}
 						let selectList = [];
 						selectList = this.dataList.filter(item => ids.includes(item.id));
 						for (let i = 0; i < selectList.length; i++) {
-							if(selectList[i].upStatus != 2) {
+							if (selectList[i].upStatus != 2) {
 								return sa.msg('当前选中数据包含未上架订单,不可修改总价,请重新选择!');
 							}
-							if(selectList[i].resaleStatus != 0) {
+							if (selectList[i].resaleStatus != 0) {
 								return sa.msg('当前选中数据包含已转售订单,不可修改总价,请重新选择!')
 							}
 						}
-						 this.model1={
-							 title:'批量修改订单价格',
-							 visible:true,
-							 ids:ids,
-						 }
+						this.model1 = {
+							title: '批量修改订单价格',
+							visible: true,
+							ids: ids,
+						}
 					},
 					// 修改总价
-					editPrice(item){
-						this.model={
-							title:'修改订单【'+item.tradeNo+'】价格',
-							visible:true,
-							form:item
+					editPrice(item) {
+						this.model = {
+							title: '修改订单【' + item.tradeNo + '】价格',
+							visible: true,
+							form: item
 						}
 					},
 					savePriceByIds() {
-						let ids=this.model1.ids;
-						if(!ids){
+						let ids = this.model1.ids;
+						if (!ids) {
 							sa.error('当前没有选择数据,请至少选择一条数据')
 							return;
 						}
-						let price=this.model1.selPrice;
-						if(!price){
+						let price = this.model1.selPrice;
+						if (!price) {
 							sa.error('请输入金额')
 							return;
 						}
-						sa.ajax('/level-one-server/TbOrder/editUpPriceByIds', {ids:ids.toString(),price:price}, function(res) {
+						sa.ajax('/level-one-server/TbOrder/editUpPriceByIds', {
+							ids: ids.toString(),
+							price: price
+						}, function(res) {
 							this.f5();
-							this.model1.visible=false;
+							this.model1.visible = false;
 						}.bind(this));
 					},
-					save(){
-						let price=this.model.form.selPrice;
-						if(!price){
+					save() {
+						let price = this.model.form.selPrice;
+						if (!price) {
 							sa.error('请输入金额')
 							return;
 						}
-						sa.ajax('/level-one-server/TbOrder/editUpPrice', {id:this.model.form.id,price:price}, function(res) {
+						sa.ajax('/level-one-server/TbOrder/editUpPrice', {
+							id: this.model.form.id,
+							price: price
+						}, function(res) {
 							this.f5();
-							this.model.visible=false;
+							this.model.visible = false;
 						}.bind(this));
 					},
 
 					// 转售二级
-					sel(item){
-						if(!item.upPrice){
+					sel(item) {
+						if (!item.upPrice) {
 							sa.error('转售价格不能为空')
 							return;
 						}
-						sa.confirm('是否转售到二级市场?', function(){
-							sa.ajax('/level-two-server/TbOrders/addOrderByResale', {id:item.id,resalePrice:item.upPrice}, function(res) {
+						sa.confirm('是否转售到二级市场?', function() {
+							sa.ajax('/level-two-server/TbOrders/addOrderByResale', {
+								id: item.id,
+								resalePrice: item.upPrice
+							}, function(res) {
 								this.f5();
 							}.bind(this));
 						}.bind(this));
 					},
-					saleBatch(){
+					saleBatch() {
 						// 获取选中元素的id列表
 						let selection = this.$refs['data-table'].selection;
-						for(let i in selection){
-							let item=selection[i];
-							if(!item.upPrice){
-								sa.error(item.tradeNo+'转售价格不能为空')
+						for (let i in selection) {
+							let item = selection[i];
+							if (!item.upPrice) {
+								sa.error(item.tradeNo + '转售价格不能为空')
 								return;
 							}
-							
-							if(item.resaleStatus==1){
-								sa.error(item.tradeNo+'已转售')
+
+							if (item.resaleStatus == 1) {
+								sa.error(item.tradeNo + '已转售')
 								return;
 							}
-							
+
 						}
 						let ids = sa.getArrayField(selection, 'id');
-						if(selection.length == 0) {
+						if (selection.length == 0) {
 							return sa.msg('请至少选择一条数据')
 						}
-						sa.confirm('是否转售到二级市场?', function(){
-							sa.ajax('/level-two-server/TbOrders/addOrderByResaleBatch', {ids:ids.join(',')}, function(res) {
+						sa.confirm('是否转售到二级市场?', function() {
+							sa.ajax('/level-two-server/TbOrders/addOrderByResaleBatch', {
+								ids: ids.join(',')
+							}, function(res) {
 								this.f5();
 							}.bind(this));
 						}.bind(this));
-						
+
 					},
 					// 刷新
 					f5: function() {
+						this.getStatic();
 						sa.ajax('/level-one-server/TbOrder/getList', sa.removeNull(this.p), function(res) {
 							this.dataList = res.data; // 数据
 							this.dataCount = res.dataCount; // 数据总数
-							sa.f5TableHeight();		// 刷新表格高度
+							sa.f5TableHeight(); // 刷新表格高度
 						}.bind(this));
 					},
 					// 查看银行回执
@@ -267,13 +392,15 @@
 				},
 				created: function() {
 					this.f5();
-					sa.ajax('/level-one-server/HtTradeSettlement/getById', {id : this.id}, function(res) {
+					sa.ajax('/level-one-server/HtTradeSettlement/getById', {
+						id: this.id
+					}, function(res) {
 						this.bigData = res.data; // 数据
-						sa.f5TableHeight();		// 刷新表格高度
+						sa.f5TableHeight(); // 刷新表格高度
 					}.bind(this));
 					sa.onInputEnter();
 				}
 			})
 		</script>
 	</body>
-</html>
+</html>

+ 11 - 15
sa-view/listing-management/listing-management.html

@@ -22,33 +22,27 @@
 				<el-form ref="form" :model='p' @submit.native.prevent>
 					<sa-item type="text" name="车牌号" v-model="p.veNo" width="8em"></sa-item>
 					<sa-item type="text" name="商品名称" v-model="p.goodsNames" width="11em"></sa-item>
-					<sa-item type="text" name="商铺" v-model="p.shopName" width="11em"></sa-item>
+					<sa-item type="date" name="申报日期" v-model="p.declTime" width="7em"></sa-item>
 				</el-form>
 				<el-form ref="form" :model='p' @submit.native.prevent>
-					<sa-item type="text" name="互市区" v-model="p.fieldName" width="8em"></sa-item>
-					<sa-item type="text" name="申报单编号" v-model="p.declareId" width="11em"></sa-item>
+					<sa-item type="text" name="航次号" v-model="p.voyageNo" width="11em"></sa-item>
 					<el-button type="primary" icon="el-icon-search" @click="p.pageNo = 1; f5()" style="margin-left: 163px">查询</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="index" name="序号"></sa-td>-->
+					<sa-td type="index" name="序号" width="80"></sa-td>
 					<sa-td name="车牌号" prop="veNo"></sa-td>
-					<sa-td name="申报单编号" prop="declareId" width="160px"></sa-td>
+					<sa-td name="提运单号" prop="billNo"  width="160"></sa-td>
+					<sa-td name="航次号" prop="voyageNo"  width="160"></sa-td>
 					<sa-td name="申报人姓名" prop="declareName" ></sa-td>
 					<sa-td name="商铺" prop="shopName"  width="160"></sa-td>
 					<sa-td name="商品名称" prop="goodsNames"  width="160"></sa-td>
 					<sa-td name="总金额" prop="sumAmt" ></sa-td>
-					<sa-td name="总毛重(kg)" prop="sumGrossWt" ></sa-td>
-					<sa-td name="总净重(kg)" prop="sumNetWt" ></sa-td>
-					<sa-td name="运输方式" prop="trafMode" ></sa-td>
-					<sa-td name="币制" prop="currCode" ></sa-td>
+					<sa-td name="总毛重" prop="sumGrossWt" ></sa-td>
+					<sa-td name="总净重" prop="sumNetWt" ></sa-td>
 					<sa-td name="件数" prop="packNo" ></sa-td>
-					<sa-td name="互市区" prop="fieldName" width="160"></sa-td>
-					<sa-td name="提运单号" prop="billNo"  width="160"></sa-td>
-					<sa-td name="航次号" prop="voyageNo"  width="160"></sa-td>
-					<sa-td name="单证代码" prop="preNo"  width="160"></sa-td>
-					<sa-td name="时间" prop="createTime"  width="160"></sa-td>
+					<sa-td name="申报时间" prop="declTime"  width="160"></sa-td>
 					<el-table-column label="操作" fixed="right" >
 						<template slot-scope="s">
 							<!--<el-button class="c-btn" type="success" @click="get(s.row)">查看</el-button>-->
@@ -72,6 +66,8 @@
 						platSeqNo: '',		// 预申报编号
 						declareId: '',		// 申报单编号
 						goodsNames: '',		// 商品名称
+						returns:0,
+						chargebacks:0,
 						pageNo: 1,		// 当前页
 						pageSize: 10,	// 页大小
 						sortType: 0		// 排序方式
@@ -93,7 +89,7 @@
 						sa.showIframe('数据详情', 'ht-trade-settlement-info.html?id=' + data.id, '1050px', '90%');
 					},
 					getOrder(data){
-						sa.showIframe('详情', 'listing-management-order.html?platSeqNo='+data.platSeqNo+'&id='+data.id, '90%', '94%');
+						sa.showIframe('详情', 'listing-management-order.html?platSeqNo='+data.platSeqNo+'&mainId='+data.id, '90%', '94%');
 					},
 				
 				},

+ 116 - 0
sa-view/tb-app/tb-app-add.html

@@ -0,0 +1,116 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<title>APK管理-添加/修改</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>
+		<script src="../../static/kj/upload-util.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.version" br></sa-item>
+						<sa-item type="textarea" name="升级内容" v-model="m.content" br></sa-item>
+						<sa-item type="file" name="APK" v-model="m.url" 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: '',		//  
+							content: '',		//  
+							version: '',		//  
+							url: '',		//  
+							status: 0,		// 状态(0=下架,1=上架) 
+							// createTime: '',		// 创建时间 
+							// updateTime: '',		// 更新时间 
+						}
+					},
+					// 提交数据 
+					ok: function(){
+						// 表单校验 
+						let m = this.m;
+						sa.checkNull(m.version, '请输入 [版本号]');
+						sa.checkNull(m.content, '请输入 [升级内容]');
+						sa.checkNull(m.url, '请上传 [APK]');
+						// 开始增加或修改
+						this.m.createTime = undefined;		// 不提交属性:创建时间
+						this.m.updateTime = undefined;		// 不提交属性:更新时间
+						if(this.id <= 0) {	// 添加
+							sa.ajax('/sp-admin/TbApp/add', m, function(res){
+								sa.alert('增加成功', this.clean); 
+							}.bind(this));
+						} else {	// 修改
+							sa.ajax('/sp-admin/TbApp/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('/sp-admin/TbApp/getById?id=' + this.id, function(res) {
+							this.m = res.data;
+							if(res.data == null) {
+								sa.alert('未能查找到 id=' + this.id + " 详细数据");
+							}
+						}.bind(this))
+					}
+				}
+			})
+			
+		</script>
+	</body>
+</html>

+ 66 - 0
sa-view/tb-app/tb-app-info.html

@@ -0,0 +1,66 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<title>APK管理-详情</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.id}}</sa-info>
+						<sa-info name="" br>{{m.content}}</sa-info>
+						<sa-info name="" br>{{m.version}}</sa-info>
+						<sa-info name="" br>{{m.url}}</sa-info>
+						<sa-info type="enum" name="状态" :value="m.status" :jv="{0: '下架', 1: '上架'}" br></sa-info>
+						<sa-info type="datetime" name="创建时间" :value="m.createTime" br></sa-info>
+						<sa-info type="datetime" name="更新时间" :value="m.updateTime" br></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('/TbApp/getById?id=' + this.id, function(res) {
+						this.m = res.data;
+						if(res.data == null) {
+							sa.alert('未能查找到 id=' + this.id + " 详细数据");
+						}
+					}.bind(this))
+				}
+			})
+			
+		</script>
+	</body>
+</html>

+ 132 - 0
sa-view/tb-app/tb-app-list.html

@@ -0,0 +1,132 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<title>APK管理-列表</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="enum" name="状态" v-model="p.status" :jv="{0: '下架', 1: '上架'}" jtype="2"
+						def="不限"></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-button v-if="sa.isAuth('tb-app-add')" size="mini" type="primary" @click="add()">新增</el-button>
+				</el-form>
+
+				<!-- ------------- 数据列表 ------------- -->
+				<el-table class="data-table" ref="data-table" :data="dataList">
+					<sa-td name="序号" type="index"></sa-td>
+					<sa-td name="版本号" prop="version"></sa-td>
+					<sa-td name="APK" prop="url">
+						<template slot-scope="s">
+							<el-link type="primary" :href="s.row.url" target="_blank">下载</el-link>
+						</template>
+					</sa-td>
+					<sa-td name="状态" prop="status" type="switch" :jv="{0: '下架[#aaaa7f]', 1: '上架[#005500]'}"
+						@change="s => updateStatus(s.row)"></sa-td>
+					<sa-td name="创建时间" prop="createTime" type="datetime"></sa-td>
+					<sa-td name="更新时间" prop="updateTime" type="datetime"></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>
+							<el-button v-if="sa.isAuth('tb-app-edit')" class="c-btn" type="primary" icon="el-icon-edit"
+								@click="update(s.row)">修改</el-button>
+							<el-button v-if="sa.isAuth('tb-app-del')" class="c-btn" type="danger" icon="el-icon-delete"
+								@click="del(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: { // 查询参数  
+						id: '', //  
+						content: '', //  
+						version: '', //  
+						url: '', //  
+						status: '', // 状态(0=下架,1=上架) 
+						pageNo: 1, // 当前页 
+						pageSize: 10, // 页大小 
+						sortType: 0 // 排序方式 
+					},
+					dataCount: 0,
+					dataList: [], // 数据集合 
+				},
+				methods: {
+					// 刷新
+					f5: function() {
+						sa.ajax('/sp-admin/TbApp/getList', sa.removeNull(this.p), function(res) {
+							this.dataList = res.data; // 数据
+							this.dataCount = res.dataCount; // 数据总数 
+							sa.f5TableHeight(); // 刷新表格高度 
+						}.bind(this));
+					},
+				
+					// 新增
+					add: function(data) {
+						sa.showIframe('新增数据', 'tb-app-add.html?id=-1', '700px', '400px');
+					},
+					// 删除
+					del: function(data) {
+						sa.confirm('是否删除,此操作不可撤销', function() {
+							sa.ajax('/sp-admin/TbApp/delete?id=' + data.id, function(res) {
+								sa.arrayDelete(this.dataList, data);
+								sa.ok('删除成功');
+								sa.f5TableHeight(); // 刷新表格高度 
+							}.bind(this))
+						}.bind(this));
+					},
+					// 改 - 状态(0=下架,1=上架)
+					updateStatus: function(data) {
+						// 声明变量记录是否成功 
+						var isOk = false;
+						var oldValue = data.status;
+						var ajax = sa.ajax('/sp-admin/TbApp/updateStatus', {
+							id: data.id,
+							value: data.status
+						}, function(res) {
+							isOk = true;
+							sa.msg('修改成功');
+						}.bind(this));
+						// 如果未能修改成功, 则回滚 
+						$.when(ajax).done(function() {
+							if (isOk == false) {
+								data.status = oldValue;
+							}
+						})
+					},
+				},
+				created: function() {
+					this.f5();
+					sa.onInputEnter();
+				}
+			})
+		</script>
+	</body>
+</html>

+ 11 - 14
sa-view/tb-group/tb-group-leader.html

@@ -55,29 +55,26 @@
 							<tr>
 								<th>姓名</th>
 								<td>{{m.name}}</td>
+							</tr>
+							<tr>
 								<th>手机号码</th>
-								<td>{{maskPhone(m.phone)}}</td>
+								<td>{{m.phone}}</td>
 							</tr>
 							<tr>
-								<th>银行</th>
-								<td>{{m.bankCode}}</td>
 								<th>身份证号</th>
-								<td>{{maskId(m.idCard)}}</td>
+								<td>{{m.idCard}}</td>
 							</tr>
 							<tr>
-								<th>银行卡号</th>
+								<th>银行</th>
 								<td>{{m.bankNo}}</td>
-								<th>身份证</th>
-								<td><div class="image-box-2" v-for="item in m.idCardImg_arr">
-										<img :src="item" @click="sa.showImage(item, '500px', '400px')" />
-									</div>
-								</td>
 							</tr>
 							<tr>
-								<th>联系地址</th>
-								<td>{{m.address}}</td>
-								<th>创建时间</th>
-								<td>{{sa.forDate(m.createTime, 2)}}</td>
+								<th>银行卡号</th>
+								<td>{{m.bankCode}}</td>
+							</tr>
+							<tr>
+								<th>地址</th>
+								<td>{{m.birplAddr}}</td>
 							</tr>
 						</table>
 						<div class="c-item br s-ok">

+ 1 - 1
sa-view/tb-group/tb-group-list.html

@@ -31,7 +31,7 @@
 					</div>
 					<div class="c-item">
 						<label class="c-label">名称:</label>
-						<el-input size="mini" v-model="p.name"></el-input>
+						<el-input size="mini" v-model="p.orgName"></el-input>
 					</div>
 					<div class="c-item" style="min-width: 0px;">
 						<el-button size="mini" type="primary" icon="el-icon-search" @click="p.pageNo = 1; f5()">查询</el-button>

+ 7 - 5
sa-view/tb-import-order/tb-import-order-list.html

@@ -31,15 +31,17 @@
 					<sa-td name="业务编号" prop="platSeqNo" width="150px"></sa-td>
 					<sa-td name="预录入编号" prop="preNo" width="150px"></sa-td>
 					<sa-td name="申报人姓名" prop="declareName" ></sa-td>
-					<sa-td name="申报人身份证号" prop="ciphertextIdno" ></sa-td>
+					<!--<sa-td name="申报人身份证号" prop="ciphertextIdno" width="140px"></sa-td>-->
 					<sa-td name="车牌号" prop="veNo" ></sa-td>
-					<sa-td name="互市区" prop="fieldName" ></sa-td>
+					<sa-td name="互市区" prop="fieldName" width="160px"></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="总毛重(kg)" prop="sumGrossWt" ></sa-td>
+					<sa-td name="总净重(kg)" prop="sumNetWt" ></sa-td>
 					<sa-td name="币制" prop="currCode" ></sa-td>
 					<sa-td name="件数" prop="packNo" ></sa-td>
-					<el-table-column label="操作" fixed="right"  width="120px">
+					<sa-td name="运输批次号" prop="manifestId" width="150px"></sa-td>
+					<sa-td name="创建时间" prop="createTime" width="140px"></sa-td>
+					<el-table-column label="操作" fixed="right"  width="80px">
 						<template slot-scope="s">
 							<el-button class="c-btn" type="success" icon="el-icon-view" @click="get(s.row)">查看</el-button>
 						</template>

+ 3 - 3
sa-view/tb-order/tb-order-info.html

@@ -70,7 +70,7 @@
 							</tr>
 							<tr>
 								<th>总重量</th>
-								<td>{{m.totalWeight}}</td>
+								<td>{{m.netWt}}</td>
 								<th>总金额</th>
 								<td>{{m.totalPrice}}</td>
 							</tr>
@@ -97,7 +97,7 @@
 				},
 				el: '.vue-box',
 				data: {
-					id: sa.p('id', 0),	// 获取数据ID 
+					id: sa.p('id', 0),	// 获取数据ID
 					m: null
 				},
 				methods: {
@@ -111,7 +111,7 @@
 					}.bind(this))
 				}
 			})
-			
+
 		</script>
 	</body>
 </html>

+ 211 - 66
sa-view/tb-order/tb-order-list.html

@@ -3,7 +3,8 @@
 	<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" />
+		<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">
@@ -20,36 +21,86 @@
 				<!-- ------------- 检索参数 ------------- -->
 				<div class="c-title">检索参数</div>
 				<el-form ref="form" :model='p' @submit.native.prevent>
-					<sa-item type="text" name="车牌号" v-model="p.veNo" width="80px"></sa-item>
-					<sa-item type="text" name="订单号" v-model="p.tradeNo" width="80px"></sa-item>
-					<sa-item type="text" name="买家" v-model="p.buyUserName"></sa-item>
-					<sa-item type="text" name="商家名称" v-model="p.enterpriseName" width="70px"></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>
+					<div>
+						<sa-item type="text" name="车牌号" v-model="p.veNo" width="80px"></sa-item>
+						<sa-item type="text" name="边民" v-model="p.buyUserName" width="80px"></sa-item>
+						<sa-item name="确认状态" width="120px">
+							<el-select v-model="p.applyConfirmStatus">
+								<el-option label="全部" value=""></el-option>
+								<el-option label="未确认" value="0"></el-option>
+								<el-option label="已确认" value="1"></el-option>
+							</el-select>
+						</sa-item>
+						<sa-item name="出卡3" width="120px">
+							<el-select v-model="p.finishStatus">
+								<el-option label="全部" value=""></el-option>
+								<el-option label="未出卡3" value="0"></el-option>
+								<el-option label="已出卡3" value="1"></el-option>
+							</el-select>
+						</sa-item>
+					</div>
+					<div>
+						<sa-item name="上架状态" width="120px">
+							<el-select v-model="p.upStatus">
+								<el-option label="全部" value=""></el-option>
+								<el-option label="未上架" value="1"></el-option>
+								<el-option label="已上架" value="2"></el-option>
+							</el-select>
+						</sa-item>
+						<sa-item name="销售状态" width="100px">
+							<el-select v-model="p.beingOrder" style="width: 120px;">
+								<el-option label="全部" value=""></el-option>
+								<el-option label="未销售" value="0"></el-option>
+								<el-option label="已销售" value="1"></el-option>
+							</el-select>
+						</sa-item>
+						<sa-item name="扣款状态" width="120px">
+							<el-select v-model="p.Sxb010Status">
+								<el-option label="全部" value=""></el-option>
+								<el-option label="未扣款" value="0"></el-option>
+								<el-option label="扣款失败" value="2"></el-option>
+								<el-option label="已扣款" value="1"></el-option>
+							</el-select>
+						</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>
+					</div>
 				</el-form>
 				<!-- ------------- 数据列表 ------------- -->
-				<el-table class="data-table" ref="data-table" :data="dataList" >
+				<el-table class="data-table" ref="data-table" :data="dataList">
 					<sa-td type="index" width="30px"></sa-td>
-					<sa-td name="车牌号" prop="veNo" ></sa-td>
+					<sa-td name="车牌号" prop="veNo"></sa-td>
 					<sa-td name="订单号" prop="tradeNo" width="180"></sa-td>
-					<sa-td name="买家" prop="buyUserName" ></sa-td>
+					<sa-td name="边民" prop="buyUserName"></sa-td>
 					<sa-td name="商家名称" prop="enterpriseName" width="280px"></sa-td>
 					<sa-td name="商品名称" prop="goodsNames" width="200px"></sa-td>
-					<sa-td name="总重量" prop="totalWeight" ></sa-td>
-					<sa-td name="总金额" prop="totalPrice" ></sa-td>
-					<sa-td name="上架金额(元)" prop="upPrice" ></sa-td>
-					<sa-td name="订单状态" prop="upPrice" >
+					<sa-td name="净重(kg)" prop="netWt"></sa-td>
+					<sa-td name="总金额" prop="totalPrice"></sa-td>
+					<sa-td name="上架金额(元)" prop="upPrice" width="100px"> </sa-td>
+					<sa-td name="订单状态" prop="upStatus">
 						<template slot-scope="s">
-							<div v-if="s.row.upStatus==2">已上架</div>
+							<div v-if="s.row.upStatus===2">已上架</div>
 							<div v-else>未上架</div>
 						</template>
 					</sa-td>
+					<sa-td name="过卡状态" prop="finishStatus">
+						<template slot-scope="s">
+							<div v-if="s.row.finishStatus===1">已过卡3</div>
+							<div v-else>未过卡3</div>
+						</template>
+					</sa-td>
 					<!--(一级市场)订单扣款回执状态[0=初始值 1=扣款成功 2=扣款失败]-->
-					<sa-td name="扣款状态" prop="sxb010Status" >
+					<sa-td name="扣款状态" prop="sxb010Status">
+						<template slot-scope="s">
+							<div v-if="s.row.sxb010Status===0">未扣款</div>
+							<div v-if="s.row.sxb010Status===1">扣款成功</div>
+							<div v-else-if="s.row.sxb010Status===2">扣款失败</div>
+						</template>
+					</sa-td>
+					<sa-td name="销售状态" prop="beingOrder"><!--订单转售后是否在二级市场被下单-->
 						<template slot-scope="s">
-							<div v-if="s.row.sxb010Status==1">扣款成功</div>
-							<div v-else-if="s.row.sxb010Status==2">扣款失败</div>
-							<div v-else>未扣款</div>
+							<div v-if="s.row.beingOrder==1">已销售</div>
+							<div v-else>未销售</div>
 						</template>
 					</sa-td>
 					<sa-td name="补扣次数" prop="deductionCount">
@@ -61,26 +112,36 @@
 					<sa-td name="补扣时间" prop="deductionTime" width="140px"></sa-td>
 					<sa-td name="创建时间" prop="createTime" width="140px"></sa-td>
 
-					<!-- <sa-td name="进出口预申报单号" prop="preIeportNo" width="180"></sa-td> -->
-					<!--<sa-td type="enum" name="交易确认" prop="peopleConfirmStatus" :jv="{1: '已确认[green]', 0: '未确认[#ff910a]'}" ></sa-td>
-					<sa-td type="enum" name="委托确认" prop="cooperEntrustStatus" :jv="{1: '已确认[green]', 0: '未确认[#ff910a]'}" ></sa-td>
-					<sa-td type="enum" name="进口确认" prop="applyConfirmStatus" :jv="{1: '已确认[green]', 0: '未确认[#ff910a]'}" ></sa-td>-->
-					<el-table-column label="操作" fixed="right"  width="180px">
+					<sa-td type="enum" name="交易确认" prop="peopleConfirmStatus"
+						:jv="{1: '已确认[green]', 0: '未确认[#ff910a]'}"></sa-td>
+					<sa-td type="enum" name="委托确认" prop="cooperEntrustStatus"
+						:jv="{1: '已确认[green]', 0: '未确认[#ff910a]'}"></sa-td>
+					<sa-td type="enum" name="进口确认" prop="applyConfirmStatus"
+						:jv="{1: '已确认[green]', 0: '未确认[#ff910a]'}"></sa-td>
+					<el-table-column label="操作" fixed="right" width="210px" align="center">
 						<template slot-scope="s">
-							<el-button class="c-btn" type="success" icon="el-icon-view" @click="get(s.row)">查看</el-button>
-							<el-button class="c-btn" type="primary" icon="el-icon-info" @click="getBank(s.row)">银行回执</el-button>
-							<div>
-								<el-button v-if="s.row.sxb010Status==2&&sa.isAuth('tb-order-deduction')"
-										   class="c-btn" type="warning" icon="el-icon-view" @click="deduction(s.row)">订单补扣款</el-button>
-								<el-button v-else :disabled="true" class="c-btn" type="warning" icon="el-icon-view">订单补扣款</el-button>
-							</div>
-							<!--<el-button v-if="s.row.upStatus==2&&s.row.resaleStatus==0&&sa.isAuth('tb-order-edit-price')"
-									   class="c-btn" type="warning" icon="el-icon-view" @click="editPrice(s.row)">修改上架金额</el-button>-->
+							<el-button class="c-btn" type="success"
+								@click="get(s.row)">查看</el-button>
+							<el-button class="c-btn" type="primary"
+								@click="getBank(s.row)">银行回执</el-button>
+							<span>
+								<el-button v-if="s.row.sxb010Status!=1
+												&&s.row.peopleConfirmStatus===1 && s.row.applyConfirmStatus===1
+												&&sa.isAuth('tb-order-deduction')" class="c-btn" type="warning" @click="deductionHandle(s.row)">订单扣款</el-button>
+							</span>
+							<span>
+							<!-- 	<el-button v-if="s.row.finishStatus!=1
+												&&sa.isAuth('tb-order-sendCXB001')" class="c-btn" type="warning"
+									@click="sendCXB001Handle(s.row)">推送结关</el-button> -->
+							</span>
+							<el-button v-if="sa.isAuth('tb-order-send009')&&s.row.applyConfirmStatus==0" class="c-btn" type="danger"
+								@click="send009ToHt(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>
+				<sa-item type="page" :curr.sync="p.pageNo" :size.sync="p.pageSize" :total="dataCount"
+					@change="f5()"></sa-item>
 			</div>
 			<el-dialog :title="model.title" :visible.sync="model.visible" width="500px">
 				<div>
@@ -93,6 +154,22 @@
 					<el-button type="primary" @click="sel">转售二级</el-button>
 				</span>
 			</el-dialog>
+
+			<el-dialog :title="deduction.title" :visible.sync="deduction.visible" width="500px">
+				<sa-item name="车牌号" v-model="deduction.veNo" placeholder="车牌号" br></sa-item>
+				<span slot="footer" class="dialog-footer">
+					<el-button @click="deduction.visible = false">取 消</el-button>
+					<el-button type="primary" @click="ToDeductionByVeNo">确定</el-button>
+				</span>
+			</el-dialog>
+			<el-dialog :title="sendCXB001.title" :visible.sync="sendCXB001.visible" width="500px">
+				<sa-item name="车牌号" v-model="sendCXB001.veNo" placeholder="车牌号" br></sa-item>
+				<span slot="footer" class="dialog-footer">
+					<el-button @click="sendCXB001.visible = false">取 消</el-button>
+					<el-button type="primary" @click="ToSendCXB001ByVeNo">确定</el-button>
+				</span>
+			</el-dialog>
+
 		</div>
 		<script>
 			var app = new Vue({
@@ -106,66 +183,132 @@
 						title: '修改价格',
 						visible: false,
 						form: {
-							id:'',
-							upPrice:'',
-							selPrice:0
+							id: '',
+							upPrice: '',
+							selPrice: 0
 						}
 					},
+					deduction: {
+						title: '按车补扣款',
+						visible: false,
+						veNo: ''
+					},
+					sendCXB001: {
+						title: '按车推结关',
+						visible: false,
+						veNo: ''
+					},
 					p: { // 查询参数
-						tradeNo: '',		    // 订单号
-						buyUserName: '',		// 买家
-						enterpriseName: '',		// 商家名称
-						pageNo: 1,		// 当前页
-						pageSize: 20,	// 页大小
-						sortType: 0		// 排序方式
+						tradeNo: '', // 订单号
+						buyUserName: '', // 买家
+						sxb010Status: '', // 商家名称
+						returns: 0,
+						chargebacks: 0,
+						pageNo: 1, // 当前页
+						pageSize: 10, // 页大小
+						sortType: 0 ,// 排序方式
+						saleMainId: sa.p('mainId', ''),
 					},
 					dataCount: 0,
 					dataList: [], // 数据集合
 				},
 				methods: {
-					editPrice(item){
-						this.model={
-							title:'修改订单【'+item.tradeNo+'】价格',
-							visible:true,
-							form:item
+					editPrice(item) {
+						this.model = {
+							title: '修改订单【' + item.tradeNo + '】价格',
+							visible: true,
+							form: item
 						}
 					},
-					save(){
-						let price=this.model.form.selPrice;
-						if(!price){
+					save() {
+						let price = this.model.form.selPrice;
+						if (!price) {
 							sa.error('请输入金额')
 							return;
 						}
-						sa.ajax('/level-one-server/TbOrder/editUpPrice', {id:this.model.form.id,price:price}, function(res) {
+						sa.ajax('/level-one-server/TbOrder/editUpPrice', {
+							id: this.model.form.id,
+							price: price
+						}, function(res) {
 							this.f5();
-							this.model.visible=false;
+							this.model.visible = false;
 						}.bind(this));
 					},
-					sel(){
-						let price=this.model.form.selPrice;
-						if(!price){
+					sel() {
+						let price = this.model.form.selPrice;
+						if (!price) {
 							sa.error('请输入金额')
 							return;
 						}
-						sa.ajax('/level-two-server/TbOrders/addOrderByResale', {id:this.model.form.id,price:price}, function(res) {
+						sa.ajax('/level-two-server/TbOrders/addOrderByResale', {
+							id: this.model.form.id,
+							price: price
+						}, function(res) {
 							this.f5();
-							this.model.visible=false;
+							this.model.visible = false;
 						}.bind(this));
 					},
-					deduction(data) {
-						sa.confirm('是否执行补扣款操作', function() {
+
+					deductionHandle(data) {
+						sa.confirm('是否执行订单扣款操作', function() {
 							sa.ajax('/level-one-server/TbOrder/deduction?id=' + data.id, function(res) {
 								sa.ok('操作成功');
-								sa.f5TableHeight();		// 刷新表格高度
+								sa.f5TableHeight(); // 刷新表格高度
+							}.bind(this))
+						}.bind(this));
+					},
+					deductionByVeNo() {
+						this.deduction.visible = true
+					},
+					ToDeductionByVeNo() {
+						let veNo = this.deduction.veNo;
+						if (!veNo) {
+							sa.error('请输入车牌号')
+							return;
+						}
+						sa.showIframe('按车补扣款【' + veNo + '】', 'tb-order-deductionByVeNo.html?veNo=' + veNo, '1660px',
+							'97%');
+					},
+
+					sendCXB001Handle(data) {
+						sa.confirm('是否执行推送结关信息操作', function() {
+							sa.ajax('/level-one-server/TbOrder/sendCXB001?id=' + data.id, function(res) {
+								sa.ok('操作成功');
+								sa.f5TableHeight(); // 刷新表格高度
+							}.bind(this))
+						}.bind(this));
+					},
+					sendCXB001ByVeNo() {
+						this.sendCXB001.visible = true
+					},
+					ToSendCXB001ByVeNo() {
+						let veNo = this.sendCXB001.veNo;
+						if (!veNo) {
+							sa.error('请输入车牌号')
+							return;
+						}
+						sa.showIframe('按车推结关【' + veNo + '】', 'tb-order-sendCXB001ByVeNo.html?veNo=' + veNo, '1660px',
+							'97%');
+					},
+
+					send009ToHt(data) {
+						sa.confirm('是否执行推送009报文操作', function() {
+							sa.ajax('/level-one-server/TbOrder/send009ToHt?id=' + data.id, function(res) {
+								sa.ok('操作成功');
+								sa.f5TableHeight(); // 刷新表格高度
 							}.bind(this))
 						}.bind(this));
 					},
 					// 刷新
 					f5: function() {
+						this.deduction.veNo = '';
+						this.deduction.visible = false;
+						this.sendCXB001.veNo = '';
+						this.sendCXB001.visible = false;
 						sa.ajax('/level-one-server/TbOrder/getList', sa.removeNull(this.p), function(res) {
 							this.dataList = res.data; // 数据
 							this.dataCount = res.dataCount; // 数据总数
-							sa.f5TableHeight();		// 刷新表格高度
+							sa.f5TableHeight(); // 刷新表格高度
 						}.bind(this));
 					},
 					// 查看
@@ -190,7 +333,7 @@
 							sa.ajax('/level-one-server/TbOrder/delete?id=' + data.id, function(res) {
 								sa.arrayDelete(this.dataList, data);
 								sa.ok('删除成功');
-								sa.f5TableHeight();		// 刷新表格高度
+								sa.f5TableHeight(); // 刷新表格高度
 							}.bind(this))
 						}.bind(this));
 					},
@@ -199,15 +342,17 @@
 						// 获取选中元素的id列表
 						let selection = this.$refs['data-table'].selection;
 						let ids = sa.getArrayField(selection, 'id');
-						if(selection.length == 0) {
+						if (selection.length == 0) {
 							return sa.msg('请至少选择一条数据')
 						}
 						// 提交删除
 						sa.confirm('是否批量删除选中数据?此操作不可撤销', function() {
-							sa.ajax('/level-one-server/TbOrder/deleteByIds', {ids: ids.join(',')}, function(res) {
+							sa.ajax('/level-one-server/TbOrder/deleteByIds', {
+								ids: ids.join(',')
+							}, function(res) {
 								sa.arrayDelete(this.dataList, selection);
 								sa.ok('删除成功');
-								sa.f5TableHeight();		// 刷新表格高度
+								sa.f5TableHeight(); // 刷新表格高度
 							}.bind(this))
 						}.bind(this));
 					},

+ 70 - 0
sa-view/tb-orders/tb-orders-bank-list.html

@@ -0,0 +1,70 @@
+<!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">
+				<!-- ------------- 数据列表 ------------- -->
+				<el-table class="data-table" ref="data-table" :data="dataList" >
+					<!-- <sa-td name="报文编号" prop="sn" ></sa-td> -->
+					<sa-td name="互市代码" prop="organization" ></sa-td>
+					<sa-td name="银行标识" prop="bankCode" ></sa-td>
+					<sa-td name="业务类型" prop="operation" ></sa-td>
+					<sa-td name="回执代码" prop="code" ></sa-td>
+					<sa-td name="订单号" prop="source" width="180px"></sa-td>
+					<sa-td name="流水单号" prop="result" ></sa-td>
+					<sa-td name="回执内容" prop="note" width="300px"></sa-td>
+					<!-- <sa-td name="报文发送时间" prop="date" width="150px"></sa-td> -->
+					<sa-td name="创建时间" prop="createTime" width="150px"></sa-td>
+				</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: {
+					orderNo: sa.p('orderNo', 0),	// 获取数据ID
+					p: { // 查询参数
+						source: '',		// 订单号
+					},
+					dataCount: 0,
+					dataList: [], // 数据集合
+				},
+				methods: {
+					// 刷新
+					f5: function() {
+						this.p.source = this.orderNo
+						sa.ajax('/payment-server/BankInfo/getList', sa.removeNull(this.p), function(res) {
+							this.dataList = res.data; // 数据
+							this.dataCount = res.dataCount; // 数据总数
+							sa.f5TableHeight();		// 刷新表格高度
+						}.bind(this));
+					},
+				},
+				created: function() {
+					this.f5();
+					sa.onInputEnter();
+				}
+			})
+		</script>
+	</body>
+</html>

+ 357 - 0
sa-view/tb-orders/tb-orders-email.html

@@ -0,0 +1,357 @@
+<!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="https://unpkg.com/element-ui@2.13.0/lib/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>
+		<script src="../../static/kj/upload-util.js"></script>
+		<!-- 引入 html2canvas 和 jsPDF -->
+		<script src="../../static/kj/html2canvas.min.js"></script>
+		<script src="../../static/kj/jspdf.umd.min.js"></script>
+		<style type="text/css">
+			.c-panel .c-label{width: 8em;}
+			table {
+			  font-family: arial, sans-serif;
+			  border-collapse: collapse;
+			  width: 90%;
+			  margin-top: 20px ;
+			  margin-left: auto;
+			  margin-right: auto;
+			}
+			th {
+			  border: 1px solid darkgray;
+			  text-align: left;
+			  height: 24px;
+			  padding: 8px;
+			  background-color: #dddddd;
+			}
+			td {
+			  border: 1px solid darkgray;
+			  text-align: left;
+			  padding: 8px;
+			}
+		</style>
+	</head>
+	<body>
+		<div class="vue-box sbot" style="display: none;" :style="'display: block;'">
+			<!-- ------- 内容部分 ------- -->
+			<div class="s-body">
+				<div class="c-panel" id="content-to-convert" ref="contentToConvert">
+					<el-form v-if="m">
+						<table>
+							<tr>
+								<td colspan='6' style="text-align:center;font-weight: bold; border: 0 0 1px 0; " >电子交易协议</td>
+							</tr>
+							<tr>
+								<td colspan='6' style="font-weight: bold;" >一、交易信息</td>
+							</tr>
+							<tr>
+								<th>订单编号</th>
+								<td colspan='2'>{{m.orderNo}}</td>
+								<th>结算单号</th>
+								<td colspan='2'>{{m.settleBillNo}}</td>
+							</tr>
+							<tr>
+								<th>交易日期</th>
+								<td colspan='2'>{{m.payTime}}</td>
+								<th>交货日期</th>
+								<td colspan='2'></td>
+							</tr>
+							<tr>
+								<th>银行流水号</th>
+								<td colspan='5'>{{m.result}}</td>
+							</tr>
+							<tr>
+								<th>商品名称</th>
+								<th>数量</th>
+								<th>重量(KG)</th>
+								<th>单价(元)</th>
+								<th>合计(元)</th>
+								<th>备注</th>
+							</tr>
+							<tr>
+								<td>{{m.goodsName}}</td>
+								<td>{{m.buyQty}}</td>
+								<td>{{m.netWet}}</td>
+								<td>{{m.singlePrice}}</td>
+								<td>{{m.resalePrice}}</td>
+								<td>含税价</td>
+							</tr>
+							<tr>
+								<td>合计</td>
+								<td>{{m.buyQty}}</td>
+								<td>{{m.netWet}}</td>
+								<td>{{m.singlePrice}}</td>
+								<td>{{m.resalePrice}}</td>
+								<td>含税价</td>
+							</tr>
+							<tr>
+								<td colspan='6'>合计金额人民币(大写):{{convertToChineseNumeral(m.resalePrice)}}</td>
+							</tr>
+							<tr>
+								<td colspan='6' style="font-weight: bold;" >二、卖方信息</td>
+							</tr>
+							<tr>
+								<th>卖方</th>
+								<td colspan='2'>{{m.businessName}}</td>
+								<th>联系人</th>
+								<td colspan='2'>{{m.contacts}}</td>
+							</tr>
+							<tr>
+								<th>开户行</th>
+								<td colspan='2'>{{m.peopleBankName}}</td>
+								<th>联系方式</th>
+								<td colspan='2'>{{m.phone}}</td>
+							</tr>
+							<tr>
+								<th>银行账号</th>
+								<td colspan='2'>{{m.peopleBankCode}}</td>
+								<th>统一信用代码</th>
+								<td colspan='2'>{{m.peopleDutyParagraph}}</td>
+							</tr>
+							<tr>
+								<td colspan='6' style="font-weight: bold;" >三、买方信息</td>
+							</tr>
+							<tr>
+								<th>买方</th>
+								<td colspan='2' v-if="m.purchaserBusinessName">{{m.purchaserBusinessName}}</td>
+								<td colspan='2' v-else>{{m.purchaserName}}</td>
+								<th>联系人</th>
+								<td colspan='2' v-if="m.legalPerson">{{m.legalPerson}}</td>
+								<td colspan='2' v-else>{{m.purchaserName}}</td>
+							</tr>
+							<tr>
+								<th>开户行</th>
+								<td colspan='2'>{{m.purchaserBankName}}</td>
+								<th>联系方式</th>
+								<td colspan='2'>{{m.purchaserContact}}</td>
+							</tr>
+							<tr>
+								<th>银行账号</th>
+								<td colspan='2'>{{m.purchaserBankAccount}}</td>
+								<th>统一信用代码</th>
+								<td colspan='2'>{{m.purchaserDutyParagraph}}</td>
+							</tr>
+							<tr>
+								<td colspan='6' style="font-weight: bold;" >四、其它信息</td>
+							</tr>
+							<tr>
+								<th>交货地点</th>
+								<td colspan='5'>{{m.unloadingAddress}}</td>
+							</tr>
+							<tr>
+								<th>提货方式</th>
+								<td colspan='5'></td>
+							</tr>
+							<tr>
+								<th>付款方式</th>
+								<td colspan='5'></td>
+							</tr>
+							<tr>
+								<th>发票类型</th>
+								<td colspan='5'></td>
+							</tr>
+							<tr>
+								<th>其它约定</th>
+								<td colspan='5'></td>
+							</tr>
+							<tr>
+								<th>补充说明</th>
+								<td colspan='5'></td>
+							</tr>
+							<tr>
+								<td colspan='3'>
+									卖方:{{m.businessName}} <br>
+									法定代表人或授权委托人:{{m.contacts}}
+								</td>
+								<td colspan='3'>
+									<span>
+										<span v-if="m.purchaserBusinessName">买方:{{m.purchaserBusinessName}}<br></span>
+										<span v-else>买方:{{m.purchaserName}}<br></span>
+									</span>
+									<span>
+										<span v-if="m.legalPerson">法定代表人或授权委托人:{{m.legalPerson}}</span>
+										<span v-else>法定代表人或授权委托人:{{m.purchaserName}}</span>
+									</span>
+								</td>
+							</tr>
+						</table>
+					</el-form>
+				</div>
+			</div>
+			<!-- ------- 底部按钮 ------- -->
+			<div class="s-foot">
+				<el-button type="success" icon="el-icon-printer" @click="htmlToPdf()">打印协议</el-button>
+				<el-button type="primary" icon="el-icon-download" @click="downloadToPdf()">下载协议</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: {
+					downloadToPdf() {
+						const element = document.getElementById('content-to-convert');
+						html2canvas(element).then(canvas => {
+							// 使用 jsPDF 将 canvas 转换成 PDF
+							const imgData = canvas.toDataURL('image/png');
+							const pdf = new jspdf.jsPDF({
+								orientation: 'portrait',
+								unit: 'px',
+								format: 'a4'
+							});
+
+							const imgProps = pdf.getImageProperties(imgData);
+							const pdfWidth = pdf.internal.pageSize.getWidth();
+							const pdfHeight = (imgProps.height * pdfWidth) / imgProps.width;
+
+							// 添加图片,适应页面大小
+							pdf.addImage(imgData, 'PNG', 0, 0, pdfWidth, pdfHeight);
+							pdf.save(Date.now()+'.pdf');
+						});
+					},
+					htmlToPdf() {
+						const element = document.getElementById('content-to-convert');
+						html2canvas(element).then(canvas => {
+							// 使用 jsPDF 将 canvas 转换成 PDF
+							const imgData = canvas.toDataURL('image/png');
+							const pdf = new jspdf.jsPDF({
+								orientation: 'portrait',
+								unit: 'px',
+								format: 'a4'
+							});
+
+							const imgProps = pdf.getImageProperties(imgData);
+							const pdfWidth = pdf.internal.pageSize.getWidth();
+							const pdfHeight = (imgProps.height * pdfWidth) / imgProps.width;
+
+							// 添加图片,适应页面大小
+							pdf.addImage(imgData, 'PNG', 0, 0, pdfWidth, pdfHeight);
+							// 将 PDF 保存为 Blob 并处理它  这里需要处理跨域问题
+							const pdfBlob = pdf.output('blob');
+							var blobURL = window.URL.createObjectURL(pdfBlob);
+							var newWindow = window.open(blobURL, '_blank');
+							if (newWindow) {
+								newWindow.focus();
+							} else {
+								alert('请允许弹出窗口或在新标签页中手动查看 PDF。');
+							}
+						});
+					},
+					convertToChineseNumeral(money) {
+						// 汉字的数字
+						const cnNums = ['零','壹','贰','叁','肆','伍','陆','柒','捌','玖']
+						// 基本单位
+						const cnIntRadice = ['', '拾', '佰', '仟']
+						// 对应整数部分扩展单位
+						const cnIntUnits = ['', '万', '亿', '兆']
+						// 对应小数部分单位
+						const cnDecUnits = ['角', '分', '毫', '厘']
+						// 整数金额时后面跟的字符
+						const cnInteger = '整'
+						// 整型完以后的单位
+						const cnIntLast = '圆'
+						// 最大处理的数字
+						const maxNum = 999999999999999.9999
+						// 金额整数部分
+						let integerNum
+						// 金额小数部分
+						let decimalNum
+						// 输出的中文金额字符串
+						let chineseStr = ''
+						// 分离金额后用的数组,预定义
+						let parts
+						if (money == '') {
+							return ''
+						}
+						money = parseFloat(money)
+						if (money >= maxNum) {
+							// 超出最大处理数字
+							return ''
+						}
+						if (money == 0) {
+							chineseStr = cnNums[0] + cnIntLast + cnInteger
+							return chineseStr
+						}
+						// 转换为字符串
+						money = money.toString()
+						if (money.indexOf('.') == -1) {
+							integerNum = money
+							decimalNum = ''
+						} else {
+							parts = money.split('.')
+							integerNum = parts[0]
+							decimalNum = parts[1].substr(0, 4)
+						}
+						// 获取整型部分转换
+						if (parseInt(integerNum, 10) > 0) {
+							let zeroCount = 0
+							const IntLen = integerNum.length
+							for (let i = 0; i < IntLen; i++) {
+								const n = integerNum.substr(i, 1)
+								const p = IntLen - i - 1
+								const q = p / 4
+								const m = p % 4
+								if (n == '0') {
+									zeroCount++
+								} else {
+									if (zeroCount > 0) {
+										chineseStr += cnNums[0]
+									}
+									// 归零
+									zeroCount = 0
+									chineseStr += cnNums[parseInt(n)] + cnIntRadice[m]
+								}
+								if (m == 0 && zeroCount < 4) {
+									chineseStr += cnIntUnits[q]
+								}
+							}
+							chineseStr += cnIntLast
+						}
+						// 小数部分
+						if (decimalNum != '') {
+							const decLen = decimalNum.length
+							for (let i = 0; i < decLen; i++) {
+								const n = decimalNum.substr(i, 1)
+								if (n != '0') {
+									chineseStr += cnNums[Number(n)] + cnDecUnits[i]
+								}
+							}
+						}
+						if (chineseStr == '') {
+							chineseStr += cnNums[0] + cnIntLast + cnInteger
+						} else if (decimalNum == '') {
+							chineseStr += cnInteger
+						}
+						return chineseStr
+					}
+				},
+				mounted: function() {
+					sa.ajax('/level-two-server/TbOrders/getSubEmail?id=' + this.id, function(res) {
+						this.m = res.data;
+						if(res.data == null) {
+							sa.alert('未能查找到 id=' + this.id + " 详细数据");
+						}
+					}.bind(this))
+				}
+			})
+
+		</script>
+	</body>
+</html>

+ 6 - 6
sa-view/tb-orders/tb-orders-info.html

@@ -52,16 +52,16 @@
 								<td>{{m.goodsName}}</td>
 							</tr>
 							<tr>
-								<th>商品来源</th>
-								<td>{{m.goodsFrom}}</td>
-								<th>互市区</th>
-								<td>{{m.tradeAreaName}}</td>
-							</tr>
-							<tr>
 								<th>买家</th>
 								<td>{{m.purchaserName}}</td>
+								<th>卖家</th>
+								<td>{{m.leaderName}}</td>
+							</tr>
+							<tr>
 								<th>转售金额</th>
 								<td>{{m.resalePrice}}</td>
+								<th>互市区</th>
+								<td>{{m.tradeAreaName}}</td>
 							</tr>
 							<tr>
 								<th>车牌号</th>

+ 65 - 12
sa-view/tb-orders/tb-orders-list.html

@@ -22,8 +22,25 @@
 				<!-- ------------- 检索参数 ------------- -->
 				<div class="c-title">检索参数</div>
 				<el-form ref="form" :model='p' @submit.native.prevent>
+					<sa-item type="text" name="车牌号" v-model="p.veNo" width="80px"></sa-item>
+					<sa-item type="text" name="货主" v-model="p.leaderName" width="90px"></sa-item>
 					<sa-item type="text" name="订单编号" v-model="p.orderNo" width="90px"></sa-item>
-					<sa-item type="text" name="商品名称" v-model="p.goodsName" width="90px"></sa-item>
+					<sa-item name="订单状态" width="90px">
+						<el-select v-model="p.orderFinish" style="width: 120px;">
+							<el-option label="全部" value=""></el-option>
+							<el-option label="未完成" value="0"></el-option>
+							<el-option label="已完成" value="1"></el-option>
+						</el-select>
+					</sa-item>
+					<sa-item name="支付状态" width="90px">
+						<el-select v-model="p.isPay" style="width: 120px;">
+							<el-option label="全部" value=""></el-option>
+							<el-option label="未支付" value="0"></el-option>
+							<el-option label="支付中" value="3"></el-option>
+							<el-option label="支付失败" value="2"></el-option>
+							<el-option label="支付成功" value="1"></el-option>
+						</el-select>
+					</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-button v-if="sa.isAuth('tb-orders-add')" size="mini" type="primary" @click="add()">新增</el-button> -->
@@ -31,20 +48,34 @@
 				<!-- ------------- 数据列表 ------------- -->
 				<el-table class="data-table" ref="data-table" :data="dataList" >
 					<sa-td type="index" width="30px"></sa-td>
+					<sa-td name="车牌号" prop="veNo" width="80px"></sa-td>
 					<sa-td name="订单编号" prop="orderNo" width="180px"></sa-td>
 					<sa-td name="商品名称" prop="goodsName" ></sa-td>
-					<sa-td name="商品来源" prop="goodsFrom" ></sa-td>
-					<sa-td name="互市区" prop="tradeAreaName" ></sa-td>
-					<sa-td name="买家" prop="purchaserName" ></sa-td>
-					<sa-td name="卖家" prop="shipperName" ></sa-td>
-					<sa-td name="转售金额" prop="resalePrice" ></sa-td>
-					<sa-td name="车牌号" prop="veNo" ></sa-td>
-					<sa-td name="订状态" prop="orderFinish" type="enum" :jv="{0: '未完成[#ff910a]', 1: '已完成[green]'}" @change="s => updateOrderFinish(s.row)"></sa-td>
-					<el-table-column label="操作" width="100px">
+					<sa-td name="货主" prop="leaderName" width="100px"></sa-td>
+					<sa-td name="转售金额" prop="resalePrice" width="80px"></sa-td>
+					<sa-td name="买家" prop="purchaserName" width="100px"></sa-td>
+					<sa-td name="下单时间" prop="orderTime" width="100px"></sa-td>
+					<sa-td name="订单状态" prop="orderFinish" type="enum" :jv="{0: '未完成[#ff910a]', 1: '已完成[green]'}" @change="s => updateOrderFinish(s.row)" width="80px"></sa-td>
+					<sa-td name="支付状态" prop="isPay" type="enum" :jv="{0: '未支付[#ff910a]', 1: '支付成功[green]', 2: '支付失败[red]', 3: '支付中[blue]'}" width="80px"></sa-td>
+					<sa-td name="补扣次数" prop="deductionCount" width="80px">
 						<template slot-scope="s">
-							<el-button class="c-btn" type="success" icon="el-icon-view" @click="get(s.row)">查看</el-button>
-							<!-- <el-button v-if="sa.isAuth('tb-orders-edit')" class="c-btn" type="primary" icon="el-icon-edit" @click="update(s.row)">修改</el-button>
-							<el-button v-if="sa.isAuth('tb-orders-del')" class="c-btn" type="danger" icon="el-icon-delete" @click="del(s.row)">删除</el-button> -->
+							<div v-if="s.row.deductionCount==0">0</div>
+							<div v-else>{{s.row.deductionCount}}</div>
+						</template>
+					</sa-td>
+					<sa-td name="补扣时间" prop="deductionTime" width="140px"></sa-td>
+					<sa-td name="转售时间" prop="createTime" width="140px"></sa-td>
+					<el-table-column label="操作" fixed="right" width="390px">
+						<template slot-scope="s">
+							<el-button class="c-btn" type="success"  @click="get(s.row)">查看</el-button>
+							<el-button class="c-btn" type="primary" icon="el-icon-info" @click="getBank(s.row)">银行回执</el-button>
+							<span>
+								<el-button
+										   class="c-btn" type="warning"  @click="deduction(s.row)">采购补扣款</el-button>
+								<el-button v-else :disabled="true" class="c-btn" type="warning">采购补扣款</el-button>
+							</span>
+							<el-button class="c-btn" type="primary" icon="el-icon-printer" @click="subPrint(s.row)">交易凭证</el-button>
+							<el-button class="c-btn" type="info" icon="el-icon-info" @click="subEmail(s.row)">电子协议</el-button>
 						</template>
 					</el-table-column>
 				</el-table>
@@ -83,6 +114,27 @@
 					get: function(data) {
 						sa.showIframe('数据详情', 'tb-orders-info.html?id=' + data.id, '950px', '60%');
 					},
+					// 查看银行回执
+					getBank: function(data) {
+						sa.showIframe('银行回执', 'tb-orders-bank-list.html?orderNo=' + data.orderNo, '1300px', '90%');
+					},
+					// 交易凭证
+					subPrint: function(data) {
+						sa.showIframe('交易凭证', 'tb-orders-print.html?id=' + data.id, '1200px', '80%');
+					},
+					// 电子协议
+					subEmail: function(data) {
+						sa.showIframe('电子协议', 'tb-orders-email.html?id=' + data.id, '1000px', '90%');
+					},
+					deduction(data) {
+						sa.confirm('是否执行补扣款操作', function() {
+							sa.ajax('/level-two-server/TbOrders/deduction?id=' + data.id, function(res) {
+								sa.ok('操作成功');
+								sa.f5TableHeight();		// 刷新表格高度
+								this.f5();
+							}.bind(this))
+						}.bind(this));
+					},
 					// 修改
 					update: function(data) {
 						sa.showIframe('修改数据', 'tb-orders-add.html?id=' + data.id, '1000px', '90%');
@@ -98,6 +150,7 @@
 								sa.arrayDelete(this.dataList, data);
 								sa.ok('删除成功');
 								sa.f5TableHeight();		// 刷新表格高度
+								this.f5()
 							}.bind(this))
 						}.bind(this));
 					},

+ 190 - 0
sa-view/tb-orders/tb-orders-print.html

@@ -0,0 +1,190 @@
+<!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="https://unpkg.com/element-ui@2.13.0/lib/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>
+		<script src="../../static/kj/upload-util.js"></script>
+		<!-- 引入 html2canvas 和 jsPDF -->
+		<script src="../../static/kj/html2canvas.min.js"></script>
+		<script src="../../static/kj/jspdf.umd.min.js"></script>
+		<style type="text/css">
+			.c-panel .c-label{width: 8em;}
+			table {
+			  font-family: arial, sans-serif;
+			  border-collapse: collapse;
+			  width: 90%;
+			  margin-top: 20px ;
+			  margin-left: auto;
+			  margin-right: auto;
+			}
+			th {
+			  border: 1px solid darkgray;
+			  text-align: left;
+			  height: 24px;
+			  padding: 8px;
+			  background-color: #dddddd;
+			}
+			td {
+			  border: 1px solid darkgray;
+			  text-align: left;
+			  padding: 8px;
+			}
+		</style>
+	</head>
+	<body>
+		<div class="vue-box sbot" style="display: none;" :style="'display: block;'">
+			<!-- ------- 内容部分 ------- -->
+			<div class="s-body">
+				<div class="c-panel" id="content-to-convert" ref="contentToConvert">
+					<el-form v-if="m">
+						<table>
+							<tr>
+								<td colspan='6' style="text-align:center;font-weight: bold;" >{{m.tradeAreaName}}交易凭证</td>
+							</tr>
+							<tr>
+								<td colspan='6'>交易信息</td>
+							</tr>
+							<tr>
+								<th>订单编号</th>
+								<td>{{m.orderNo}}</td>
+								<th>银行流水</th>
+								<td>{{m.result}}</td>
+								<th>交易时间</th>
+								<td>{{m.payTime}}</td>
+							</tr>
+							<tr>
+								<th>卖家</th>
+								<td>{{m.leaderName}}</td>
+								<th>证件号码</th>
+								<td>{{m.idCard}}</td>
+								<th>所属合作社(互助组)</th>
+								<td>{{m.groupName}}</td>
+							</tr>
+							<tr>
+								<th>买家</th>
+								<td>{{m.purchaserName}}</td>
+								<th>支付方式</th>
+								<td></td>
+								<th>交易金额</th>
+								<td>{{m.resalePrice}}</td>
+							</tr>
+							<tr>
+								<th>关区</th>
+								<td>天保海关</td>
+								<th>口岸</th>
+								<td colspan='3'>{{m.tradeAreaName}}</td>
+							</tr>
+							<tr>
+								<td colspan='6'>商品信息</td>
+							</tr>
+							<tr>
+								<th>商品名称</th>
+								<th>单价(元)</th>
+								<th>数量</th>
+								<th>重量</th>
+								<th>单位</th>
+								<th>总价(元)</th>
+							</tr>
+							<tr>
+								<td>{{m.goodsName}}</td>
+								<td>{{m.singlePrice}}</td>
+								<td>{{m.buyQty}}</td>
+								<td>{{m.netWet}}</td>
+								<td>{{m.goodsUnit}}</td>
+								<td>{{m.resalePrice}}</td>
+							</tr>
+						</table>
+					</el-form>
+				</div>
+			</div>
+			<!-- ------- 底部按钮 ------- -->
+			<div class="s-foot">
+				<el-button type="success" icon="el-icon-printer" @click="htmlToPdf()">打印凭证</el-button>
+				<el-button type="primary" icon="el-icon-download" @click="downloadToPdf()">下载凭证</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: {
+					downloadToPdf() {
+						const element = document.getElementById('content-to-convert');
+						html2canvas(element).then(canvas => {
+							// 使用 jsPDF 将 canvas 转换成 PDF
+							const imgData = canvas.toDataURL('image/png');
+							const pdf = new jspdf.jsPDF({
+								orientation: 'pportrait',
+								unit: 'px',
+								format: 'a4'
+							});
+
+							const imgProps = pdf.getImageProperties(imgData);
+							const pdfWidth = pdf.internal.pageSize.getWidth();
+							const pdfHeight = (imgProps.height * pdfWidth) / imgProps.width;
+
+							// 添加图片,适应页面大小
+							pdf.addImage(imgData, 'PNG', 0, 0, pdfWidth, pdfHeight);
+							pdf.save(Date.now()+'.pdf');
+						});
+					},
+					htmlToPdf() {
+						const element = document.getElementById('content-to-convert');
+						html2canvas(element).then(canvas => {
+							// 使用 jsPDF 将 canvas 转换成 PDF
+							const imgData = canvas.toDataURL('image/png');
+							const pdf = new jspdf.jsPDF({
+								orientation: 'portrait',
+								unit: 'px',
+								format: 'a4'
+							});
+
+							const imgProps = pdf.getImageProperties(imgData);
+							const pdfWidth = pdf.internal.pageSize.getWidth();
+							const pdfHeight = (imgProps.height * pdfWidth) / imgProps.width;
+
+							// 添加图片,适应页面大小
+							pdf.addImage(imgData, 'PNG', 0, 0, pdfWidth, pdfHeight);
+
+							// 将 PDF 保存为 Blob 并处理它  这里需要处理跨域问题
+							const pdfBlob = pdf.output('blob');
+							var blobURL = window.URL.createObjectURL(pdfBlob);
+							var newWindow = window.open(blobURL, '_blank');
+							if (newWindow) {
+								newWindow.focus();
+							} else {
+								alert('请允许弹出窗口或在新标签页中手动查看 PDF。');
+							}
+						});
+					},
+				},
+				mounted: function() {
+					sa.ajax('/level-two-server/TbOrders/getSubPrint?id=' + this.id, function(res) {
+						this.m = res.data;
+						if(res.data == null) {
+							sa.alert('未能查找到 id=' + this.id + " 详细数据");
+						}
+					}.bind(this))
+				}
+			})
+
+		</script>
+	</body>
+</html>

+ 10 - 5
sa-view/tb-people/tb-people-bank.html

@@ -33,10 +33,10 @@
 						<el-row>
 							<div class="c-item br">
 								<label class="c-label">银行:</label>
-								<el-select v-model="m.bankName" placeholder="请选择" filterable size="mini">
+								<el-select v-model="m.bankNo" placeholder="请选择" filterable size="mini">
 									<el-option label="请选择" :value="0" disabled></el-option>
-									<el-option v-for="(item,index) in bankList" :key="index" :label="item.bankName"
-										:value="item.bankName"> </el-option>
+									<el-option v-for="(item,index) in bankList" :key="index" :label="item.bankName+'('+item.bankCode+')'"
+										:value="item.bankCode"> </el-option>
 								</el-select>
 							</div>
 							<div class="c-item br">
@@ -64,7 +64,7 @@
 					id: sa.p('id', 0), // 获取超链接中的id参数(0=添加,非0=修改)
 					m: {
 						id: '', // 主键
-						bankName: '', // 银行名称
+						bankNo: '', // 银行名称
 						bankCode: '', // 银行卡号
 					}, // 实体对象
 					bankList: []
@@ -77,8 +77,13 @@
 					},
 					// 提交数据
 					ok: function() {
+						let m=this.m;
+						sa.checkNull(m.bankNo, '请选择[银行]');
+						sa.checkNull(m.bankCode, '请输入 [银行卡号]');
+						let bankNo=m.bankNo;
+						let bankName=this.bankList.filter(bank=>bank.bankCode==bankNo)[0].bankName
 						if (this.id > 0) {
-							sa.ajax('/level-one-server/TbPeople/saveBankInfo', {id:this.id,bankName:this.m.bankName,bankAccount:this.m.bankCode}, function(res) {
+							sa.ajax('/level-one-server/TbPeople/saveBankInfo', {id:this.id,bankNo:this.m.bankNo,bankAccount:this.m.bankCode,bankName:bankName}, function(res) {
 								sa.alert('修改成功', this.clean);
 							}.bind(this));
 						}

+ 19 - 24
sa-view/tb-people/tb-people-list.html

@@ -34,14 +34,7 @@
 				<el-form ref="form" :model='p' @submit.native.prevent>
 					<sa-item type="text" name="姓名" v-model="p.name" :need="false"></sa-item>
 					<sa-item type="num" name="手机号" v-model="p.phone" :need="false"></sa-item>
-					<div class="c-item">
-						<label class="c-label">商铺:</label>
-						<el-select v-model="p.shopId" placeholder="输入关键字搜索" filterable size="mini">
-							<el-option label="请选择" :value="0" disabled></el-option>
-							<el-option v-for="(item,index) in shopList" :key="index"
-								:label="item.shopName+'('+item.shopNo+')'" :value="item.id"> </el-option>
-						</el-select>
-					</div>
+					
 					<!-- <sa-item type="text" name="边民号" v-model="p.code" :need="false"></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>
@@ -57,26 +50,20 @@
 					<sa-td name="性别" prop="sex" type="enum" :jv="{'1': '男', '2': '女'}"></sa-td>
 					<sa-td name="手机号码" prop="phone" type="phone"></sa-td>
 					<sa-td name="身份证" prop="idCard" type="idCard"></sa-td>
-					<sa-td name="互助组名称" prop="groupName"></sa-td>
-					<sa-td name="互市区" prop="tradeAreaName"></sa-td>
-					<sa-td name="场所编码" prop="fieldCode"></sa-td>
-					<!--<sa-td name="所属商铺" prop="shopName" width="200">
-						<template slot-scope="s">
-							<div>{{s.row.shopName}}
-								<el-link v-if="sa.isAuth('tb-people-bind-shop')&&s.row.shopName" type="primary"
-									@click="removeBind(s.row)" style="font-size: 12px;">(解绑)</el-link>
-							</div>
-							<el-link v-if="sa.isAuth('tb-people-bind-shop')&&!s.row.shopName" type="primary"
-								@click="selectShop(s.row)">选择</el-link>
-						</template>
-					</sa-td>-->
+					<sa-td name="互助组" prop="groupName"></sa-td>
+					<sa-td name="银行" prop="bankName" width="160"></sa-td>
+					<sa-td name="银行卡" prop="bankCode" width="200"></sa-td>
 					<sa-td name="创建时间" prop="createTime"></sa-td>
-					<el-table-column label="操作" width="240px" fixed="right">
+					<el-table-column label="操作" width="280px" fixed="right">
 						<template slot-scope="s">
 							<el-button class="c-btn" type="success" icon="el-icon-view"
 								@click="get(s.row)">查看</el-button>
-							<el-button class="c-btn" type="primary" icon="el-icon-edit"
-								@click="updateBankInfo(s.row.id)">银行卡修改</el-button>
+								<el-button v-if="sa.isAuth('tb-people-edit')" class="c-btn" type="primary" icon="el-icon-edit"
+									@click="editFn(s.row)">手机号</el-button>
+							<el-button v-if="sa.isAuth('tb-people-edit')" class="c-btn" type="primary" icon="el-icon-edit"
+								@click="updateBankInfo(s.row.id)">银行卡</el-button>
+								<el-button v-if="sa.isAuth('tb-people-edit')" class="c-btn" type="warning" icon="el-icon-delete"
+									@click="cleanFace(s.row)">人脸</el-button>
 						</template>
 					</el-table-column>
 				</el-table>
@@ -167,6 +154,14 @@
 					dataList: [], // 数据集合
 				},
 				methods: {
+					cleanFace(data){
+						sa.confirm('是否清除该边民人脸?', function() {
+							sa.ajax('/sp-admin/AppUser/cleanFace?id=' + data.id, function(res) {
+								sa.ok('清除成功,需退出APP重新登录');
+								sa.f5TableHeight(); // 刷新表格高度
+							}.bind(this))
+						}.bind(this));
+					},
 					editFn(data) {
 						this.phone = {
 							title: '修改【' + data.name + '】手机号',

+ 1 - 1
sa-view/tb-port-news/tb-port-news-add.html

@@ -101,7 +101,7 @@
     						// 开始增加或修改
     						this.m.createTime = undefined;		// 不提交属性:创建时间
     						this.m.updateTime = undefined;		// 不提交属性:更新时间
-							console.log("m",m)
+							this.m.status=1;
     						if(this.id <= 0) {	// 添加
     							sa.ajax('/level-one-server/TbPortNews/add', m, function(res){
     								sa.alert('增加成功', this.clean);

+ 3 - 3
sa-view/tb-purchaser-personal/tb-purchaser-personal-list.html

@@ -32,8 +32,8 @@
 					<sa-td name="姓名" prop="name" ></sa-td>
 					<sa-td name="联系电话" prop="contact" type="phone"></sa-td>
 					<sa-td name="身份证号" prop="idCard" type="idCard"></sa-td>
-					<sa-td name="邮箱" prop="email" ></sa-td>
-					<sa-td name="地址" prop="address" ></sa-td>
+					<sa-td name="银行" prop="bankName" width="240"></sa-td>
+					<sa-td name="银行账号" prop="bankAccount" ></sa-td>
 					<sa-td name="审核状态" prop="judgeStatus">
 						<template slot-scope="scope">
 							<el-tag type="danger" v-if="scope.row.judgeStatus==0">未审核</el-tag>
@@ -44,7 +44,7 @@
 					<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>
-							<el-button v-if="sa.isAuth('tb-purchaser-edit') && s.row.judgeStatus!=1" class="c-btn" type="primary" icon="el-icon-edit" @click="update(s.row)">修改</el-button>
+							<el-button v-if="sa.isAuth('tb-purchaser-edit')" class="c-btn" type="primary" icon="el-icon-edit" @click="update(s.row)">修改</el-button>
 							<el-button v-if="sa.isAuth('tb-purchaser-del')" class="c-btn" type="danger" icon="el-icon-delete" @click="del(s.row)">删除</el-button>
 						</template>
 					</el-table-column>

+ 28 - 28
sa-view/tb-purchaser/tb-purchaser-add.html

@@ -71,7 +71,8 @@
 							<tr>
 								<th>统一社会信用代码</th>
 								<td>
-									<el-input type="text" v-model="m.dutyParagraph" placeholder="请输入统一社会信用代码"></el-input>
+									<el-input type="text" v-model="m.dutyParagraph"
+										placeholder="请输入统一社会信用代码"></el-input>
 								</td>
 								<th>营业执照</th>
 								<td>
@@ -83,27 +84,31 @@
 								<td>
 									<el-input type="text" v-model="m.name" placeholder="请输入联系人"></el-input>
 								</td>
-								<th>邮箱</th>
-								<td>
-									<el-input type="text" v-model="m.email" placeholder="请输入邮箱"></el-input>
-								</td>
-							</tr>
-							<tr>
 								<th>联系电话</th>
 								<td>
 									<el-input type="text" v-model="m.contact" placeholder="请输入联系电话"></el-input>
 								</td>
+
+							</tr>
+							<tr>
 								<th>身份证号</th>
 								<td>
 									<el-input type="text" v-model="m.idCard" placeholder="请输入身份证号"></el-input>
 								</td>
+								<th>邮箱</th>
+								<td>
+									<el-input type="text" v-model="m.email" placeholder="请输入邮箱"></el-input>
+								</td>
 							</tr>
+
 							<tr>
 								<th>银行名称</th>
 								<td>
 									<el-select v-model="m.bankNo" placeholder="请选择" filterable size="mini">
 										<el-option label="请选择" :value="0" disabled></el-option>
-										<el-option v-for="(item,index) in bankList" :key="index" :label="item.bankName" :value="item.bankCode"></el-option>
+										<el-option v-for="(item,index) in bankList" :key="index"
+											:label="item.bankName+'('+item.bankCode+')'"
+											:value="item.bankCode"></el-option>
 									</el-select>
 								</td>
 								<th>银行账号</th>
@@ -114,7 +119,8 @@
 							<tr>
 								<th>企业地址</th>
 								<td colspan="3">
-									<el-input type="text" v-model="m.address"  placeholder="请输入企业地址" style="width: 90%"></el-input>
+									<el-input type="text" v-model="m.address" placeholder="请输入企业地址"
+										style="width: 90%"></el-input>
 								</td>
 							</tr>
 						</table>
@@ -150,23 +156,18 @@
 					// 创建一个 默认Model
 					createModel: function() {
 						return {
-							businessName: '',		// 企业名称
-							legalPerson: '', 		// 企业法人
-							dutyParagraph: '', 		// 统一社会信用代码
-							businessLicense: '', 	// 营业执照
-							name: '', 				// 联系人
-							email: '', 				// 邮箱
-							contact: '', 			// 手机号码
-							idCard: '', 			// 身份证号
-							bankNo: '', 			// 银行编号
-							bankName: '', 			// 银行名称
-							bankAccount: '', 		// 银行账号
-							address: '', 			// 企业地址
-							// judgeStatus: '',		// 审核状态(0=未通过,1=已通过)
-							// judgeContent: '',	// 审核意见
-							// judgeTime: '',		// 上次审核时间
-							// personId: '', 		// 人脸编号
-							// deleteStatus: '',	// 删除状态(0=禁用,1=启用)
+							businessName: '', // 企业名称
+							legalPerson: '', // 企业法人
+							dutyParagraph: '', // 统一社会信用代码
+							businessLicense: '', // 营业执照
+							name: '', // 联系人
+							email: '', // 邮箱
+							contact: '', // 手机号码
+							idCard: '', // 身份证号
+							bankNo: '', // 银行编号
+							bankName: '', // 银行名称
+							bankAccount: '', // 银行账号
+							address: '', // 企业地址
 						}
 					},
 					// 提交数据
@@ -176,9 +177,8 @@
 						sa.checkNull(m.businessName, '请输入 [企业名称]');
 						sa.checkNull(m.legalPerson, '请输入 [企业法人]');
 						sa.checkNull(m.dutyParagraph, '请输入 [统一社会信用代码]');
-						sa.checkNull(m.businessLicense, '请上传 [营业执照]');
 						sa.checkNull(m.name, '请输入 [联系人]');
-						sa.checkNull(m.idCard, '请输入 [身份证号]');
+						// sa.checkNull(m.idCard, '请输入 [身份证号]');
 						let contact = m.contact;
 						if (!sa.isPhone(contact)) {
 							sa.error('手机号不正确');

+ 142 - 0
sa-view/tb-purchaser/tb-purchaser-bank.html

@@ -0,0 +1,142 @@
+<!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="https://unpkg.com/element-ui@2.13.0/lib/theme-chalk/index.css">
+		<link rel="stylesheet" href="../../static/sa.css">
+		<script src="https://unpkg.com/vue@2.6.10/dist/vue.min.js"></script>
+		<script src="https://unpkg.com/element-ui@2.13.0/lib/index.js"></script>
+		<script src="https://unpkg.com/jquery@3.4.1/dist/jquery.js"></script>
+		<script src="../../static/kj/layer/layer.js"></script>
+		<script src="../../static/sa.js"></script>
+		<script src="../../static/kj/upload-util.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: 350px;
+			}
+		</style>
+	</head>
+	<body>
+		<div class="vue-box" :class="{sbot: id}" style="display: none;" :style="'display: block;'">
+			<!-- ------- 内容部分 ------- -->
+			<div class="s-body">
+				<div class="c-panel">
+					<el-form size="mini" v-if="m">
+						<el-row>
+							<div class="c-item br">
+								<label class="c-label">银行:</label>
+								<el-select v-model="m.bank" placeholder="请选择" filterable size="mini">
+									<el-option label="请选择" :value="0" disabled></el-option>
+									<el-option v-for="(item,index) in bankList" :key="index"
+										:label="item.bankName+'('+item.bankCode+')'" :value="item.bankCode">
+									</el-option>
+								</el-select>
+							</div>
+							<div class="c-item br">
+								<label class="c-label">银行卡号:</label>
+								<el-input size="mini" v-model="m.bankAccount"></el-input>
+							</div>
+							<div class="c-item br">
+								<label class="c-label">证件类型:</label>
+								<el-select v-model="m.ownerIdtype" placeholder="请选择" filterable size="mini">
+									<el-option label="请选择" :value="0" disabled></el-option>
+									<el-option label="身份证(0001)" value="0001" ></el-option>
+									<el-option label="护照(0002)" value="0002" ></el-option>
+									<el-option label="军官证(0003)" value="0003" ></el-option>
+									<el-option label="港澳通行证(0004)" value="0004" ></el-option>
+									<el-option label="马帮丁(0005)" value="0005" ></el-option>
+									<el-option label="营业执照(0006)" value="0006" ></el-option>
+									<el-option label="社会统一信用代码(0008)" value="0008" ></el-option>
+									<el-option label="其他(0007)" value="0007" ></el-option>
+								</el-select>
+							</div>
+							<div class="c-item br">
+								<label class="c-label">国籍:</label>
+								<el-select v-model="m.nationality" placeholder="请选择" filterable size="mini">
+									<el-option label="请选择" :value="0" disabled></el-option>
+									<el-option label="柬埔寨(0006)" value="0006" ></el-option>
+									<el-option label="俄罗斯(0007)" value="0007" ></el-option>
+									<el-option label="老挝(0004)" value="0004" ></el-option>
+									<el-option label="中国(0001)" value="0001"></el-option>
+									<el-option label="越南(0002)" value="0002"></el-option>
+									<el-option label="缅甸(0003)" value="0003"></el-option>
+									<el-option label="蒙古(0005)" value="0005"></el-option>
+								</el-select>
+							</div>
+						</el-row>
+						<div class="c-item br s-ok">
+							<label class="c-label"></label>
+							<el-button size="mini" type="primary" icon="el-icon-plus" @click="ok()">保存</el-button>
+						</div>
+					</el-form>
+				</div>
+			</div>
+			<!-- ------- 底部按钮 ------- -->
+			<div class="s-foot">
+				<el-button size="mini" type="primary" @click="ok()">确定</el-button>
+				<el-button size="mini" @click="sa.closeCurrIframe()">取消</el-button>
+			</div>
+		</div>
+		<script>
+			var app = new Vue({
+				el: '.vue-box',
+				data: {
+					id: sa.p('id', 0), // 获取超链接中的id参数(0=添加,非0=修改)
+					m: {
+						id: '', // 主键
+						bankName: '', // 银行名称
+						bankCode: '', // 银行卡号
+					}, // 实体对象
+					bankList: []
+				},
+				methods: {
+					getBankList() {
+						sa.ajax('/sp-admin/TbBank/getAll', function(resp) {
+							this.bankList = resp.data;
+						}.bind(this));
+					},
+					// 提交数据
+					ok: function() {
+						let m=this.m;
+						sa.checkNull(m.bank, '请选择[银行]');
+						sa.checkNull(m.bankAccount, '请输入 [银行卡号]');
+						sa.checkNull(m.ownerIdtype, '请选择 [证件类型]');
+						sa.checkNull(m.nationality, '请选择 [国籍]');
+						sa.ajax('/level-one-server/TbShop/update', sa.removeNull(m), function(res) {
+							sa.alert('修改成功', this.clean);
+						}.bind(this));
+					},
+					// 添加/修改 完成后的动作
+					clean: function() {
+						parent.app.f5(); // 刷新父页面列表
+						sa.closeCurrIframe(); // 关闭本页
+					},
+					initFn() {
+						// 初始化数据
+						if (this.id > 0) {
+							sa.ajax('/level-one-server/TbShop/getById?id=' + this.id, function(res) {
+								this.m = res.data;
+								if (res.data == null) {
+									sa.alert('未能查找到 id=' + this.id + " 详细数据");
+								}
+							}.bind(this))
+						};
+					}
+				},
+				mounted: function() {
+					this.initFn()
+					this.getBankList()
+				}
+			})
+		</script>
+	</body>
+</html>

+ 9 - 5
sa-view/tb-purchaser/tb-purchaser-list.html

@@ -31,12 +31,15 @@
 				<!-- ------------- 数据列表 ------------- -->
 				<el-table class="data-table" ref="data-table" :data="dataList" >
 					<sa-td type="selection"></sa-td>
-					<sa-td name="企业名称" prop="businessName" ></sa-td>
+					<sa-td name="企业名称" prop="businessName" width="250"></sa-td>
 					<sa-td name="企业法人" prop="legalPerson" ></sa-td>
-					<sa-td name="统一社会信用代码" prop="dutyParagraph" ></sa-td>
-					<sa-td name="营业执照" prop="businessLicense" type="img-list"></sa-td>
+					<sa-td name="统一社会信用代码" prop="dutyParagraph" width="200"></sa-td>
+					<!-- <sa-td name="营业执照" prop="businessLicense" type="img-list"></sa-td> -->
+					<sa-td name="开户行" prop="bankName" width="230"></sa-td>
+					<sa-td name="开户账号" prop="bankAccount" width="200"></sa-td>
 					<sa-td name="联系人" prop="name" ></sa-td>
-					<sa-td name="邮箱" prop="email" ></sa-td>
+					<sa-td name="联系号码" prop="contact" width="160"></sa-td>
+					<!-- <sa-td name="邮箱" prop="email" ></sa-td> -->
 					<sa-td name="审核状态" prop="judgeStatus">
 						<template slot-scope="scope">
 							<el-tag type="danger" v-if="scope.row.judgeStatus==0">未审核</el-tag>
@@ -44,10 +47,11 @@
 							<el-tag type="danger" v-if="scope.row.judgeStatus==2">审核驳回</el-tag>
 						</template>
 					</sa-td>
+					<sa-td name="创建时间" prop="createTime" width="160"></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>
-							<el-button v-if="sa.isAuth('tb-purchaser-edit') && s.row.judgeStatus!=1" class="c-btn" type="primary" icon="el-icon-edit" @click="update(s.row)">修改</el-button>
+							<el-button v-if="sa.isAuth('tb-purchaser-edit')"  class="c-btn" type="primary" icon="el-icon-edit" @click="update(s.row)">修改</el-button>
 							<el-button v-if="sa.isAuth('tb-purchaser-del')" class="c-btn" type="danger" icon="el-icon-delete" @click="del(s.row)">删除</el-button>
 						</template>
 					</el-table-column>

+ 142 - 0
sa-view/tb-shop/tb-shop-bank.html

@@ -0,0 +1,142 @@
+<!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="https://unpkg.com/element-ui@2.13.0/lib/theme-chalk/index.css">
+		<link rel="stylesheet" href="../../static/sa.css">
+		<script src="https://unpkg.com/vue@2.6.10/dist/vue.min.js"></script>
+		<script src="https://unpkg.com/element-ui@2.13.0/lib/index.js"></script>
+		<script src="https://unpkg.com/jquery@3.4.1/dist/jquery.js"></script>
+		<script src="../../static/kj/layer/layer.js"></script>
+		<script src="../../static/sa.js"></script>
+		<script src="../../static/kj/upload-util.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: 350px;
+			}
+		</style>
+	</head>
+	<body>
+		<div class="vue-box" :class="{sbot: id}" style="display: none;" :style="'display: block;'">
+			<!-- ------- 内容部分 ------- -->
+			<div class="s-body">
+				<div class="c-panel">
+					<el-form size="mini" v-if="m">
+						<el-row>
+							<div class="c-item br">
+								<label class="c-label">银行:</label>
+								<el-select v-model="m.bank" placeholder="请选择" filterable size="mini">
+									<el-option label="请选择" :value="0" disabled></el-option>
+									<el-option v-for="(item,index) in bankList" :key="index"
+										:label="item.bankName+'('+item.bankCode+')'" :value="item.bankCode">
+									</el-option>
+								</el-select>
+							</div>
+							<div class="c-item br">
+								<label class="c-label">银行卡号:</label>
+								<el-input size="mini" v-model="m.bankAccount"></el-input>
+							</div>
+							<div class="c-item br">
+								<label class="c-label">证件类型:</label>
+								<el-select v-model="m.ownerIdtype" placeholder="请选择" filterable size="mini">
+									<el-option label="请选择" :value="0" disabled></el-option>
+									<el-option label="身份证(0001)" value="0001" ></el-option>
+									<el-option label="护照(0002)" value="0002" ></el-option>
+									<el-option label="军官证(0003)" value="0003" ></el-option>
+									<el-option label="港澳通行证(0004)" value="0004" ></el-option>
+									<el-option label="马帮丁(0005)" value="0005" ></el-option>
+									<el-option label="营业执照(0006)" value="0006" ></el-option>
+									<el-option label="社会统一信用代码(0008)" value="0008" ></el-option>
+									<el-option label="其他(0007)" value="0007" ></el-option>
+								</el-select>
+							</div>
+							<div class="c-item br">
+								<label class="c-label">国籍:</label>
+								<el-select v-model="m.nationality" placeholder="请选择" filterable size="mini">
+									<el-option label="请选择" :value="0" disabled></el-option>
+									<el-option label="柬埔寨(0006)" value="0006" ></el-option>
+									<el-option label="俄罗斯(0007)" value="0007" ></el-option>
+									<el-option label="老挝(0004)" value="0004" ></el-option>
+									<el-option label="中国(0001)" value="0001"></el-option>
+									<el-option label="越南(0002)" value="0002"></el-option>
+									<el-option label="缅甸(0003)" value="0003"></el-option>
+									<el-option label="蒙古(0005)" value="0005"></el-option>
+								</el-select>
+							</div>
+						</el-row>
+						<div class="c-item br s-ok">
+							<label class="c-label"></label>
+							<el-button size="mini" type="primary" icon="el-icon-plus" @click="ok()">保存</el-button>
+						</div>
+					</el-form>
+				</div>
+			</div>
+			<!-- ------- 底部按钮 ------- -->
+			<div class="s-foot">
+				<el-button size="mini" type="primary" @click="ok()">确定</el-button>
+				<el-button size="mini" @click="sa.closeCurrIframe()">取消</el-button>
+			</div>
+		</div>
+		<script>
+			var app = new Vue({
+				el: '.vue-box',
+				data: {
+					id: sa.p('id', 0), // 获取超链接中的id参数(0=添加,非0=修改)
+					m: {
+						id: '', // 主键
+						bankName: '', // 银行名称
+						bankCode: '', // 银行卡号
+					}, // 实体对象
+					bankList: []
+				},
+				methods: {
+					getBankList() {
+						sa.ajax('/sp-admin/TbBank/getAll', function(resp) {
+							this.bankList = resp.data;
+						}.bind(this));
+					},
+					// 提交数据
+					ok: function() {
+						let m=this.m;
+						sa.checkNull(m.bank, '请选择[银行]');
+						sa.checkNull(m.bankAccount, '请输入 [银行卡号]');
+						sa.checkNull(m.ownerIdtype, '请选择 [证件类型]');
+						sa.checkNull(m.nationality, '请选择 [国籍]');
+						sa.ajax('/level-one-server/TbShop/update', sa.removeNull(m), function(res) {
+							sa.alert('修改成功', this.clean);
+						}.bind(this));
+					},
+					// 添加/修改 完成后的动作
+					clean: function() {
+						parent.app.f5(); // 刷新父页面列表
+						sa.closeCurrIframe(); // 关闭本页
+					},
+					initFn() {
+						// 初始化数据
+						if (this.id > 0) {
+							sa.ajax('/level-one-server/TbShop/getById?id=' + this.id, function(res) {
+								this.m = res.data;
+								if (res.data == null) {
+									sa.alert('未能查找到 id=' + this.id + " 详细数据");
+								}
+							}.bind(this))
+						};
+					}
+				},
+				mounted: function() {
+					this.initFn()
+					this.getBankList()
+				}
+			})
+		</script>
+	</body>
+</html>

+ 35 - 21
sa-view/tb-shop/tb-shop-list.html

@@ -21,17 +21,21 @@
 				<!-- ------------- 检索参数 ------------- -->
 				<div class="c-title">检索参数</div>
 				<el-form ref="form" :model='p' @submit.native.prevent>
-					<div class="c-item">
+				<!-- 	<div class="c-item">
 						<label class="c-label">互市区:</label>
 						<el-select v-model="p.tradeAreaId" placeholder="请选择" filterable size="mini">
 							<el-option label="请选择" :value="0" disabled></el-option>
 							<el-option v-for="(item,index) in tradeAreaList" :key="index" :label="item.name" :value="item.id"> </el-option>
 						</el-select>
-					</div>
+					</div> -->
 					<div class="c-item">
 						<label class="c-label">商铺名称:</label>
 						<el-input size="mini" v-model="p.shopName"></el-input>
 					</div>
+					<div class="c-item">
+						<label class="c-label">铺主:</label>
+						<el-input size="mini" v-model="p.ownerName"></el-input>
+					</div>
 					<div class="c-item" style="min-width: 0px;">
 						<el-button size="mini" type="primary" icon="el-icon-search" @click="p.pageNo = 1; f5()">查询</el-button>
 						<el-button size="mini" type="info" icon="el-icon-refresh" @click="sa.f5()">重置</el-button>
@@ -40,39 +44,46 @@
 				</el-form>
 				<!-- ------------- 数据列表 ------------- -->
 				<el-table class="data-table" ref="data-table" :data="dataList" size="small">
-					<el-table-column align="center" label="" type="index" width="35px"></el-table-column>
+					<el-table-column align="center" label="序号" type="index" width="80px"></el-table-column>
 					<el-table-column align="center" label="商铺名称" prop="shopName"></el-table-column>
-					<el-table-column align="center" label="商铺编码" prop="shopNo"></el-table-column>
-					<el-table-column align="center" label="商铺类型" prop="shopType">
+					<el-table-column align="center" label="铺主姓名" prop="ownerName" width="340px"></el-table-column>
+					<el-table-column align="center" label="国别" prop="shopType">
 						<template slot-scope="s">
-							<span v-if="s.row.shopType == 1">中方商铺</span>
-							<span v-else-if="s.row.shopType == 2">外国商铺</span>
-							<span v-else>-</span>
+							<span v-if="s.row.nationality == 0006">柬埔寨</span>
+							<span v-if="s.row.nationality == 0007">俄罗斯</span>
+							<span v-if="s.row.nationality == 0004">老挝</span>
+							<span v-if="s.row.nationality == 0001">中国</span>
+							<span v-if="s.row.nationality == 0002">越南</span>
+							<span v-if="s.row.nationality == 0003">缅甸</span>
+							<span v-if="s.row.nationality == 0005">蒙古</span>
 						</template>
 					</el-table-column>
-					<el-table-column align="center" label="铺主姓名" prop="ownerName" width="340px"></el-table-column>
-					<el-table-column align="center" label="铺主电话" prop="ownerTel">
+					<el-table-column align="center" label="证件类型" prop="ownerName" width="180px">
 						<template slot-scope="s">
-							<span v-if="s.row.ownerTel">{{maskPhone(s.row.ownerTel)}}</span>
-							<span v-else>-</span>
+							<span v-if="s.row.ownerIdtype == 0001">身份证(0001)</span>
+							<span v-if="s.row.ownerIdtype == 0002">护照(0002)</span>
+							<span v-if="s.row.ownerIdtype == 0003">军官证(0003)</span>
+							<span v-if="s.row.ownerIdtype == 0004">港澳通行证(0004)</span>
+							<span v-if="s.row.ownerIdtype == 0005">马帮丁(0005)</span>
+							<span v-if="s.row.ownerIdtype == 0006">营业执照(0006)</span>
+							<span v-if="s.row.ownerIdtype == 0008">社会统一信用代码(0008)</span>
+							<span v-if="s.row.ownerIdtype == 0007">其他(0007)</span>
 						</template>
 					</el-table-column>
-					<el-table-column align="center" label="状态" prop="edstatus">
+					<el-table-column align="center" label="银行" prop="bank" width="140px"></el-table-column>
+					<el-table-column align="center" label="卡号" prop="bankAccount" width="140px"></el-table-column>
+					<el-table-column align="center" label="铺主电话" prop="ownerTel" width="120px">
 						<template slot-scope="s">
-							<span v-if="s.row.edstatus == 1">启用</span>
-							<span v-else-if="s.row.edstatus == 2">停用</span>
-							<span v-else-if="s.row.edstatus == 3">注销</span>
+							<span v-if="s.row.ownerTel">{{maskPhone(s.row.ownerTel)}}</span>
 							<span v-else>-</span>
 						</template>
 					</el-table-column>
-					<el-table-column align="center" label="互市区" prop="fieldName"></el-table-column>
-					<el-table-column align="center" label="经营范围" prop="bnsScope"></el-table-column>
-					<el-table-column align="center" label="操作" fixed="right" width="160px">
+					<el-table-column align="center" label="操作" fixed="right" width="200px">
 						<template slot-scope="s">
-							<el-button class="c-btn" type="primary" icon="el-icon-s-custom" @click="peopleFn(s.row)">边民
-							</el-button>
 							<el-button class="c-btn" type="success" icon="el-icon-view" @click="get(s.row)">查看
 							</el-button>
+							<el-button class="c-btn" type="primary" icon="el-icon-edit" @click="bankInfo(s.row)">银行卡
+							</el-button>
 						</template>
 					</el-table-column>
 				</el-table>
@@ -127,6 +138,9 @@
 					get: function(data) {
 						sa.showIframe('数据详情', 'tb-shop-info.html?id=' + data.id, '1150px', '95%');
 					},
+					bankInfo: function(data) {
+						sa.showIframe('银行信息', 'tb-shop-bank.html?id=' + data.id, '700px', '75%');
+					},
 					// 查看 - 根据选中的
 					getBySelect: function(data) {
 						var selection = this.$refs['data-table'].selection;

Fichier diff supprimé car celui-ci est trop grand
+ 19 - 0
static/kj/html2canvas.min.js


Fichier diff supprimé car celui-ci est trop grand
+ 50 - 0
static/kj/jspdf.umd.min.js


+ 5 - 2
static/sa.js

@@ -7,9 +7,11 @@ var sa = {
 
 // ===========================  当前环境配置  =======================================
 (function() {
+	let host=window.location.host;
+	let app_url= host.indexOf('40')!==-1?'http://172.17.11.40:8018':'http://hs-server.tbgjhc.top:8018';
 	// 公司开发环境
 	var cfg_dev = {
-		 api_url: 'http://192.168.3.15:8080', // 所有ajax请求接口父地址
+		api_url: 'http://127.0.0.1:8080', // 所有ajax请求接口父地址
 		web_url: 'http://www.baidu.com' // 此项目前台地址 (此配置项非必须)
 	}
 	// 服务器测试环境
@@ -17,9 +19,10 @@ var sa = {
 		api_url: 'http://hs-server.aseanbusiness.cn',
 		web_url: 'http://www.baidu.com'
 	}
+	
 	// 正式生产环境
 	var cfg_prod = {
-		api_url: 'http://hs-server.tbgjhc.top:8018',
+		api_url:app_url,
 		web_url: 'http://www.baidu.com'
 	}
 	sa.cfg = cfg_dev; // 最终环境 , 上线前请选择正确的环境

Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff