Kaynağa Gözat

二道惠军通小程序代码上传

wang_xy 2 yıl önce
işleme
c9442a5cb4
100 değiştirilmiş dosya ile 11685 ekleme ve 0 silme
  1. 6 0
      .idea/misc.xml
  2. 8 0
      .idea/modules.xml
  3. 6 0
      .idea/vcs.xml
  4. 41 0
      App.vue
  5. 190 0
      api/common.js
  6. 9 0
      api/index.js
  7. 10 0
      api/login.js
  8. 80 0
      assets/css/style.less
  9. 6 0
      common/http.js
  10. 137 0
      common/lodash.min.js
  11. 149 0
      common/request.js
  12. 290 0
      common/utils.js
  13. 102 0
      components/examine/examined.vue
  14. 101 0
      components/examine/noadopt.vue
  15. 175 0
      components/examine/noexamine.vue
  16. 307 0
      components/king-scan/king-scan.vue
  17. 179 0
      components/ming-pop/ming-pop.vue
  18. 136 0
      components/pop/count.vue
  19. 81 0
      components/pop/money.vue
  20. 88 0
      components/pop/pop.vue
  21. 148 0
      components/pop/zhe.vue
  22. 9 0
      hjt_erdao_WeChatApplet.iml
  23. 9 0
      hjt_erdao_applet.iml
  24. BIN
      lib/__MACOSX/._amap-wx.130.js
  25. 31 0
      lib/amap-wx.130.js
  26. 22 0
      main.js
  27. 94 0
      manifest.json
  28. 336 0
      pages.json
  29. 95 0
      pages/index/index.vue
  30. 378 0
      pages/login/index.vue
  31. 299 0
      pages/manage/account/accountExamine.vue
  32. 69 0
      pages/manage/account/adminData.vue
  33. 196 0
      pages/manage/account/map.vue
  34. 199 0
      pages/manage/account/retrieval.vue
  35. 123 0
      pages/manage/goods/index.vue
  36. 102 0
      pages/manage/merchant/Pass.vue
  37. 133 0
      pages/manage/merchant/merchantExamine.vue
  38. 101 0
      pages/manage/merchant/noPass.vue
  39. 179 0
      pages/manage/merchant/notApproved.vue
  40. 215 0
      pages/manage/modifyInfo/addToOrder.vue
  41. 214 0
      pages/manage/modifyInfo/modifyInfo.vue
  42. 70 0
      pages/menu/index.vue
  43. 98 0
      pages/merchant/examine/goods/Pass.vue
  44. 123 0
      pages/merchant/examine/goods/index.vue
  45. 94 0
      pages/merchant/examine/goods/noPass.vue
  46. 90 0
      pages/merchant/examine/goods/notApproved.vue
  47. 99 0
      pages/merchant/examine/shops/examined.vue
  48. 119 0
      pages/merchant/examine/shops/merchantExamine.vue
  49. 104 0
      pages/merchant/examine/shops/noadopt.vue
  50. 90 0
      pages/merchant/examine/shops/noexamine.vue
  51. 279 0
      pages/merchant/goods/add.vue
  52. 137 0
      pages/merchant/goods/goods.vue
  53. 213 0
      pages/merchant/home/account.vue
  54. 137 0
      pages/merchant/home/code.vue
  55. 118 0
      pages/merchant/home/data.vue
  56. 236 0
      pages/merchant/home/index.vue
  57. 381 0
      pages/merchant/home/modify.vue
  58. 186 0
      pages/merchant/home/record.vue
  59. 554 0
      pages/merchant/home/shop.vue
  60. 95 0
      pages/soldier/home/detail.vue
  61. 135 0
      pages/soldier/home/folder1/index.vue
  62. 150 0
      pages/soldier/home/folder1/serviceStation.vue
  63. 150 0
      pages/soldier/home/folder2/index.vue
  64. 149 0
      pages/soldier/home/folder3/index.vue
  65. 149 0
      pages/soldier/home/folder4/index.vue
  66. 136 0
      pages/soldier/home/folder5/index.vue
  67. 82 0
      pages/soldier/home/folder6/index.vue
  68. 26 0
      pages/soldier/home/folder7/index.vue
  69. 68 0
      pages/soldier/home/goods.vue
  70. 401 0
      pages/soldier/home/identity.vue
  71. 254 0
      pages/soldier/home/index.vue
  72. 158 0
      pages/soldier/home/map.vue
  73. 149 0
      pages/soldier/home/policy.vue
  74. 155 0
      pages/soldier/home/shop.vue
  75. 219 0
      pages/soldier/home/union.vue
  76. 129 0
      pages/soldier/home/yxDetails.vue
  77. 107 0
      pages/soldier/news/index.vue
  78. 318 0
      pages/soldier/user/add.vue
  79. 94 0
      pages/soldier/user/erweima.vue
  80. 343 0
      pages/soldier/user/index.vue
  81. 37 0
      pages/soldier/user/scanning.vue
  82. BIN
      static/1.png
  83. BIN
      static/11.png
  84. BIN
      static/12.png
  85. BIN
      static/2.png
  86. BIN
      static/21.png
  87. BIN
      static/22.png
  88. BIN
      static/23.png
  89. BIN
      static/24.png
  90. BIN
      static/3.png
  91. BIN
      static/31.png
  92. BIN
      static/32.png
  93. BIN
      static/33.png
  94. BIN
      static/34.png
  95. BIN
      static/4.png
  96. BIN
      static/41.png
  97. BIN
      static/42.png
  98. BIN
      static/43.png
  99. BIN
      static/44.png
  100. 0 0
      static/51.png

+ 6 - 0
.idea/misc.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectRootManager">
+    <output url="file://$PROJECT_DIR$/out" />
+  </component>
+</project>

+ 8 - 0
.idea/modules.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/hjt_erdao_WeChatApplet.iml" filepath="$PROJECT_DIR$/hjt_erdao_WeChatApplet.iml" />
+    </modules>
+  </component>
+</project>

+ 6 - 0
.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="" vcs="Git" />
+  </component>
+</project>

+ 41 - 0
App.vue

@@ -0,0 +1,41 @@
+<script>
+	import {
+		mapState,
+		mapMutations
+	} from 'vuex';
+	export default {
+		onLaunch: function() {
+			console.log('App Launch')
+			let role = uni.getStorageSync('role');
+			this.setRole(role);
+			console.log("app" , role);
+			// if (role) {
+				// uni.showLoading({
+				// 	title:"自动登录中",
+				// })
+				// setTimeout(()=>{
+				// 	uni.hideLoading();
+					// uni.switchTab({
+					// 	url:"/pages/index/index"
+					// })
+				// },2000)
+			// }
+		},
+		onShow: function() {
+			console.log('App Show')
+		},
+		onHide: function() {
+			console.log('App Hide')
+		},
+		methods: {
+			...mapMutations(['setRole'])
+		}
+	}
+</script>
+
+<style lang="scss">
+	/*每个页面公共css */
+	@import "uview-ui/index.scss";
+	@import './assets/css/style.less';
+	@import url("./static/colorui/animation.css");
+</style>

+ 190 - 0
api/common.js

@@ -0,0 +1,190 @@
+import utils from '../common/request.js'
+export default {
+	//政策公告
+	getInfo(data){
+	    return utils.requestEn(`/wx/api/veterans/getNoticeServiceList`, data, 'POST')
+	},
+	
+	//政策公告  新闻详情
+	getNewsInfo(data){
+	    return utils.requestEn(`/wx/api/veterans/getNoticeInfo/${data}`)
+	},
+	
+	//热线电话
+	getTelInfo(data){
+	    return utils.requestEn(`/wx/api/veterans/getTelInfo`, data)
+	},
+	
+	//拥军联盟企业
+	getYongJun(data){
+	    return utils.requestEn(`/wx/api/shops/getList`, data, 'POST')
+	},
+	
+	//拥军联盟企业 店铺详情
+	getYongJunDetails(data){
+	    return utils.requestEn(`/wx/api/shops/getInfo/${data}`)
+	},
+	//拥军联盟企业 商品列表
+	getGoodsInfo(data){
+	    return utils.requestEn(`/wx/api/shops/getGoodsList`, data, 'POST')
+	},
+	//拥军联盟企业 商品详情
+	getGoodsDetails(data){
+	    return utils.requestFn(`/wx/api/shops/getGoodsInfo/${data}`)
+	},
+	
+	//身份认证
+	getUserIdCard(data){
+	    return utils.requestFn(`/wx/api/veterans/register`, data, 'POST')
+	},
+	
+	//身份认证 详情
+	getRegister(data,type){
+	    return utils.requestFn(`/wx/api/veterans/info/${data}/${type}`)
+	},
+	
+	//军人端 消息
+	getNews(data){
+	    return utils.requestFn(`/wx/api/msg/getMsgList`, data, 'POST')
+	},
+	
+	//军人端 我的
+	getMe(data,type){
+	    return utils.requestFn(`/wx/api/veterans/info/${data}/${type}`)
+	},
+	
+	//军人端 我的 二维码
+	getUserQrCode(data,type){
+	    return utils.requestFn(`/wx/api/veterans/getUserQrCode/${data}/${type}`)
+	},
+	
+	//军人端 我的 军属列表
+	getUserRelationList(data){
+	    return utils.requestFn(`/wx/api/veterans/getUserRelationList`, data, 'POST')
+	},
+	
+	//军人端 我的 军属添加
+	getAdd(data){
+	    return utils.requestFn(`/wx/api/veterans/addUserRelation`, data, 'POST')
+	},
+	
+	//军人端 我的 军属详情
+	getUserRelationInfo(data){
+	    return utils.requestFn(`/wx/api/veterans/getUserRelationInfo/${data}`)
+	},
+	
+	//军人端 我的 军属修改
+	updateUserRelation(data){
+	    return utils.requestFn(`/wx/api/veterans/updateUserRelation`, data, 'POST')
+	},
+	
+	//军人端 我的 军属删除
+	getDel(data){
+	    return utils.requestFn(`/wx/api/veterans/deleteUserRelationInfo/${data}`)
+	},
+	
+	//军人端 我的 军属关系
+	getRelationInfoList(data){
+	    return utils.requestFn(`/wx/api/veterans/getRelationInfoList`, data)
+	},
+	
+	//军人端 我的 优惠记录
+	getMyself(data){
+	    return utils.requestFn(`/wx/api/order/getMyself`, data, 'POST')
+	},
+	
+	//店铺端 首页 二维码页面
+	getCode(data){
+	    return utils.requestFn(`/wx/api/order/getQrcode`, data, 'POST')
+	},
+	
+	//店铺端 首页 添加店铺信息
+	getAddShops(data){
+	    return utils.requestFn(`/wx/api/shops/addShops`, data, 'POST')
+	},
+	
+	//店铺端 首页 二维码页面 修改店铺优惠金额
+	getMoney(data){
+	    return utils.requestFn(`/mobile/box/getPutBox`, data)
+	},
+	
+	//店铺端 首页 优惠记录
+	getIndexDetails(data){
+	    return utils.requestFn(`/wx/api/order/getShopsList`, data, 'POST')
+	},
+	
+	// 添加优惠记录
+	addOrderInfo(data){
+	    return utils.requestFn(`/wx/api/order/addOrderInfo`, data, 'POST')
+	},
+	
+	//店铺端 首页 修改店铺信息
+	getIndexData(data){
+	    return utils.requestFn(`/wx/api/shops/updateShops`, data, 'POST')
+	},
+	
+	//店铺端 商品管理 添加商品
+	getSPGoodsAdd(data){
+	    return utils.requestFn(`/wx/api/shops/addGoods`, data, 'POST')
+	},
+	
+	//店铺端 商品管理 修改商品
+	getUodateGoods(data){
+	    return utils.requestFn(`/wx/api/shops/uodateGoods`, data, 'POST')
+	},
+	
+	//店铺管理端 店铺审核 未审核
+	getManageShopList(data){
+	    return utils.requestFn(`/wx/api/shops/getList`, data, 'POST')
+	},
+	
+	//店铺管理端 商品审核 列表
+	getShenGoodsList(data){
+	    return utils.requestFn(`/wx/api/shops/getGoodsList`, data, 'POST')
+	},
+	
+	//店铺管理端 商铺详情
+	getInfonew(data){
+	    return utils.requestFn(`/wx/api/shops/getInfonew/${data}`)
+	},
+	
+	//店铺管理端 商品详情
+	getGoodsInfonew(data){
+	    return utils.requestFn(`/wx/api/shops/getGoodsInfonew/${data}`)
+	},
+	
+	//店铺管理端 账户审核 列表
+	getAccountList(data){
+	    return utils.requestFn(`/wx/api/veterans/infoList`, data, 'POST')
+	},
+	
+	//店铺管理端 账户审核 (通过)
+	getAccountPass(data){
+	    return utils.requestFn(`/wx/api/veterans/uploadInfo`, data, 'POST')
+	},
+	
+	//注册 军人身份类别{{dictType: 'basics_level'}
+	getUploadInfo(data){
+	    return utils.requestFn(`/system/dict/data/select`, data)
+	},
+	//管理端 军人检索
+	getInfoList(data){
+	    return utils.requestFn(`/wx/api/veterans/infoList`, data, 'POST')
+	},
+	//管理端 军人检索 地图打点
+	getNearby(data){
+	    return utils.requestFn(`/wx/api/veterans/nearby/${data}`)
+	},
+	//店铺类型  列表
+	getDic(data){
+	    return utils.requestFn(`/wx/api/shops/getDic`, data)
+	},
+	//店铺 消费明细
+	getDetailedList(data){
+	    return utils.requestFn(`/wx/api/shops/getDetailedList`, data)
+	},
+	//服务站列表
+	getServiceList(data){
+	    return utils.requestFn(`/wx/api/order/getServicelist`, data)
+	},
+}

+ 9 - 0
api/index.js

@@ -0,0 +1,9 @@
+import common from "./common.js"
+import login from "./login.js"
+const service = {
+	// 公共方法
+	...common,
+	...login,
+}
+
+export default service

+ 10 - 0
api/login.js

@@ -0,0 +1,10 @@
+import utils from '../common/request.js'
+export default {
+	// 登录
+	login (data) {
+		return utils.requestLo('/wx/api/supervise/login', data,'post')
+	},
+	wxUser(data){
+		return utils.requestLo('/auth/user', data,'post')
+	},
+}

+ 80 - 0
assets/css/style.less

@@ -0,0 +1,80 @@
+.header-long-bg{
+	background: #2E4F1C;
+}
+.shadow{
+	box-shadow: 0px -1px 16px 2px rgba(0, 0, 0, 0.1) inset;
+}
+.shadow1{
+	background: rgba(204, 16, 25, 0.05);
+	box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.06);
+}
+.shadow2{
+	background: rgba(211, 101, 31, 0.05);
+	box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.06);
+}
+.shadow3{
+	background: rgba(244, 240, 237, 0.45);
+	box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.09);
+}
+.main-bg{
+	background: #F8F8F8;
+}
+.font-color1{
+	color: #FFFFFF;
+}
+.font-color2{
+	color: #2E4F1C;
+}
+.font-color3{
+	color: #333333;
+}
+.font-color4{
+	color: #999999;
+}
+.font-color5{
+	color: #CC1019;
+}
+.font-color6{
+	color: #12C194;
+}
+.font-forty{
+	font-size: 40rpx;
+	font-family: PingFangSC-Medium, PingFang SC;
+	font-weight: 500;
+	letter-spacing: 2rpx;
+}
+.font-twenty{
+	font-size: 28rpx;
+	font-family: PingFangSC-Medium, PingFang SC;
+	font-weight: 500;
+}
+.font-twenty-two{
+	font-size: 22rpx;
+	font-family: PingFangSC-Medium, PingFang SC;
+	font-weight: 500;
+}
+.font-twenty-four{
+	font-size: 24rpx;
+	font-family: PingFangSC-Medium, PingFang SC;
+	font-weight: 500;
+}
+.font-thirty{
+	font-size: 36rpx;
+	font-family: PingFangSC-Medium, PingFang SC;
+	font-weight: 500;
+}
+.font-thirty-two{
+	font-size: 32rpx;
+	font-family: PingFangSC-Medium, PingFang SC;
+	font-weight: 500;
+}
+.ellipsis{
+	overflow: hidden;
+	white-space: nowrap;
+	text-overflow: ellipsis;
+}
+.between{
+	display: flex;
+	flex-direction: row;
+	justify-content: space-between;
+}

+ 6 - 0
common/http.js

@@ -0,0 +1,6 @@
+// 配置信息
+export default {
+	webUrl: 'https://hjt.cxcloudsci.com/prod-api',
+	// webUrl: 'http://192.168.0.120:8081'
+}
+

Dosya farkı çok büyük olduğundan ihmal edildi
+ 137 - 0
common/lodash.min.js


+ 149 - 0
common/request.js

@@ -0,0 +1,149 @@
+import http from './http.js'
+export default {
+	// 请求方法
+	requestEn(url, data = {}, methods) {
+		return new Promise((resolve, reject) => {
+			uni.request({
+				url: http.webUrl + url,
+				method: methods ? methods : 'GET',
+				data: data,
+				success: res => {
+					if (res.data.code === 200) {
+						resolve(res.data.data === undefined ? null : res.data.data)
+					} else if (res.data.code === 403 ||res.data.code === 401 ) {
+						uni.showToast({
+							title: 'Token超时,请重新登录',
+							icon: 'none'
+						})
+						if (uni.getStorageSync('token')) {
+							uni.removeStorage({
+								key: 'token',
+								success: () => {
+									uni.navigateTo({
+										url: '/pages/login/login'
+									})
+								}
+							})
+						} else {
+							uni.navigateTo({
+								url: '/pages/login/login'
+							})
+						}
+					} else {
+						uni.showToast({
+							title: res.data.msg ? res.data.msg : '系统异常',
+							icon: 'none'
+						})
+					}
+				},
+				fail: () => {
+					uni.showToast({
+						title: '网络异常',
+						icon: 'none'
+					})
+				}
+			})
+		})
+	},
+	// 请求方法
+	requestFn(url, data = {}, methods) {
+		return new Promise((resolve, reject) => {
+			console.log(http.webUrl + url +'---'+ uni.getStorageSync('token'))
+			uni.request({
+				url: http.webUrl + url,
+				method: methods ? methods : 'GET',
+				data: data,
+				header: { 
+					"WxAuthorization": `wxBearer ${uni.getStorageSync('token') ? uni.getStorageSync('token') : ''}`,
+					"userType":'MOdBILE'
+				},
+				success: res => {
+					console.log(res)
+					
+					if (res.data.code === 200) {
+						resolve(res.data.data === undefined ? null : res.data.data)
+					} else if (res.data.code === 403 ||res.data.code === 401 ) {
+						uni.showToast({
+							title: 'Token超时,请重新登录',
+							icon: 'none'
+						})
+						if (uni.getStorageSync('token')) {
+							uni.removeStorage({
+								key: 'token',
+								success: () => {
+									uni.navigateTo({
+										url: '/pages/login/login'
+									})
+								}
+							})
+						} else {
+							uni.navigateTo({
+								url: '/pages/login/login'
+							})
+						}
+					} else {
+						uni.showToast({
+							title: res.data.msg ? res.data.msg : '系统异常',
+							icon: 'none'
+						})
+					}
+				},
+				fail: () => {
+					uni.showToast({
+						title: '网络异常',
+						icon: 'none'
+					})
+				}
+			})
+		})
+	},
+ requestLo(url, data = {}, methods) {
+  return new Promise((resolve, reject) => {
+   console.log(http.webUrl + url)
+   uni.request({
+    url: http.webUrl + url,
+    method: methods ? methods : 'GET',
+    data: data,
+    header: {
+     "userType":'MOBILE'
+    },
+    success: res => {
+     console.log(res)
+     if (res.data.code === 200 || res.data.code === 500) {
+      resolve(res.data === undefined ? null : res.data)
+     } else if (res.data.code === 403) {
+      uni.showToast({
+       title: res.data.msg ? res.data.msg : 'Token超时,请重新登录',
+       icon: 'none'
+      })
+      if (uni.getStorageSync('token')) {
+       uni.removeStorage({
+        key: 'token',
+        success: () => {
+         uni.navigateTo({
+          url: '/pages/login/login'
+         })
+        }
+       })
+      } else {
+       uni.navigateTo({
+        url: '/pages/login/login'
+       })
+      }
+     } else {
+      uni.showToast({
+       title: res.data.msg ? res.data.msg : '系统异常',
+       icon: 'none'
+      })
+     }
+    },
+    fail: () => {
+     uni.showToast({
+      title: '网络异常',
+      icon: 'none'
+     })
+    }
+   })
+  })
+ }
+}

+ 290 - 0
common/utils.js

@@ -0,0 +1,290 @@
+export default {
+	// 页面提示信息函数
+	showPrompt(msg) {
+		uni.showToast({
+			title: msg,
+			icon: 'none',
+			mask: true
+		})
+	},
+	// APP名称
+	appName() {
+		return "惠军通"
+	},
+	formatRichText(html){
+	  let newContent= html.replace(/<img[^>]*>/gi,function(match,capture){
+		match = match.replace(/style="[^"]+"/gi, '').replace(/style='[^']+'/gi, '');
+		match = match.replace(/width="[^"]+"/gi, '').replace(/width='[^']+'/gi, '');
+		match = match.replace(/height="[^"]+"/gi, '').replace(/height='[^']+'/gi, '');
+		return match;
+	  });
+	  newContent = newContent.replace(/style="[^"]+"/gi,function(match,capture){
+		match = match.replace(/width:[^;]+;/gi, 'max-width:100%;').replace(/width:[^;]+;/gi, 'max-width:100%;');
+		return match;
+	  });
+	  newContent = newContent.replace(/<br[^>]*\/>/gi, '');
+	  newContent = newContent.replace(/\<img/gi, '<img style="max-width:100%;height:auto;display:block;margin-top:0;margin-bottom:0;"');
+	  return newContent;
+	},
+	getHeight(e) {
+		console.log(e)
+	},
+	changeTwoDecimal_f(x) {
+		var f_x = parseFloat(x);
+		if (isNaN(f_x)) {
+			return 0;
+		}
+		var f_x = Math.round(x * 100) / 100;
+		var s_x = f_x.toString();
+		var pos_decimal = s_x.indexOf('.');
+		if (pos_decimal < 0) {
+			pos_decimal = s_x.length;
+			s_x += '.';
+		}
+		while (s_x.length <= pos_decimal + 2) {
+			s_x += '0';
+		}
+		return s_x;
+	},
+	// token过期
+	tokenOverdue() {
+		uni.setStorage({
+			key: "jumpUrl",
+			data: ''
+		})
+		uni.setStorage({
+			key: "jumpType",
+			data: ''
+		})
+		uni.navigateTo({
+			url: "/pages/login/login"
+		})
+	},
+	checkLoginTo(url, type) {
+		console.log(type)
+		let status = uni.getStorageSync('token')
+		console.log(status)
+
+		if (status) {
+			uni.navigateTo({
+				url: url
+			})
+		} else {
+			uni.showModal({
+				title: '',
+				content: '您未登录,是否登录?',
+				success: res => {
+					if (res.confirm) {
+						uni.setStorage({
+							key: "jumpUrl",
+							data: url
+						})
+						uni.setStorage({
+							key: "jumpType",
+							data: type
+						})
+						uni.navigateTo({
+							url: "/pages/login/login"
+						})
+					}
+				}
+			})
+		}
+	},
+	// 拨打电话
+	toCall(tel) {
+		if (!tel) {
+			this.showPrompt('暂无商家电话')
+			return
+		}
+		uni.makePhoneCall({
+			phoneNumber: tel
+		});
+	},
+	toBack() {
+		uni.navigateBack({
+			delta: 1
+		})
+	},
+	// 图片预览
+	previewImage(url) {
+		let urlList = []
+		if (typeof url == 'string') {
+			urlList.push(url)
+		} else {
+			urlList = url
+		}
+		uni.previewImage({
+			urls: urlList
+		})
+	},
+	// 登录成功后的跳转
+	loginSuccess() {
+		let type = uni.getStorageSync('jumpType')
+		// console.log(type)
+		if (type) {
+			let url = uni.getStorageSync('jumpUrl')
+			// console.log(url)
+			if (!url) {
+				uni.navigateBack({
+					delta: 1
+				});
+				return
+			}
+			if (type == 'page') {
+				uni.redirectTo({
+					url: url
+				})
+			} else {
+				uni.switchTab({
+					url: url,
+					fail: error => {
+						console.log(error)
+					}
+				})
+			}
+		} else {
+			// uni.switchTab({
+			// 	url: "/pages/index/index"
+			// })
+			uni.navigateBack({
+				delta: 1
+			});
+		}
+	},
+	parseNumber(num) {
+		return num < 10 ? "0" + num : num;
+	},
+	// 时间格式化基类
+	dateFormat(date, formatStr) {
+		let dateObj = {},
+			rStr = /\{([^}]+)\}/,
+			mons = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'];
+		dateObj["Y"] = date.getFullYear();
+		dateObj["M"] = date.getMonth() + 1;
+		dateObj["MM"] = this.parseNumber(dateObj["M"]);
+		dateObj["Mon"] = mons[dateObj['M'] - 1];
+		dateObj["D"] = date.getDate();
+		dateObj["DD"] = this.parseNumber(dateObj["D"]);
+		dateObj["h"] = date.getHours();
+		dateObj["hh"] = this.parseNumber(dateObj["h"]);
+		// dateObj["t"] = dateObj["h"] > 12 ? dateObj["h"] - 12 : dateObj["h"];
+		dateObj["t"] = dateObj["h"]
+		dateObj["tt"] = this.parseNumber(dateObj["t"]);
+		// dateObj["A"] = dateObj["h"] > 12 ? '下午' : '上午';
+		dateObj["i"] = date.getMinutes();
+		dateObj["ii"] = this.parseNumber(dateObj["i"]);
+		dateObj["s"] = date.getSeconds();
+		dateObj["ss"] = this.parseNumber(dateObj["s"]);
+		while (rStr.test(formatStr)) {
+			formatStr = formatStr.replace(rStr, dateObj[RegExp.$1]);
+		}
+		return formatStr;
+	},
+	// 时间格式 年月日时分秒
+	gettime(shorttime, type) {
+		shorttime = shorttime.toString().length < 13 ? shorttime * 1000 : shorttime;
+		let now = (new Date()).getTime();
+		let cha = (now - parseInt(shorttime)) / 1000
+		// type: 格式化类型  1为年月日时分秒  2为年月日时分  3为年月日
+		if (type == 1) {
+			return this.dateFormat(new Date(shorttime), "{Y}-{MM}-{DD} {t}:{ii}:{ss}");
+		} else if (type == 2) {
+			return this.dateFormat(new Date(shorttime), "{Y}-{MM}-{DD} {t}:{ii}");
+		} else if (type == 3) {
+			return this.dateFormat(new Date(shorttime), "{Y}-{MM}-{DD}");
+		}
+
+	},
+	// 时间格式 年月日
+	getDate(shorttime) {
+		shorttime = shorttime.toString().length < 13 ? shorttime * 1000 : shorttime
+		let now = (new Date()).getTime()
+		let cha = (now - parseInt(shorttime)) / 1000
+		return this.dateFormat(new Date(shorttime), "{Y}-{MM}-{DD}");
+	},
+	// 时间格式 月日
+	getDateMd(shorttime) {
+		shorttime = shorttime.toString().length < 13 ? shorttime * 1000 : shorttime
+		let now = (new Date()).getTime()
+		let cha = (now - parseInt(shorttime)) / 1000
+		return this.dateFormat(new Date(shorttime), "{MM}-{DD}");
+	},
+	getSevenDate(num) {
+		let date1 = new Date();
+		//今天时间
+		let time1 = ((date1.getMonth() + 1) < 10 ? '0' + (date1.getMonth() + 1).toString() : (date1.getMonth() + 1)) +
+			"-" +
+			(date1.getDate() < 10 ? '0' + date1.getDate().toString() : date1.getDate())
+		let date2 = new Date(date1);
+		date2.setDate(date1.getDate() + num);
+		//num是正数表示之后的时间,num负数表示之前的时间,0表示今天
+		let time2 = (date2.getMonth() + 1) + "-" + date2.getDate();
+		return this.getdiffdate(time1, time2, num)
+	},
+	//获取两日期之间日期列表函数
+	getdiffdate(stime, etime, num) {
+		//初始化日期列表,数组
+		let diffdate = new Array()
+		let i = 0
+		//开始日期小于等于结束日期,并循环
+		while (i <= num - 1) {
+			diffdate.push({
+				dateStr: stime,
+				weekStr: this.getWeek(new Date().getFullYear().toString() + "-" + stime)
+			})
+			//获取开始日期时间戳
+			let stime_ts = new Date(stime).getTime()
+			// console.log('当前日期:'+stime   +'当前时间戳:'+stime_ts)	        
+			//增加一天时间戳后的日期
+			let next_date = stime_ts + (24 * 60 * 60 * 1000)
+			//拼接年月日,这里的月份会返回(0-11),所以要+1
+			let next_dates_y = new Date(next_date).getFullYear() + '-'
+			let next_dates_m = (new Date(next_date).getMonth() + 1 < 10) ? '0' + (new Date(next_date).getMonth() + 1) +
+				'-' : (
+					new Date(next_date).getMonth() + 1) + '-'
+			let next_dates_d = (new Date(next_date).getDate() < 10) ? '0' + new Date(next_date).getDate() : new Date(
+				next_date).getDate()
+			stime = next_dates_m + next_dates_d
+			// 增加数组key
+			i++
+		}
+		return diffdate
+	},
+	// 根据日期转换星期
+	getWeek(dateString) {
+		let dateArray = dateString.split("-");
+		let date = new Date(dateArray[0], parseInt(dateArray[1] - 1), dateArray[2]);
+		return "周" + "日一二三四五六".charAt(date.getDay());
+	},
+	// 获取当前位置
+	getNowAddress() {
+		console.log(222)
+		return new Promise((resolve, reject) => {
+			let mapkey = ''
+			// #ifdef MP-WEIXIN
+			mapkey = 'c827c04d1d74d8589ec826fce02a135a'
+			// #endif
+			// #ifdef APP-PLUS
+			mapkey = '7923ab86c887ab9c77e9e28828567622	'
+			// #endif
+			console.log(mapkey)
+			let amapPlugin = new amap.AMapWX({
+				key: mapkey
+			})
+			amapPlugin.getRegeo({
+				success: res => {
+					resolve(res[0])
+				},
+				fail: error => {
+					console.log(error)
+					uni.showToast({
+						mask: true,
+						icon: "none",
+						title: error
+					})
+				}
+			})
+		})
+	}
+}

+ 102 - 0
components/examine/examined.vue

@@ -0,0 +1,102 @@
+<template>
+	<view>
+		<view class="display" v-for="(item,index) in list">
+			<view class="store-content" @click="handleClick(item)">
+				<image :src="image(item.shopsPic)" mode="" class="store-image"></image>
+				<view class="text-content">
+					<view class="font-thirty-two font-color2">
+						{{item.shopsName}}
+					</view>
+					<view class="font-twenty font-color5" style="margin-top: 20rpx;">
+						类别:店铺已审核
+					</view>
+				</view>
+			</view>
+			<!-- <view class="button-dis">
+				<button type="default" class="btn">通过</button>
+				<button type="default" class="btn color">不通过</button>
+			</view> -->
+		</view>
+	</view>
+</template>
+
+<script>
+	import server from "@/api/index";
+	import http from '@/common/http.js'
+	export default {
+		data() {
+			return {
+				list:[]
+			}
+		},
+		mounted() {
+			this.getListFn()
+		},
+		methods: {
+			showModel(){
+				this.getListFn()
+			},
+			image(e) {
+				return http.webUrl + e
+			},
+			handleClick(item){
+				// if(item.type === '店铺'){
+					uni.navigateTo({
+						url: '/pages/manage/modifyInfo/modifyInfo?id=' + item.shopsId + '&flag="false"'
+					})
+				// }
+				// else if(item.type === '商品'){
+				// 	uni.navigateTo({
+				// 		url: '/pages/manage/modifyInfo/addToOrder?id=' + item.id + '&flag="false"'
+				// 	})
+				// }
+			},
+			getListFn(){
+				server.getManageShopList({shopsStatus :'2'}).then(res =>{
+					this.list = [];
+					if(res){
+						this.list = res
+					}
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.display {
+		margin: 30rpx 30rpx 0;
+		padding: 30rpx;
+		background: #FFFFFF;
+		opacity: 1;
+		border-radius: 8rpx;
+
+		.store-content {
+			display: flex;
+			align-items: center;
+			padding-bottom: 30rpx;
+			border-bottom: 2rpx solid #DEDEDE;
+			.store-image {
+				width: 220rpx;
+				height: 150rpx;
+			}
+			.text-content{
+				margin-left: 30rpx;
+			}
+		}
+
+		.button-dis {
+			display: flex;
+			margin-top: 30rpx;
+			.btn {
+				width: 300rpx;
+				background: #2E4F1C;
+				color: #FFFFFF;
+				border-radius: 48rpx;
+			}
+			.color{
+				background: #CC1019;
+			}
+		}
+	}
+</style>

+ 101 - 0
components/examine/noadopt.vue

@@ -0,0 +1,101 @@
+<template>
+	<view>
+		<view class="display" v-for="(item,index) in list">
+			<view class="store-content" @click="handleClick(item)">
+				<image :src="image(item.shopsPic)" mode="" class="store-image"></image>
+				<view class="text-content">
+					<view class="font-thirty-two font-color2">
+						{{item.shopsName}}
+					</view>
+					<view class="font-twenty font-color5" style="margin-top: 20rpx;">
+						类别:店铺未通过审核
+					</view>
+				</view>
+			</view>
+			<!-- <view class="button-dis">
+				<button type="default" class="btn">通过</button>
+				<button type="default" class="btn color">不通过</button>
+			</view> -->
+		</view>
+	</view>
+</template>
+
+<script>
+	import server from "@/api/index";
+	import http from '@/common/http.js'
+	export default {
+		data() {
+			return {
+				list:[]
+			}
+		},
+		mounted() {
+			this.getListFn()
+		},
+		methods: {
+			showModel(){
+				this.getListFn()
+			},
+			image(e) {
+				return http.webUrl + e
+			},
+			handleClick(item){
+				// if(item.type === '店铺'){
+					uni.navigateTo({
+						url: '/pages/manage/modifyInfo/modifyInfo?id=' + item.shopsId + '&flag="false"'
+					})
+				// }else if(item.type === '商品'){
+				// 	uni.navigateTo({
+				// 		url: '/pages/manage/modifyInfo/addToOrder?id=' + item.id + '&flag="false"'
+				// 	})
+				// }
+			},
+			getListFn(){
+				server.getManageShopList({shopsStatus :'3'}).then(res =>{
+					this.list = [];
+					if(res){
+						this.list = res
+					}
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.display {
+		margin: 30rpx 30rpx 0;
+		padding: 30rpx;
+		background: #FFFFFF;
+		opacity: 1;
+		border-radius: 8rpx;
+
+		.store-content {
+			display: flex;
+			align-items: center;
+			padding-bottom: 30rpx;
+			border-bottom: 2rpx solid #DEDEDE;
+			.store-image {
+				width: 220rpx;
+				height: 150rpx;
+			}
+			.text-content{
+				margin-left: 30rpx;
+			}
+		}
+
+		.button-dis {
+			display: flex;
+			margin-top: 30rpx;
+			.btn {
+				width: 300rpx;
+				background: #2E4F1C;
+				color: #FFFFFF;
+				border-radius: 48rpx;
+			}
+			.color{
+				background: #CC1019;
+			}
+		}
+	}
+</style>

+ 175 - 0
components/examine/noexamine.vue

@@ -0,0 +1,175 @@
+<template>
+	<view>
+		<view v-if="list.length > 0">
+			<view class="display" v-for="(item,index) in list">
+				<view class="store-content" @click="handleClick(item)">
+					<image :src="image(item.shopsPic)" mode="" class="store-image"></image>
+					<view class="text-content">
+						<view class="font-thirty-two font-color2">
+							{{item.shopsName}}
+						</view>
+						<view class="font-twenty font-color5" style="margin-top: 20rpx;">
+							类别:店铺信息修改
+						</view>
+					</view>
+				</view>
+				<view class="button-dis">
+					<button type="default" class="btn" @click="show(item.shopsId, '通过')">通过</button>
+					<button type="default" class="btn color" @click="show(item.shopsId, '不通过')">不通过</button>
+				</view>
+			</view>
+		</view>
+		<view v-else style="padding-top: 200rpx;">
+			<u-empty text="暂无数据" mode="list"></u-empty>
+		</view>
+		<ming-pop ref="statement" direction="below" :is_mask="true" :width="100" height="42%" :maskFun="true">
+			<pop @close="close()" @noPass='handle' ref="pop"></pop>
+		</ming-pop>
+		<u-toast ref="uToast" />
+	</view>
+</template>
+
+<script>
+	import server from "@/api/index";
+	import http from '@/common/http.js'
+	export default {
+		data() {
+			return {
+				id: null,
+				list: [],
+				userInfo:{},
+				type: null
+			}
+		},
+		mounted() {
+			this.userInfo = uni.getStorageSync('userInfo');
+			this.getList();
+		},
+		methods: {
+			showModel(){
+				this.userInfo = uni.getStorageSync('userInfo');
+				this.getList();
+			},
+			image(e) {
+				return http.webUrl + e
+			},
+			getList(){
+				server.getManageShopList({shopsStatus :'1'}).then(res =>{
+					this.list = [];
+					if(res){
+						this.list = res
+					}
+				})
+			},
+			handleClick(item){
+				uni.navigateTo({
+					url: '/pages/manage/modifyInfo/modifyInfo?id=' + item.shopsId
+				})
+			},
+			handle(data){
+				if(this.type === '不通过'){
+					this.handleNoPass(data)
+				}else if(this.type === '通过'){
+					console.log('this.id', this.id)
+					this.handlePass(data, this.id)
+				}
+			},
+			handlePass(data, id){
+				let _this = this;
+				uni.showModal({
+					title: '提示',
+					content: '确定通过审核吗?',
+					success: function (res) {
+						if (res.confirm) {
+							let params ={
+								shopsId: id,
+								shopsStatus: '2',
+								shopsReviewer: _this.userInfo.userId,
+								reviewerName: _this.userInfo.nickName,
+								remark: data
+							}
+							server.getIndexData(params).then(res =>{
+								_this.$refs.uToast.show({
+									title: '通过成功!',
+									type: 'default',
+								});
+								_this.getList();
+							})
+						} else if (res.cancel) {
+							console.log('用户点击取消');
+						}
+					}
+				});
+			},
+			handleNoPass(data){
+				let _this = this;
+				let params ={
+					shopsId: this.id,
+					shopsStatus: '3',
+					shopsReviewer: _this.userInfo.userId,
+					reviewerName: _this.userInfo.nickName,
+					remark: data
+				}
+				server.getIndexData(params).then(res =>{
+					_this.$refs.uToast.show({
+						title: '操作成功!',
+						type: 'default',
+					})
+					_this.getList();
+				})
+			},
+			show(id, type) {
+				this.$refs.statement.show(type);
+				this.$refs.pop.show(type);
+				this.id = id
+				this.type = type;
+			},
+			close() {
+				this.$refs.statement.close();
+				this.id = null
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.display {
+		margin: 30rpx 30rpx 0;
+		padding: 30rpx;
+		background: #FFFFFF;
+		opacity: 1;
+		border-radius: 8rpx;
+
+		.store-content {
+			display: flex;
+			align-items: center;
+			padding-bottom: 30rpx;
+			border-bottom: 2rpx solid #DEDEDE;
+
+			.store-image {
+				width: 220rpx;
+				height: 150rpx;
+			}
+
+			.text-content {
+				margin-left: 30rpx;
+			}
+		}
+
+		.button-dis {
+			display: flex;
+			margin-top: 30rpx;
+
+			.btn {
+				width: 300rpx;
+				background: #2E4F1C;
+				color: #FFFFFF;
+				border-radius: 48rpx;
+			}
+
+			.color {
+				background: #CC1019;
+			}
+		}
+	}
+</style>

+ 307 - 0
components/king-scan/king-scan.vue

@@ -0,0 +1,307 @@
+<template>
+	<view class="scan-container">
+		<!-- 如果scanMode是normal去掉下面的@scancode方法 -->
+		<view class="scan-cameraCon">
+			<camera
+				class="scan-camera"
+				device-position="back"
+				flash="off"
+				@error="error"
+				:mode="scanMode"
+				@scancode="cameraScan"
+				:style="{ width: scanCameraWid, height: scanCameraHei }"
+			>
+				<view v-if="scanMode == 'scanCode'">
+					<!-- 温馨提示:如果你觉得自定义弄四个角的边框太麻烦,可以叫ui切四个角的图片,直接插进来即可,本人因为没有ui才这样做 -->
+					<!-- 左上角 -->
+					<cover-view class="scan-border scan-left-top scan-verLine"></cover-view>
+					<cover-view class="scan-border scan-left-top scan-horLine"></cover-view>
+					<!-- 左下角 -->
+					<cover-view class="scan-border scan-left-bottom scan-verLine"></cover-view>
+					<cover-view class="scan-border scan-left-bottom scan-horLine"></cover-view>
+					<!-- 右上角 -->
+					<cover-view class="scan-border scan-right-top scan-verLine"></cover-view>
+					<cover-view class="scan-border scan-right-top scan-horLine"></cover-view>
+					<!-- 右下角 -->
+					<cover-view class="scan-border scan-right-bottom scan-verLine"></cover-view>
+					<cover-view class="scan-border scan-right-bottom scan-horLine"></cover-view>
+					<!-- 上下移动的动画线 -->
+					<cover-view class="scan-animation" :animation="scanAnimation"></cover-view>
+				</view>
+			</camera>
+		</view>
+
+		<!-- 下面两种模式暂时写死,具体样式要根据你们的代码来写,也可以使用插槽模式 -->
+		<view class="" v-if="scanMode == 'normal'">
+			<button type="primary" @click="takePhoto">拍照</button>
+			<view>预览</view>
+			<image mode="widthFix" :src="src"></image>
+		</view>
+		<view class="" v-if="scanMode == 'scanCode'">
+			<!-- <view class="">扫码结果如下:</view>
+			<view v-for="(item, index) in kingList" key="index">{{ item }}</view> -->
+		</view>
+		<u-toast ref="uToast" />
+	</view>
+</template>
+
+<script>
+// 移动动画
+let animation = wx.createAnimation({});
+// 提示音(如果有可以导入,这个我用手机震动来提示扫码完成)
+let innerAudioContext = wx.createInnerAudioContext();
+innerAudioContext.src = '/static/music/beep.mp3';
+export default {
+	data() {
+		return {
+			// 照相模式下图片临时路径
+			src: '',
+			// 扫码模式下的多次扫码列表
+			kingList: [],
+			// 动画
+			scanAnimation: null
+		};
+	},
+	props: {
+		// 照相模式还是扫码模式(normal:代表照相模式,scanCode:代表扫码模式,注意微信暂不支持扫描小程序码,不要问为什么,微信功能是这样)
+		scanMode: {
+			type: String,
+			default: 'scanCode'
+		},
+		// 扫码成功用是否用震动来提示(1:表示震动模式,2:表示mp3模式)
+		scanTip: {
+			type: Number,
+			default: 1
+		},
+		// 相机的宽度
+		scanCameraWid: {
+			type: String,
+			default: '250px'
+		},
+		// 相机的高度
+		scanCameraHei: {
+			type: String,
+			default: '250px'
+		}
+	},
+	created() {
+		if (this.scanMode == 'scanCode') {
+			// 初始化扫码动画
+			this.initAnimation();
+		}
+	},
+	methods: {
+		initAnimation() {
+			var that = this;
+			// 控制向上还是向下移动
+			let m = true;
+			setInterval(
+				function() {
+					if (m) {
+						animation.translateY(240).step({ duration: 3000 });
+						m = !m;
+					} else {
+						animation.translateY(10).step({ duration: 3000 });
+						m = !m;
+					}
+					that.scanAnimation = animation.export();
+				}.bind(this),
+				3000
+			);
+		},
+		cameraScan(e) {
+			if (e) {
+				let result = e.detail.result;
+				// 如果已经扫描过了,就不添加到列表里面了
+				if (this.kingList.indexOf(result) == -1) {
+					switch (this.scanTip) {
+						case 1:
+							// 方式1,扫码成功后让手机震动
+							uni.vibrateShort({
+								success: function() {
+									console.log('success');
+								}
+							});
+							break;
+						case 2:
+							// 方式2,扫码成功后让手机播放声音
+							innerAudioContext.play();
+							break;
+						default:
+							// 方式1,扫码成功后让手机震动
+							uni.vibrateShort({
+								success: function() {
+									console.log('success');
+								}
+							});
+							break;
+					}
+					
+					this.kingList.push(result);
+					let list = JSON.parse(this.kingList[0])
+					let sysTime = Date.parse(new Date()) / 1000;
+					let time = list.time;
+					console.log('list.time',list.time);
+					let date = (new Date(Date.parse(time.replace(/-/g,"/")))).getTime() / 1000;
+					let count= list.id;
+					let last =list.type;
+					console.log('sysTime',sysTime)
+					console.log('date',date)
+					console.log('sysTime-date',sysTime-date)
+					console.log('sysTime-date <= 300000',sysTime-date <= 300000);
+					if(sysTime-date <= 300000){
+						this.$emit('handle', count, last);
+					}
+				} else {
+					this.$refs.uToast.show({
+						title: '扫描过了,二维码已失效!',
+						type: 'default',
+					})
+				}
+			}
+		},
+		// 如果不是扫码模式就用这个
+		takePhoto() {
+			const ctx = uni.createCameraContext();
+			ctx.takePhoto({
+				quality: 'high',
+				success: res => {
+					this.src = res.tempImagePath;
+				}
+			});
+		},
+		error(e) {
+			if (e) {
+				let that = this;
+				// 如果用户不允许使用摄像头,需要提示引导用户授权
+				wx.getSetting({
+					success(res) {
+						if (!res.authSetting['scope.camera']) {
+							//获取摄像头权限
+							wx.authorize({
+								scope: 'scope.camera',
+								success() {
+									console.log('授权成功');
+								},
+								fail() {
+									wx.showModal({
+										title: '提示',
+										content: '尚未进行摄像头权限授权,摄像头功能将无法使用',
+										showCancel: false,
+										success(res) {
+											that.openAuthor();
+										}
+									});
+								}
+							});
+						}
+					},
+					fail(res) {}
+				});
+			}
+		},
+		// 打开设置进行授权
+		openAuthor(){
+			let that = this;
+			wx.openSetting({
+				//这里的方法是调到一个添加权限的页面,可以自己尝试
+				success: res => {
+					console.log(1111);
+					if (!res.authSetting['scope.camera']) {
+						wx.showModal({
+							title: '提示',
+							content: '尚未进行摄像头权限授权,摄像头功能将无法使用',
+							showCancel: false,
+							success(res) {
+								if (res.confirm) {
+									console.log('用户点击确定');
+									that.openAuthor();
+									
+								} else if (res.cancel) {
+									console.log('用户点击取消');
+								}
+							}
+						});
+					}else {
+						wx.showModal({
+							title: '提示',
+							content: '授权成功!',
+							showCancel: false,
+							success: resData => {
+								// 授权成功后,需要重新进入页面能调起相机组件
+								uni.reLaunch({
+									url:'/pages/index/index'
+								})
+							}
+						});
+					}
+				},
+				fail: function() {
+					console.log('授权摄像头权限失败');
+				}
+			});
+		}
+		
+	}
+};
+</script>
+
+<style lang="scss">
+.scan-container {
+	.scan-cameraCon {
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		width: 100vw;
+		height: 50vh;
+		.scan-camera {
+			width: 250px;
+			height: 250px;
+			position: relative;
+			// 四个角边框
+			.scan-border {
+				background-color: #007aff;
+				position: absolute;
+			}
+			.scan-verLine {
+				width: 5px;
+				height: 20px;
+			}
+			.scan-horLine {
+				width: 20px;
+				height: 5px;
+			}
+			// 左上角
+			.scan-left-top {
+				left: 0;
+				top: 0;
+			}
+			// 左下角
+			.scan-left-bottom {
+				left: 0;
+				bottom: 0;
+			}
+			// 右上角
+			.scan-right-top {
+				right: 0;
+				top: 0;
+			}
+			// 右下角
+			.scan-right-bottom {
+				right: 0;
+				bottom: 0;
+			}
+			// 相机中上下移动的线条
+			.scan-animation {
+				position: absolute;
+				top: 5px;
+				left: 5px;
+				width: 240px;
+				height: 4px;
+				background-color: #007aff;
+				border-radius: 50%;
+			}
+		}
+	}
+}
+</style>

+ 179 - 0
components/ming-pop/ming-pop.vue

@@ -0,0 +1,179 @@
+<template>
+	<!-- 组件地址:  https://ext.dcloud.net.cn/plugin?id=2716 -->
+	<!-- v-if解决center弹窗位置问题 -->
+	<view :class="direction==='center'?'centers':''" v-if="direction==='center'?open:true">
+		<view class="product-window"
+			:style="{width:width+'%',height:height=='fit-content'?height:(open?height:'fit-content')}"
+			:class="(open ? 'on' : '')+' '+direction" @touchmove.stop.prevent="">
+			<!-- 兼容h5顶部导航空位 -->
+			<!-- #ifndef MP -->
+			<!-- <view v-if="(direction!=='below'&&direction!=='center')" style="height: 100rpx;"></view> -->
+			<!-- #endif -->
+			<!-- <image src="../../static/ming-pop/close.png" mode=""
+				:class="(direction!=='below'&&direction!=='center')?'iconfont-h5':''" class="iconfont" @click="close"
+				v-if="is_close"></image> -->
+			<slot></slot>
+		</view>
+		<view class="mask" v-if="is_mask" @touchmove.prevent :hidden="!open" @click="close(1)"></view>
+	</view>
+</template>
+
+<script>
+	/*
+	属性名	    类型	     默认值	必填	作用	说明
+	direction	String	below	否	弹窗方向	below(下边);up(上边);left(左边) ;right(右边);center(中间)
+	is_close	Boolean	true	否	是否显示关闭按钮	点击即可关闭弹窗
+	is_mask:	Boolean	true	否	是否显示遮罩层	点击即可关闭弹窗(maskFun值在true情况下)
+	maskFun	Boolean	true	否	是否点击遮罩关闭弹窗	遮罩为显示情况下才可生效
+	width	Number	100	 否	 弹窗的宽度	单位(%)。建议只在上、下方向弹窗使用100(满值)
+	height	String	fit-content	否	弹窗内容的固定高度	默认是根据内容支撑高度,可进行修改成自定义高度:如height='150rpx'(支持rpx,px,%,请将单位带上)
+	watchOpen	Function	-	-	监听弹窗打开事件	-
+	watchClose	Function	-	-	监听弹窗关闭事件	-
+	*/
+	export default {
+		props: {
+			direction: {
+				type: String,
+				default: "below"
+			},
+			width: {
+				type: Number,
+				default: 100
+			},
+			height: {
+				type: String,
+				default: "fit-content"
+			},
+			is_close: {
+				type: Boolean,
+				default: true
+			},
+			is_mask: {
+				type: Boolean,
+				default: true
+			},
+			maskFun: {
+				type: Boolean,
+				default: true
+			}
+		},
+		data() {
+			return {
+				open: false
+			};
+		},
+		methods: {
+			show() {
+				this.open = true;
+				this.$emit("watchOpen")
+			},
+			close(e) {
+				if (e == 1 && !this.maskFun) return;
+				this.open = false;
+				this.$emit("watchClose")
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	view {
+		box-sizing: border-box;
+	}
+
+	.centers {
+		width: 100vw;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		// height: 100%;
+		position: fixed;
+		top: 0;
+		left: 0;
+		right: 0;
+		bottom: 0;
+	}
+
+	.product-window {
+		position: fixed;
+		background-color: #fff;
+		z-index: 77;
+		border-radius: 32rpx 32rpx 0rpx 0rpx;
+		padding: 50rpx 30rpx;
+		overflow-y: scroll;
+		transition: all .3s cubic-bezier(.25, .5, .5, .9);
+		-webkit-transition: all .3s cubic-bezier(.25, .5, .5, .9);
+	}
+
+	.below {
+		left: 0;
+		bottom: 0;
+		transform: translate3d(0, 100%, 0);
+		-webkit-transform: translate3d(0, 100%, 0);
+	}
+
+	.up {
+		top: 0;
+		left: 0;
+		transform: translate3d(0, -100%, 0);
+		-webkit-transform: translate3d(0, -100%, 0);
+	}
+
+	.right {
+		right: 0;
+		top: 0;
+		height: 100%;
+		transform: translate3d(100vw, 0, 0);
+		-webkit-transform: translate3d(100vw, 0, 0);
+	}
+
+	.left {
+		left: 0;
+		top: 0;
+		height: 100%;
+		transform: translate3d(-100vw, 0, 0);
+		-webkit-transform: translate3d(-100vw, 0, 0);
+	}
+
+	.center {
+		position: static;
+		-webkit-position: static;
+		transform: translate3d(-100vw, -100%, 0);
+		-webkit-transform: translate3d(-100vw, -100%, 0);
+	}
+
+	.product-window.on {
+		transform: translate3d(0, 0, 0);
+		-webkit-transform: translate3d(0, 0, 0);
+	}
+
+	.mask {
+		position: fixed;
+		top: 0;
+		left: 0;
+		right: 0;
+		bottom: 0;
+		background-color: #000;
+		opacity: .5;
+		z-index: 5;
+	}
+
+
+	.product-window .iconfont {
+		position: fixed;
+		right: 30rpx;
+		top: 20rpx;
+		font-size: 35rpx;
+		color: #8a8a8a;
+		width: 50rpx;
+		height: 50rpx;
+	}
+
+	//兼容h5顶部导航空位
+	// #ifndef MP
+	.product-window .iconfont-h5 {
+		top: 100rpx;
+	}
+
+	// #endif
+</style>

+ 136 - 0
components/pop/count.vue

@@ -0,0 +1,136 @@
+<template>
+	<view class="liet">
+		<view class="title">
+			<u-icon name="close" @click="close()"></u-icon>
+			<view class="font-thirty-two font-color3" style="margin: 0 auto; font-weight: 600;">
+				商品数量
+			</view>
+		</view>
+		<view class="border" style="padding-top: 80rpx;">
+			<!-- <view class="font-twenty font-color3" style="margin: 20rpx 0 50rpx;">
+				商品折扣
+			</view> -->
+			<!-- <u-input v-model="value" :type="type" :border="border" /> -->
+			<!-- <input type="number" v-model="value"  placeholder="请输入数字" /> -->
+			<input v-model="value" class="input" border="true" height="100" placeholder="请输入数量" />
+		</view>
+		<view class="footer11">
+			<button type="default" class="btn" @click="submit">确认</button>
+			<button type="default" class="btnClose" @click="close">返回</button>
+		</view>
+		<u-toast ref="uToast" />
+	</view>
+	
+</template>
+
+<script>
+	export default{
+		data(){
+			return{
+				value:'',
+				type: 'number',
+				money: null,
+				index: null,
+				goodsRatePrice: null,
+				flag: false,
+			}
+		},
+		methods:{
+			close(){
+				this.$emit('close')
+			},
+			shows(money,goodsRatePrice,index){
+				this.flag = false;
+				this.money = money;
+				this.index = index;
+				this.goodsRatePrice = goodsRatePrice;
+			},
+			show(){
+				this.flag = true;
+			},
+			submit(){
+				if(this.value === ''){
+					this.$refs.uToast.show({
+						title: '请输入数量!',
+						type: 'default',
+					})
+				}else{
+					if(this.$u.test.number(this.value)){
+						console.log(this.value)
+						this.$emit('add', this.value,this.money, this.goodsRatePrice,this.index);
+						this.close();
+					}else{
+						this.$refs.uToast.show({
+							title: '必须是数字,请重新输入!',
+							type: 'default',
+						})
+					}
+				}
+				// const num = /^[0-9]*$/;
+				// if (num.test(this.value)) {
+				// 	this.$emit('add', this.value);
+				// 	this.close()
+				// }else{
+				// 	this.$refs.uToast.show({
+				// 		title: '必须是数字,请重新输入!',
+				// 		type: 'default',
+				// 	})
+				// }
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.input{
+		width: calc(100% - 30rpx);
+		height: 100rpx;
+		border: 2rpx solid #333333;
+		border-radius: 24rpx;
+		padding-left: 30rpx;
+	}
+	.liet{
+		padding: 30rpx;
+		background: #fff;
+		min-height: 100vh;
+	}
+	.title {
+		display: flex;
+		align-items: center;
+		text-align: center;
+		.close {
+			width: 50rpx;
+			height: 50rpx;
+		}
+	}
+	
+	.border {
+		border: 2rpx #E0E0E0 solid;
+		border-left: none;
+		border-right: none;
+		margin: 30rpx 0;
+	
+		.area {
+			height: 250rpx;
+		}
+	}
+	.footer11{
+		display: flex;
+		justify-content: space-between;
+	}
+	.btnClose{
+		width: 330rpx;
+		margin: 50rpx auto;
+		color: #2E4F1C;
+		background: #fff;
+		border-radius: 48rpx;
+		border: 2rpx #2E4F1C solid;
+	}
+	.btn {
+		width: 330rpx;
+		margin: 50rpx auto;
+		color: #ffffff;
+		background: #2E4F1C;
+		border-radius: 48rpx;
+	}
+</style>

+ 81 - 0
components/pop/money.vue

@@ -0,0 +1,81 @@
+<template>
+	<view>
+		<view class="title">
+			<u-icon name="close" @click="close()"></u-icon>
+			<view class="font-thirty-two font-color3" style="margin: 0 auto;">
+				消费金额
+			</view>
+		</view>
+		<view class="border">
+			<view class="font-twenty font-color3" style="margin: 20rpx 0 50rpx;">
+				消费金额
+			</view>
+			<!-- <u-input v-model="value" :type="type" :border="border" /> -->
+			<!-- <input type="number" v-model="value"  placeholder="请输入数字" /> -->
+			<input v-model="value" placeholder="请输入数字" />
+		</view>
+		<button type="default" class="btn" @click="submit">确认</button>
+		<u-toast ref="uToast" />
+	</view>
+	
+</template>
+
+<script>
+	export default{
+		data(){
+			return{
+				value:'',
+				type: 'number',
+				border: false
+			}
+		},
+		methods:{
+			close(){
+				this.$emit('close')
+			},
+			submit(){
+				const num = /^[0-9]*$/;
+				if (num.test(this.value)) {
+					this.$emit('add', this.value);
+					this.close()
+				}else{
+					this.$refs.uToast.show({
+						title: '必须是数字,请重新输入!',
+						type: 'default',
+					})
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.title {
+		display: flex;
+		align-items: center;
+		text-align: center;
+		.close {
+			width: 50rpx;
+			height: 50rpx;
+		}
+	}
+	
+	.border {
+		border: 2rpx #E0E0E0 solid;
+		border-left: none;
+		border-right: none;
+		margin: 30rpx 0;
+	
+		.area {
+			height: 250rpx;
+		}
+	}
+	
+	.btn {
+		width: 560rpx;
+		margin: 50rpx auto;
+		color: #ffffff;
+		background: #2E4F1C;
+		border-radius: 48rpx;
+	}
+</style>

+ 88 - 0
components/pop/pop.vue

@@ -0,0 +1,88 @@
+<template>
+	<view>
+		<view class="title">
+			<u-icon name="close" @click="close()"></u-icon>
+			<view class="font-thirty-two font-color3" style="margin-left: 180rpx;">
+				原因说明
+			</view>
+		</view>
+		<view class="border">
+			<view class="font-twenty font-color3" style="margin: 20rpx 0 10rpx;">
+				原因
+			</view>
+			<textarea value="" placeholder="请输入原因" class="area" v-model="remark" />
+		</view>
+		<button type="default" class="btn" @click="submit">确认</button>
+		<u-toast ref="uToast" />
+	</view>
+</template>
+
+<script>
+	export default{
+		data(){
+			return{
+				remark:'',
+				type: null
+			}
+		},
+		methods:{
+			show(type){
+				this.type = type;
+			},
+			close(){
+				this.remark = '';
+				this.$emit('close')
+			},
+			submit(){
+				if(this.type === '不通过'){
+					if(this.remark === ''){
+						this.$refs.uToast.show({
+							title: '请输入原因!',
+							type: 'default',
+						})
+						return
+					}else{
+						this.$emit('noPass', this.remark);
+						this.$emit('close');
+						this.remark = '';
+					}
+				}else{
+					this.$emit('noPass', this.remark);
+					this.$emit('close');
+					this.remark = '';
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.title {
+		display: flex;
+		align-items: center;
+		text-align: center;
+		.close {
+			width: 50rpx;
+			height: 50rpx;
+		}
+	}
+	
+	.border {
+		border: 2rpx #E0E0E0 solid;
+		border-left: none;
+		border-right: none;
+		margin: 30rpx 0;
+	
+		.area {
+			height: 200rpx;
+		}
+	}
+	
+	.btn {
+		width: 560rpx;
+		margin: 0 auto;
+		color: #ffffff;
+		background: #2E4F1C;
+		border-radius: 48rpx;
+	}
+</style>

+ 148 - 0
components/pop/zhe.vue

@@ -0,0 +1,148 @@
+<template>
+	<view class="liet">
+		<view class="title">
+			<u-icon name="close" @click="close()"></u-icon>
+			<view class="font-thirty-two font-color3" style="margin: 0 auto; font-weight: 600;">
+				调整折扣
+			</view>
+		</view>
+		<view class="border">
+			<view style="text-align: center; height: 130rpx; padding-top: 30rpx;" class="font-color5 font-twenty;" v-if="flag">*此价格是在最终的基础上进行整体折扣调整</view>
+			<view v-else style="padding-top: 100rpx;"></view>
+			<!-- <view class="font-twenty font-color3" style="margin: 20rpx 0 50rpx;">
+				商品折扣
+			</view> -->
+			<!-- <u-input v-model="value" :type="type" :border="border" /> -->
+			<!-- <input type="number" v-model="value"  placeholder="请输入数字" /> -->
+			<input v-model="value" class="input" border="true" height="100" placeholder="请输入折扣" />
+		</view>
+		<view class="footer11">
+			<button type="default" class="btn" @click="submit">确认</button>
+			<button type="default" class="btnClose" @click="close">返回</button>
+		</view>
+		<u-toast ref="uToast" />
+	</view>
+	
+</template>
+
+<script>
+	export default{
+		data(){
+			return{
+				value:'',
+				type: 'number',
+				money: null,
+				index: null,
+				goodsRatePrice: null,
+				num: null,
+				flag: false,
+			}
+		},
+		methods:{
+			close(){
+				this.$emit('close')
+			},
+			shows(money,goodsRatePrice,num, index){
+				this.flag = false;
+				this.money = money;
+				this.index = index;
+				this.num = num;
+				this.goodsRatePrice = goodsRatePrice;
+			},
+			show(){
+				this.flag = true;
+			},
+			submit(){
+				if(this.$u.test.range(this.value, [0, 1])){
+					if(this.flag){
+						this.$emit('total', this.value);
+						this.close();
+					}else{
+						if(this.value.charAt(0) === '.'){
+							this.value = '0'+ this.value
+						}
+						if(this.value < this.money){
+							console.log('***', this.value.charAt(0))
+							this.$emit('add', this.value,this.goodsRatePrice,this.num, this.index);
+							this.close();
+						}else{
+							this.$refs.uToast.show({
+								title: '必须小于当前优惠,请重新输入!',
+								type: 'default',
+							})
+						}
+					}
+				}else{
+					this.$refs.uToast.show({
+						title: '必须是小数,请重新输入!',
+						type: 'default',
+					})
+				}
+				// const num = /^[0-9]*$/;
+				// if (num.test(this.value)) {
+				// 	this.$emit('add', this.value);
+				// 	this.close()
+				// }else{
+				// 	this.$refs.uToast.show({
+				// 		title: '必须是数字,请重新输入!',
+				// 		type: 'default',
+				// 	})
+				// }
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.input{
+		width: calc(100% - 30rpx);
+		height: 100rpx;
+		border: 2rpx solid #333333;
+		border-radius: 24rpx;
+		padding-left: 30rpx;
+	}
+	.liet{
+		padding: 30rpx;
+		background: #fff;
+		min-height: 100vh;
+	}
+	.title {
+		display: flex;
+		align-items: center;
+		text-align: center;
+		.close {
+			width: 50rpx;
+			height: 50rpx;
+		}
+	}
+	
+	.border {
+		border: 2rpx #E0E0E0 solid;
+		border-left: none;
+		border-right: none;
+		margin: 30rpx 0;
+	
+		.area {
+			height: 250rpx;
+		}
+	}
+	.footer11{
+		display: flex;
+		justify-content: space-between;
+	}
+	.btnClose{
+		width: 330rpx;
+		margin: 50rpx auto;
+		color: #2E4F1C;
+		background: #fff;
+		border-radius: 48rpx;
+		border: 2rpx #2E4F1C solid;
+	}
+	.btn {
+		width: 330rpx;
+		margin: 50rpx auto;
+		color: #ffffff;
+		background: #2E4F1C;
+		border-radius: 48rpx;
+	}
+</style>

+ 9 - 0
hjt_erdao_WeChatApplet.iml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="WEB_MODULE" version="4">
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$" />
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>

+ 9 - 0
hjt_erdao_applet.iml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="WEB_MODULE" version="4">
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$" />
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>

BIN
lib/__MACOSX/._amap-wx.130.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 31 - 0
lib/amap-wx.130.js


+ 22 - 0
main.js

@@ -0,0 +1,22 @@
+import Vue from 'vue'
+import App from './App'
+// 引入全局uView
+import uView from 'uview-ui';
+import store from './store/index'
+Vue.use(uView);
+//弹窗
+import mingPop from '@/components/ming-pop/ming-pop.vue'
+Vue.component("ming-pop",mingPop)
+
+import pop from '@/components/pop/pop.vue'
+Vue.component("pop",pop)
+
+Vue.config.productionTip = false
+Vue.prototype.$store = store
+App.mpType = 'app'
+
+const app = new Vue({
+    ...App,
+	store
+})
+app.$mount()

+ 94 - 0
manifest.json

@@ -0,0 +1,94 @@
+{
+    "name" : "soldier",
+    "appid" : "__UNI__88A955E",
+    "description" : "",
+    "versionName" : "1.0.0",
+    "versionCode" : "100",
+    "transformPx" : false,
+    /* 5+App特有相关 */
+    "app-plus" : {
+        "usingComponents" : true,
+        "nvueCompiler" : "uni-app",
+        "compilerVersion" : 3,
+        "splashscreen" : {
+            "alwaysShowBeforeRender" : true,
+            "waiting" : true,
+            "autoclose" : true,
+            "delay" : 0
+        },
+        /* 模块配置 */
+        "modules" : {
+            "Maps" : {}
+        },
+        /* 应用发布信息 */
+        "distribute" : {
+            /* android打包配置 */
+            "android" : {
+                "permissions" : [
+                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>",
+                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
+                    "<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
+                    "<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
+                    "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
+                    "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
+                    "<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
+                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
+                    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
+                ]
+            },
+            /* ios打包配置 */
+            "ios" : {},
+            /* SDK配置 */
+            "sdkConfigs" : {
+                "maps" : {
+                    "amap" : {
+                        "appkey_ios" : "1594093e47ac518e8268b7852a0c7319",
+                        "appkey_android" : "10ecb85f196cb454ccb10ef9c6984635"
+                    }
+                }
+            }
+        }
+    },
+    /* 快应用特有相关 */
+    "quickapp" : {},
+    /* 小程序特有相关 */
+    "mp-weixin" : {
+        "appid" : "wx79abaa2be02ef711",
+        "setting" : {
+            "urlCheck" : false,
+            "postcss" : true,
+            "minified" : true
+        },
+        "usingComponents" : true,
+        "permission" : {
+            "scope.userLocation" : {
+                "desc" : "你的位置信息将用于小程序计算店铺距离"
+            }
+        }
+    },
+    "mp-alipay" : {
+        "usingComponents" : true
+    },
+    "mp-baidu" : {
+        "usingComponents" : true
+    },
+    "mp-toutiao" : {
+        "usingComponents" : true
+    },
+    "uniStatistics" : {
+        "enable" : false
+    }
+}

+ 336 - 0
pages.json

@@ -0,0 +1,336 @@
+{
+	"easycom": {
+		"^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue"
+	},
+	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
+		{
+			"path": "pages/index/index",
+			"style": {
+				"navigationStyle": "custom",
+				"enablePullDownRefresh":true//开启下拉刷新
+			}
+		},
+		{
+			"path": "pages/login/index",
+			"style": {
+				"navigationStyle": "custom"
+			}
+		},
+		{
+			"path": "pages/soldier/home/goods",
+			"style": {
+				"navigationBarTitleText": "商品详情"
+			}
+		},
+		{
+			"path": "pages/soldier/home/shop",
+			"style": {
+				"navigationBarTitleText": "店铺详情",
+				"enablePullDownRefresh":true//开启下拉刷新
+			}
+		},
+		{
+			"path": "pages/soldier/home/yxDetails",
+			"style": {
+				"navigationBarTitleText": "服务协议"
+			}
+		},
+		{
+			"path": "pages/soldier/home/map",
+			"style": {
+				"navigationBarTitleText": "拥军联盟企业"
+			}
+		},
+		{
+			"path": "pages/soldier/user/index",
+			"style": {
+				"navigationBarTitleText": "我的"
+			}
+		},
+		{
+			"path": "pages/soldier/user/add",
+			"style": {
+				"navigationBarTitleText": "添加优抚对象信息"
+			}
+		},{
+			"path": "pages/soldier/user/erweima",
+			"style": {
+				"navigationBarTitleText": "二维码页面"
+			}
+		},{
+			"path": "pages/soldier/user/scanning",
+			"style": {
+				"navigationBarTitleText": "扫一扫"
+			}
+		},
+		{
+			"path": "pages/soldier/home/index",
+			"style": {
+				"navigationStyle": "custom"
+			}
+		},
+		{
+			"path": "pages/soldier/home/union",
+			"style": {
+				"navigationBarTitleText": "拥军联盟企业",
+				"enablePullDownRefresh":true//开启下拉刷新
+			}
+		},
+		{
+			"path": "pages/soldier/home/identity",
+			"style": {
+				"navigationBarTitleText": "身份认证"
+			}
+		},
+		{
+			"path": "pages/soldier/home/detail",
+			"style": {
+				"navigationBarTitleText": "详情"
+			}
+		}, {
+			"path": "pages/soldier/home/policy",
+			"style": {
+				"navigationBarTitleText": "列表",
+				"enablePullDownRefresh":true//开启下拉刷新
+			}
+		}, 
+		{
+			"path": "pages/soldier/news/index",
+			"style": {
+				"navigationBarTitleText": "消息"
+			}
+		},  {
+			"path": "pages/menu/index",
+			"style": {
+				"navigationBarTitleText": "消息",
+				"enablePullDownRefresh":true//开启下拉刷新
+			}
+		},
+		{
+			"path":"pages/manage/modifyInfo/addToOrder",
+			"style": {
+				"navigationBarTitleText": "添加商品"
+			}
+		},
+		{
+			"path":"pages/manage/modifyInfo/modifyInfo",
+			"style": {
+				"navigationBarTitleText": "修改店铺信息"
+			}
+		},
+		{
+			"path": "pages/manage/account/accountExamine",
+			"style": {
+				"navigationBarTitleText": "账户审核",
+				"enablePullDownRefresh":true//开启下拉刷新
+			}
+		},
+		{
+			"path": "pages/manage/merchant/merchantExamine",
+			"style": {
+				"navigationBarTitleText": "商户审核"
+			}
+		},
+		{
+			"path": "pages/merchant/home/index",
+			"style": {
+				"navigationStyle": "custom"
+			}
+		},
+		{
+			"path": "pages/merchant/home/code",
+			"style": {
+				"navigationBarTitleText": "扫一扫"
+			}
+		},
+		{
+			"path": "pages/merchant/home/account",
+			"style": {
+				"navigationBarTitleText": "商品结算"
+			}
+		},
+		{
+			"path": "pages/merchant/home/record",
+			"style": {
+				"navigationBarTitleText": "优惠记录"
+			}
+		},
+		{
+			"path": "pages/merchant/home/data",
+			"style": {
+				"navigationBarTitleText": "军人信息"
+			}
+		},
+		{
+			"path": "pages/manage/account/adminData",
+			"style": {
+				"navigationBarTitleText": "军人信息"
+			}
+		},
+		{
+			"path": "pages/merchant/home/modify",
+			"style": {
+				"navigationBarTitleText": "店铺信息"
+			}
+		},
+		{
+			"path": "pages/merchant/home/shop",
+			"style": {
+				"navigationBarTitleText": "店铺商品",
+				"enablePullDownRefresh":true//开启下拉刷新
+			}
+		},
+		{
+			"path": "pages/merchant/examine/goods/index",
+			"style": {
+				"navigationBarTitleText": "商品信息"
+			}
+		},
+		{
+			"path": "pages/merchant/examine/shops/merchantExamine",
+			"style": {
+				"navigationBarTitleText": "店铺信息"
+			}
+		},
+		{
+			"path": "pages/merchant/goods/goods",
+			"style": {
+				"navigationBarTitleText": "商品管理",
+				"enablePullDownRefresh":true//开启下拉刷新
+			}
+		},
+		{
+			"path": "pages/merchant/goods/add",
+			"style": {
+				"navigationBarTitleText": "添加商品"
+			}
+		},
+		{
+			"path": "uview-ui/components/u-avatar-cropper/u-avatar-cropper",
+			"style": {
+				"navigationBarTitleText": "图片",
+				"navigationBarBackgroundColor": "#000000"
+			}
+		},
+		
+		//第三版新页面
+		//第一模块新增页面
+		{
+			"path": "pages/soldier/home/folder1/index",
+			"style": {
+				"navigationBarTitleText": "惠军通"
+			}
+		},
+		{
+			"path": "pages/soldier/home/folder1/serviceStation",
+			"style": {
+				"navigationBarTitleText": "服务站",
+				"enablePullDownRefresh":true//开启下拉刷新
+			}
+		},
+		//第二模块新增页面
+		{
+			"path": "pages/soldier/home/folder2/index",
+			"style": {
+				"navigationBarTitleText": "惠军通"
+			}
+		},
+		//第三模块新增页面
+		{
+			"path": "pages/soldier/home/folder3/index",
+			"style": {
+				"navigationBarTitleText": "惠军通"
+			}
+		},
+		//第四模块新增页面
+		{
+			"path": "pages/soldier/home/folder4/index",
+			"style": {
+				"navigationBarTitleText": "惠军通"
+			}
+		},
+		//第五模块新增页面
+		{
+			"path": "pages/soldier/home/folder5/index",
+			"style": {
+				"navigationBarTitleText": "惠军通"
+			}
+		},
+		//第六模块新增页面
+		{
+			"path": "pages/soldier/home/folder6/index",
+			"style": {
+				"navigationBarTitleText": "咨询问答"
+			}
+		},
+		//第七模块新增页面
+		{
+			"path": "pages/soldier/home/folder7/index",
+			"style": {
+				"navigationStyle": "custom"
+			}
+		},
+		//管理端军人检索
+		{
+			"path": "pages/manage/account/map",
+			"style": {
+				"navigationBarTitleText": "退役军人检索"
+			}
+		},
+		{
+			"path": "pages/manage/account/retrieval",
+			"style": {
+				"navigationBarTitleText": "退役军人检索"
+			}
+		}
+		
+	],
+	"globalStyle": {
+		"navigationBarTextStyle": "white",
+		"navigationBarTitleText": "惠军通",
+		"navigationBarBackgroundColor": "#2E4F1C",
+		"backgroundColor": "#F9F9F9"
+	},
+	"tabBar": {
+		"color": "#CCCCCC",
+		"selectedColor": "#2E4F1C",
+		"borderStyle": "white",
+		"backgroundColor": "#FFFFFF",
+		"height": "50px",
+		"fontSize": "10px",
+		"iconWidth": "24px",
+		"spacing": "3px",
+		"list": [
+			{
+				"pagePath": "pages/index/index"
+				// "iconPath": "static/home.png",
+				// "selectedIconPath": "static/home-active.png",
+				// "text": "首页"
+			},
+			{
+				"pagePath": "pages/menu/index"
+				// "iconPath": "static/news.png",
+				// "selectedIconPath": "static/news.png",
+				// "text": "消息"
+			},
+			{
+				"pagePath": "pages/soldier/user/index"
+				// "iconPath": "static/user-active.png",
+				// "selectedIconPath": "static/user-active.png",
+				// "text": "我的"
+			},
+			// {
+			// 	"pagePath": "pages/merchant/home/index"
+			// },
+			{
+				"pagePath": "pages/merchant/goods/goods"
+			},
+			// {
+			// 	"pagePath": "pages/manage/merchant/merchantExamine"
+			// },
+			{
+				"pagePath": "pages/manage/account/accountExamine"
+			}
+		]
+	}
+}

+ 95 - 0
pages/index/index.vue

@@ -0,0 +1,95 @@
+<template>
+	<view class="content main-bg">
+		<soldier ref="soldier" v-if="type === '2' || type === '3'"></soldier>
+		<!-- <soldier v-if="type === '3'"></soldier> -->
+		<merchant ref="merchant" v-if="type === '5'"></merchant>
+		<merchantExamine ref="merchantExamine" v-if="type === '4'"></merchantExamine>
+	</view>
+</template>
+<script>
+	import soldier from '@/pages/soldier/home/index'
+	import merchant from '@/pages/merchant/home/index'
+	import merchantExamine from '@/pages/manage/merchant/merchantExamine'
+	export default {
+		components:{
+			soldier,
+			merchant,
+			merchantExamine
+		},
+		data() {
+			return {
+				type: '2'
+			}
+		},
+		onLoad() {
+			uni.startPullDownRefresh();
+		},
+		onPullDownRefresh() {
+			let role = uni.getStorageSync('role');
+			if(role){
+				this.type = role;
+			}
+			if(this.type === '1'){
+				this.type = '5'
+				this.handleShow();
+			}else if(this.type === '4'){
+				this.handleManage();
+			}
+			setTimeout(function () {
+				uni.stopPullDownRefresh();
+			}, 1000);
+		},
+		onShow() {
+			let role = uni.getStorageSync('role');
+			if(role){
+				this.type = role;
+			}
+			if(this.type === '1'){
+				this.type = '5'
+				this.handleShow();
+			}else if(this.type === '4'){
+				this.handleManage();
+			}else{
+				console.log('onShow handleSoldier ')
+				this.handleSoldier();
+			}
+		},
+		methods: {
+			handleShow(){
+				let userInfo = uni.getStorageSync('userInfo');
+				if(userInfo.nickName === "null"){
+					uni.redirectTo({
+						url: '/pages/merchant/home/modify'
+					})
+				}else{
+					let that = this;
+					this.$nextTick(function(){
+						that.$refs.merchant.show();
+					})
+				}
+			},
+			handleManage(){
+				this.type = '4';
+				let that = this;
+				this.$nextTick(function(){
+					that.$refs.merchantExamine.show("qwe")
+				})
+			},
+			handleSoldier(){
+				console.log('this.type', this.type)
+				console.log('this.$refs.soldier', this.$refs.soldier)
+				let that = this;
+				this.$nextTick(function(){
+					that.$refs.soldier.showSoldier()
+				})
+			}
+		}
+	}
+</script>
+
+<style>
+	.content {
+		width: 100%;
+		height: auto;
+	}
+</style>

+ 378 - 0
pages/login/index.vue

@@ -0,0 +1,378 @@
+<template>
+	<view class="login main-bg shadow">
+		<view class="header header-long-bg">
+			<view class="header-text font-forty font-color1">Hi</view>
+			<view class="header-text font-forty font-color1">惠军通欢迎您</view>
+			<image class="header-img" src="../../static/logo9.png"></image>
+			<!-- <image class="header-title" src="../../static/logo5.png"></image> -->
+			<view class="login-form">
+				<view class="login-form-title font-forty font-color2">
+					<!-- 登录 -->
+					<u-tabs 
+						:list="tabsList" 
+						:is-scroll="false"
+						:current="current"
+						font-size="40"
+						active-color="#2E4F1C"
+						inactive-color="#2E4F1C"
+						bar-width="50"
+						bar-height="8"
+						@change="change"></u-tabs>
+				</view>
+				<view class="login-form-view">
+					<u-form :model="form" ref="uForm" :rules="rules">
+						<u-form-item 
+							:leftIconStyle="{color: '#2E4F1C', fontSize: '40rpx'}"
+							left-icon="account-fill" 
+							label-width="180" 
+							:label-position="labelPosition" 
+							prop="userName">
+							<u-input 
+								v-model="form.userName" 
+								placeholder-style="color: #2E4F1C;"
+								:placeholder="namePlaceholder" />
+						</u-form-item>
+						<u-form-item
+							prop="userPWD"
+							label-width="180" 
+							:label-position="labelPosition">
+							<view class="form-item">
+								<image src="../../static/idcard.png" class="form-img"></image>
+								<u-input 
+									v-model="form.userPWD" 
+									placeholder-style="color: #2E4F1C;"
+									:type="type11"
+									:placeholder="pwdPlaceholder" />
+							</view>
+						</u-form-item>
+						<u-form-item :label-position="labelPosition" v-if="radioShow">
+							<u-radio-group v-model="radio" @change="radioGroupChange" :wrap="radioCheckWrap" active-color="#2E4F1C">
+								<u-radio shape="circle" v-for="(item, index) in radioList" key="index" :name="item.id">{{ item.name }}</u-radio>
+							</u-radio-group>
+						</u-form-item>
+					</u-form>
+					<view class="font-twenty-two font-color2" style="text-align: center;" @click="gotoDetails">请认真阅读平台服务协议《服务及隐私协议》使用平台</view>
+					<view @click="submit" class="form-submit">立即登录</view>
+				</view>
+			</view>
+		</view>
+		<u-toast ref="uToast" />
+	</view>
+</template>
+
+
+<script>
+import { mapState, mapMutations } from 'vuex';
+import server from "@/api/index";
+export default {
+	components: {},
+	data() {
+		return {
+			gotoAdd: null,
+			person_id: null,
+			type11: 'text',
+			labelPosition: 'left',
+			namePlaceholder: '',
+			pwdPlaceholder: '',
+			radioCheckWrap: false,
+			tabsList:[],
+			radioShow: false,
+			radioList: [
+				{
+					name: '军人',
+					id: '2',
+					checked: true,
+					disabled: false
+				},
+				{
+					name: '优抚对象',
+					id: '3',
+					checked: false,
+					disabled: false
+				},
+				// {
+				// 	name: '商铺',
+				// 	id: '1',
+				// 	checked: false,
+				// 	disabled: false
+				// },
+				// {
+				// 	name: '管理员',
+				// 	id: '4',
+				// 	checked: false,
+				// 	disabled: false
+				// }
+			],
+			radio: '2',
+			type: '2',
+			current: 0,
+			form: {
+				userName: '',
+				userPWD: '',
+				type: ''
+			},
+			rules: {
+				userName: [
+					{ 
+						required: true, 
+						message: '请输入!', 
+						trigger: ['change','blur'],
+					}
+				],
+				userPWD: [
+					{	
+						required: true, 
+						message: '请输入!', 
+						trigger: ['change','blur']
+					}
+				]
+			}
+		}
+	},
+	onReady() {
+		this.$refs.uForm.setRules(this.rules);
+	},
+	onLoad(e) {
+		this.person_id = e.id;
+		console.log('e.type', e.type)
+		if(e.type){
+			this.gotoAdd = e.type
+		}
+		if(e.id === '2'){
+			this.tabsList=[{name: '登录'}, {name: '注册'}];
+			this.radioShow = true;
+		}else{
+			this.tabsList=[{name: '登录'}];
+			this.radioShow = false;
+		}
+		this.radioGroupChange(e.id);
+	},
+	onShow() {
+		this.current =  0;
+		// this.radioGroupChange('军人')
+	},
+	methods:{
+		...mapMutations(['setRole']),
+		change(index) {
+			console.log(index)
+			this.current = index;
+			if(index === 1){
+				uni.navigateTo({
+					url: '/pages/soldier/home/identity?id=' + '123'
+				})
+			}
+		},
+		gotoDetails(){
+			uni.navigateTo({
+				url: '/pages/soldier/home/yxDetails'
+			})
+		},
+		// radio选择发生变化
+		radioGroupChange(e) {
+			this.type = e;
+			// this.radio =e;
+			if(e === '2' || e === '3'){
+				this.namePlaceholder = '请输入姓名';
+				this.pwdPlaceholder = '请输入身份证号后四位';
+				this.type11 = 'text';
+			}else if(e === '1' || e === '4'){
+				this.namePlaceholder = '请输入账号';
+				this.pwdPlaceholder = '请输入密码';
+				this.type11 = 'password';
+			}
+		},
+		submit() {
+			let _this = this;
+			this.$refs.uForm.validate(valid => {
+				if (valid) {
+					if(_this.type === '2' || _this.type === '3'){
+						console.log('this.form.userPWD', _this.form.userPWD.length)
+						if(_this.form.userPWD.length === 4){
+							uni.showLoading({
+								title: '登录中...',
+								mask: true
+							});
+							this.loginFn()
+						}else{
+							_this.$refs.uToast.show({
+								title: '请输入身份证号后四位!',
+								type: 'default',
+							})
+						}
+					}else{
+						uni.showLoading({
+							title: '登录中...',
+							mask: true
+						});
+						this.loginFn()
+					}
+				} else {
+				}
+			});
+		},
+		loginFn(){
+			let _this = this
+			this.form.type = this.type
+			server.login(this.form).then(res => {
+				if(res.code === 200){
+					uni.hideLoading();
+					let type = ''
+					uni.setStorageSync('role', res.data.type);//存入权限
+					_this.setRole(res.data.type);
+					uni.setStorage({
+						key: "userInfo",
+						data: res.data,
+						success: () => {
+							if(this.gotoAdd === 'add'){
+								uni.redirectTo({
+									url: '/pages/soldier/user/add'
+								});
+							}else{
+								uni.switchTab({
+									url: '/pages/index/index'
+								})
+							}
+						}
+					});
+				}else if(res.code === 500){
+					uni.hideLoading();
+					if(res.data === "4"){
+						// if(this.type === '军人'){
+						// 	uni.navigateTo({
+						// 		url: '/pages/soldier/home/identity?name=' + this.form.userName + '&pwd=' + this.form.userPWD
+						// 	})
+						// }else{
+							_this.$refs.uToast.show({
+								title: res.msg,
+								type: 'default',
+							})
+						// }
+						
+					}else if(res.data === "1"){
+						_this.$refs.uToast.show({
+							title: res.msg,
+							type: 'default',
+						})
+					}
+				}else{
+					_this.$refs.uToast.show({
+						title: '登录失败,请重新输入!',
+						type: 'default',
+					})
+				}
+			}).catch(() => {})
+		}
+	}
+}
+</script>
+
+<style lang="scss" scoped>
+	/deep/ .u-form-item__message{
+		padding-left: 50rpx!important;
+	}
+	/deep/ .u-input__input{
+		color: #2E4F1C!important;
+		font-size: 28rpx;
+		font-family: PingFangSC-Regular, PingFang SC;
+		font-weight: 400;
+	}
+	/deep/ .u-border, .u-border-bottom, .u-border-left, .u-border-right, .u-border-top, .u-border-top-bottom{
+		
+	}
+	/deep/ .u-form-item{
+		display: -webkit-box;
+		display: -webkit-flex;
+		display: flex;
+		-webkit-box-orient: horizontal;
+		-webkit-box-direction: normal;
+		-webkit-flex-direction: row;
+		flex-direction: row;
+		box-sizing: border-box;
+		line-height: 96rpx;
+		-webkit-flex-direction: column;
+		flex-direction: column;
+		background: rgba(46, 79, 28, 0.05);
+		border-radius: 48rpx;
+		height: 96rpx;
+		margin-bottom: 60rpx;
+		padding-left: 30rpx!important;
+	}
+	.login{
+		width: 100%;
+		height: 100vh;
+		position: relative;
+		.header{
+			width: 100%;
+			height: 400rpx;
+			padding-top: 64rpx;
+			padding-left: 30rpx;
+			position: relative;
+			.header-text{
+				height: 96rpx;
+				line-height: 96rpx;
+			}
+			.header-img{
+				width:166.4rpx;
+				height:190.4rpx;
+				// height: 200rpx;
+				// border-radius: 64rpx;
+				// background-color: #FFFFFF;
+				position: absolute;
+				bottom: 90rpx;
+				right: 60rpx;
+				// box-shadow:4rpx 4rpx 300rpx #E6A23C;
+			}
+			.header-title{
+				width: 100rpx;
+				height: 30rpx;
+				position: absolute;
+				bottom: 70rpx;
+				right: 75rpx;
+			}
+			.login-form{
+				position: absolute;
+				top: 350rpx;
+				left: 30rpx;
+				width: calc(100% - 60rpx);
+				height: 975rpx;
+				background: #FFFFFF;
+				border-radius: 24rpx;
+				.login-form-title{
+					width: 100%;
+					height: 227rpx;
+					text-align: center;
+					padding-top: 55rpx;
+					letter-spacing: 2rpx;
+					font-weight: 600;
+				}
+				.login-form-view{
+					padding-left: 60rpx;
+					width: calc(100% - 60rpx);
+					height: 252rpx;
+					.form-item{
+						display: flex;
+						.form-img{
+							width: 40rpx;
+							height: 40rpx;
+							padding-top: 15rpx;
+							padding-right: 18rpx;
+						}
+					}
+					.form-submit{
+						margin-top: 60rpx;
+						width: 570rpx;
+						height: 96rpx;
+						background: linear-gradient(117deg, #5B873C 0%, #2E4F1C 100%);
+						border-radius: 49rpx;
+						font-size: 36rpx;
+						font-family: PingFangSC-Medium, PingFang SC;
+						font-weight: 500;
+						color: #fff;
+						text-align: center;
+						line-height: 96rpx;
+					}
+				}
+			}
+		}
+	}
+</style>

+ 299 - 0
pages/manage/account/accountExamine.vue

@@ -0,0 +1,299 @@
+<template>
+	<!-- 账户审核 -->
+	<view class="add main-bg">
+		<view class="search" @click="goto('/pages/manage/account/retrieval')">
+			<u-icon name="search" color="#2E4F1C" size="44"></u-icon>
+			<view class="search-text font-color2">退役军人检索</view>
+		</view>
+		<view class="sys-header">
+			<view class="sys" @click="goto('/pages/soldier/user/scanning?flag=true')"><!--/pages/soldier/user/scanning-->
+				<view class="icon">
+					<u-icon name="scan" color="#2E4F1C" size="88"></u-icon>
+				</view>
+				<view class="text font-twenty-four font-color3">扫一扫</view>
+			</view>
+			<view class="sys" @click="goto('/pages/soldier/user/add')">
+				<view class="icon">
+					<u-icon name="plus" color="#2E4F1C" size="78"></u-icon>
+				</view>
+				<view class="text font-twenty-four font-color3">添加优抚对象信息</view>
+			</view>
+			<view class="sys" @click="handleQuit">
+				<view class="icon">
+					<u-icon name="backspace" color="#2E4F1C" size="78"></u-icon>
+				</view>
+				<view class="text font-twenty-four font-color3">退出登录</view>
+			</view>
+		</view>
+		<view v-if="list.length > 0">
+			<view class="examine-content" v-for="(item,index) in list">
+				<view class="examine-dis">
+					<view class="number header-long-bg">{{index + 1}}</view>
+					<view style="margin-left: 30rpx;">
+						<view class="font-twenty font-color3">
+							姓名:{{item.veteransName}}
+						</view>
+						<view class="font-twenty font-color3" style="margin: 30rpx 0;">
+							身份证号:{{item.veteransIdcard}}
+						</view>
+						<view v-if="item.veteransPic">
+							<image :src="image(item.veteransPic)" mode="" class="examine-img" @tap="preAvatar(image(item.veteransPic))"></image>
+						</view>
+					</view>
+				</view>
+				<view class="button-dis">
+					<button type="default" class="btn" @click="handlePass(item.veteransId)">通过</button>
+					<button type="default" class="btn color" @click="show(item.veteransId)">不通过</button>
+				</view>
+			</view>
+		</view>
+		<view v-else style="padding-top: 200rpx;">
+			<u-empty text="暂无数据" mode="list"></u-empty>
+		</view>
+		<ming-pop ref="statement" direction="below" :is_mask="true" :width="100" height="50%" :maskFun="true">
+			<pop @close="close()" @noPass='handleNoPass'></pop>
+		</ming-pop>
+		<u-tabbar :list="tabBarList" :active-color="activeColor" :inactive-color="inactiveColor"
+					:border-top="borderTop"></u-tabbar>
+		<u-toast ref="uToast" />
+	</view>
+</template>
+
+<script>
+	import { mapGetters } from 'vuex'
+	import server from "@/api/index";
+	import http from '@/common/http.js'
+	export default {
+		data() {
+			return {
+				borderTop: false,
+				inactiveColor: '#ccc',
+				activeColor: '#2E4F1C',
+				list:[
+					{veteransName: 'qwe',
+					veteransIdcard:123,
+					veteransPic: '/static/img.png'
+					}
+				],
+				id: null,
+				userInfo: {}
+			}
+		},
+		computed: {
+			...mapGetters([
+				'tabBarList',
+				'role'
+			])
+		},
+		onLoad(){
+			uni.startPullDownRefresh();
+		},
+		onPullDownRefresh() {
+			this.userInfo = uni.getStorageSync('userInfo');
+			this.getAccountListFn();
+			setTimeout(function () {
+				uni.stopPullDownRefresh();
+			}, 1000);
+		},
+		onShow() {
+			this.userInfo = uni.getStorageSync('userInfo');
+			this.getAccountListFn();
+		},
+		methods: {
+			handleQuit(){
+				let _this = this;
+				uni.showModal({
+				    title: '提示',
+				    content: '确定退出登录吗?',
+				    success: function (res) {
+				        if (res.confirm) {
+							uni.removeStorage({
+							    key: 'userInfo',
+							    success: function (res) {
+									uni.removeStorage({
+										key: 'role',
+									});
+									uni.removeStorage({
+										key: 'token',
+									    success: function (res) {
+											uni.reLaunch({
+											    url: '/pages/index/index'
+											});
+									    }
+									});
+							    }
+							});
+				        } else if (res.cancel) {
+				            console.log('用户点击取消');
+				        }
+				    }
+				});
+			},
+			goto(url){
+				uni.navigateTo({
+					url
+				})
+			},
+			image(e) {
+				return http.webUrl + e
+			},
+			handlePass(id){
+				let _this = this;
+				uni.showModal({
+					title: '提示',
+					content: '确定通过审核吗?',
+					success: function (res) {
+						if (res.confirm) {
+							let params = {
+						        veteransId: id,
+						        veteransStatus: "2",
+						        veteransReviewer: _this.userInfo.userId
+							}
+							server.getAccountPass(params).then(res =>{
+									_this.$refs.uToast.show({
+										title: '通过成功!',
+										type: 'default',
+									});
+									_this.getAccountListFn()
+							})
+						} else if (res.cancel) {
+							console.log('用户点击取消');
+						}
+					}
+				});
+			},
+			handleNoPass(data){
+				let _this = this;
+				let params = {
+						remark: data,
+				        veteransId: this.id,
+				        veteransStatus: "3",
+				        veteransReviewer: _this.userInfo.userId,
+					}
+				server.getAccountPass(params).then(res =>{
+						_this.$refs.uToast.show({
+							title: '操作成功!',
+							type: 'default',
+						});
+						_this.getAccountListFn()
+				})
+			},
+			getAccountListFn(){
+				server.getAccountList({veteransStatus: "1"}).then(res =>{
+					this.list = [];
+					if(res){
+						this.list = res
+					}
+				})
+			},
+			show(id) {
+				this.$refs.statement.show();
+				this.id = id
+			},
+			close() {
+				this.$refs.statement.close();
+			},
+			// 预览图片
+			preAvatar(url) {
+				console.log(url)
+				wx.previewImage({
+					current: url, // 当前显示图片的 http 链接
+					urls: [url] ,// 需要预览的图片 http 链接列表
+				})
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.add{
+		width: 100%;
+		height: auto;
+		min-height: 100vh;
+		padding: 0rpx 30rpx 30rpx;
+		.search{
+			width: 100%;
+			height: 80rpx;
+			margin-top: 30rpx;
+			background-color: rgba(46, 79, 28, 0.13);
+			border-radius: 16rpx;
+			display: flex;
+			justify-content: center;
+			.search-text{
+				height: 80rpx;
+				padding-left: 16rpx;
+				line-height: 80rpx;
+				letter-spacing: 1rpx;
+			}
+		}
+	}
+	.sys-header{
+		padding-top: 30rpx;
+		display: flex;
+		justify-content: space-between;
+		.sys{
+			width: calc(33% - 10rpx);
+			height: 218rpx;
+			background: #FFFFFF;
+			border-radius: 24rpx;
+			padding: 30rpx 0rpx;
+			.icon{
+				height: 88rpx;
+				text-align: center;
+				image{
+					width: 88rpx;
+					height: 88rpx;
+				}
+			}
+			.text{
+				text-align: center;
+				height: 100rpx;
+				line-height: 100rpx;
+				letter-spacing: 2rpx;
+			}
+		}
+	}
+	.examine-content {
+		margin: 50rpx 0rpx 0;
+		padding: 30rpx;
+		background: rgba(46, 79, 28, 0.13);
+		opacity: 1;
+		border-radius: 16rpx;
+
+		.examine-dis {
+			display: flex;
+
+			.number {
+				width: 48rpx;
+				height: 48rpx;
+				color: #FFFFFF;
+				padding-top: 5rpx;
+				text-align: center;
+				border-radius: 50%;
+
+			}
+
+			.examine-img {
+				width: 360rpx;
+				height: 203rpx;
+				margin-left: 60rpx;
+			}
+		}
+
+		.button-dis {
+			display: flex;
+			margin-top: 30rpx;
+
+			.btn {
+				width: 300rpx;
+				background: #2E4F1C;
+				color: #FFFFFF;
+				border-radius: 48rpx;
+			}
+
+			.color {
+				background: #CC1019;
+			}
+		}
+	}
+</style>

+ 69 - 0
pages/manage/account/adminData.vue

@@ -0,0 +1,69 @@
+<template>
+	<view class="main main-bg">
+		<view class="main-list">
+			<view class="list-left font-color3 font-thirty-two">姓名</view>
+			<view class="list-right font-color2 font-thirty-two">{{ list.veteransName ? list.veteransName : '' }}</view>
+		</view>
+		<view class="main-list">
+			<view class="list-left font-color3 font-thirty-two">身份证号码</view>
+			<view class="list-right font-color2 font-thirty-two">{{ list.veteransIdcard ? list.veteransIdcard : '' }}</view>
+		</view>
+		<view class="main-list">
+			<view class="list-left font-color3 font-thirty-two">军人电话</view>
+			<view class="list-right font-color2 font-thirty-two">{{ list.veteransTel ? list.veteransTel : '' }}</view>
+		</view>
+		<view class="main-list">
+			<view class="list-left font-color3 font-thirty-two">军人等级</view>
+			<view class="list-right font-color2 font-thirty-two">{{ list.level ? list.level : '' }}</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import server from "@/api/index";
+export default {
+	data() {
+		return {
+			list:{},
+			userId: null,
+			type: null
+		};
+	},
+	onLoad(e) {
+		this.userId = e.money;
+		this.type = e.id;
+		this.getInfoFn(e.money, e.id);
+	},
+	methods:{
+		getInfoFn(id, type){
+			server.getRegister(id, type).then(res =>{
+				this.list = res
+			})
+		},
+	}
+}
+</script>
+
+<style lang="scss" scoped>
+	.main{
+		width: 100%;
+		height: auto;
+		min-height: 100vh;
+		padding: 30rpx;
+		.main-list{
+			width: 100%;
+			height: 102rpx;
+			line-height: 102rpx;
+			padding-left: 30rpx;
+			padding-right: 30rpx;
+			display: flex;
+			justify-content: space-between;
+			background: #fff;
+			border-radius: 24rpx;
+			margin-bottom: 30rpx;
+			.list-right{
+				font-weight: 600;
+			}
+		}
+	}
+</style>

+ 196 - 0
pages/manage/account/map.vue

@@ -0,0 +1,196 @@
+<template>
+	<view class="safety" id="container"><!-- :style="{height:(showData ? '75%' : '100%')}" -->
+		<map style="width: 100%; height: 75%;" :latitude="latitude" :longitude="longitude" scale="10"  
+			:markers="markers" :show-location="true" @markertap="markertap">
+		</map>
+		<view class="model">
+			<view class="info">
+				<view class="info-data">
+					<view class="info-title">姓名:{{model.veteransName ? model.veteransName : '-'}}</view>
+					<view class="info-text">电话:{{model.veteransTel ? model.veteransTel : '-'}}</view>
+					<view class="info-shopsIntroduce">身份证号:{{model.veteransIdcard ? model.veteransIdcard : '-'}}</view>
+					<view class="info-shopsIntroduce">家庭住址:{{model.address ? model.address : '-'}}</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import amap from '@/lib/amap-wx.130.js'
+	import server from "@/api/index";
+	import http from '@/common/http.js'
+	export default {
+		data() {
+			return {
+				pageNo: 1,
+				pageSize: 10,
+				id: 0,
+				clickable: true,
+				latitude: 43.616996,
+				longitude: 125.323643,
+				mapKey: '1dc63f21c12985e199a715faf4c02f36',
+				markers: [],
+				list: [],
+				model:{
+					veteransName: '',
+					veteransTel: '',
+					veteransIdcard: '',
+					address: ''
+				},
+				form:{
+					veteransName: '',
+					veteransTel: '',
+					veteransIdcard: '',
+					address: ''
+				}
+			}
+		},
+		onLoad(e) {
+			console.log('e',e.id)
+			if(e){
+				this.form.veteransName = e.name;
+				this.form.veteransTel = e.tel;
+				this.form.veteransIdcard = e.idCard;
+				this.form.address = e.address;
+			}
+			let that = this;
+			this.amapPlugin = new amap.AMapWX({
+				key: this.mapKey //该key 是在高德中申请的微信小程序key
+			});
+			this.amapPlugin.getRegeo({
+				type: 'gcj02', //map 组件使用的经纬度是国测局坐标, type 为 gcj02
+				success: function(res) {
+					const latitude = res[0].latitude;
+					const longitude = res[0].longitude;
+					that.longitude = longitude;
+					that.latitude = latitude;
+					console.log(that.longitude, that.latitude)
+					that.mapInfo = res[0];
+				},
+				fail: (res) => {
+					console.log(JSON.stringify(res));
+				}
+			});
+			// this.getFn()
+			this.getListFn();
+		},
+		methods: {
+			image(e) {
+				return http.webUrl + e
+			},
+			getListFn(){
+				server.getInfoList(this.form).then(res =>{
+					console.log("reddd", res)
+					// this.list = res
+					this.markers = [];
+					res.forEach((item, index) => {
+						this.markers.push({
+							id: item.veteransId,
+							latitude: item.latitude,
+							longitude: item.longitude,
+							iconPath: '/static/logo3.png',
+							width: 30,
+							height: 30,
+							clickable: true,
+							veteransName: item.veteransName,
+							veteransTel: item.veteransTel,
+							veteransIdcard: item.veteransIdcard,
+							address: item.address
+						})
+					})
+					if (this.markers[0]) {
+						this.model.veteransName = this.markers[0].veteransName
+						this.model.veteransTel = this.markers[0].veteransTel
+						this.model.veteransIdcard = this.markers[0].veteransIdcard
+						this.model.address = this.markers[0].address
+					}
+				})
+			},
+			// getFn() {
+			// 	server.getNearby(this.id).then(res =>{
+				// 	res.forEach((item, index) => {
+				// 		this.markers.push({
+				// 			id: item.veteransId,
+				// 			latitude: item.latitude,
+				// 			longitude: item.longitude,
+				// 			iconPath: '/static/logo3.png',
+				// 			width: 30,
+				// 			height: 30,
+				// 			clickable: true,
+				// 			veteransName: item.veteransName,
+				// 			veteransTel: item.veteransTel,
+				// 			veteransIdcard: item.veteransIdcard,
+				// 			address: item.address
+				// 		})
+				// 	})
+				// 	if (this.markers[0]) {
+				// 		this.model.veteransName = this.markers[0].veteransName
+				// 		this.model.veteransTel = this.markers[0].veteransTel
+				// 		this.model.veteransIdcard = this.markers[0].veteransIdcard
+				// 		this.model.address = this.markers[0].address
+				// 	}
+				// })
+			// },
+			markertap(e) {
+				console.log(e)
+				console.log('this.markers', this.markers)
+				this.markers.forEach(item => {
+					if (e.detail.markerId === item.id) {
+						this.model.veteransName = item.veteransName
+						this.model.veteransTel = item.veteransTel
+						this.model.veteransIdcard = item.veteransIdcard
+						this.model.address = item.address
+					}
+				})
+			
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.safety {
+		position: absolute;
+		width: 100%;
+		height: 100%;
+		box-sizing: border-box;
+	}
+	.model {
+		width: 100%;
+		height: 25%;
+		position: absolute;
+		left: 0upx;
+		bottom: 0upx;
+		background-color: #FFFFFF;
+		z-index: 9999;
+		padding: 0rpx 30rpx;
+		.info {
+			width: 100%;
+			height: 100%;
+			display: flex;
+			flex-direction: row;
+			align-items: center;
+			justify-content: space-around;
+			.img{
+				width: 180rpx;
+				height: 180rpx;
+			}
+			.info-data{
+				width: 100%;
+				padding-left: 20upx;
+			}
+			.info-title{
+			}
+			.info-text{
+				padding-top: 10upx;
+			}
+			.info-shopsIntroduce{
+				padding-top: 10upx;
+				line-height: 40rpx;
+				height: auto;
+				overflow: visible;
+			}
+		}
+	}
+</style>

+ 199 - 0
pages/manage/account/retrieval.vue

@@ -0,0 +1,199 @@
+<template>
+	<view class="main main-bg">
+		<view class="header">
+			<u-form :model="form" ref="uForm" :rules="rules">
+				<u-form-item 
+					label="姓名"
+					label-width="180" 
+					:label-position="labelPosition"
+					>
+					<u-input 
+						v-model="form.veteransName" 
+						placeholder-style="color: #2E4F1C;"
+						placeholder="请输入姓名" />
+				</u-form-item>
+				<u-form-item
+					label="电话"
+					label-width="180" 
+					:label-position="labelPosition"
+					>
+					<view class="form-item">
+						<u-input 
+							v-model="form.veteransTel" 
+							placeholder-style="color: #2E4F1C;"
+							placeholder="请输入电话" />
+					</view>
+				</u-form-item>
+				<u-form-item
+					label="身份证号"
+					label-width="180" 
+					:label-position="labelPosition"
+					>
+					<view class="form-item">
+						<u-input 
+							v-model="form.veteransIdcard" 
+							placeholder-style="color: #2E4F1C;"
+							placeholder="请输入身份证号" />
+					</view>
+				</u-form-item>
+				<u-form-item
+					label="家庭住址"
+					label-width="180" 
+					:label-position="labelPosition"
+					>
+					<view class="form-item">
+						<u-input 
+							v-model="form.address" 
+							placeholder-style="color: #2E4F1C;"
+							placeholder="请输入家庭住址" />
+					</view>
+				</u-form-item>
+			</u-form>
+			<view @click="submit" class="form-submit">确认</view>
+		</view>
+		<!-- <view class="footer" v-if="list.length> 0">
+			<view class="item" v-for="(item,index) in list" @click="handleMap(item.veteransId)">
+				<view class="item-header">
+					<view class="font-color2">{{ item.veteransName }}</view>
+					<view class="font-color2">{{ item.veteransIdcard ? change(item.veteransIdcard) : '-' }}</view>
+				</view>
+				<view  class="font-color2">地址: {{ item.address ? item.address : '-' }} </view>
+			</view>
+		</view>
+		<view class="footer" v-else>
+			<u-empty text="暂无数据" mode="list"></u-empty>
+		</view> -->
+		<u-toast ref="uToast" />
+	</view>
+</template>
+
+<script>
+	import server from "@/api/index";
+	export default {
+		data() {
+			return {
+				labelPosition: 'left',
+				list: [],
+				form: {
+					veteransName: '',
+					veteransTel: '',
+					veteransIdcard: '',
+					address: '',
+				},
+			}
+		},
+		onLoad() {
+		},
+		methods:{
+			submit() {
+				let _this = this;
+				console.log(this.form)
+				if(this.form.veteransName || this.form.veteransTel || this.form.veteransIdcard || this.form.address){
+					uni.navigateTo({
+						url: '/pages/manage/account/map?name=' + this.form.veteransName + '&tel=' + this.form.veteransTel + '&idCard=' + this.form.veteransIdcard + '&address=' + this.form.address
+					})
+				}else{
+					_this.$refs.uToast.show({
+						title: '请输入查询条件!',
+						type: 'default',
+					});
+				}
+				// server.getInfoList(this.form).then(res =>{
+				// 	this.list = res
+				// })
+			},
+			// handleMap(id){
+			// 	uni.navigateTo({
+			// 		url: '/pages/manage/account/map?id=' + id
+			// 	})
+			// },
+			change(name){
+				let mystr = name.substring(0,6)+'****'+name.substring(10);
+				return mystr
+			},
+		},
+	}
+</script>
+<style lang="scss" scoped>
+	/deep/ .u-list-item{
+		margin: 0rpx 0rpx 0rpx 16rpx!important;
+	}
+	/deep/ .u-icon__icon{
+		position: relative;
+		// color: #2E4F1C!important;
+		// color: #FFFFFF!important;
+	}
+	/deep/ .u-form-item__message{
+		padding-right: 0rpx!important;
+		text-align: right;
+	}
+	/deep/ .u-input__input{
+		color: #2E4F1C!important;
+		font-size: 28rpx;
+		font-family: PingFangSC-Regular, PingFang SC;
+		font-weight: 400;
+		text-align: right;
+	}
+	/deep/ .u-border, .u-border-bottom, .u-border-left, .u-border-right, .u-border-top, .u-border-top-bottom{
+		
+	}
+	/deep/ .u-form-item{
+		display: -webkit-box;
+		display: -webkit-flex;
+		display: flex;
+		-webkit-box-orient: horizontal;
+		-webkit-box-direction: normal;
+		-webkit-flex-direction: row;
+		flex-direction: row;
+		box-sizing: border-box;
+		line-height: 80rpx;
+		-webkit-flex-direction: column;
+		flex-direction: column;
+		background: rgba(46, 79, 28, 0.13);
+		border-radius: 24rpx;
+		margin-bottom: 20rpx;
+		padding-left: 30rpx!important;
+		padding-right: 30rpx!important;
+	}
+	.main{
+		width: 100%;
+		height: 100vh;
+		min-height: 100vh;
+		padding: 30rpx 30rpx 30rpx;
+		.header{
+			width: 100%;
+			height: 640rpx;
+		}
+		// .footer{
+		// 	width: 100%;
+		// 	height: calc(100% - 640rpx);
+		// 	overflow: auto;
+		// 	.item{
+		// 		width: 100%;
+		// 		height: auto;
+		// 		margin-bottom: 30rpx;
+		// 		padding: 20rpx;
+		// 		background: rgba(255,255,255, 1);
+		// 		border-radius: 16rpx;
+		// 		.item-header{
+		// 			display: flex;
+		// 			justify-content: space-between;
+		// 			padding-bottom: 15rpx;
+		// 		}
+		// 	}
+		// }
+		.form-submit{
+			margin: 30rpx auto;
+			width: 570rpx;
+			height: 96rpx;
+			line-height: 96rpx;
+			background: #2E4F1C;
+			border-radius: 49rpx;
+			font-size: 36rpx;
+			text-align: center;
+			font-family: PingFangSC-Medium, PingFang SC;
+			font-weight: 500;
+			color: #fff;
+		}
+	}	
+</style>

+ 123 - 0
pages/manage/goods/index.vue

@@ -0,0 +1,123 @@
+<template>
+	<!-- 商品审核 -->
+	<view>
+		<view class="select">
+			<view class="text font-color4" :class="{active1:shows === 1}" @click="active('001')">
+				未审核
+			</view>
+			<view class="text font-color4" :class="{active:shows === 2}" @click="active('002')">
+				审核未通过
+			</view>
+			<view class="text font-color4" :class="{active2:shows === 3}" @click="active('003')">
+				审核通过
+			</view>
+		</view>
+		<view>
+			<view v-if="shows === 1">
+				<notApproved ref="notApproved"></notApproved>
+			</view>
+			<view v-if="shows === 2">
+				<noPass ref="noPass"></noPass>
+			</view>
+			<view v-if="shows === 3">
+				<Pass ref="Pass"></Pass>
+			</view>
+		</view>
+		<u-tabbar :list="tabBarList" :active-color="activeColor" :inactive-color="inactiveColor"
+					:border-top="borderTop"></u-tabbar>
+	</view>
+</template>
+
+<script>
+	import notApproved from '@/pages/manage/merchant/notApproved.vue'
+	import noPass from '@/pages/manage/merchant/noPass.vue'
+	import Pass from '@/pages/manage/merchant/Pass.vue'
+	import { mapGetters } from 'vuex'
+	export default {
+		components:{
+			notApproved,
+			noPass,
+			Pass
+		},
+		data() {
+			return {
+				shows: 1,
+				borderTop: false,
+				inactiveColor: '#ccc',
+				activeColor: '#2E4F1C',
+			}
+		},
+		computed: {
+			...mapGetters([
+				'tabBarList',
+				'role'
+			])
+		},
+		onLoad() {
+			this.shows = 1;
+		},
+		methods: {
+			show(){
+				if(this.shows === 1){
+					this.$refs.notApproved.showMOdel();
+				}else if(this.shows === 2){
+					this.$refs.noPass.showMOdel();
+				}else if(this.shows === 3){
+					this.$refs.Pass.showMOdel();
+				}
+			},
+			active(type) {
+				if (type === '001') {
+					this.shows = 1;
+				} else if (type === '002') {
+					this.shows = 2;
+				} else {
+					this.shows = 3;
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	page {
+		background-color: #F9F9F9;
+	}
+	.header{
+		width: 100%;
+		height: 176rpx;
+		background: #2E4F1C;
+		text-align: center;
+		color: #FFFFFF;
+		padding-top: 116rpx;
+		font-size: 26rpx;
+	}
+	.select {
+		border: 2rpx solid #2E4F1C;
+		border-radius: 48rpx;
+		margin: 30rpx 36rpx 0;
+		display: flex;
+		justify-content: space-between;
+		.text {
+			padding: 22rpx 60rpx;
+			text-align: center;
+		}
+	}
+	.text:nth-child(3) {
+		border: none;
+	}
+	.active {
+		background-color: #2E4F1C;
+		color: #ffffff;
+	}
+	.active1 {
+		background-color: #2E4F1C;
+		color: #ffffff;
+		border-radius: 48rpx 0rpx 0rpx 48rpx;
+	}
+	.active2 {
+		background-color: #2E4F1C;
+		color: #ffffff;
+		border-radius: 0rpx 48rpx 48rpx 0rpx;
+	}
+</style>

+ 102 - 0
pages/manage/merchant/Pass.vue

@@ -0,0 +1,102 @@
+<template>
+	<view>
+		<view class="display" v-for="(item,index) in list">
+			<view class="store-content" @click="handleClick(item)">
+				<image :src="image(item.goodsPic)" mode="" class="store-image"></image>
+				<view class="text-content">
+					<view class="font-thirty-two font-color2">
+						{{item.goodsName}}
+					</view>
+					<view class="font-twenty font-color5" style="margin-top: 20rpx;">
+						类别:商品已审核
+					</view>
+				</view>
+			</view>
+			<!-- <view class="button-dis">
+				<button type="default" class="btn">通过</button>
+				<button type="default" class="btn color">不通过</button>
+			</view> -->
+		</view>
+	</view>
+</template>
+
+<script>
+	import server from "@/api/index";
+	import http from '@/common/http.js'
+	export default {
+		data() {
+			return {
+				list:[]
+			}
+		},
+		mounted() {
+			this.getListFn()
+		},
+		methods: {
+			showMOdel(){
+				this.getListFn()
+			},
+			image(e) {
+				return http.webUrl + e
+			},
+			handleClick(item){
+				// if(item.type === '店铺'){
+					// uni.navigateTo({
+					// 	url: '/pages/manage/modifyInfo/modifyInfo?id=' + item.shopsId + '&flag="false"'
+					// })
+				// }
+				// else if(item.type === '商品'){
+					uni.navigateTo({
+						url: '/pages/manage/modifyInfo/addToOrder?id=' + item.goodsId + '&flag="false"'
+					})
+				// }
+			},
+			getListFn(){
+				server.getShenGoodsList({goodsStatus :'2'}).then(res =>{
+					this.list = [];
+					if(res){
+						this.list = res
+					}
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.display {
+		margin: 30rpx 30rpx 0;
+		padding: 30rpx;
+		background: #FFFFFF;
+		opacity: 1;
+		border-radius: 8rpx;
+
+		.store-content {
+			display: flex;
+			align-items: center;
+			padding-bottom: 30rpx;
+			border-bottom: 2rpx solid #DEDEDE;
+			.store-image {
+				width: 220rpx;
+				height: 150rpx;
+			}
+			.text-content{
+				margin-left: 30rpx;
+			}
+		}
+
+		.button-dis {
+			display: flex;
+			margin-top: 30rpx;
+			.btn {
+				width: 300rpx;
+				background: #2E4F1C;
+				color: #FFFFFF;
+				border-radius: 48rpx;
+			}
+			.color{
+				background: #CC1019;
+			}
+		}
+	}
+</style>

+ 133 - 0
pages/manage/merchant/merchantExamine.vue

@@ -0,0 +1,133 @@
+<template>
+	<!-- 商户审核 -->
+	<view>
+		<view class="header">
+			店铺审核
+		</view>
+		<view class="select">
+			<view class="text font-color4" :class="{active1:shows === 1}" @click="active('001')">
+				未审核
+			</view>
+			<view class="text font-color4" :class="{active:shows === 2}" @click="active('002')">
+				审核未通过
+			</view>
+			<view class="text font-color4" :class="{active2:shows === 3}" @click="active('003')">
+				审核通过
+			</view>
+		</view>
+		<view>
+			<view v-if="shows === 1">
+				<noexamine ref="noexamine"></noexamine>
+			</view>
+			<view v-if="shows === 2">
+				<noadopt ref="noadopt"></noadopt>
+			</view>
+			<view v-if="shows === 3">
+				<examined ref="examined"></examined>
+			</view>
+		</view>
+		<u-tabbar :list="tabBarList" :active-color="activeColor" :inactive-color="inactiveColor"
+					:border-top="borderTop"></u-tabbar>
+	</view>
+</template>
+
+<script>
+	import examined from '@/components/examine/examined.vue'
+	import noadopt from '@/components/examine/noadopt.vue'
+	import noexamine from '@/components/examine/noexamine.vue'
+	import { mapGetters } from 'vuex'
+	export default {
+		data() {
+			return {
+				shows: 1,
+				borderTop: false,
+				inactiveColor: '#ccc',
+				activeColor: '#2E4F1C',
+			}
+		},
+		components:{
+			examined,
+			noadopt,
+			noexamine
+		},
+		computed: {
+			...mapGetters([
+				'tabBarList',
+				'role'
+			])
+		},
+		onLoad(){
+			this.shows = 1;
+			if(this.shows === 1){
+				this.$refs.noexamine.showModel();
+			}else if(this.shows === 2){
+				this.$refs.noadopt.showModel();
+			}else if(this.shows === 3){
+				this.$refs.examined.showModel();
+			}
+		},
+		methods: {
+			show(){
+				if(this.shows === 1){
+					this.$refs.noexamine.showModel();
+				}else if(this.shows === 2){
+					this.$refs.noadopt.showModel();
+				}else if(this.shows === 3){
+					this.$refs.examined.showModel();
+				}
+			},
+			active(type) {
+				if (type === '001') {
+					this.shows = 1;
+				} else if (type === '002') {
+					this.shows = 2;
+				} else {
+					this.shows = 3;
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	page {
+		background-color: #F9F9F9;
+	}
+	.header{
+		width: 100%;
+		height: 176rpx;
+		background: #2E4F1C;
+		text-align: center;
+		color: #FFFFFF;
+		padding-top: 116rpx;
+		font-size: 26rpx;
+	}
+	.select {
+		border: 2rpx solid #2E4F1C;
+		border-radius: 48rpx;
+		margin: 30rpx 36rpx 0;
+		display: flex;
+		justify-content: space-between;
+		.text {
+			padding: 22rpx 60rpx;
+			text-align: center;
+		}
+	}
+	.text:nth-child(3) {
+		border: none;
+	}
+	.active {
+		background-color: #2E4F1C;
+		color: #ffffff;
+	}
+	.active1 {
+		background-color: #2E4F1C;
+		color: #ffffff;
+		border-radius: 48rpx 0rpx 0rpx 48rpx;
+	}
+	.active2 {
+		background-color: #2E4F1C;
+		color: #ffffff;
+		border-radius: 0rpx 48rpx 48rpx 0rpx;
+	}
+</style>

+ 101 - 0
pages/manage/merchant/noPass.vue

@@ -0,0 +1,101 @@
+<template>
+	<view>
+		<view class="display" v-for="(item,index) in list">
+			<view class="store-content" @click="handleClick(item)">
+				<image :src="image(item.goodsPic)" mode="" class="store-image"></image>
+				<view class="text-content">
+					<view class="font-thirty-two font-color2">
+						{{item.goodsName}}
+					</view>
+					<view class="font-twenty font-color5" style="margin-top: 20rpx;">
+						类别:商品未通过审核
+					</view>
+				</view>
+			</view>
+			<!-- <view class="button-dis">
+				<button type="default" class="btn">通过</button>
+				<button type="default" class="btn color">不通过</button>
+			</view> -->
+		</view>
+	</view>
+</template>
+
+<script>
+	import server from "@/api/index";
+	import http from '@/common/http.js'
+	export default {
+		data() {
+			return {
+				list:[]
+			}
+		},
+		mounted() {
+			this.getListFn()
+		},
+		methods: {
+			showMOdel(){
+				this.getListFn()
+			},
+			image(e) {
+				return http.webUrl + e
+			},
+			handleClick(item){
+				// if(item.type === '店铺'){
+					// uni.navigateTo({
+					// 	url: '/pages/manage/modifyInfo/modifyInfo?id=' + item.shopsId + '&flag="false"'
+					// })
+				// }else if(item.type === '商品'){
+					uni.navigateTo({
+						url: '/pages/manage/modifyInfo/addToOrder?id=' + item.goodsId + '&flag="false"'
+					})
+				// }
+			},
+			getListFn(){
+				server.getShenGoodsList({goodsStatus :'3'}).then(res =>{
+					this.list = [];
+					if(res){
+						this.list = res
+					}
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.display {
+		margin: 30rpx 30rpx 0;
+		padding: 30rpx;
+		background: #FFFFFF;
+		opacity: 1;
+		border-radius: 8rpx;
+
+		.store-content {
+			display: flex;
+			align-items: center;
+			padding-bottom: 30rpx;
+			border-bottom: 2rpx solid #DEDEDE;
+			.store-image {
+				width: 220rpx;
+				height: 150rpx;
+			}
+			.text-content{
+				margin-left: 30rpx;
+			}
+		}
+
+		.button-dis {
+			display: flex;
+			margin-top: 30rpx;
+			.btn {
+				width: 300rpx;
+				background: #2E4F1C;
+				color: #FFFFFF;
+				border-radius: 48rpx;
+			}
+			.color{
+				background: #CC1019;
+			}
+		}
+	}
+</style>

+ 179 - 0
pages/manage/merchant/notApproved.vue

@@ -0,0 +1,179 @@
+<template>
+	<view>
+		<view v-if="list.length > 0">
+			<view class="display" v-for="(item,index) in list">
+				<view class="store-content" @click="handleClick(item)">
+					<image :src="image(item.goodsPic)" mode="" class="store-image"></image>
+					<view class="text-content">
+						<view class="font-thirty-two font-color2">
+							{{item.goodsName}}
+						</view>
+						<view class="font-twenty font-color5" style="margin-top: 20rpx;">
+							类别:商品信息修改
+						</view>
+					</view>
+				</view>
+				<view class="button-dis">
+					<button type="default" class="btn" @click="show(item.goodsId,item.shopsId, '通过')">通过</button>
+					<button type="default" class="btn color" @click="show(item.goodsId,item.shopsId, '不通过')">不通过</button>
+				</view>
+			</view>
+		</view>
+		<view v-else style="padding-top: 200rpx;">
+			<u-empty text="暂无数据" mode="list"></u-empty>
+		</view>
+		<ming-pop ref="statement" direction="below" :is_mask="true" :width="100" height="50%" :maskFun="true">
+			<pop @close="close()" @noPass='handle' ref="pop"></pop>
+		</ming-pop>
+		<u-toast ref="uToast" />
+	</view>
+</template>
+
+<script>
+	import server from "@/api/index";
+	import http from '@/common/http.js'
+	export default {
+		data() {
+			return {
+				id: null,
+				list: [],
+				userInfo: {},
+				type: null,
+				shopsId: null
+			}
+		},
+		mounted() {
+			this.userInfo = uni.getStorageSync('userInfo');
+			this.getList();
+		},
+		methods: {
+			showMOdel(){
+				this.userInfo = uni.getStorageSync('userInfo');
+				this.getList();
+			},
+			image(e) {
+				return http.webUrl + e
+			},
+			getList(){
+				server.getShenGoodsList({goodsStatus :'1'}).then(res =>{
+					this.list = [];
+					if(res){
+						this.list = res
+					}
+				})
+			},
+			handleClick(item){
+				uni.navigateTo({
+					url: '/pages/manage/modifyInfo/addToOrder?id=' + item.goodsId
+				})
+			},
+			handlePass(data, id){
+				let _this = this;
+				uni.showModal({
+					title: '提示',
+					content: '确定通过审核吗?',
+					success: function (res) {
+						if (res.confirm) {
+							let params ={
+								goodsId: id,
+								goodsStatus: '2',
+								goodsReviewer: _this.userInfo.userId,
+								reviewerName: _this.userInfo.nickName,
+								remark: data,
+								shopsId: _this.shopsId
+							}
+							server.getUodateGoods(params).then(res =>{
+								_this.$refs.uToast.show({
+									title: '通过成功!',
+									type: 'default',
+								})
+								_this.getList();
+							})
+						} else if (res.cancel) {
+							console.log('用户点击取消');
+						}
+					}
+				});
+			},
+			handle(data){
+				if(this.type === '不通过'){
+					this.handleNoPass(data)
+				}else if(this.type === '通过'){
+					console.log('this.id', this.id)
+					this.handlePass(data, this.id)
+				}
+			},
+			handleNoPass(data){
+				let _this = this;
+				let params ={
+					goodsId: _this.id,
+					goodsStatus: '3',
+					goodsReviewer: _this.userInfo.userId,
+					reviewerName: _this.userInfo.nickName,
+					remark: data,
+					shopsId: _this.shopsId
+				}
+				server.getUodateGoods(params).then(res =>{
+					_this.$refs.uToast.show({
+						title: '操作成功!',
+						type: 'default',
+					})
+					_this.getList();
+				})
+			},
+			show(id, shopsId, type) {
+				this.$refs.statement.show(type);
+				this.$refs.pop.show(type);
+				this.id = id;
+				this.type = type;
+				this.shopsId = shopsId;
+			},
+			close() {
+				this.$refs.statement.close();
+				this.id = null
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.display {
+		margin: 30rpx 30rpx 0;
+		padding: 30rpx;
+		background: #FFFFFF;
+		opacity: 1;
+		border-radius: 8rpx;
+
+		.store-content {
+			display: flex;
+			align-items: center;
+			padding-bottom: 30rpx;
+			border-bottom: 2rpx solid #DEDEDE;
+
+			.store-image {
+				width: 220rpx;
+				height: 150rpx;
+			}
+
+			.text-content {
+				margin-left: 30rpx;
+			}
+		}
+
+		.button-dis {
+			display: flex;
+			margin-top: 30rpx;
+
+			.btn {
+				width: 300rpx;
+				background: #2E4F1C;
+				color: #FFFFFF;
+				border-radius: 48rpx;
+			}
+
+			.color {
+				background: #CC1019;
+			}
+		}
+	}
+</style>

+ 215 - 0
pages/manage/modifyInfo/addToOrder.vue

@@ -0,0 +1,215 @@
+<template>
+	<view>
+		<view style="margin-top: 60rpx;">
+			<u-form :model="form" ref="uForm" :rules="rules">
+				<view class="store">
+					<u-form-item label="商品名称" :leftIconStyle="{color: '#2E4F1C', fontSize: '40rpx'}" label-width="180">
+						<u-input input-align='right' disabled=true
+							 v-model="form.goodsName"></u-input>
+					</u-form-item>
+				</view>
+				<view class="store">
+					<u-form-item label="商品原价" :leftIconStyle="{color: '#2E4F1C', fontSize: '40rpx'}" label-width="180">
+						<u-input input-align='right' disabled=true
+							v-model="form.goodsRatePrice"></u-input>
+					</u-form-item>
+				</view>
+				<!-- <view class="store">
+					<u-form-item label="商品优惠价" :leftIconStyle="{color: '#2E4F1C', fontSize: '40rpx'}" label-width="180">
+						<u-input input-align='right'
+							v-model="form.concessionalRate"></u-input>
+					</u-form-item>
+				</view> -->
+				<view class="store">
+					<u-form-item label="优惠" :leftIconStyle="{color: '#2E4F1C', fontSize: '40rpx'}" label-width="180">
+						<u-input input-align='right' disabled=true
+							v-model="form.goodsPrice"></u-input>
+					</u-form-item>
+				</view>
+			</u-form>
+			<view class="store">
+				<view class="font-color3 font-twenty distance">
+					商品简介
+				</view>
+				<textarea style="height: 200rpx;" disabled=true v-model="form.goodsContent"/>
+			</view>
+			<view class="store">
+				<view class="font-color3 font-twenty distance">
+					商品头图
+				</view>
+				<view style="padding-bottom:40rpx; display: flex;">
+					<image :src="image(form.goodsPic)" class="img"></image>
+				</view>
+			</view>
+			<view class="store" v-if="!flag">
+				<view class="font-color3 font-twenty distance">
+					审核意见
+				</view>
+				<textarea v-model="form.remark" disabled=true />
+			</view>
+			<view class="btn-display" v-if="flag">
+				<button type="default" class="button btn-color1" @click="show('通过')">通过</button>
+				<button type="default" class="button btn-color2" @click="show('不通过')">不通过</button>
+			</view>
+		</view>
+		<ming-pop ref="statement" direction="below" :is_mask="true" :width="100" height="42%" :maskFun="true">
+			<pop @close="close()" @noPass='handle' ref="pop"></pop>
+		</ming-pop>
+		<u-toast ref="uToast" />
+	</view>
+</template>
+
+<script>
+	import server from "@/api/index";
+	import http from '@/common/http.js'
+	export default {
+		data() {
+			return {
+				form:{
+					goodsName: '商品名称', //商品名称
+					goodsRatePrice: '商品原价', //商品原价
+					concessionalRate: '商品优惠价', //商品优惠价
+					concessional: '优惠', //优惠
+					goodsContent: '商品简介', //商品简介
+					pic:[]
+				},
+				width: '240rpx',
+				height: '135rpx',
+				action: '',
+				id: null,
+				flag: true,
+				userInfo: {},
+				type: null
+			}
+		},
+		onLoad(e) {
+			this.id = e.id;
+			if(e.flag){
+				this.flag = false
+			}else{
+				this.flag = true
+			}
+			this.getListFn();
+			this.userInfo = uni.getStorageSync('userInfo');
+		},
+		methods:{
+			image(e) {
+				return http.webUrl + e
+			},
+			handle(data){
+				if(this.type === '不通过'){
+					this.handleNoPass(data)
+				}else if(this.type === '通过'){
+					this.handlePass(data)
+				}
+			},
+			handlePass(data){
+				let _this = this;
+				uni.showModal({
+					title: '提示',
+					content: '确定通过审核吗?',
+					success: function (res) {
+						if (res.confirm) {
+							server.getUodateGoods({
+								goodsId: _this.id,
+								goodsStatus: '2',
+								goodsReviewer: _this.userInfo.userId,
+								reviewerName: _this.userInfo.nickName,
+								remark: data,
+							}).then(res =>{
+								_this.$refs.uToast.show({
+									title: '通过审核成功!',
+									type: 'default',
+								})
+								setTimeout(function()  {
+									uni.navigateBack({
+									    delta: 1
+									});
+								}, 2000);
+							})
+						} else if (res.cancel) {
+							console.log('用户点击取消');
+						}
+					}
+				});
+			},
+			handleNoPass(data){
+				let _this = this;
+				server.getUodateGoods({
+					goodsId: _this.id,
+					goodsStatus: '3',
+					remark: data,
+					goodsReviewer: _this.userInfo.userId,
+					reviewerName: _this.userInfo.nickName}).then(res =>{
+					_this.$refs.uToast.show({
+						title: '操作成功!',
+						type: 'default',
+					})
+					setTimeout(function()  {
+						uni.navigateBack({
+						    delta: 1
+						});
+					}, 2000);
+				})
+			},
+			getListFn(){
+				server.getGoodsInfonew(this.id).then(res =>{
+					if(res){
+						this.form = res
+					}
+				})
+			},
+			show(type) {
+				this.type = type;
+				this.$refs.statement.show(type);
+				this.$refs.pop.show(type);
+			},
+			close() {
+				this.$refs.statement.close();
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	page {
+		background-color: #F8F8F8;
+	}
+
+	.store {
+		width: 690rpx;
+		background: rgba(46, 79, 28, 0.13);
+		border-radius: 16rpx;
+		margin: 20rpx auto;
+		padding: 0 35rpx;
+		.img{
+			width: 200rpx;
+			height: 135rpx;
+			margin-right: 10rpx;
+		}
+	}
+
+	.distance {
+		padding: 20rpx 0rpx;
+	}
+
+	.btn-display {
+		display: flex;
+		justify-content: space-between;
+		margin-top: 60rpx;
+
+		.button {
+			width: 330rpx;
+			border-radius: 48rpx;
+			color: #ffffff;
+		}
+
+		.btn-color1 {
+			background: #2E4F1C
+		}
+
+		.btn-color2 {
+			background: #CC1019
+		}
+	}
+</style>

+ 214 - 0
pages/manage/modifyInfo/modifyInfo.vue

@@ -0,0 +1,214 @@
+<template>
+	<view>
+		<view style="margin-top: 60rpx;">
+			<u-form :model="form" ref="uForm" :rules="rules">
+				<view class="store">
+					<u-form-item label="店铺信息" :leftIconStyle="{color: '#2E4F1C', fontSize: '40rpx'}" label-width="180">
+						<u-input input-align='right' disabled=true
+							v-model="form.shopsName"></u-input>
+					</u-form-item>
+				</view>
+				<view class="store">
+					<u-form-item label="店铺电话" :leftIconStyle="{color: '#2E4F1C', fontSize: '40rpx'}" label-width="180">
+						<u-input input-align='right' disabled=true
+							 v-model="form.shopsTel"></u-input>
+					</u-form-item>
+				</view>
+				<view class="store">
+					<u-form-item label="店铺地址" :leftIconStyle="{color: '#2E4F1C', fontSize: '40rpx'}" label-width="180">
+						<u-input input-align='right' disabled=true
+							 v-model="form.shopsAddress"></u-input>
+					</u-form-item>
+				</view>
+			</u-form>
+			<view class="store">
+				<view class="font-color3 font-twenty distance">
+					店铺简介
+				</view>
+				<textarea v-model="form.shopsIntroduce" disabled=true />
+			</view>
+			<view class="store">
+				<view class="font-color2 font-twenty distance">
+					照片修改(重新上传一张新照片,否则默认之前)
+				</view>
+				<view style="padding-bottom:40rpx;">
+					<image :src="image(form.shopsPic)" class="img"></image>
+				</view>
+			</view>
+			<view class="store" v-if="!flag">
+				<view class="font-color3 font-twenty distance">
+					审核意见
+				</view>
+				<textarea v-model="form.remark" disabled=true />
+			</view>
+			<view class="btn-display" v-if="flag">
+				<button type="default" class="button btn-color1" @click="show('通过')">通过</button>
+				<button type="default" class="button btn-color2" @click="show('不通过')">不通过</button>
+			</view>
+		</view>
+		<ming-pop ref="statement" direction="below" :is_mask="true" :width="100" height="42%" :maskFun="true">
+			<pop @close="close()"  @noPass='handle' ref="pop"></pop>
+		</ming-pop>
+		<u-toast ref="uToast" />
+	</view>
+</template>
+
+<script>
+	import server from "@/api/index";
+	import http from '@/common/http.js'
+	export default {
+		onLoad() {},
+		data() {
+			return {
+				width: '240rpx',
+				height: '135rpx',
+				flag: true,
+				form:{
+					storeName: '店铺名称', //店铺名称
+					storeTel: '15045178945', //店铺电话
+					storeAddress: '长春市', //店铺地址
+					action: '',
+					shopsDiscount:'',
+					pic:[]
+				},
+				remark: '', //不通过原因
+				id:null,
+				userInfo: {},
+				type: null
+			}
+		},
+		onLoad(e) {
+			console.log(e)
+			this.id = e.id;
+			if(e.flag){
+				this.flag = false
+			}else{
+				this.flag = true
+			}
+			this.getListFn();
+			this.userInfo = uni.getStorageSync('userInfo');
+		},
+		methods: {
+			image(e) {
+				return http.webUrl + e
+			},
+			handlePass(data){
+				let _this = this;
+				uni.showModal({
+					title: '提示',
+					content: '确定通过审核吗?',
+					success: function (res) {
+						if (res.confirm) {
+							let params ={
+								shopsId: _this.id,
+								shopsStatus: '2',
+								shopsReviewer: _this.userInfo.userId,
+								reviewerName: _this.userInfo.nickName,
+								remark: data
+							}
+							server.getIndexData(params).then(res =>{
+								_this.$refs.uToast.show({
+									title: '通过审核成功!',
+									type: 'default',
+								})
+								setTimeout(function()  {
+									uni.navigateBack({
+									    delta: 1
+									});
+								}, 2000);
+							})
+						} else if (res.cancel) {
+							console.log('用户点击取消');
+						}
+					}
+				});
+			},
+			handle(data){
+				if(this.type === '不通过'){
+					this.handleNoPass(data)
+				}else if(this.type === '通过'){
+					this.handlePass(data)
+				}
+			},
+			handleNoPass(data){
+				let _this = this;
+				let params ={
+					shopsId: this.id,
+					shopsStatus: '3',
+					shopsReviewer: _this.userInfo.userId,
+					reviewerName: _this.userInfo.nickName,
+					remark: data
+				}
+				server.getIndexData(params).then(res =>{
+					_this.$refs.uToast.show({
+						title: '操作成功!',
+						type: 'default',
+					})
+					setTimeout(function()  {
+						uni.navigateBack({
+						    delta: 1
+						});
+					}, 2000);
+				})
+			},
+			getListFn(){
+				server.getInfonew(this.id).then(res =>{
+					if(res){
+						this.form = res
+					}
+				})
+			},
+			show(type) {
+				this.$refs.statement.show(type);
+				this.$refs.pop.show(type);
+				this.type = type;
+			},
+			close() {
+				this.$refs.statement.close();
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	page {
+		background-color: #F8F8F8;
+	}
+
+	.store {
+		width: 690rpx;
+		background: rgba(46, 79, 28, 0.13);
+		border-radius: 16rpx;
+		margin: 20rpx auto;
+		padding: 0 35rpx;
+		.img{
+			width: 200rpx;
+			height: 135rpx;
+			margin-right: 10rpx;
+		}
+	}
+
+	.distance {
+		padding: 20rpx 0rpx;
+	}
+
+	.btn-display {
+		display: flex;
+		justify-content: space-between;
+		margin-top: 60rpx;
+
+		.button {
+			width: 330rpx;
+			border-radius: 48rpx;
+			color: #ffffff;
+		}
+
+		.btn-color1 {
+			background: #2E4F1C
+		}
+
+		.btn-color2 {
+			background: #CC1019
+		}
+	}
+</style>

+ 70 - 0
pages/menu/index.vue

@@ -0,0 +1,70 @@
+<template>
+	<view class="content main-bg">
+		<news ref="news" v-if="type === '2'"></news>
+		<news ref="news" v-if="type === '3'"></news>
+		<news ref="news" v-else-if="type === '1'"></news>
+		<goods ref="goods" v-else-if="type === '4'"></goods>
+	</view>
+</template>
+
+<script>
+import news from '@/pages/soldier/news/index'
+import goods from '@/pages/manage/goods/index'
+export default {
+	components:{
+		news,
+		goods,
+	},
+	data() {
+		return {
+			type: ''
+		}
+	},
+	onLoad() {
+		let role = uni.getStorageSync('role');
+		this.type = role;
+		if(this.type === '4'){
+			uni.setNavigationBarTitle({
+				title: '商品审核'
+			})
+		};
+		setTimeout(function () {
+			console.log('start pulldown');
+		}, 1000);
+		uni.startPullDownRefresh();
+	},
+	onPullDownRefresh() {
+		let role = uni.getStorageSync('role');
+		this.type = role;
+		if(this.type === '4'){
+			this.handleShow();
+		}else{
+			this.handleMain();
+		}
+		setTimeout(function () {
+			uni.stopPullDownRefresh();
+		}, 1000);
+	},
+	onShow() {
+		let role = uni.getStorageSync('role');
+		this.type = role
+		if(this.type === '4'){
+			this.handleShow();
+		}else{
+			this.handleMain();
+		}
+	},
+	methods: {
+		handleShow(){
+			this.$refs.goods.show("qwe")
+		},
+		handleMain(){
+			this.$refs.news.show("qwe")
+		}
+	},
+}
+</script>
+
+<style>
+	
+</style>

+ 98 - 0
pages/merchant/examine/goods/Pass.vue

@@ -0,0 +1,98 @@
+<template>
+	<view>
+		<view class="display" v-for="(item,index) in list">
+			<view class="store-content" @click="handleClick(item)">
+				<image :src="image(item.goodsPic)" mode="" class="store-image"></image>
+				<view class="text-content">
+					<view class="font-thirty-two font-color2">
+						{{item.goodsName}}
+					</view>
+					<view class="font-twenty font-color5" style="margin-top: 20rpx;">
+						类别:商品已审核
+					</view>
+				</view>
+			</view>
+			<!-- <view class="button-dis">
+				<button type="default" class="btn">通过</button>
+				<button type="default" class="btn color">不通过</button>
+			</view> -->
+		</view>
+	</view>
+</template>
+
+<script>
+	import server from "@/api/index";
+	import http from '@/common/http.js'
+	export default {
+		data() {
+			return {
+				list:[],
+				userInfo: {}
+			}
+		},
+		mounted() {
+			this.userInfo = uni.getStorageSync('userInfo');
+			this.getListFn()
+		},
+		methods: {
+			showMOdel(){
+				this.userInfo = uni.getStorageSync('userInfo');
+				this.getListFn()
+			},
+			image(e) {
+				return http.webUrl + e
+			},
+			handleClick(item){
+				uni.navigateTo({
+					url: '/pages/manage/modifyInfo/addToOrder?id=' + item.goodsId + '&flag="false"'
+				})
+			},
+			getListFn(){
+				server.getShenGoodsList({goodsStatus :'2', shopsId: this.userInfo.nickName}).then(res =>{
+					this.list = [];
+					if(res){
+						this.list = res
+					}
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.display {
+		margin: 30rpx 30rpx 0;
+		padding: 30rpx;
+		background: #FFFFFF;
+		opacity: 1;
+		border-radius: 8rpx;
+
+		.store-content {
+			display: flex;
+			align-items: center;
+			padding-bottom: 30rpx;
+			border-bottom: 2rpx solid #DEDEDE;
+			.store-image {
+				width: 220rpx;
+				height: 150rpx;
+			}
+			.text-content{
+				margin-left: 30rpx;
+			}
+		}
+
+		.button-dis {
+			display: flex;
+			margin-top: 30rpx;
+			.btn {
+				width: 300rpx;
+				background: #2E4F1C;
+				color: #FFFFFF;
+				border-radius: 48rpx;
+			}
+			.color{
+				background: #CC1019;
+			}
+		}
+	}
+</style>

+ 123 - 0
pages/merchant/examine/goods/index.vue

@@ -0,0 +1,123 @@
+<template>
+	<!-- 商品审核 -->
+	<view>
+		<view class="select">
+			<view class="text font-color4" :class="{active1:shows === 1}" @click="active('001')">
+				未审核
+			</view>
+			<view class="text font-color4" :class="{active:shows === 2}" @click="active('002')">
+				审核未通过
+			</view>
+			<view class="text font-color4" :class="{active2:shows === 3}" @click="active('003')">
+				审核通过
+			</view>
+		</view>
+		<view>
+			<view v-if="shows === 1">
+				<notApproved ref="notApproved"></notApproved>
+			</view>
+			<view v-if="shows === 2">
+				<noPass ref="noPass"></noPass>
+			</view>
+			<view v-if="shows === 3">
+				<Pass ref="Pass"></Pass>
+			</view>
+		</view>
+		<!-- <u-tabbar :list="tabBarList" :active-color="activeColor" :inactive-color="inactiveColor"
+					:border-top="borderTop"></u-tabbar> -->
+	</view>
+</template>
+
+<script>
+	import notApproved from './notApproved.vue'
+	import noPass from './noPass.vue'
+	import Pass from './Pass.vue'
+	import { mapGetters } from 'vuex'
+	export default {
+		components:{
+			notApproved,
+			noPass,
+			Pass
+		},
+		data() {
+			return {
+				shows: 1,
+				borderTop: false,
+				inactiveColor: '#ccc',
+				activeColor: '#2E4F1C',
+			}
+		},
+		computed: {
+			...mapGetters([
+				'tabBarList',
+				'role'
+			])
+		},
+		onLoad() {
+			this.shows = 1;
+		},
+		methods: {
+			show(){
+				if(this.shows === 1){
+					this.$refs.notApproved.showMOdel();
+				}else if(this.shows === 2){
+					this.$refs.noPass.showMOdel();
+				}else if(this.shows === 3){
+					this.$refs.Pass.showMOdel();
+				}
+			},
+			active(type) {
+				if (type === '001') {
+					this.shows = 1;
+				} else if (type === '002') {
+					this.shows = 2;
+				} else {
+					this.shows = 3;
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	page {
+		background-color: #F9F9F9;
+	}
+	.header{
+		width: 100%;
+		height: 176rpx;
+		background: #2E4F1C;
+		text-align: center;
+		color: #FFFFFF;
+		padding-top: 116rpx;
+		font-size: 26rpx;
+	}
+	.select {
+		border: 2rpx solid #2E4F1C;
+		border-radius: 48rpx;
+		margin: 30rpx 36rpx 0;
+		display: flex;
+		justify-content: space-between;
+		.text {
+			padding: 22rpx 60rpx;
+			text-align: center;
+		}
+	}
+	.text:nth-child(3) {
+		border: none;
+	}
+	.active {
+		background-color: #2E4F1C;
+		color: #ffffff;
+	}
+	.active1 {
+		background-color: #2E4F1C;
+		color: #ffffff;
+		border-radius: 48rpx 0rpx 0rpx 48rpx;
+	}
+	.active2 {
+		background-color: #2E4F1C;
+		color: #ffffff;
+		border-radius: 0rpx 48rpx 48rpx 0rpx;
+	}
+</style>

+ 94 - 0
pages/merchant/examine/goods/noPass.vue

@@ -0,0 +1,94 @@
+<template>
+	<view>
+		<view class="display" v-for="(item,index) in list">
+			<view class="store-content" @click="handleClick(item)">
+				<image :src="image(item.goodsPic)" mode="" class="store-image"></image>
+				<view class="text-content">
+					<view class="font-thirty-two font-color2">
+						{{item.goodsName}}
+					</view>
+					<view class="font-twenty font-color5" style="margin-top: 20rpx;">
+						类别:商品未通过审核
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import server from "@/api/index";
+	import http from '@/common/http.js'
+	export default {
+		data() {
+			return {
+				list:[],
+				userInfo:{}
+			}
+		},
+		mounted() {
+			this.userInfo = uni.getStorageSync('userInfo');
+			this.getListFn()
+		},
+		methods: {
+			showMOdel(){
+				this.userInfo = uni.getStorageSync('userInfo');
+				this.getListFn()
+			},
+			image(e) {
+				return http.webUrl + e
+			},
+			handleClick(item){
+				uni.navigateTo({
+					url: '/pages/manage/modifyInfo/addToOrder?id=' + item.goodsId + '&flag="false"'
+				})
+			},
+			getListFn(){
+				server.getShenGoodsList({goodsStatus :'3', shopsId: this.userInfo.nickName}).then(res =>{
+					this.list = [];
+					if(res){
+						this.list = res
+					}
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.display {
+		margin: 30rpx 30rpx 0;
+		padding: 30rpx;
+		background: #FFFFFF;
+		opacity: 1;
+		border-radius: 8rpx;
+
+		.store-content {
+			display: flex;
+			align-items: center;
+			padding-bottom: 30rpx;
+			border-bottom: 2rpx solid #DEDEDE;
+			.store-image {
+				width: 220rpx;
+				height: 150rpx;
+			}
+			.text-content{
+				margin-left: 30rpx;
+			}
+		}
+
+		.button-dis {
+			display: flex;
+			margin-top: 30rpx;
+			.btn {
+				width: 300rpx;
+				background: #2E4F1C;
+				color: #FFFFFF;
+				border-radius: 48rpx;
+			}
+			.color{
+				background: #CC1019;
+			}
+		}
+	}
+</style>

+ 90 - 0
pages/merchant/examine/goods/notApproved.vue

@@ -0,0 +1,90 @@
+<template>
+	<view>
+		<view v-if="list.length > 0">
+			<view class="display" v-for="(item,index) in list">
+				<view class="store-content" @click="handleClick(item)">
+					<image :src="image(item.goodsPic)" mode="" class="store-image"></image>
+					<view class="text-content">
+						<view class="font-thirty-two font-color2">
+							{{item.goodsName}}
+						</view>
+						<view class="font-twenty font-color5" style="margin-top: 20rpx;">
+							类别:商品信息修改
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view v-else style="padding-top: 200rpx;">
+			<u-empty text="暂无数据" mode="list"></u-empty>
+		</view>
+		<u-toast ref="uToast" />
+	</view>
+</template>
+
+<script>
+	import server from "@/api/index";
+	import http from '@/common/http.js'
+	export default {
+		data() {
+			return {
+				id: null,
+				list: [],
+				userInfo: {}
+			}
+		},
+		mounted() {
+			this.userInfo = uni.getStorageSync('userInfo');
+			this.getList();
+		},
+		methods: {
+			showMOdel(){
+				this.userInfo = uni.getStorageSync('userInfo');
+				this.getList();
+			},
+			image(e) {
+				return http.webUrl + e
+			},
+			getList(){
+				console.log('===',this.userInfo)
+				server.getShenGoodsList({goodsStatus :'1', shopsId: this.userInfo.nickName}).then(res =>{
+					this.list = [];
+					if(res){
+						this.list = res
+					}
+				})
+			},
+			handleClick(item){
+				uni.navigateTo({
+					url: '/pages/manage/modifyInfo/addToOrder?id=' + item.goodsId + '&flag="false"'
+				})
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.display {
+		margin: 30rpx 30rpx 0;
+		padding: 30rpx;
+		background: #FFFFFF;
+		opacity: 1;
+		border-radius: 8rpx;
+
+		.store-content {
+			display: flex;
+			align-items: center;
+			padding-bottom: 30rpx;
+			border-bottom: 2rpx solid #DEDEDE;
+
+			.store-image {
+				width: 220rpx;
+				height: 150rpx;
+			}
+
+			.text-content {
+				margin-left: 30rpx;
+			}
+		}
+	}
+</style>

+ 99 - 0
pages/merchant/examine/shops/examined.vue

@@ -0,0 +1,99 @@
+<template>
+	<view>
+		<view class="display" v-for="(item,index) in list">
+			<view class="store-content" @click="handleClick(item)">
+				<image :src="image(item.shopsPic)" mode="" class="store-image"></image>
+				<view class="text-content">
+					<view class="font-thirty-two font-color2">
+						{{item.shopsName}}
+					</view>
+					<view class="font-twenty font-color5" style="margin-top: 20rpx;">
+						类别:店铺已审核
+					</view>
+				</view>
+			</view>
+			<!-- <view class="button-dis">
+				<button type="default" class="btn">通过</button>
+				<button type="default" class="btn color">不通过</button>
+			</view> -->
+		</view>
+	</view>
+</template>
+
+<script>
+	import server from "@/api/index";
+	import http from '@/common/http.js'
+	export default {
+		data() {
+			return {
+				list:[],
+				userInfo: {}
+			}
+		},
+		mounted() {
+			this.userInfo = uni.getStorageSync('userInfo');
+			this.getListFn()
+		},
+		
+		methods: {
+			showModel(){
+				this.userInfo = uni.getStorageSync('userInfo');
+				this.getListFn()
+			},
+			image(e) {
+				return http.webUrl + e
+			},
+			handleClick(item){
+				uni.navigateTo({
+					url: '/pages/manage/modifyInfo/modifyInfo?id=' + item.shopsId + '&flag="false"'
+				})
+			},
+			getListFn(){
+				server.getManageShopList({shopsStatus :'2', shopsId: this.userInfo.nickName}).then(res =>{
+					this.list = [];
+					if(res){
+						this.list = res
+					}
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.display {
+		margin: 30rpx 30rpx 0;
+		padding: 30rpx;
+		background: #FFFFFF;
+		opacity: 1;
+		border-radius: 8rpx;
+
+		.store-content {
+			display: flex;
+			align-items: center;
+			padding-bottom: 30rpx;
+			border-bottom: 2rpx solid #DEDEDE;
+			.store-image {
+				width: 220rpx;
+				height: 150rpx;
+			}
+			.text-content{
+				margin-left: 30rpx;
+			}
+		}
+
+		.button-dis {
+			display: flex;
+			margin-top: 30rpx;
+			.btn {
+				width: 300rpx;
+				background: #2E4F1C;
+				color: #FFFFFF;
+				border-radius: 48rpx;
+			}
+			.color{
+				background: #CC1019;
+			}
+		}
+	}
+</style>

+ 119 - 0
pages/merchant/examine/shops/merchantExamine.vue

@@ -0,0 +1,119 @@
+<template>
+	<!-- 商户审核 -->
+	<view>
+		<view class="select">
+			<view class="text font-color4" :class="{active1:shows === 1}" @click="active('001')">
+				未审核
+			</view>
+			<view class="text font-color4" :class="{active:shows === 2}" @click="active('002')">
+				审核未通过
+			</view>
+			<view class="text font-color4" :class="{active2:shows === 3}" @click="active('003')">
+				审核通过
+			</view>
+		</view>
+		<view>
+			<view v-if="shows === 1">
+				<noexamine ref="noexamine"></noexamine>
+			</view>
+			<view v-if="shows === 2">
+				<noadopt ref="noadopt"></noadopt>
+			</view>
+			<view v-if="shows === 3">
+				<examined ref="examined"></examined>
+			</view>
+		</view>
+		<!-- <u-tabbar :list="tabBarList" :active-color="activeColor" :inactive-color="inactiveColor"
+					:border-top="borderTop"></u-tabbar> -->
+	</view>
+</template>
+
+<script>
+	import examined from './examined.vue'
+	import noadopt from './noadopt.vue'
+	import noexamine from './noexamine.vue'
+	import { mapGetters } from 'vuex'
+	export default {
+		data() {
+			return {
+				shows: 1,
+				borderTop: false,
+				inactiveColor: '#ccc',
+				activeColor: '#2E4F1C',
+			}
+		},
+		components:{
+			examined,
+			noadopt,
+			noexamine
+		},
+		computed: {
+			...mapGetters([
+				'tabBarList',
+				'role'
+			])
+		},
+		onLoad(e) {
+			if(e.id){
+				console.log('e.id', e.id)
+			}
+			this.shows = 1;
+			this.show();
+		},
+		methods: {
+			show(){
+				console.log('001')
+				if(this.shows === 1){
+					this.$refs.noexamine.showModel();
+				}else if(this.shows === 2){
+					this.$refs.noadopt.showModel();
+				}else if(this.shows === 3){
+					this.$refs.examined.showModel();
+				}
+			},
+			active(type) {
+				if (type === '001') {
+					this.shows = 1;
+				} else if (type === '002') {
+					this.shows = 2;
+				} else {
+					this.shows = 3;
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	page {
+		background-color: #F9F9F9;
+	}
+	.select {
+		border: 2rpx solid #2E4F1C;
+		border-radius: 48rpx;
+		margin: 30rpx 36rpx 0;
+		display: flex;
+		justify-content: space-between;
+		.text {
+			padding: 22rpx 60rpx;
+			text-align: center;
+		}
+	}
+	.text:nth-child(3) {
+		border: none;
+	}
+	.active {
+		background-color: #2E4F1C;
+		color: #ffffff;
+	}
+	.active1 {
+		background-color: #2E4F1C;
+		color: #ffffff;
+		border-radius: 48rpx 0rpx 0rpx 48rpx;
+	}
+	.active2 {
+		background-color: #2E4F1C;
+		color: #ffffff;
+		border-radius: 0rpx 48rpx 48rpx 0rpx;
+	}
+</style>

+ 104 - 0
pages/merchant/examine/shops/noadopt.vue

@@ -0,0 +1,104 @@
+<template>
+	<view>
+		<view class="display" v-for="(item,index) in list">
+			<view class="store-content" @click="handleClick(item)">
+				<image :src="image(item.shopsPic)" mode="" class="store-image"></image>
+				<view class="text-content">
+					<view class="font-thirty-two font-color2">
+						{{item.shopsName}}
+					</view>
+					<view class="font-twenty font-color5" style="margin-top: 20rpx;">
+						类别:店铺未通过审核
+					</view>
+				</view>
+			</view>
+			<!-- <view class="button-dis">
+				<button type="default" class="btn">通过</button>
+				<button type="default" class="btn color">不通过</button>
+			</view> -->
+		</view>
+	</view>
+</template>
+
+<script>
+	import server from "@/api/index";
+	import http from '@/common/http.js'
+	export default {
+		data() {
+			return {
+				list:[],
+				userInfo: {}
+			}
+		},
+		mounted() {
+			this.userInfo = uni.getStorageSync('userInfo');
+			this.getListFn()
+		},
+		methods: {
+			showModel(){
+				this.userInfo = uni.getStorageSync('userInfo');
+				this.getListFn()
+			},
+			image(e) {
+				return http.webUrl + e
+			},
+			handleClick(item){
+				// if(item.type === '店铺'){
+					uni.navigateTo({
+						url: '/pages/manage/modifyInfo/modifyInfo?id=' + item.shopsId + '&flag="false"'
+					})
+				// }else if(item.type === '商品'){
+				// 	uni.navigateTo({
+				// 		url: '/pages/manage/modifyInfo/addToOrder?id=' + item.id + '&flag="false"'
+				// 	})
+				// }
+			},
+			getListFn(){
+				server.getManageShopList({shopsStatus :'3', shopsId: this.userInfo.nickName}).then(res =>{
+					this.list = [];
+					if(res){
+						this.list = res
+					}
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.display {
+		margin: 30rpx 30rpx 0;
+		padding: 30rpx;
+		background: #FFFFFF;
+		opacity: 1;
+		border-radius: 8rpx;
+
+		.store-content {
+			display: flex;
+			align-items: center;
+			padding-bottom: 30rpx;
+			border-bottom: 2rpx solid #DEDEDE;
+			.store-image {
+				width: 220rpx;
+				height: 150rpx;
+			}
+			.text-content{
+				margin-left: 30rpx;
+			}
+		}
+
+		.button-dis {
+			display: flex;
+			margin-top: 30rpx;
+			.btn {
+				width: 300rpx;
+				background: #2E4F1C;
+				color: #FFFFFF;
+				border-radius: 48rpx;
+			}
+			.color{
+				background: #CC1019;
+			}
+		}
+	}
+</style>

+ 90 - 0
pages/merchant/examine/shops/noexamine.vue

@@ -0,0 +1,90 @@
+<template>
+	<view>
+		<view v-if="list.length > 0">
+			<view class="display" v-for="(item,index) in list">
+				<view class="store-content" @click="handleClick(item)">
+					<image :src="image(item.shopsPic)" mode="" class="store-image"></image>
+					<view class="text-content">
+						<view class="font-thirty-two font-color2">
+							{{item.shopsName}}
+						</view>
+						<view class="font-twenty font-color5" style="margin-top: 20rpx;">
+							类别:店铺信息修改
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view v-else style="padding-top: 200rpx;">
+			<u-empty text="暂无数据" mode="list"></u-empty>
+		</view>
+		<u-toast ref="uToast" />
+	</view>
+</template>
+
+<script>
+	import server from "@/api/index";
+	import http from '@/common/http.js'
+	export default {
+		data() {
+			return {
+				id: null,
+				list: [],
+				userInfo:{}
+			}
+		},
+		mounted() {
+			this.userInfo = uni.getStorageSync('userInfo');
+			this.getList();
+		},
+		methods: {
+			showModel(){
+				console.log('showModel')
+				this.userInfo = uni.getStorageSync('userInfo');
+				this.getList();
+			},
+			image(e) {
+				return http.webUrl + e
+			},
+			getList(){
+				server.getManageShopList({shopsStatus :'1', shopsId: this.userInfo.nickName}).then(res =>{
+					this.list = [];
+					if(res){
+						this.list = res
+					}
+				})
+			},
+			handleClick(item){
+				uni.navigateTo({
+					url: '/pages/manage/modifyInfo/modifyInfo?id=' + item.shopsId + '&flag="false"'
+				})
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.display {
+		margin: 30rpx 30rpx 0;
+		padding: 30rpx;
+		background: #FFFFFF;
+		opacity: 1;
+		border-radius: 8rpx;
+
+		.store-content {
+			display: flex;
+			align-items: center;
+			padding-bottom: 30rpx;
+			border-bottom: 2rpx solid #DEDEDE;
+
+			.store-image {
+				width: 220rpx;
+				height: 150rpx;
+			}
+
+			.text-content {
+				margin-left: 30rpx;
+			}
+		}
+	}
+</style>

+ 279 - 0
pages/merchant/goods/add.vue

@@ -0,0 +1,279 @@
+<template>
+	<view class="add main-bg">
+		<u-form :model="form" ref="uForm"  :rules="rules">
+			<u-form-item 
+				label="商品名称"
+				label-width="180" 
+				:label-position="labelPosition"
+				prop="goodsName">
+				<u-input 
+					v-model="form.goodsName" 
+					placeholder-style="color: #2E4F1C;"
+					placeholder="请输入商品名称" />
+			</u-form-item>
+			<u-form-item
+				label="商品原价"
+				label-width="180" 
+				:label-position="labelPosition"
+				prop="goodsRatePrice">
+				<view class="form-item">
+					<u-input 
+						v-model="form.goodsRatePrice" 
+						placeholder-style="color: #2E4F1C;"
+						placeholder="请输入商品原价" />
+				</view>
+			</u-form-item>
+			<u-form-item
+				label="折扣"
+				label-width="180" 
+				:label-position="labelPosition"
+				prop="goodsPrice">
+				<u-input 
+					v-model="form.goodsPrice" 
+					placeholder-style="color: #2E4F1C;"
+					placeholder="请输入折扣" />
+			</u-form-item>
+			<!-- <u-form-item
+				label="商品优惠价"
+				label-width="180" 
+				:label-position="labelPosition">
+				<u-input 
+					v-model="form.hui" 
+					placeholder-style="color: #2E4F1C;"
+					placeholder="请输入商品优惠价" />
+			</u-form-item> -->
+			<u-form-item
+			 label-position="top"
+			  label="简介"
+			  prop="goodsContent">
+				<u-input type="textarea" placeholder="请填写店铺简介" v-model="form.goodsContent" />
+			</u-form-item>
+			<view class="form-upload">
+				<view class="upload-title font-twenty font-color2">
+					照片修改(重新上传一张新照片,否则默认之前)
+				</view>
+				<view style="display: flex;">
+					<image v-if="flag" :src="image(form.goodsPic)" style="width:160rpx; height:160rpx"></image>
+					<u-upload
+						width="160"
+						height="160"
+						:action="action"
+						max-count="1" 
+						@on-success="onSuccess">
+					</u-upload>
+				</view>
+			</view>
+		</u-form>
+		<view @click="submit" class="form-submit">确认</view>
+		<u-toast ref="uToast" />
+	</view>
+</template>
+
+<script>
+	import http from '@/common/http.js'
+	import server from "@/api/index";
+	export default {
+		data() {
+			return {
+				action: http.webUrl+`/wx/common/upload`,
+				labelPosition: 'left',
+				flag: true,
+				form: {
+					goodsName: '',
+					goodsRatePrice: '',
+					// hui: '',
+					goodsPrice: 1,
+					goodsContent: '',
+					goodsPic: ''
+				},
+				id: null,
+				userInfo: {},
+				rules: {
+					goodsName: [
+						{ 
+							validator: (rule, value, callback) => {
+								return this.$u.test.rangeLength(value, [1, 10]);
+							},
+							message: '名称最多输入10个字符!',
+							trigger: ['change','blur'],
+						}
+					],
+					goodsPrice: [
+						{
+							validator: (rule, value, callback) => {
+								return this.$u.test.range(value, [0, 1]);
+							},
+							message: '折扣必须是小数!',
+							trigger: ['change','blur'],
+						}
+					],
+					goodsContent: [
+						{ 
+							validator: (rule, value, callback) => {
+								return this.$u.test.rangeLength(value, [0, 50]);
+							},
+							message: '简介最多输入50个字符!',
+							trigger: ['change','blur'],
+						}
+					],
+					goodsRatePrice: [
+						{ 
+							validator: (rule, value, callback) => {
+								return this.$u.test.number(value);
+							},
+							message: '商品原价必须是数字!',
+							trigger: ['change','blur'],
+						}
+					],
+				}
+			}
+		},
+		onLoad(e) {
+			this.userInfo = uni.getStorageSync('userInfo');
+			if(e.id){
+				this.id = e.id;
+				this.getList(e.id);
+				uni.setNavigationBarTitle({
+					title: '修改商品'
+				})
+			}else{
+				this.flag = false;
+			}
+		},
+		onReady() {
+			this.$refs.uForm.setRules(this.rules);
+		},
+		methods:{
+			image(e) {
+				return http.webUrl + e
+			},
+			onSuccess(data, index, lists, name){
+				this.form.goodsPic = data.fileName
+				this.flag = false;
+			},
+			getList(id){
+				server.getGoodsDetails(id).then(res =>{
+					this.form = {};
+					if(res){
+						this.form = res
+					}
+				})
+			},
+			submit() {
+				let _this = this;
+				if(this.id){
+					let form = this.form
+					form.goodsStatus = '1';
+					form.shopsId = this.userInfo.nickName
+					this.$refs.uForm.validate(valid => {
+						if (valid) {
+							server.getUodateGoods(form).then(res =>{
+								_this.$refs.uToast.show({
+									title: '修改商品信息成功!',
+									type: 'default',
+								})
+								setTimeout(function()  {
+									uni.navigateBack({
+										delta: 1
+									});
+								}, 2000);
+							})
+						} else {
+						}
+					})
+				}else{
+					let form = this.form
+					form.goodsStatus = '1';
+					form.shopsId = this.userInfo.nickName
+					this.$refs.uForm.validate(valid => {
+						if (valid) {
+							server.getSPGoodsAdd(form).then(res =>{
+									_this.$refs.uToast.show({
+										title: '添加商品成功!',
+										type: 'default',
+									})
+									setTimeout(function()  {
+										uni.navigateBack({
+											delta: 1
+										});
+									}, 2000);
+							})
+						}
+					})
+				}
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	/deep/ .u-list-item{
+		margin: 0rpx 0rpx 0rpx 16rpx!important;
+	}
+	/deep/ .u-icon__icon{
+		position: relative;
+		color: #2E4F1C!important;
+	}
+	/deep/ .u-form-item__message{
+		padding-right: 0rpx!important;
+		text-align: right;
+	}
+	/deep/ .u-input__input{
+		color: #2E4F1C!important;
+		font-size: 28rpx;
+		font-family: PingFangSC-Regular, PingFang SC;
+		font-weight: 400;
+		text-align: right;
+	}
+	/deep/ .u-border, .u-border-bottom, .u-border-left, .u-border-right, .u-border-top, .u-border-top-bottom{
+		
+	}
+	/deep/ .u-form-item{
+		display: -webkit-box;
+		display: -webkit-flex;
+		display: flex;
+		-webkit-box-orient: horizontal;
+		-webkit-box-direction: normal;
+		-webkit-flex-direction: row;
+		flex-direction: row;
+		box-sizing: border-box;
+		line-height: 96rpx;
+		-webkit-flex-direction: column;
+		flex-direction: column;
+		background: rgba(46, 79, 28, 0.13);
+		border-radius: 24rpx;
+		margin-bottom: 40rpx;
+		padding-left: 30rpx!important;
+		padding-right: 30rpx!important;
+	}
+	.add{
+		width: 100%;
+		height: auto;
+		min-height: 100vh;
+		padding: 30rpx;
+		.form-upload{
+			width: 100%;
+			height: 300rpx;
+			background: rgba(46, 79, 28, 0.13);
+			border-radius: 16rpx;
+			padding-left: 30rpx;
+			.upload-title{
+				height: 100rpx;
+				line-height: 100rpx;
+			}
+		}
+		.form-submit{
+			margin: 60rpx auto;
+			width: 570rpx;
+			height: 96rpx;
+			line-height: 96rpx;
+			background: #2E4F1C;
+			border-radius: 49rpx;
+			font-size: 36rpx;
+			font-family: PingFangSC-Medium, PingFang SC;
+			font-weight: 500;
+			color: #fff;
+			text-align: center;
+		}
+	}
+</style>

+ 137 - 0
pages/merchant/goods/goods.vue

@@ -0,0 +1,137 @@
+<template>
+	<view class="goods main-bg">
+		<view class="header font-color2 font-thirty" @click="goto">添加商品</view>
+		<view class="title font-color3 font-thirty-two"  v-if="list.length > 0">当前主营商品</view>
+		<view class="list" v-if="list.length > 0">
+			<view class="item" v-for="item in list" @click="handleGoods(item)">
+				<image class="img" :src="image(item.goodsPic)"></image>
+				<view class="name font-color3 font-twenty ellipsis">{{ item.goodsName }}</view>
+				<view class="jia ellipsis">
+					<span class="yuan font-color2 font-twenty">¥{{ item.goodsRatePrice }}</span>
+					<!-- <span class="hui font-color5 font-twenty-four">惠军价: ¥{{ item.goodsPrice }}</span> -->
+				</view>
+			</view>
+		</view>
+		<view class="empty" v-else>
+			<u-empty text="暂无商品" mode="list"></u-empty>
+		</view>
+		<u-tabbar :list="tabBarList" :active-color="activeColor" :inactive-color="inactiveColor"
+					:border-top="borderTop"></u-tabbar>
+	</view>
+</template>
+
+<script>
+	import server from "@/api/index";
+	import { mapGetters } from 'vuex'
+	import http from '@/common/http.js'
+	export default {
+		data() {
+			return {
+				borderTop: false,
+				inactiveColor: '#ccc',
+				activeColor: '#2E4F1C',
+				list:[],
+				userInfo: {}
+			}
+		},
+		computed: {
+			...mapGetters([
+				'tabBarList',
+				'role'
+			])
+		},
+		onLoad() {
+			setTimeout(function () {
+			}, 1000);
+			uni.startPullDownRefresh();
+		},
+		onPullDownRefresh() {
+			this.userInfo = uni.getStorageSync('userInfo');
+			this.getListFn(this.userInfo.nickName);
+			setTimeout(function () {
+				uni.stopPullDownRefresh();
+			}, 1000);
+		},
+		onShow() {
+			this.userInfo = uni.getStorageSync('userInfo');
+			this.getListFn(this.userInfo.nickName);
+		},
+		methods:{
+			handleGoods(item){
+				uni.navigateTo({
+					url: '/pages/merchant/goods/add?id='+ item.goodsId
+				})
+			},
+			image(e) {
+				return http.webUrl + e
+			},
+			getListFn(id){
+				server.getGoodsInfo({shopsId: id, goodsStatus :'2'}).then(res =>{
+					this.list = [];
+					if(res){
+						this.list = res
+					}
+				})
+			},
+			goto(){
+				uni.navigateTo({
+					url: '/pages/merchant/goods/add'
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.goods{
+		width: 100%;
+		height: auto;
+		min-height: 100vh;
+		padding: 30rpx;
+		.header{
+			width: 100%;
+			height: 96rpx;
+			line-height: 96rpx;
+			border-radius: 48rpx;
+			text-align: center;
+			border: 1rpx solid #2E4F1C;
+			font-weight: 600;
+		}
+		.title{
+			height: 115rpx;
+			line-height: 115rpx;
+		}
+		.empty{
+			padding-top: 200rpx;
+		}
+		.list{
+			width: 100%;
+			display: flex;
+			flex-wrap: wrap;
+			justify-content: space-between;
+			.item{
+				width: calc(50% - 15rpx);
+				height: 370rpx;
+				margin-bottom: 30rpx;
+				background: #FFFFFF;
+				.img{
+					width: 100%;
+					height: 228rpx;
+				}
+				.name{
+					width: calc(100% - 30rpx);
+					padding-left: 30rpx;
+					height: 85rpx;
+					line-height: 85rpx;
+				}
+				.jia{
+					width: calc(100% - 30rpx);
+					padding-left: 20rpx;
+				}
+				.hui{
+					padding-left: 20rpx;
+				}
+			}
+		}
+	}
+</style>

+ 213 - 0
pages/merchant/home/account.vue

@@ -0,0 +1,213 @@
+<template>
+	<view class="main main-bg">
+		<u-form :model="form" ref="uForm" :rules="rules">
+			<u-form-item 
+				label="商品金额"
+				label-width="180" 
+				:label-position="labelPosition"
+				prop="orderPriceOld">
+				<u-input 
+					v-model="form.orderPriceOld" 
+					placeholder-style="color: #2E4F1C;"
+					placeholder="请输入商品金额" />
+			</u-form-item>
+			<u-form-item
+				label="商品折扣"
+				label-width="180" 
+				:label-position="labelPosition"
+				prop="shopsTel">
+				<view class="form-item">
+					<u-input 
+						v-model="form.shopsTel" 
+						placeholder-style="color: #2E4F1C;"
+						placeholder="请输入商品折扣" />
+				</view>
+			</u-form-item>
+			</u-form-item>
+			<u-upload
+				width="160"
+				height="160"
+				:action="action"
+				max-count="3" 
+				@on-success="onSuccess">
+			</u-upload>
+		</u-form>
+		<view @click="submit" class="form-submit">结算</view>
+		<u-toast ref="uToast" />
+	</view>
+</template>
+
+<script>
+	import http from '@/common/http.js'
+	import server from "@/api/index";
+	export default {
+		data() {
+			return {
+				action: http.webUrl+`/wx/common/upload`,
+				picUrlList: [],
+				labelPosition: 'left',
+				form: {
+					orderPriceOld: null,
+					shopsTel: 1.00,
+				},
+				rules: {
+					orderPriceOld: [
+						{ 
+							required: true, 
+							message: '请输入商品金额!',
+							trigger: ['change','blur'],
+						},
+						{
+							validator: (rule, value, callback) => {
+								return this.$u.test.amount(value);
+							},
+							message: '商品金额必须是数字!',
+							trigger: ['change','blur'],
+						}
+					],
+					shopsTel: [
+						{ 
+							validator: (rule, value, callback) => {
+								return this.$u.test.range(value, [0, 1]);
+							},
+							message: '商品折扣必须是0-1之间!',
+							trigger: ['change','blur'],
+						}
+					],
+				},
+				userInfo:{},
+				veteransId: 0,
+				remark: '',
+				veteransName: '',
+				picUrlList: []
+			}
+		},
+		onLoad(e) {
+			console.log(e)
+			if(e.veteransId){
+				this.veteransId = parseInt(e.veteransId);
+				this.remark = e.remark;
+				this.veteransName = e.veteransName
+			}
+			this.userInfo = uni.getStorageSync('userInfo');
+		},
+		onReady() {
+			this.$refs.uForm.setRules(this.rules);
+		},
+		methods:{
+			onSuccess(data, index, lists, name){
+				this.picUrlList = [];
+				lists.forEach(item =>{
+					this.picUrlList.push(item.response.fileName)
+				})
+			},
+			submit() {
+				console.log(this.form.shopsTel.toString().substr(0,1))
+				let that= this;
+				this.$refs.uForm.validate(valid => {
+					if (valid) {
+						if(this.form.shopsTel.toString().substr(0,1) === '.'){
+							this.form.shopsTel = '0'+ this.form.shopsTel
+						}
+						let money = this.form.shopsTel*this.form.orderPriceOld;
+						uni.showModal({
+							title: '提示',
+							content: '确认结算吗?',
+							success: function (res) {
+								if (res.confirm) {
+									let params = {
+										shopsId: that.userInfo.nickName,
+										goodsName: that.userInfo.userName,
+										veteransName: that.veteransName,
+										veteransId: that.veteransId,
+										remark: that.remark,
+										orderPriceOld: that.form.orderPriceOld,
+										orderPriceVip: money,
+										picUrlList: that.picUrlList,
+										detailedlist: []
+									}
+									server.addOrderInfo(params).then(res =>{
+										that.$refs.uToast.show({
+											title: '操作成功!',
+											type: 'default',
+										})
+										setTimeout(function()  {
+											uni.switchTab({
+												url: '/pages/index/index'
+											})
+										}, 2000);
+									})
+								} else if (res.cancel) {
+									console.log('用户点击取消');
+								}
+							}
+						});
+					}
+				})
+				console.log('this.form', this.form)
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	/deep/ .u-list-item{
+		margin: 0rpx 0rpx 0rpx 16rpx!important;
+	}
+	/deep/ .u-icon__icon{
+		position: relative;
+		color: #2E4F1C!important;
+	}
+	/deep/ .u-form-item__message{
+		padding-right: 0rpx!important;
+		text-align: right;
+	}
+	/deep/ .u-input__input{
+		color: #2E4F1C!important;
+		font-size: 28rpx;
+		font-family: PingFangSC-Regular, PingFang SC;
+		font-weight: 400;
+		text-align: right;
+	}
+	/deep/ .u-border, .u-border-bottom, .u-border-left, .u-border-right, .u-border-top, .u-border-top-bottom{
+		
+	}
+	/deep/ .u-form-item{
+		display: -webkit-box;
+		display: -webkit-flex;
+		display: flex;
+		-webkit-box-orient: horizontal;
+		-webkit-box-direction: normal;
+		-webkit-flex-direction: row;
+		flex-direction: row;
+		box-sizing: border-box;
+		line-height: 96rpx;
+		-webkit-flex-direction: column;
+		flex-direction: column;
+		background: rgba(46, 79, 28, 0.13);
+		border-radius: 24rpx;
+		margin-bottom: 40rpx;
+		padding-left: 30rpx!important;
+		padding-right: 30rpx!important;
+	}
+	.main{
+		width: 100%;
+		height: auto;
+		min-height: 100vh;
+		padding: 60rpx 30rpx 30rpx;
+	
+		.form-submit{
+			margin: 60rpx auto;
+			width: 570rpx;
+			height: 96rpx;
+			line-height: 96rpx;
+			background: #2E4F1C;
+			border-radius: 49rpx;
+			font-size: 36rpx;
+			text-align: center;
+			font-family: PingFangSC-Medium, PingFang SC;
+			font-weight: 500;
+			color: #fff;
+		}
+	}
+</style>

+ 137 - 0
pages/merchant/home/code.vue

@@ -0,0 +1,137 @@
+<template>
+	<view class="code main-bg">
+		<view class="header">
+			<view class="name font-color3 font-thirty-two">{{list.name ? list.name : ''}}</view>
+			<image class="img" v-if="flag" :src="list.url"></image>
+			<image class="img" v-else :src="image(list.url)"></image>
+		</view>
+		<view class="footer">
+			<view class="footer-btn">
+				<view class="btn1 font-color2 font-thirty" @click="gotoShop">优待证结算</view>
+				<view class="btn1 font-color2 font-thirty" @click="show">唯一识别码结算</view>
+			</view>
+			<view class="btn2 font-color2 font-thirty" @click="goto">查看优惠记录</view>
+		</view>
+		<ming-pop ref="statement" direction="below" :is_mask="true" :width="100" height="42%" :maskFun="true">
+			<money @close="close()" @add="submit"></money>
+		</ming-pop>
+		<u-toast ref="uToast" />
+	</view>
+</template>
+
+<script>
+	import money from '@/components/pop/money.vue'
+	import server from "@/api/index";
+	import http from '@/common/http.js'
+	export default {
+		components:{
+			money
+		},
+		data() {
+			return {
+				list: {
+					name: '店铺',
+					url: '',
+				},
+				id: null,
+				userInfo: null,
+				flag: false,
+			}
+		},
+		onLoad(e) {
+			this.userInfo = uni.getStorageSync('userInfo');
+			this.id = e.id;
+			this.list.name = e.name;
+			if(e.img){
+				this.list.url = e.img
+			}
+		},
+		methods:{
+			image(e) {
+				return http.webUrl + e
+			},
+			submit(e){
+				if(e){
+					server.getCode({orderPriceOld: e, shopsId: this.userInfo.nickName}).then(res =>{
+							// this.$refs.uToast.show({
+							// 	title: '修改成功!',
+							// 	type: 'default',
+							// })
+						console.log(res)
+						this.flag = true;
+						this.list.url = res;
+					})
+				}
+			},
+			gotoShop(){
+				uni.navigateTo({
+					url: '/pages/merchant/home/shop'
+				})
+			},
+			show(){
+				uni.navigateTo({
+					url: '/pages/soldier/user/scanning'
+				})
+			},
+			// show() {
+			// 	this.$refs.statement.show();
+			// },
+			// close() {
+			// 	this.$refs.statement.close();
+			// },
+			goto(url){
+				uni.navigateTo({
+					url: '/pages/merchant/home/record?id=' + this.id
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.code{
+		width: 100%;
+		height: auto;
+		min-height: 100vh;
+		padding: 30rpx;
+		.header{
+			width: 100%;
+			height: 575rpx;
+			background: #FFFFFF;
+			border-radius: 24rpx;
+			text-align: center;
+			.name{
+				width: 100%;
+				height: 135rpx;
+				line-height: 135rpx;
+				text-align: center;
+				letter-spacing: 2rpx;
+			}
+			.img{
+				width: 400rpx;
+				height: 400rpx;
+			}
+		}
+		.footer{
+			.btn1{
+				margin-top: 30rpx;
+				width: 100%;
+				height: 96rpx;
+				line-height: 96rpx;
+				background: rgba(46, 79, 28, 0.13);
+				border-radius: 16rpx;
+				text-align: center;
+			}
+			.btn2{
+				margin-top: 30rpx;
+				width: 100%;
+				height: 96rpx;
+				line-height: 96rpx;
+				background: #FFFFFF;
+				border-radius: 16rpx;
+				border: 2rpx solid #2E4F1C;
+				text-align: center;
+			}
+		}
+	}
+</style>

+ 118 - 0
pages/merchant/home/data.vue

@@ -0,0 +1,118 @@
+<template>
+	<view class="main main-bg">
+		<view class="main-list">
+			<view class="list-left font-color3 font-thirty-two">姓名</view>
+			<view class="list-right font-color2 font-thirty-two">{{ list.veteransName ? list.veteransName : '' }}</view>
+		</view>
+		<view class="main-list">
+			<view class="list-left font-color3 font-thirty-two">身份证号码</view>
+			<view class="list-right font-color2 font-thirty-two">{{ list.veteransIdcard ? change(list.veteransIdcard) : '' }}</view>
+		</view>
+		<view class="main-list">
+			<view class="list-left font-color3 font-thirty-two">电话</view>
+			<view class="list-right font-color2 font-thirty-two">{{ list.veteransTel ? changeTel(list.veteransTel) : '' }}</view>
+		</view>
+		<!-- <view class="main-list">
+			<view class="list-left font-color3 font-thirty-two">军人等级</view>
+			<view class="list-right font-color2 font-thirty-two">{{ list.level ? list.level : '' }}</view>
+		</view> -->
+		<view class="footer">
+			<view class="left header-long-bg font-color1 font-thirty" @click="gotoshop">惠军购</view>
+			<view class="right font-color2 font-thirty" @click="goto">返回店铺</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import server from "@/api/index";
+export default {
+	data() {
+		return {
+			list:{},
+			userId: null,
+			type: null
+		};
+	},
+	onLoad(e) {
+		this.userId = e.money;
+		this.type = e.id;
+		this.getInfoFn(e.money, e.id);
+	},
+	methods:{
+		getInfoFn(id, type){
+			server.getRegister(id, type).then(res =>{
+				this.list = res
+			})
+		},
+		change(name){
+			let mystr = name.substring(0,6)+'****'+name.substring(10);
+			return mystr
+		},
+		changeTel(name){
+			let mystr = name.substring(0,3)+'****'+name.substring(7);
+			return mystr
+		},
+		goto(){
+			uni.reLaunch({
+				url: '/pages/index/index'
+			})
+		},
+		gotoshop(){
+			console.log(this.userId, this.type, this.list.veteransName)
+			uni.navigateTo({
+				url: '/pages/merchant/home/shop?userId=' + this.userId + '&type=' + this.type + '&veteransName=' + this.list.veteransName
+			})
+		}
+	}
+}
+</script>
+
+<style lang="scss" scoped>
+	.main{
+		width: 100%;
+		height: auto;
+		min-height: 100vh;
+		padding: 30rpx;
+		.main-list{
+			width: 100%;
+			height: 102rpx;
+			line-height: 102rpx;
+			padding-left: 30rpx;
+			padding-right: 30rpx;
+			display: flex;
+			justify-content: space-between;
+			background: #fff;
+			border-radius: 24rpx;
+			margin-bottom: 30rpx;
+			.list-right{
+				font-weight: 600;
+			}
+		}
+		.footer{
+			width: 100%;
+			height: 125rpx;
+			background: #FFFFFF;
+			position: fixed;
+			left: 0rpx;
+			bottom: 0rpx;
+			padding: 14rpx 30rpx;
+			display: flex;
+			justify-content: space-between;
+			.left{
+				width: 330rpx;
+				height: 96rpx;
+				line-height: 96rpx;
+				border-radius: 48rpx;
+				text-align: center;
+			}
+			.right{
+				width: 330rpx;
+				height: 96rpx;
+				line-height: 96rpx;
+				border-radius: 48rpx;
+				text-align: center;
+				border: 4rpx solid #2E4F1C;
+			}
+		}
+	}
+</style>

+ 236 - 0
pages/merchant/home/index.vue

@@ -0,0 +1,236 @@
+<template>
+	<view class="main main-bg shadow">
+		<view class="home-header header-long-bg">
+			<view class="header-text font-forty font-color1">{{ list.shopsName ? list.shopsName : '' }}</view>
+			<view class="view">
+				<view class="view-data">
+					<view class="quit font-color2 font-twenty" @click="handleQuit">退出登录</view>
+					<view class="one">
+						<view class="name font-color3 font-thirty-two">{{ list.shopsName ? list.shopsName : '' }}</view>
+						<view class="phone font-color5 font-twenty-two">商铺电话: {{ list.shopsTel ? list.shopsTel : '无' }}</view>
+					</view>
+					<view class="address font-twenty-two font-color4">地址: {{ list.shopsAddress ? list.shopsAddress : '' }}</view>
+					<image class="img" :src="image(list.shopsPic)"></image>
+					<view class="content font-color2 font-twenty-four">店铺简介: {{ list.shopsIntroduce ? list.shopsIntroduce : '' }}</view>
+				</view>
+				<view class="footer">
+					<view class="left font-color1 font-thirty header-long-bg" @click="gotoCode">结算</view>
+					<view class="right font-color2 font-thirty" @click="gotoModify">修改店铺信息</view>
+				</view>
+				<view class="footer">
+					<view class="left font-color1 font-thirty header-long-bg" @click="gotoShops(list.shopsId)">店铺审核详情</view>
+					<view class="right font-color2 font-thirty" @click="goto('/pages/merchant/examine/goods/index')">商品审核详情</view>
+				</view>
+				<!-- <view class="footer">
+					<view class="left font-color1 font-thirty header-long-bg" @click="goto('/pages/merchant/home/record')">优惠记录</view>
+				</view> -->
+			</view>
+		</view>
+		<u-tabbar :list="tabBarList" :active-color="activeColor" :inactive-color="inactiveColor"
+					:border-top="borderTop"></u-tabbar>
+		<u-toast ref="uToast" />
+	</view>
+</template>
+
+<script>
+	import server from "@/api/index";
+	import http from '@/common/http.js'
+	import { mapGetters } from 'vuex'
+	export default {
+		data() {
+			return {
+				borderTop: false,
+				inactiveColor: '#ccc',
+				activeColor: '#2E4F1C',
+				list: {},
+				userInfo:{}
+			}
+		},
+		computed: {
+			...mapGetters([
+				'tabBarList',
+				'role'
+			])
+		},
+		methods:{
+			show(){
+				console.log('show???')
+				this.userInfo = uni.getStorageSync('userInfo');
+				this.getListFn();
+			},
+			image(e) {
+				return http.webUrl + e
+			},
+			getListFn(){
+				server.getYongJunDetails(this.userInfo.nickName).then(res =>{
+					if(res){
+						this.list = res
+					}else{
+						this.list = {}
+					}
+				})
+			},
+			handleQuit(){
+				let _this = this;
+				uni.showModal({
+				    title: '提示',
+				    content: '确定退出登录吗?',
+				    success: function (res) {
+				        if (res.confirm) {
+							uni.removeStorage({
+							    key: 'userInfo',
+							    success: function (res) {
+									uni.removeStorage({
+										key: 'role',
+									});
+									uni.removeStorage({
+										key: 'token',
+									    success: function (res) {
+											uni.reLaunch({
+											    url: '/pages/index/index'
+											});
+									    }
+									});
+							    }
+							});
+				        } else if (res.cancel) {
+				            console.log('用户点击取消');
+				        }
+				    }
+				});
+			},
+			gotoShops(id){
+				uni.navigateTo({
+					url: '/pages/merchant/examine/shops/merchantExamine?id=' + id
+				})
+			},
+			goto(url){
+				uni.navigateTo({
+					url
+				})
+			},
+			gotoCode(){
+				if(this.userInfo.status !== '2'){
+					this.$refs.uToast.show({
+						title: '店铺暂未认证!',
+						type: 'default',
+					})
+				}else{
+					let _this = this;
+					uni.navigateTo({
+						url: '/pages/merchant/home/code?id=' + _this.list.id + '&name=' + _this.list.shopsName + '&img=' + _this.list.shopsPic
+					})
+					// uni.navigateTo({
+					// 	url: '/pages/merchant/home/code'
+					// })
+				}
+			},
+			gotoModify(){
+				uni.navigateTo({
+					url: '/pages/merchant/home/modify?id=' + this.list.id
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.main{
+		width: 100%;
+		height: auto;
+		min-height: 100vh;
+		.home-header{
+			width: 100%;
+			height: 400rpx;
+			border-bottom-left-radius: 50rpx;
+			border-bottom-right-radius: 50rpx;
+			padding-top: 84rpx;
+			padding-left: 30rpx;
+			position: relative;
+			.header-text{
+				height: 96rpx;
+				line-height: 96rpx;
+			}
+			.view{
+				position: absolute;
+				top: 180rpx;
+				left: 30rpx;
+				width: calc(100% - 60rpx);
+				height: auto;
+				border-radius: 24rpx;
+				.view-data{
+					width: 100%;
+					height: auto;
+					background: #FFFFFF;
+					border-radius: 8rpx;
+					padding: 30rpx;
+					position: relative;
+					.quit{
+						position: absolute;
+						height: 50rpx;
+						line-height: 50rpx;
+						top: 25rpx;
+						right: 30rpx;
+						width: 150rpx;
+						text-align: center;
+						border-radius: 25rpx;
+						border: 1rpx solid #2E4F1C;
+					}
+					.one{
+						margin-top: 30rpx;
+						display: flex;
+						justify-content: space-between;
+						height: 96rpx;
+						line-height: 96rpx;
+						overflow: hidden;
+						.name{
+							letter-spacing: 2rpx;
+							width: 50%;
+						}
+						.phone{
+							width: 50%;
+							text-align: right;
+						}
+					}
+					.img{
+						width: 100%;
+						height: 420rpx;
+						margin: 30rpx 0;
+					}
+					.content{
+						opacity: 1;
+						line-height: 40rpx;
+					}
+					.text{
+						height: 100rpx;
+						line-height: 100rpx;
+					}
+				}
+				.footer{
+					width: 100%;
+					height: 96rpx;
+					margin-top: 60rpx;
+					display: flex;
+					justify-content: space-between;
+					.left{
+						width: calc(50% - 15rpx);
+						height: 96rpx;
+						line-height: 96rpx;
+						border-radius: 48rpx;
+						text-align: center;
+						letter-spacing: 2rpx;
+					}
+					.right{
+						width: calc(50% - 15rpx);
+						height: 96rpx;
+						line-height: 96rpx;
+						border-radius: 48rpx;
+						text-align: center;
+						letter-spacing: 2rpx;
+						border: 2rpx solid #2E4F1C;
+					}
+				}
+			}
+		}
+	}
+</style>

+ 381 - 0
pages/merchant/home/modify.vue

@@ -0,0 +1,381 @@
+<template>
+	<view class="main main-bg">
+		<u-form :model="form" ref="uForm" :rules="rules">
+			<u-form-item 
+				label="店铺名称"
+				label-width="180" 
+				:label-position="labelPosition"
+				prop="shopsName">
+				<u-input 
+					v-model="form.shopsName" 
+					placeholder-style="color: #2E4F1C;"
+					placeholder="请输入店铺名称" />
+			</u-form-item>
+			<u-form-item
+				label="店铺电话"
+				label-width="180" 
+				:label-position="labelPosition"
+				prop="shopsTel">
+				<view class="form-item">
+					<u-input 
+						v-model="form.shopsTel" 
+						placeholder-style="color: #2E4F1C;"
+						placeholder="请输入店铺电话" />
+				</view>
+			</u-form-item>
+			<u-form-item
+			  :label-position="labelPosition" 
+			  label="场景种类" 
+			  prop="shopsType" 
+			  label-width="180">
+				<u-input placeholder-style="color: #2E4F1C;" type="select" :select-open="selectShow" v-model="form.type" placeholder="请选择场景种类" @click="selectShow = true"></u-input>
+				<u-select mode="single-column" :list="selectList" v-model="selectShow" @confirm="selectConfirm"></u-select>
+			</u-form-item>
+			<!-- <u-form-item
+				label="优惠"
+				label-width="180" 
+				:label-position="labelPosition"
+				prop="shopsDiscount">
+				<u-input 
+					v-model="form.shopsDiscount" 
+					placeholder-style="color: #2E4F1C;"
+					placeholder="请输入优惠" />
+			</u-form-item> -->
+			<view class="store-dis">
+				<view class="store-address">
+					<view class="select-address">
+						<view class="font-color3 font-twenty">
+							店铺地址
+						</view>
+						<u-input
+							v-model="form.shopsAddress" 
+							placeholder-style="color: #2E4F1C;"
+							placeholder="请选择地址"/>
+					</view>
+				</view>
+				<view class="map-icon" @click="chooseLocation()">
+					<image src="../../../static/map.png" class="icon-img"></image>
+					<!-- <u-icon name="map" color="#ffffff" size="56rpx"></u-icon> -->
+				</view>
+			</view>
+			
+			<u-form-item
+			 label-position="top"
+			  label="简介"
+			  prop="shopsIntroduce">
+				<u-input type="textarea" placeholder="请填写店铺简介" v-model="form.shopsIntroduce" />
+			</u-form-item>
+			<view class="form-upload">
+				<view class="upload-title font-twenty font-color2">
+					照片修改(重新上传一张新照片,否则默认之前)
+				</view>
+				<view style="display: flex;">
+					<image v-if="flag" :src="image(form.shopsPic)" style="width:160rpx; height:160rpx"></image>
+					<u-upload
+						width="160"
+						height="160"
+						:action="action"
+						max-count="1" 
+						@on-success="onSuccess">
+					</u-upload>
+				</view>
+			</view>
+		</u-form>
+		<view @click="submit" class="form-submit">确认</view>
+		<u-toast ref="uToast" />
+	</view>
+</template>
+
+<script>
+	import http from '@/common/http.js'
+	import amap from '@/lib/amap-wx.130.js'
+	import server from "@/api/index";
+	export default {
+		data() {
+			return {
+				action: http.webUrl+`/wx/common/upload`,
+				labelPosition: 'left',
+				addressName: '',
+				flag: true,
+				selectShow: false,
+				form: {
+					shopsName: '',
+					shopsTel: '',
+					// shopsDiscount: 1,
+					shopsIntroduce: '',
+					shopsPic: '',
+					shopsAddress:'',
+					shopsLat: null,
+					shopsLng: null,
+					shopsType: null
+				},
+				selectList: [],
+				rules: {
+					shopsTel: [
+						{ 
+							required: true, 
+							message: '手机号格式不正确!',
+							trigger: ['change','blur'],
+						},
+						{
+							validator: (rule, value, callback) => {
+								return this.$u.test.rangeLength(value, [1, 11]);
+							},
+							message: '手机号最多输入11个字符!',
+							trigger: ['change','blur'],
+						}
+					],
+					shopsIntroduce: [
+						{ 
+							validator: (rule, value, callback) => {
+								return this.$u.test.rangeLength(value, [0, 50]);
+							},
+							message: '简介最多输入50个字符!',
+							trigger: ['change','blur'],
+						}
+					],
+					shopsName: [
+						{ 
+							validator: (rule, value, callback) => {
+								return this.$u.test.rangeLength(value, [1, 15]);
+							},
+							message: '名称最多输入15个字符!',
+							trigger: ['change','blur'],
+						}
+					],
+					// shopsDiscount: [
+					// 	{
+					// 		required: true, 
+					// 		message: '请输入优惠!',
+					// 		trigger: ['change','blur'],
+					// 	},
+					// 	{
+					// 		validator: (rule, value, callback) => {
+					// 			return this.$u.test.range(value, [0, 1]);
+					// 		},
+					// 		message: '优惠必须是小数!',
+					// 		trigger: ['change','blur'],
+					// 	}
+					// ]
+				},
+				id: null,
+				key:'1dc63f21c12985e199a715faf4c02f36',
+				userInfo:{}
+			}
+		},
+		onLoad(e) {
+			this.userInfo = uni.getStorageSync('userInfo');
+			this.id = e.id;
+			if(this.userInfo.nickName !== "null"){
+				this.getListFn();
+			}
+			this.amapPulgin = new amap.AMapWX({
+				key: this.key
+			})
+			this.getDicFn()
+		},
+		onReady() {
+			this.$refs.uForm.setRules(this.rules);
+		},
+		// onShow() {
+		// 	this.getListFn();
+		// },
+		methods:{
+			image(e) {
+				return http.webUrl + e
+			},
+			selectConfirm(e) {
+				console.log(e)
+				this.form.shopsType = e[0].value
+				this.form.type = e[0].label
+			},
+			getDicFn(){
+				server.getDic({dictType: 'shops_type'}).then(res =>{
+					console.log(res)
+					this.selectList = res
+				})
+			},
+			getListFn(){
+				server.getYongJunDetails(this.userInfo.nickName).then(res =>{
+					this.form = res
+				})
+			},
+			onSuccess(data, index, lists, name){
+				this.form.shopsPic = data.fileName
+				this.flag = false;
+			},
+			submit() {
+				console.log(this.form)
+				let _this = this;
+				let form = this.form
+				form.shopsStatus = '1';
+				if(this.userInfo.nickName === "null"){
+					form.userId = _this.userInfo.userId;
+					this.$refs.uForm.validate(valid => {
+						if (valid) {
+							server.getAddShops(form).then(res =>{
+								_this.$refs.uToast.show({
+									title: '添加店铺信息成功!',
+									type: 'default',
+								})
+								setTimeout(function()  {
+									uni.redirectTo({
+									    url: '/pages/login/index'
+									});
+								}, 2000);
+							})
+						} else {
+						}
+					});
+				}else{
+					form.shopsId = _this.userInfo.nickName;
+					this.$refs.uForm.validate(valid => {
+						if (valid) {
+							server.getIndexData(form).then(res =>{
+								_this.$refs.uToast.show({
+									title: '修改店铺信息成功!',
+									type: 'default',
+								})
+								setTimeout(function()  {
+									uni.navigateBack({
+									    delta: 1
+									});
+								}, 2000);
+							})
+						} else {
+						}
+					});
+				}
+			},
+			getLocation() {
+				let that = this;
+				that.amapPulgin.getRegeo({
+					success: res => {
+						console.log('当前定位', res);
+						that.addressName = `${res[0].regeocodeData.addressComponent.city}`
+						// uni.hideLoading();
+					},
+					fail: err => {
+						console.log(err)
+					}
+				})
+			},
+			chooseLocation(e) {
+				uni.chooseLocation({
+					success: (res) => {
+						console.log(res)
+						this.form.shopsAddress = res.name
+						this.form.shopsLat = res.latitude
+						this.form.shopsLng = res.longitude
+						// let result = res.address.substring(0, res.address.indexOf('市'))
+						// if(result.indexOf('省') != -1){
+						// 	this.form.address = result.match(/省(\S*)/)[1];
+						// }else{
+						// 	this.form.address = result
+						// }
+					}
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	/deep/ .u-list-item{
+		margin: 0rpx 0rpx 0rpx 16rpx!important;
+	}
+	/deep/ .u-icon__icon{
+		position: relative;
+		// color: #2E4F1C!important;
+		color: #FFFFFF!important;
+	}
+	/deep/ .u-form-item__message{
+		padding-right: 0rpx!important;
+		text-align: right;
+	}
+	/deep/ .u-input__input{
+		color: #2E4F1C!important;
+		font-size: 28rpx;
+		font-family: PingFangSC-Regular, PingFang SC;
+		font-weight: 400;
+		text-align: right;
+	}
+	/deep/ .u-border, .u-border-bottom, .u-border-left, .u-border-right, .u-border-top, .u-border-top-bottom{
+		
+	}
+	/deep/ .u-form-item{
+		display: -webkit-box;
+		display: -webkit-flex;
+		display: flex;
+		-webkit-box-orient: horizontal;
+		-webkit-box-direction: normal;
+		-webkit-flex-direction: row;
+		flex-direction: row;
+		box-sizing: border-box;
+		line-height: 96rpx;
+		-webkit-flex-direction: column;
+		flex-direction: column;
+		background: rgba(46, 79, 28, 0.13);
+		border-radius: 24rpx;
+		margin-bottom: 40rpx;
+		padding-left: 30rpx!important;
+		padding-right: 30rpx!important;
+	}
+	.main{
+		width: 100%;
+		height: auto;
+		min-height: 100vh;
+		padding: 60rpx 30rpx 30rpx;
+		.store-dis{
+			display: flex;
+			margin-bottom: 30rpx;
+			.store-address{
+				width: 580rpx;
+				padding: 16rpx 30rpx;
+				background: rgba(46, 79, 28, 0.13);
+				border-radius: 16rpx 0rpx 0rpx 16rpx;
+				.select-address{
+					display: flex; 
+					align-items: center;
+					justify-content: space-between; 
+				}
+			}
+			.map-icon{
+				width: 110rpx;
+				background: #2E4F1C;
+				text-align: center;
+				border-radius: 0rpx 16rpx 16rpx 0rpx;
+				padding-top: 31rpx;
+				.icon-img{
+					width: 42rpx;
+					height: 42rpx;
+				}
+			}
+		}
+	
+		.form-upload{
+			width: 100%;
+			height: 300rpx;
+			background: rgba(46, 79, 28, 0.13);
+			border-radius: 16rpx;
+			padding-left: 30rpx;
+			.upload-title{
+				height: 100rpx;
+				line-height: 100rpx;
+			}
+		}
+		.form-submit{
+			margin: 60rpx auto;
+			width: 570rpx;
+			height: 96rpx;
+			line-height: 96rpx;
+			background: #2E4F1C;
+			border-radius: 49rpx;
+			font-size: 36rpx;
+			text-align: center;
+			font-family: PingFangSC-Medium, PingFang SC;
+			font-weight: 500;
+			color: #fff;
+		}
+	}
+</style>

+ 186 - 0
pages/merchant/home/record.vue

@@ -0,0 +1,186 @@
+<template>
+	<view class="main main-bg">
+		<view class="list" v-if="list.length> 0">
+			<view class="items" v-for="(item, index) in list">
+				<view class="data">
+					<view class="name font-color3 font-thirty-two">{{ item.goodsName ? item.goodsName : '' }}</view>
+					<view class="name font-color4 font-twenty-four">{{ item.orderTime }}</view>
+				</view>
+				<view class="user font-color3 font-twenty">使用者: {{ item.veteransName ? item.veteransName : '优待证' }}</view>
+				<view class="data">
+					<view class="yuan font-color3 font-thirty-two">原价: ¥{{ change(item.orderPriceOld) }}</view>
+					<view class="name font-color5 font-thirty">惠军价: ¥{{ change(item.orderPriceVip) }}</view>
+				</view>
+				<view style="height: 30rpx;" class="item-bom-data font-twenty-four font-color6" v-if="!item.show"
+					@click="handleShow(item.orderId, index, item.remark)">
+					展开
+					<u-icon style="transform:rotate(90deg);" name="arrow-right-double" color="#12C194" size="28">
+					</u-icon>
+				</view>
+				<view class="item-bom-data font-twenty-four font-color6" v-if="item.show"
+					@click="handleShow(item.orderId, index, item.remark)">
+					收起
+					<u-icon style="transform:rotate(-90deg);" name="arrow-right-double" color="#12C194" size="28">
+					</u-icon>
+				</view>
+				<view v-if="item.show" style="margin-top: 60rpx;">
+					<view v-if="item.list[0]">
+						<view class="line between" v-for="(items, indexs) in item.list">
+							<view class="font-twenty-four font-color3"> {{ items.shopsName }} </view>
+							<view class="font-twenty-four font-color3"> {{ items.shopsNum }}个 </view>
+							<view class="font-twenty-four font-color3"> {{ change(items.priceOld) }}元 </view>
+							<view class="font-twenty-four font-color3"> {{ change(items.priceVip) }}元 </view>
+						</view>
+					</view>
+					<view v-else>
+						金额结算暂无明细
+					</view>
+					<view class="between">
+						<view class="img-item" v-for="img in item.picUrlList">
+							<image @tap="preAvatar(image(img))" class="img" :src="image(img)"></image>
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view class="list" v-else style="padding-top: 300rpx;">
+			<u-empty mode="list"></u-empty>
+		</view>
+	</view>
+</template>
+
+<script>
+	import server from "@/api/index";
+	import http from '@/common/http.js';
+	export default {
+		data() {
+			return {
+				list:[],
+				userInfo:{}
+			}
+		},
+		onLoad(e) {
+			this.userInfo = uni.getStorageSync('userInfo');
+			this.getIndexDetailsFn();
+		},
+		methods:{
+			image(e) {
+				return http.webUrl + e
+			},
+			handleShow(orderId, index, id) {
+				this.list[index].show = !this.list[index].show
+				if (this.list[index].show == true) {
+					this.list[index].list = [];
+					server.getDetailedList({orderId: orderId}).then(res => {
+						this.list[index].list = res;
+					})
+				}
+			},
+			change(num){
+				return parseFloat(num).toFixed(2)
+			},
+			// 预览图片
+			preAvatar(url) {
+				console.log(url)
+				wx.previewImage({
+					current: url, // 当前显示图片的 http 链接
+					urls: [url] ,// 需要预览的图片 http 链接列表
+				})
+			},
+			getIndexDetailsFn(){
+				if(this.userInfo.type === '1'){
+					server.getIndexDetails({shopsId: this.userInfo.nickName}).then(res =>{
+						this.list = []
+						let that = this;
+						if(res){
+							res.forEach(item => {
+								that.list.push({
+									...item,
+									show: false,
+									list: [
+										{
+											name: '商品',
+											num: 5,
+											hui: 399.00,
+											yuan: 800.00
+										},
+										{
+											name: '商品',
+											num: 5,
+											hui: 399.00,
+											yuan: 800.00
+										}
+									]
+								})
+							})
+						}
+						
+					})
+				}else if(this.userInfo.type === '2' || this.userInfo.type === '3' ){
+					server.getMyself({veteransId: this.userInfo.userId, remark: this.userInfo.type}).then(res =>{
+						this.list = []
+						if(res){
+							this.list = res
+						}
+					})
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.main{
+		width: 100%;
+		height: auto;
+		min-height: 100vh;
+		padding: 30rpx;
+		.list{
+			width: 100%;
+			height: auto;
+			.items{
+				width: 100%;
+				height: auto;
+				background: #FFFFFF;
+				min-height: 277rpx;
+				padding: 30rpx;
+				margin-bottom: 30rpx;
+				position: relative;
+				.data{
+					display: flex;
+					justify-content: space-between;
+				}
+				.user{
+					height: 97rpx;
+					line-height: 97rpx;
+				}
+				.name{
+					font-weight: 600;
+				}
+				.item-bom-data{
+					position: absolute;
+					top: 217rpx;
+					right: 30rpx;
+					height: 40rpx;
+					line-height: 40rpx;
+				}
+				.line {
+					// margin-left: 30rpx;
+					// margin-right: 30rpx;
+					border-top: 2rpx solid #C8CCDB;
+					height: 93rpx;
+					line-height: 93rpx;
+					text-align: center;
+				}
+			}
+		}
+		.img-item{
+			width: calc(33% - 15rpx);
+			height: 170rpx;
+			.img{
+				width: 100%;
+				height: 170rpx;
+			}
+		}
+	}
+</style>

+ 554 - 0
pages/merchant/home/shop.vue

@@ -0,0 +1,554 @@
+<template>
+	<view class="main main-bg">
+		<!-- <view class="other" @click="handleOther">
+			其他商品
+		</view> -->
+		<view class="view-list" v-if="list.length > 0">
+			<view class="item" v-for="(item, index) in list">
+				<image :src="image(item.goodsPic)" @tap="preAvatar(image(item.goodsPic))"></image>
+				<view class="item-footer">
+					<view class="name font-twenty">{{item.goodsName}}</view>
+					<view class="yuan font-twenty font-color2">商品原价: ¥{{item.goodsRatePrice ?item.goodsRatePrice : 1}}</view>
+					<view class="yuan font-twenty font-color5">商品折扣: {{item.goodsPrice ? item.goodsPrice : 1}}</view>
+					<view class="yuan font-twenty font-color5">折扣价格: ¥{{ (item.goodsRatePrice*(item.goodsPrice||1)).toFixed(1) }}</view>
+					<view class="icon">
+						<u-icon name="heart" size="32" v-if="!item.show"  @click="handleShow(index, item.show, item)"></u-icon>
+						<u-icon name="heart-fill" size="32" color="#CC1019" v-if="item.show"  @click="handleShow(index, item.show, item)"></u-icon>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view style="text-align: center; padding-top: 100rpx;" v-else>
+			<u-empty mode="list"></u-empty>
+		</view>
+		<view class="footer">
+			<view class="left header-long-bg font-color1 font-thirty" @click="handleGou">购买结算</view>
+			<view class="right font-color2 font-thirty" @click="goto">返回店铺</view>
+		</view>
+		<u-popup ref="order" mode="bottom" v-model="showPopup" length="100%">
+		<!-- <ming-pop ref="order" direction="below" :is_mask="true" :width="100" height="100%" :maskFun="true"> -->
+			<u-icon style="padding-left: calc(100% - 80rpx); padding-top: 20rpx;" size="32" name="backspace" @click="close()"></u-icon>
+			
+				<view class="order-list main-bg">
+				<scroll-view scroll-y="true" style="height: 100%;">
+					<view class="order-item" v-for="(item, index) in newList">
+						<view class="order-item-header">
+							<image :src="image(item.goodsPic)" @tap="preAvatar(image(item.goodsPic))"></image>
+							<view  class="order-item-header-right">
+								<view class="name font-twenty">{{item.goodsName}}</view>
+								<view class="yuan font-twenty font-color2">商品原价: ¥{{item.goodsRatePrice ?item.goodsRatePrice : 0}}</view>
+								<view class="yuan font-twenty font-color5">
+									<span style="padding-right: 32rpx;">商品折扣: {{item.goodsPrice ? item.goodsPrice : 1}}</span>
+									<u-icon name="edit-pen" @click="handleShowZhe(index, item)"></u-icon>
+								</view>
+								<view class="name font-twenty" style="padding-top: 20rpx;">
+									<span style="padding-right: 15rpx;">数量: </span>
+									<u-icon name="minus-circle" @click="handleJian(index, item)"></u-icon>
+									<span style="color: #000; padding-left: 20rpx; padding-right: 20rpx;" @click="changeNum(index, item)">{{item.num}}</span>
+									<u-icon name="plus-circle" @click="handleJia(index, item)"></u-icon>
+								</view>
+							</view>
+						</view>
+						<view class="order-item-footer font-twenty font-color2">
+							单价: {{ (item.all || 0).toFixed(2) }}
+						</view>
+					</view>
+				</scroll-view>
+					<view class="footer1">
+						<view class="total font-color2 font-twenty">合计: ¥{{ (total || 0).toFixed(2) }}</view>
+						<view class="left header-long-bg font-color1 font-thirty" @click="handleTotal">调整折扣</view>
+						<view class="right font-color2 font-thirty" @click="handleAdd">确认结算</view>
+					</view>
+				</view>
+			
+		</u-popup>
+		<!-- </ming-pop> -->
+		<!-- <ming-pop ref="zhe" direction="below" :is_mask="true" :width="100" height="50%" :maskFun="true"> -->
+		<u-popup ref="zhe" mode="bottom" v-model="showZhe" length="45%">
+			<zhe @close="closeZhe()" ref="zheli" @add="changeZhe" @total="changeTotal"></zhe>
+		</u-popup>
+		<!-- </ming-pop> -->
+		<!-- <ming-pop ref="number" direction="below" :is_mask="true" :width="100" height="50%" :maskFun="true"> -->
+		<u-popup ref="number" mode="bottom" v-model="showNumber" length="45%">
+			<count @close="closeCount()" ref="count" @add="changeCount"></count>
+		</u-popup>
+		<u-popup ref="img" mode="bottom" v-model="showImg" length="100%">
+			<view class="liet">
+				<view class="title">
+					<u-icon name="close" @click="closeImg()"></u-icon>
+				</view>
+				<view class="font-color2 font-twenty">上传证件</view>
+				<u-upload
+					width="160"
+					height="160"
+					:action="action"
+					max-count="3" 
+					@on-success="onSuccess">
+				</u-upload>
+				<view class="right1 font-color2 font-thirty" @click="handleSubmit">确认</view>
+			</view>
+		</u-popup>
+		<!-- </ming-pop> -->
+		<u-toast ref="uToast" />
+	</view>
+</template>
+
+<script>
+import server from "@/api/index";
+import http from '@/common/http.js'
+import zhe from '@/components/pop/zhe.vue'
+import count from '@/components/pop/count.vue'
+export default {
+	components:{
+		zhe,
+		count
+	},
+	data() {
+		return {
+			action: http.webUrl+`/wx/common/upload`,
+			userInfo: null,
+			showPopup: false,
+			showZhe: false,
+			showNumber: false,
+			showImg: false,
+			userId: 0,
+			type: '',
+			total: null,
+			yuan: null,
+			list: [],
+			newList: [],
+			picUrlList: [],
+			discount: 1,
+			youhuiTotal: 0,
+			veteransName: ''
+		}
+	},
+	onLoad(e) {
+		this.userInfo = uni.getStorageSync('userInfo');
+		if(e.userId){
+			this.userId = parseInt(e.userId);
+			this.type = e.type;
+			this.veteransName = e.veteransName
+		}
+		this.getListFn(this.userInfo.nickName);
+		setTimeout(function () {
+		}, 1000);
+		uni.startPullDownRefresh();
+	},
+	onPullDownRefresh() {
+		this.userInfo = uni.getStorageSync('userInfo');
+		this.getListFn(this.userInfo.nickName);
+		setTimeout(function () {
+			uni.stopPullDownRefresh();
+		}, 1000);
+	},
+	methods:{
+		handleGou(){
+			if(this.newList.length > 0){
+				this.showPopup = true;
+			}else{
+				// this.showImg = true;
+				this.handleOther();
+			}
+		},
+		onSuccess(data, index, lists, name){
+			console.log(data, index, lists, name)
+			this.picUrlList = [];
+			lists.forEach(item =>{
+				this.picUrlList.push(item.response.fileName)
+			})
+			console.log('data.fileName', data.fileName)
+			console.log('this.picUrlList ',this.picUrlList)
+		},
+		handleAdd(){
+			this.showImg = true;
+			// this.handleSubmit();
+		},
+		handleSubmit(){
+			console.log('newList', this.newList)
+			console.log('this.picUrlList handleSubmit',this.picUrlList)
+			let detailedlist = [];
+			this.newList.forEach(item =>{
+				detailedlist.push({
+					shopsName: item.goodsName,
+					shopsNum: item.num,
+					priceOld: item.goodsRatePrice,
+					priceVip: item.goodsPrice*item.goodsRatePrice
+				})
+			})
+			console.log(detailedlist)
+			let that = this;
+			uni.showModal({
+				title: '提示',
+				content: '确认结算吗?',
+				success: function (res) {
+					if (res.confirm) {
+						let params = {
+							shopsId: that.userInfo.nickName,
+							goodsName: that.userInfo.userName,
+							veteransName: that.veteransName,
+							veteransId: that.userId,
+							remark: that.type,
+							orderPriceOld: that.yuan,
+							orderPriceVip: that.total,
+							picUrlList: that.picUrlList,
+							detailedlist: detailedlist
+						}
+						console.log('params', params)
+						server.addOrderInfo(params).then(res =>{
+							that.$refs.uToast.show({
+								title: '操作成功!',
+								type: 'default',
+							})
+							setTimeout(function()  {
+								uni.switchTab({
+									url: '/pages/index/index'
+								})
+							}, 2000);
+						})
+					} else if (res.cancel) {
+						console.log('用户点击取消');
+					}
+				}
+			});
+			
+		},
+		changeTotal(data){
+			console.log(data)
+			this.total = this.youhuiTotal*data;
+			this.discount = data;
+		},
+		handleTotal(){
+			console.log("99999")
+			this.showZhe = true;
+			// this.$refs.zhe.show();
+			this.$refs.zheli.show();
+		},
+		changeNum(index, item){
+			this.showNumber = true;
+			// this.$refs.number.show();
			this.$refs.count.shows(item.goodsPrice, item.goodsRatePrice, index);
+		},
+		handleShowZhe(index, item){
+			// this.$refs.zhe.show();
+			this.showZhe = true;
+			this.$refs.zheli.shows(item.goodsPrice, item.goodsRatePrice, item.num, index);
+		},
+		handleJian(index, item){
+			if(this.newList[index].num >= 1){
+				this.newList[index].num = this.newList[index].num - 1;
+				this.newList[index].all = item.goodsRatePrice*(item.goodsPrice || 1)*item.num;
+				this.total =null;
+				this.goodsRatePrice =null;
+				this.yuan = null;
+				this.newList.forEach(item =>{
+					console.log(item.goodsRatePrice, item.num)
+					this.total += item.all;
+					this.yuan += parseFloat(item.goodsRatePrice)*item.num;
+				})
+				this.youhuiTotal = this.total;
+				this.total = this.total * this.discount;
+			}
+		},
+		handleJia(index, item){
+			this.newList[index].num = this.newList[index].num + 1
+			this.newList[index].all = item.goodsRatePrice*(item.goodsPrice || 1)*item.num;
+			this.total =null;
+			this.goodsRatePrice =null;
+			this.yuan = null;
+			this.newList.forEach(item =>{
+				console.log(item.goodsRatePrice, item.num)
+				this.total += item.all;
+				this.yuan += parseFloat(item.goodsRatePrice)*item.num;
+			})
+			this.youhuiTotal = this.total;
+			this.total = this.total * this.discount;
+		},
+		changeCount(num, goodsPrice, goodsRatePrice, index){
+			this.newList[index].num =num
+			this.newList[index].all =goodsRatePrice*goodsPrice*num
+			this.total =null;
+			this.goodsRatePrice =null;
+			this.yuan = null;
+			this.newList.forEach(item =>{
+				this.total += parseFloat(item.all);
+				this.yuan += parseFloat(item.goodsRatePrice)*item.num;
+			})
+			this.youhuiTotal = this.total;
+			this.total = this.total * this.discount;
+		},
+		changeZhe(data, goodsRatePrice,num, index){
+			this.newList[index].goodsPrice =data
+			this.newList[index].all =goodsRatePrice*data*num
+			this.total =null;
+			this.goodsRatePrice =null;
+			this.yuan = null;
+			this.newList.forEach(item =>{
+				this.total += parseFloat(item.all);
+				console.log(item.goodsRatePrice, item.num)
+				this.yuan += parseFloat(item.goodsRatePrice)*item.num;
+			})
+			this.youhuiTotal = this.total;
+			this.total = this.total * this.discount;
+		},
+		goto(){
+			uni.reLaunch({
+				url: '/pages/index/index'
+			})
+		},
+		handleOther(){
+			uni.navigateTo({
+				url: '/pages/merchant/home/account?veteransName='+ this.veteransName + '&veteransId=' + this.userId + '&remark=' + this.type
+			})
+		},
+		show() {
+			this.$refs.order.show();
+		},
+		closeZhe() {
+			this.$refs.zhe.close();
+		},
+		closeCount() {
+			this.$refs.number.close();
+		},
+		closeImg(){
+			this.$refs.img.close();
+		},
+		close() {
+			this.$refs.order.close();
+		},
+		handleShow(index, type, item){
+			if(type){
+				this.newList.forEach((item, count) =>{
+					if(item.index === index){
+						this.newList.splice(count,1);
+					}
+				})
+			}else{
+				this.newList.push({
+					...item,
+					index: index,
+					all: item.goodsRatePrice*(item.goodsPrice || 1),
+					num: 1,
+				})
+			}
+			this.total =null;
+			this.yuan = null;
+			this.newList.forEach(item =>{
+				this.total += parseFloat(item.all);
+				this.yuan += parseFloat(item.goodsRatePrice);
+			})
+			this.youhuiTotal = this.total;
+			this.list[index].show = !this.list[index].show
+		},
+		// 预览图片
+		preAvatar(url) {
+			wx.previewImage({
+				current: url, // 当前显示图片的 http 链接
+				urls: [url] ,// 需要预览的图片 http 链接列表
+			})
+		},
+		image(e) {
+			return http.webUrl + e
+		},
+		getListFn(id){
+			server.getGoodsInfo({shopsId: id, goodsStatus :'2'}).then(res =>{
+				this.list = [];
+				if(res){
+					res.forEach(item =>{
+						this.list.push({
+							...item,
+							show: false,
+						})
+					})
+				}
+			})
+		},
+	}
+}
+</script>
+
+<style lang="scss" scoped>
+	.liet{
+		padding: 30rpx;
+		background: #fff;
+		min-height: 100vh;
+	}
+	.title {
+		display: flex;
+		align-items: center;
+		text-align: center;
+		justify-content: flex-end;
+		.close {
+			width: 50rpx;
+			height: 50rpx;
+		}
+	}
+	.main{
+		width: 100%;
+		height: auto;
+		min-height: 100vh;
+		padding: 30rpx;
+		.other{
+			width: 100%;
+			height: 100rpx;
+			margin-bottom: 30rpx;
+			background-color: #fff;
+			text-align: center;
+			border-radius: 8rpx;
+			line-height: 100rpx;
+			font-size: 32rpx;
+			font-weight: 600;
+			letter-spacing: 2rpx;
+		}
+		.view-list{
+			display: flex;
+			flex-direction: row;
+			justify-content: space-between;
+			flex-wrap: wrap;
+			margin-bottom: 100rpx;
+			.item{
+				width: calc(50% - 15rpx);
+				height: 490rpx;
+				background: #fff;
+				border-radius: 8rpx;
+				margin-bottom: 30rpx;
+				image{
+					width: 100%;
+					height: 228rpx;
+					border-top-right-radius: 8rpx;
+					border-top-left-radius: 8rpx;
+				}
+				.item-footer{
+					padding: 10rpx 20rpx 0rpx 20rpx;
+					position: relative;
+					.icon{
+						position: absolute;
+						bottom: 0rpx;
+						right: 20rpx;
+					}
+				}
+			}
+		}
+	}
+	.footer1{
+		width: 100%;
+		height: 125rpx;
+		background: #FFFFFF;
+		position: -webkit-sticky;
+		position: sticky;
+		bottom: 0;
+		left: 0rpx;
+		bottom: 0rpx;
+		padding: 14rpx 30rpx;
+		display: flex;
+		justify-content: space-between;
+		z-index: 10;
+		.total{
+			height: 96rpx;
+			line-height: 96rpx;
+			font-weight: 600;
+		}
+		.left{
+			width: 180rpx;
+			height: 96rpx;
+			line-height: 96rpx;
+			border-radius: 48rpx;
+			text-align: center;
+		}
+		.right{
+			width: 180rpx;
+			height: 96rpx;
+			line-height: 96rpx;
+			border-radius: 48rpx;
+			text-align: center;
+			border: 4rpx solid #2E4F1C;
+		}
+	}
+	.right1{
+		width: 570rpx;
+		height: 96rpx;
+		background: linear-gradient(117deg, #5B873C 0%, #2E4F1C 100%);
+		border-radius: 49rpx;
+		font-size: 36rpx;
+		font-family: PingFangSC-Medium, PingFang SC;
+		font-weight: 500;
+		color: #fff;
+		text-align: center;
+		line-height: 96rpx;
+		margin: 90rpx auto;
+	}
+	.footer{
+		width: 100%;
+		height: 125rpx;
+		background: #FFFFFF;
+		position: fixed;
+		left: 0rpx;
+		bottom: 0rpx;
+		padding: 14rpx 30rpx;
+		display: flex;
+		justify-content: space-between;
+		z-index: 10;
+		.left{
+			width: 330rpx;
+			height: 96rpx;
+			line-height: 96rpx;
+			border-radius: 48rpx;
+			text-align: center;
+		}
+		.right{
+			width: 330rpx;
+			height: 96rpx;
+			line-height: 96rpx;
+			border-radius: 48rpx;
+			text-align: center;
+			border: 4rpx solid #2E4F1C;
+		}
+	}
+	/deep/ .product-window{
+		    position: fixed!important;
+		    background-color: #F8F8F8!important;
+			padding: 0rpx!important;
+		    z-index: 77!important;
+		    transition: all 0.3s cubic-bezier(0.25, 0.5, 0.5, 0.9)!important;
+		    -webkit-transition: all 0.3s cubic-bezier(0.25, 0.5, 0.5, 0.9)!important;
+	}
+	.order-list{
+		position: relative;
+		padding: 30rpx 30rpx 0rpx 30rpx;
+		// overflow: scroll;
+		min-height: 100vh;
+		// height: auto;
+		.order-item{
+			width: 100%;
+			height: 341rpx;
+			background: #fff;
+			margin-bottom: 30rpx;
+			border-radius: 8rpx;
+			.order-item-header{
+				height: 238rpx;
+				display: flex;
+				border-bottom: 2rpx solid #CCCCCC;
+				image{
+					width: 238rpx;
+					height: 238rpx;
+					background: #D8D8D8;
+				}
+				.order-item-header-right{
+					padding-left: 20rpx;
+					padding-top: 8rpx;
+				}
+			}
+			.order-item-footer{
+				text-align: right;
+				height: 101rpx;
+				line-height: 101rpx;
+				padding-right: 30rpx;
+			}
+		}
+	}
+	.name{
+		color: #000000;
+	}
+	.yuan{
+		padding-top: 20rpx;
+	}
+</style>

+ 95 - 0
pages/soldier/home/detail.vue

@@ -0,0 +1,95 @@
+<template>
+	<view class="detail main-bg">
+		<view class="title font-thirty font-color3">
+			{{list.noticeTitle}}
+		</view>
+		<view class="time font-twenty-four font-color4">
+			<span class="padding">创建时间: {{list.createTime}}</span><span>创建人: {{list.createBy}}</span>
+		</view>
+		<image class="header-img" src="/static/img.png"></image>
+		<!-- <view class="content">{{list.content}}</view> -->
+		<view style="width:100%; overflow: hidden;">
+			<rich-text :nodes="noticeContent"></rich-text>
+		</view>
+	</view>
+</template>
+
+<script>
+import server from "@/api/index";
+export default {
+	data() {
+		return {
+			id: null,
+			noticeContent: null,
+			list:{},
+		}
+	},
+	onLoad(e) {
+		console.log(e);
+		this.id = e.id;
+		this.getListFn();
+	},
+	methods: {
+		formatRichText(html){
+		  let newContent= html.replace(/<img[^>]*>/gi,function(match,capture){
+			match = match.replace(/style="[^"]+"/gi, '').replace(/style='[^']+'/gi, '');
+			match = match.replace(/width="[^"]+"/gi, '').replace(/width='[^']+'/gi, '');
+			match = match.replace(/height="[^"]+"/gi, '').replace(/height='[^']+'/gi, '');
+			return match;
+		  });
+		  newContent = newContent.replace(/style="[^"]+"/gi,function(match,capture){
+			match = match.replace(/width:[^;]+;/gi, 'max-width:100%;').replace(/width:[^;]+;/gi, 'max-width:100%;');
+			return match;
+		  });
+		  newContent = newContent.replace(/<br[^>]*\/>/gi, '');
+		  newContent = newContent.replace(/\<img/gi, '<img style="max-width:100%;height:auto;display:block;margin-top:0;margin-bottom:0;"');
+		  return newContent;
+		},
+		getListFn(){
+			let that = this;
+			server.getNewsInfo(this.id).then(res =>{
+				if(res){
+					this.list = res;
+					console.log('res.noticeContent', res.noticeContent)
+					this.noticeContent = this.formatRichText(res.noticeContent);
+					console.log("999", this.noticeContent)
+				}else{
+					this.list={
+						url: '',
+						noticeTitle: '',
+						createTime: '',
+						createBy: '',
+						noticeContent: ''
+					}
+				}
+			})
+		}
+	}
+}
+</script>
+
+<style lang="scss" scoped>
+	.detail{
+		width: 100%;
+		padding: 30rpx;
+		min-height: 100vh;
+		height: auto;
+		.title{
+			letter-spacing: 2rpx;
+			font-weight: 550;
+		}
+		.time{
+			height: 93rpx;
+			line-height: 93rpx;
+			.padding{
+				padding-right: 30rpx;
+			}
+		}
+		.header-img{
+			width: 100%;
+			height: 360rpx;
+			margin-bottom: 30rpx;
+			border-radius: 24rpx;
+		}
+	}
+</style>

+ 135 - 0
pages/soldier/home/folder1/index.vue

@@ -0,0 +1,135 @@
+<template>
+	<view class="home main-bg shadow">
+		<view class="home-header header-long-bg">
+			<!-- <view class="header-text font-forty font-color1">惠军通</view> -->
+			<image class="header-img" src="/static/img.png"></image>
+		</view>
+		<view class="add">
+			<view class="add-title font-thirty font-color3">服务推荐</view>
+			<view class="add-view">
+				<view class="add-list shadow3 padding" @click="goto('/pages/soldier/home/folder1/serviceStation')">
+					<view class="list-title font-thirty-two font-color3">
+						服务站分布图
+					</view>
+					<view class="list-icon font-twenty-two font-color1">最新</view>
+					<image src="/static/11.png"></image>
+				</view>
+				<view class="add-list shadow3" @click="gotoTab('/pages/soldier/user/index')">
+					<view class="list-title font-thirty-two font-color3">
+						唯一识别码
+					</view>
+					<!-- <view class="list-icon font-twenty-two font-color1">热门</view> -->
+					<image src="/static/12.png"></image>
+				</view>
+				</view>
+			</view>
+		</view>
+	</template>
+	
+<script>
+	import server from "@/api/index";
+	import { mapGetters } from 'vuex'
+	export default {
+		data() {
+			return {
+			}
+		},
+		methods: {
+			goto(url){
+				uni.navigateTo({
+					url
+				});
+			},
+			gotoTab(url){
+				let role = uni.getStorageSync('role');
+				let userInfo = uni.getStorageSync('userInfo');
+				if(role && userInfo){
+					uni.switchTab({
+						url
+					});
+				}else{
+					uni.navigateTo({
+						url: '/pages/login/index?id=2'
+					});
+				}
+			},
+		}
+	}
+</script>
+<style lang="scss" scoped>
+	.home{
+		width: 100%;
+		height: 100vh;
+		position: relative;
+		.home-header{
+			width: 100%;
+			height: 180rpx;
+			border-bottom-left-radius: 50rpx;
+			border-bottom-right-radius: 50rpx;
+			padding-top: 30rpx;
+			padding-left: 30rpx;
+			position: relative;
+			.header-text{
+				height: 96rpx;
+				line-height: 96rpx;
+			}
+			.header-img{
+				position: absolute;
+				top: 20rpx;
+				left: 30rpx;
+				width: calc(100% - 60rpx);
+				height: 360rpx;
+				border-radius: 24rpx;
+			}
+		}
+		.add{
+			margin-top: 190rpx;
+			width: calc(100% - 30rpx);
+			height: 629rpx;
+			padding-left: 30rpx;
+			.add-title{
+				height: 120rpx;
+				line-height: 120rpx;
+				font-weight: 550;
+				letter-spacing: 2rpx;
+			}
+			.add-view{
+				display: flex;
+				flex-wrap: wrap;
+				justify-content: left;
+				.add-list{
+					width: calc(50% - 16rpx);
+					height: 200rpx;
+					border-radius: 8rpx;
+					margin-bottom: 30rpx;
+					padding-left: 30rpx;
+					padding-top: 40rpx;
+					position: relative;
+					.list-title{
+						font-weight: 550;
+						letter-spacing: 2rpx;
+					}
+					.list-icon{
+						width: 96rpx;
+						height: 36rpx;
+						margin-top: 26rpx;
+						background: linear-gradient(270deg, rgba(204, 16, 25, 0.5) 0%, #CC1019 100%);
+						border-radius: 24rpx;
+						text-align: center;
+					}
+					image{
+						width: 128rpx;
+						height: 120rpx;
+						position: absolute;
+						bottom: 5rpx;
+						right: 0rpx;
+					}
+				}
+				.padding{
+					margin-right: 30rpx;
+				}
+			}
+		}
+	}
+</style>
+

+ 150 - 0
pages/soldier/home/folder1/serviceStation.vue

@@ -0,0 +1,150 @@
+<template>
+	<view class="safety" id="container">
+		<map style="width: 100%; height: 75%;" :latitude="latitude" :longitude="longitude" scale="10"  
+			:markers="markers" :show-location="true" @markertap="markertap">
+		</map>
+		<view class="model">
+			<view class="info">
+				<image class="img" src="/static/logo9.png"></image>
+				<view class="info-data">
+					<view class="info-title">名称:{{model.shopsName ? model.shopsName : '-'}}</view>
+					<view class="info-text">电话:{{model.shopsTel ? model.shopsTel : '-'}}</view>
+					<view class="info-shopsIntroduce">地址:{{model.shopsAddress ? model.shopsAddress : '-'}}</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import amap from '@/lib/amap-wx.130.js'
+	import server from "@/api/index";
+	import http from '@/common/http.js'
+	export default {
+		data() {
+			return {
+				pageNo: 1,
+				pageSize: 10,
+				id: 0,
+				clickable: true,
+				latitude: 43.616996,
+				longitude: 125.323643,
+				mapKey: '1dc63f21c12985e199a715faf4c02f36',
+				markers: [],
+				list: [],
+				model:{
+					shopsName: '',
+					shopsTel: '',
+					shopsPic: '',
+					shopsAddress: ''
+				}
+			}
+		},
+		onLoad() {
+			let that = this;
+			this.amapPlugin = new amap.AMapWX({
+				key: this.mapKey //该key 是在高德中申请的微信小程序key
+			});
+			this.amapPlugin.getRegeo({
+				type: 'gcj02', //map 组件使用的经纬度是国测局坐标, type 为 gcj02
+				success: function(res) {
+					const latitude = res[0].latitude;
+					const longitude = res[0].longitude;
+					that.longitude = longitude;
+					that.latitude = latitude;
+					console.log(that.longitude, that.latitude)
+					that.mapInfo = res[0];
+				},
+				fail: (res) => {
+					console.log(JSON.stringify(res));
+				}
+			});
+			this.getFn()
+		},
+		methods: {
+			image(e) {
+				return http.webUrl + e
+			},
+			getFn() {
+				server.getServiceList().then(res =>{
+					res.forEach((item, index) => {
+						this.markers.push({
+							id: item.id,
+							latitude: item.latitude,
+							longitude: item.longitude,
+							iconPath: '../../../../static/logo3.png',
+							width: 24,
+							height: 24,
+							clickable: true,
+							shopsName: item.name,
+							shopsTel: item.phone,
+							shopsAddress: item.position
+						})
+					})
+					if (this.markers[0]) {
+						this.model.shopsName = this.markers[0].shopsName
+						this.model.shopsTel = this.markers[0].shopsTel
+						this.model.shopsAddress = this.markers[0].shopsAddress
+					}
+				})
+			},
+			markertap(e) {
+				this.markers.forEach(item => {
+					if (e.detail.markerId === item.id) {
+						this.model.shopsName = item.shopsName
+						this.model.shopsTel = item.shopsTel
+						this.model.shopsAddress = item.shopsAddress
+					}
+				})
+			
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.safety {
+		position: absolute;
+		width: 100%;
+		height: 100%;
+		box-sizing: border-box;
+	}
+	.model {
+		width: 100%;
+		height: 25%;
+		position: absolute;
+		left: 0upx;
+		bottom: 0upx;
+		background-color: #FFFFFF;
+		z-index: 9999;
+		padding: 0rpx 30rpx;
+		.info {
+			width: 100%;
+			height: 100%;
+			display: flex;
+			flex-direction: row;
+			align-items: center;
+			justify-content: space-around;
+			.img{
+				width: 180rpx;
+				height: 200rpx;
+			}
+			.info-data{
+				width: calc(100% - 180rpx);
+				padding-left: 20upx;
+				
+			}
+			.info-title{
+			}
+			.info-text{
+				padding-top: 10upx;
+			}
+			.info-shopsIntroduce{
+				padding-top: 10upx;
+				line-height: 40rpx;
+				height: auto;
+				overflow: visible;
+			}
+		}
+	}
+</style>

+ 150 - 0
pages/soldier/home/folder2/index.vue

@@ -0,0 +1,150 @@
+<template>
+	<view class="home main-bg shadow">
+		<view class="home-header header-long-bg">
+			<!-- <view class="header-text font-forty font-color1">惠军通</view> -->
+			<image class="header-img" src="../../../../static/img.png"></image>
+		</view>
+		<view class="add">
+			<view class="add-title font-thirty font-color3">服务推荐</view>
+			<view class="add-view">
+				<view class="add-list shadow3 padding" @click="goto('/pages/soldier/home/policy?type=001')">
+					<view class="list-title font-thirty-two font-color3">
+						联盟简介
+					</view>
+					<view class="list-icon font-twenty-two font-color1">最新</view>
+					<image src="/static/21.png"></image>
+				</view>
+				<view class="add-list shadow3" @click="goto('/pages/soldier/home/union')">
+					<view class="list-title font-thirty-two font-color3">
+						企业信息
+					</view>
+					<view class="list-icon font-twenty-two font-color1">热门</view>
+					<image src="/static/22.png"></image>
+				</view>
+				<view class="add-list shadow3 padding" @click="goto('/pages/soldier/home/map')">
+					<view class="list-title font-thirty-two font-color3">
+						位置分布
+					</view>
+					<!-- <view class="list-icon font-twenty-two font-color1">最新</view> -->
+					<image src="/static/23.png"></image>
+				</view>
+				<view class="add-list shadow3" @click="gotoTab('/pages/index/index')">
+					<view class="list-title font-thirty-two font-color3">
+						企业登录
+					</view>
+					<!-- <view class="list-icon font-twenty-two font-color1">热门</view> -->
+					<image src="/static/24.png"></image>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+	
+<script>
+	import server from "@/api/index";
+	import { mapGetters } from 'vuex'
+	export default {
+		data() {
+			return {
+			}
+		},
+		methods: {
+			goto(url){
+				uni.navigateTo({
+					url
+				});
+			},
+			gotoTab(url){
+				let role = uni.getStorageSync('role');
+				let userInfo = uni.getStorageSync('userInfo');
+				console.log(role)
+				if(role === '1' && userInfo){
+					uni.switchTab({
+						url
+					});
+				}else{
+					uni.navigateTo({
+						url: '/pages/login/index?id=1'
+					});
+				}
+			},
+		}
+	}
+</script>
+<style lang="scss" scoped>
+	.home{
+		width: 100%;
+		height: 100vh;
+		position: relative;
+		.home-header{
+			width: 100%;
+			height: 180rpx;
+			border-bottom-left-radius: 50rpx;
+			border-bottom-right-radius: 50rpx;
+			padding-top: 30rpx;
+			padding-left: 30rpx;
+			position: relative;
+			.header-text{
+				height: 96rpx;
+				line-height: 96rpx;
+			}
+			.header-img{
+				position: absolute;
+				top: 20rpx;
+				left: 30rpx;
+				width: calc(100% - 60rpx);
+				height: 360rpx;
+				border-radius: 24rpx;
+			}
+		}
+		.add{
+			margin-top: 190rpx;
+			width: calc(100% - 30rpx);
+			height: 629rpx;
+			padding-left: 30rpx;
+			.add-title{
+				height: 120rpx;
+				line-height: 120rpx;
+				font-weight: 550;
+				letter-spacing: 2rpx;
+			}
+			.add-view{
+				display: flex;
+				flex-wrap: wrap;
+				justify-content: left;
+				.add-list{
+					width: calc(50% - 16rpx);
+					height: 200rpx;
+					border-radius: 8rpx;
+					margin-bottom: 30rpx;
+					padding-left: 30rpx;
+					padding-top: 40rpx;
+					position: relative;
+					.list-title{
+						font-weight: 550;
+						letter-spacing: 2rpx;
+					}
+					.list-icon{
+						width: 96rpx;
+						height: 36rpx;
+						margin-top: 26rpx;
+						background: linear-gradient(270deg, rgba(204, 16, 25, 0.5) 0%, #CC1019 100%);
+						border-radius: 24rpx;
+						text-align: center;
+					}
+					image{
+						width: 128rpx;
+						height: 120rpx;
+						position: absolute;
+						bottom: 5rpx;
+						right: 0rpx;
+					}
+				}
+				.padding{
+					margin-right: 30rpx;
+				}
+			}
+		}
+	}
+</style>
+

+ 149 - 0
pages/soldier/home/folder3/index.vue

@@ -0,0 +1,149 @@
+<template>
+	<view class="home main-bg shadow">
+		<view class="home-header header-long-bg">
+			<!-- <view class="header-text font-forty font-color1">惠军通</view> -->
+			<image class="header-img" src="/static/img.png"></image>
+		</view>
+		<view class="add">
+			<view class="add-title font-thirty font-color3">服务推荐</view>
+			<view class="add-view">
+				<view class="add-list shadow3 padding" @click="goto('/pages/soldier/home/policy?type=002')">
+					<view class="list-title font-thirty-two font-color3">
+						政策公告
+					</view>
+					<view class="list-icon font-twenty-two font-color1">最新</view>
+					<image src="/static/31.png"></image>
+				</view>
+				<view class="add-list shadow3" @click="goto('/pages/soldier/home/policy?type=003')">
+					<view class="list-title font-thirty-two font-color3">
+						拥军工作动态
+					</view>
+					<!-- <view class="list-icon font-twenty-two font-color1">热门</view> -->
+					<image src="/static/32.png"></image>
+				</view>
+				<view class="add-list shadow3 padding" @click="goto('/pages/soldier/home/policy?type=004')">
+					<view class="list-title font-thirty-two font-color3">
+						最美拥军人物
+					</view>
+					<view class="list-icon font-twenty-two font-color1">热门</view>
+					<image src="/static/33.png"></image>
+				</view>
+				<view class="add-list shadow3" @click="goto('/pages/soldier/home/policy?type=005')">
+					<view class="list-title font-thirty-two font-color3">
+						最美退役军人
+					</view>
+					<view class="list-icon font-twenty-two font-color1">热门</view>
+					<image src="/static/34.png"></image>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+	
+<script>
+	import server from "@/api/index";
+	import { mapGetters } from 'vuex'
+	export default {
+		data() {
+			return {
+			}
+		},
+		methods: {
+			goto(url){
+				uni.navigateTo({
+					url
+				});
+			},
+			gotoTab(url){
+				let role = uni.getStorageSync('role');
+				console.log(role)
+				if(role === '1'){
+					uni.switchTab({
+						url
+					});
+				}else{
+					uni.navigateTo({
+						url: '/pages/login/index?id=1'
+					});
+				}
+			},
+		}
+	}
+</script>
+<style lang="scss" scoped>
+	.home{
+		width: 100%;
+		height: 100vh;
+		position: relative;
+		.home-header{
+			width: 100%;
+			height: 180rpx;
+			border-bottom-left-radius: 50rpx;
+			border-bottom-right-radius: 50rpx;
+			padding-top: 30rpx;
+			padding-left: 30rpx;
+			position: relative;
+			.header-text{
+				height: 96rpx;
+				line-height: 96rpx;
+			}
+			.header-img{
+				position: absolute;
+				top: 20rpx;
+				left: 30rpx;
+				width: calc(100% - 60rpx);
+				height: 360rpx;
+				border-radius: 24rpx;
+			}
+		}
+		.add{
+			margin-top: 190rpx;
+			width: calc(100% - 30rpx);
+			height: 629rpx;
+			padding-left: 30rpx;
+			.add-title{
+				height: 120rpx;
+				line-height: 120rpx;
+				font-weight: 550;
+				letter-spacing: 2rpx;
+			}
+			.add-view{
+				display: flex;
+				flex-wrap: wrap;
+				justify-content: left;
+				.add-list{
+					width: calc(50% - 16rpx);
+					height: 200rpx;
+					border-radius: 8rpx;
+					margin-bottom: 30rpx;
+					padding-left: 30rpx;
+					padding-top: 40rpx;
+					position: relative;
+					.list-title{
+						font-weight: 550;
+						letter-spacing: 2rpx;
+					}
+					.list-icon{
+						width: 96rpx;
+						height: 36rpx;
+						margin-top: 26rpx;
+						background: linear-gradient(270deg, rgba(204, 16, 25, 0.5) 0%, #CC1019 100%);
+						border-radius: 24rpx;
+						text-align: center;
+					}
+					image{
+						width: 128rpx;
+						height: 120rpx;
+						position: absolute;
+						bottom: 5rpx;
+						right: 0rpx;
+					}
+				}
+				.padding{
+					margin-right: 30rpx;
+				}
+			}
+		}
+	}
+</style>
+

+ 149 - 0
pages/soldier/home/folder4/index.vue

@@ -0,0 +1,149 @@
+<template>
+	<view class="home main-bg shadow">
+		<view class="home-header header-long-bg">
+			<!-- <view class="header-text font-forty font-color1">惠军通</view> -->
+			<image class="header-img" src="/static/img.png"></image>
+		</view>
+		<view class="add">
+			<view class="add-title font-thirty font-color3">服务推荐</view>
+			<view class="add-view">
+				<view class="add-list shadow3 padding" @click="goto('/pages/soldier/home/policy?type=006')">
+					<view class="list-title font-thirty-two font-color3">
+						就业信息
+					</view>
+					<view class="list-icon font-twenty-two font-color1">最新</view>
+					<image src="/static/41.png"></image>
+				</view>
+				<view class="add-list shadow3" @click="goto('/pages/soldier/home/policy?type=007')">
+					<view class="list-title font-thirty-two font-color3">
+						创业政策
+					</view>
+					<view class="list-icon font-twenty-two font-color1">热门</view>
+					<image src="/static/42.png"></image>
+				</view>
+				<view class="add-list shadow3 padding" @click="goto('/pages/soldier/home/policy?type=008')">
+					<view class="list-title font-thirty-two font-color3">
+						模范企业
+					</view>
+					<view class="list-icon font-twenty-two font-color1">热门</view>
+					<image src="/static/43.png"></image>
+				</view>
+				<view class="add-list shadow3" @click="goto('/pages/soldier/home/policy?type=009')">
+					<view class="list-title font-thirty-two font-color3">
+						创业孵化基地
+					</view>
+					<view class="list-icon font-twenty-two font-color1">热门</view>
+					<image src="/static/44.png"></image>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+	
+<script>
+	import server from "@/api/index";
+	import { mapGetters } from 'vuex'
+	export default {
+		data() {
+			return {
+			}
+		},
+		methods: {
+			goto(url){
+				uni.navigateTo({
+					url
+				});
+			},
+			gotoTab(url){
+				let role = uni.getStorageSync('role');
+				console.log(role)
+				if(role === '1'){
+					uni.switchTab({
+						url
+					});
+				}else{
+					uni.navigateTo({
+						url: '/pages/login/index?id=1'
+					});
+				}
+			},
+		}
+	}
+</script>
+<style lang="scss" scoped>
+	.home{
+		width: 100%;
+		height: 100vh;
+		position: relative;
+		.home-header{
+			width: 100%;
+			height: 180rpx;
+			border-bottom-left-radius: 50rpx;
+			border-bottom-right-radius: 50rpx;
+			padding-top: 30rpx;
+			padding-left: 30rpx;
+			position: relative;
+			.header-text{
+				height: 96rpx;
+				line-height: 96rpx;
+			}
+			.header-img{
+				position: absolute;
+				top: 20rpx;
+				left: 30rpx;
+				width: calc(100% - 60rpx);
+				height: 360rpx;
+				border-radius: 24rpx;
+			}
+		}
+		.add{
+			margin-top: 190rpx;
+			width: calc(100% - 30rpx);
+			height: 629rpx;
+			padding-left: 30rpx;
+			.add-title{
+				height: 120rpx;
+				line-height: 120rpx;
+				font-weight: 550;
+				letter-spacing: 2rpx;
+			}
+			.add-view{
+				display: flex;
+				flex-wrap: wrap;
+				justify-content: left;
+				.add-list{
+					width: calc(50% - 16rpx);
+					height: 200rpx;
+					border-radius: 8rpx;
+					margin-bottom: 30rpx;
+					padding-left: 30rpx;
+					padding-top: 40rpx;
+					position: relative;
+					.list-title{
+						font-weight: 550;
+						letter-spacing: 2rpx;
+					}
+					.list-icon{
+						width: 96rpx;
+						height: 36rpx;
+						margin-top: 26rpx;
+						background: linear-gradient(270deg, rgba(204, 16, 25, 0.5) 0%, #CC1019 100%);
+						border-radius: 24rpx;
+						text-align: center;
+					}
+					image{
+						width: 128rpx;
+						height: 120rpx;
+						position: absolute;
+						bottom: 5rpx;
+						right: 0rpx;
+					}
+				}
+				.padding{
+					margin-right: 30rpx;
+				}
+			}
+		}
+	}
+</style>
+

+ 136 - 0
pages/soldier/home/folder5/index.vue

@@ -0,0 +1,136 @@
+<template>
+	<view class="home main-bg shadow">
+		<view class="home-header header-long-bg">
+			<!-- <view class="header-text font-forty font-color1">惠军通</view> -->
+			<image class="header-img" src="/static/img.png"></image>
+		</view>
+		<view class="add">
+			<view class="add-title font-thirty font-color3">服务推荐</view>
+			<view class="add-view">
+				<view class="add-list shadow3 padding" @click="handleAlert">
+					<view class="list-title font-thirty-two font-color3">
+						提交服务申请
+					</view>
+					<!-- <view class="list-icon font-twenty-two font-color1">最新</view> -->
+					<image src="/static/51.png"></image>
+				</view>
+				<view class="add-list shadow3" @click="handleAlert">
+					<view class="list-title font-thirty-two font-color3">
+						支援服务积分
+					</view>
+					<!-- <view class="list-icon font-twenty-two font-color1">热门</view> -->
+					<image src="/static/52.png"></image>
+				</view>
+				<view class="add-list shadow3 padding" @click="goto('/pages/soldier/home/policy?type=010')">
+					<view class="list-title font-thirty-two font-color3">
+						志愿服务队
+					</view>
+					<view class="list-icon font-twenty-two font-color1">最新</view>
+					<image src="/static/53.png"></image>
+				</view>
+			</view>
+		</view>
+		<u-toast ref="uToast" />
+	</view>
+</template>
+	
+<script>
+	import server from "@/api/index";
+	import { mapGetters } from 'vuex'
+	export default {
+		data() {
+			return {
+			}
+		},
+		methods: {
+			goto(url){
+				uni.navigateTo({
+					url
+				});
+			},
+			handleAlert(){
+				this.$refs.uToast.show({
+					title: '功能即将上线,敬请期待!',
+					type: 'default',
+				})
+			}
+		}
+	}
+</script>
+<style lang="scss" scoped>
+	.home{
+		width: 100%;
+		height: 100vh;
+		position: relative;
+		.home-header{
+			width: 100%;
+			height: 180rpx;
+			border-bottom-left-radius: 50rpx;
+			border-bottom-right-radius: 50rpx;
+			padding-top: 30rpx;
+			padding-left: 30rpx;
+			position: relative;
+			.header-text{
+				height: 96rpx;
+				line-height: 96rpx;
+			}
+			.header-img{
+				position: absolute;
+				top: 20rpx;
+				left: 30rpx;
+				width: calc(100% - 60rpx);
+				height: 360rpx;
+				border-radius: 24rpx;
+			}
+		}
+		.add{
+			margin-top: 190rpx;
+			width: calc(100% - 30rpx);
+			height: 629rpx;
+			padding-left: 30rpx;
+			.add-title{
+				height: 120rpx;
+				line-height: 120rpx;
+				font-weight: 550;
+				letter-spacing: 2rpx;
+			}
+			.add-view{
+				display: flex;
+				flex-wrap: wrap;
+				justify-content: left;
+				.add-list{
+					width: calc(50% - 16rpx);
+					height: 200rpx;
+					border-radius: 8rpx;
+					margin-bottom: 30rpx;
+					padding-left: 30rpx;
+					padding-top: 40rpx;
+					position: relative;
+					.list-title{
+						font-weight: 550;
+						letter-spacing: 2rpx;
+					}
+					.list-icon{
+						width: 96rpx;
+						height: 36rpx;
+						margin-top: 26rpx;
+						background: linear-gradient(270deg, rgba(204, 16, 25, 0.5) 0%, #CC1019 100%);
+						border-radius: 24rpx;
+						text-align: center;
+					}
+					image{
+						width: 128rpx;
+						height: 120rpx;
+						position: absolute;
+						bottom: 5rpx;
+						right: 0rpx;
+					}
+				}
+				.padding{
+					margin-right: 30rpx;
+				}
+			}
+		}
+	}
+</style>
+

+ 82 - 0
pages/soldier/home/folder6/index.vue

@@ -0,0 +1,82 @@
+<template>
+	<view class="main main-bg">
+		<view class="left">
+			<image src="../../../../static/ing7.png"></image>
+		</view>
+		<view class="right">
+			<view>您好,您可以联系我们的在线客服进行咨询,<button class="btn" type="primary" open-type="contact">[点击这里]</button>输入你想要咨询的内容,我们将马上为您服务!</view>
+			<view>或者您可以<span class="text" @click="makePhone()">[点击这里]</span>直接为您拨打客服电话!</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import server from "@/api/index";
+export default {
+	data() {
+		return {
+			
+		}
+	},
+	methods:{
+		makePhone(){
+			server.getTelInfo().then(res =>{
+				if(res){
+					uni.makePhoneCall({
+						phoneNumber:res,
+						success: (res) => {
+							console.log(res)
+						},
+						fail: (err) => {
+							console.error(err)
+						}
+					})
+				}else{
+					this.$refs.uToast.show({
+						title: '暂无热线电话!',
+						type: 'default',
+					})
+				}
+			})
+		}
+	}
+}
+</script>
+
+<style lang="scss" scoped>
+	.main{
+		width: 100%;
+		height: 100vh;
+		min-height: 100vh;
+		padding: 30rpx;
+		display: flex;
+		
+		.left{
+			width: 130rpx;
+			padding-top: 75rpx;
+			image{
+				width: 100rpx;
+				height: 100rpx;
+			}
+		}
+		.right{
+			width: calc(100% - 130rpx);
+			height: 250rpx;
+			background: #fff;
+			border-radius: 16rpx;
+			padding: 30rpx;
+		}
+		.btn{
+			display: inline;
+			width: 220rpx;
+			height: 60rpx;
+			line-height: 60rpx;
+			background-color: #fff;
+			color: #12C194;
+			font-size: 26rpx;
+		}
+		.text{
+			color: #12C194;
+		}
+	}
+</style>

+ 26 - 0
pages/soldier/home/folder7/index.vue

@@ -0,0 +1,26 @@
+<template>
+</template>
+
+<script>
+	export default {
+		onShow() {
+			let role = uni.getStorageSync('role');
+			let userInfo = uni.getStorageSync('userInfo');
+			if(role === '4' && userInfo){
+				uni.switchTab({
+				    url: '/pages/index/index'
+				});
+			}else{
+				uni.navigateTo({
+					url: '/pages/login/index?id=4'
+				});
+			}
+		},
+		methods:{
+			
+		}
+	}
+</script>
+
+<style>
+</style>

+ 68 - 0
pages/soldier/home/goods.vue

@@ -0,0 +1,68 @@
+<template>
+	<view class="goods main-bg">
+		<view class="view">
+			<view class="name font-color3 font-thirty-two">
+				{{ list.goodsName }}
+			</view>
+			<image class="img" :src="image(list.goodsPic)"></image>
+			<view class="font-thirty font-color2">价格: ¥{{ list.goodsRatePrice }} 【{{parseFloat(list.goodsPrice)*10}}折】</view>
+			<view class="text font-color3 font-twenty-four">商品简介: {{ list.goodsContent }}</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import server from "@/api/index";
+import http from '@/common/http.js'
+export default {
+	data() {
+		return {
+			list: {}
+		}
+	},
+	onLoad(e) {
+		this.getListFn(e.id);
+	},
+	methods:{
+		image(e) {
+			return http.webUrl + e
+		},
+		getListFn(e){
+			server.getGoodsDetails(e).then(res =>{
+				this.list = {};
+				if(res){
+					this.list = res
+				}
+			})
+		},
+	}
+}
+</script>
+
+<style lang="scss" scoped>
+	.goods{
+		width: 100%;
+		height: auto;
+		min-height: 100vh;
+		padding: 30rpx;
+		.view{
+			width:100%;
+			height: auto;
+			padding: 30rpx;
+			background: #FFFFFF;
+			.name{
+				letter-spacing: 2rpx;
+				font-weight: 600;
+			}
+			.img{
+				width: 100%;
+				height: 436rpx;
+				margin: 30rpx 0;
+			}
+			.text{
+				margin: 30rpx 0;
+				line-height: 33rpx;
+			}
+		}
+	}
+</style>

+ 401 - 0
pages/soldier/home/identity.vue

@@ -0,0 +1,401 @@
+<template>
+	<view class="identity main-bg">
+		<u-form :model="form" ref="uForm" :rules="rules">
+			<u-form-item 
+				:leftIconStyle="{color: '#2E4F1C', fontSize: '40rpx'}" 
+				left-icon="account-fill" 
+				label-width="180" 
+				:label-position="labelPosition" 
+				prop="veteransName">
+				<u-input 
+					v-model="form.veteransName" 
+					placeholder-style="color: #2E4F1C;"
+					placeholder="请输入您的姓名" />
+			</u-form-item>
+			<u-form-item
+				prop="veteransIdcard"
+				label-width="180" 
+				:label-position="labelPosition">
+				<view class="form-item">
+					<image src="../../../static/idcard.png" class="form-img"></image>
+					<u-input 
+						v-model="form.veteransIdcard" 
+						placeholder-style="color: #2E4F1C;"
+						placeholder="请输入您的身份证号码" />
+				</view>
+			</u-form-item>
+			<u-form-item
+				:leftIconStyle="{color: '#2E4F1C', fontSize: '40rpx'}" 
+				left-icon="phone-fill" 
+				label-width="180" 
+				:label-position="labelPosition" 
+				>
+				<u-input 
+					v-model="form.veteransTel" 
+					placeholder-style="color: #2E4F1C;"
+					placeholder="请输入您的手机号码" />
+			</u-form-item>
+			<u-form-item
+			  :leftIconStyle="{color: '#2E4F1C', fontSize: '40rpx'}"
+			  left-icon="calendar-fill" 
+			  :label-position="labelPosition" 
+			  prop="levelType" 
+			  label-width="180">
+				<u-input 
+				type="select" 
+				:select-open="selectShow" 
+				v-model="levelType"
+				placeholder="请选择身份类别"
+				placeholder-style="color: #2E4F1C;"
+				@click="selectShow = true" />
+				<u-select mode="single-column" :list="selectList" v-model="selectShow" @confirm="selectConfirm"></u-select>
+			</u-form-item>
+			<view class="store-dis">
+				<view class="store-address">
+					<view class="select-address">
+						<view style="color: #303133;" class="font-twenty">
+							家庭住址
+						</view>
+						<u-input
+							v-model="form.address" 
+							placeholder-style="color: #2E4F1C;"
+							placeholder="请选择地址"/>
+					</view>
+				</view>
+				<view class="map-icon" @click="chooseLocation()">
+					<image src="/static/map.png" class="icon-img"></image>
+				</view>
+			</view>
+			<view class="form-upload">
+				<view class="upload-title font-twenty font-color2">
+					照片上传
+					<view class="tips font-twenty font-color5">*省外必须上传</view>
+				</view>
+				<view style="display: flex;">
+					<image :src="image(form.veteransPic)" v-if='flag' style="width:160rpx; height:160rpx"></image>
+					<u-upload
+						v-else
+						width="160"
+						height="160"
+						:action="action"
+						max-count="1" 
+						@on-success="onSuccess">
+					</u-upload>
+				</view>
+			</view>
+		</u-form>
+		<view class="point font-color5">
+			{{ string }}
+		</view>
+		<view class="btn1" v-if='flag'>
+			<view v-if="type === '2'" class="form-submit form-submit-nei font-thirty">您已认证</view>
+			<view v-else-if="type === '3'" class="form-submit11 form-submit-nei font-thirty">您是军属,无法认证</view>
+		</view>
+		<view v-else>
+			<view class="font-twenty-two font-color2" style="text-align: center; padding-top: 25rpx;" @click="gotoDetails">请认真阅读平台服务协议《服务及隐私协议》使用平台</view>
+			
+			<view class="btn">
+				<view @click="submit('1')" class="form-submit form-submit-nei font-thirty">省内认证</view>
+				<view @click="submit('2')" class="form-submit form-submit-wai font-thirty">省外认证</view>
+			</view>
+		</view>
+		<!-- <view class="btn">
+			<view @click="submit('1')" class="form-submit form-submit-nei font-thirty">省内认证</view>
+			<view @click="submit('2')" class="form-submit form-submit-wai font-thirty">省外认证</view>
+		</view> -->
+		<u-toast ref="uToast" />
+	</view>
+</template>
+
+<script>
+	import server from "@/api/index";
+	import http from '@/common/http.js';
+	import amap from '@/lib/amap-wx.130.js';
+	export default {
+		data() {
+			return {
+				action: http.webUrl+`/wx/common/upload`,
+				labelPosition: 'left',
+				selectShow: false,
+				userInfo: null,
+				flag: true,
+				levelType: null,//身份
+				type: '',
+				addressName: '',
+				key:'1dc63f21c12985e199a715faf4c02f36',
+				form: {
+					veteransName: '',
+					veteransIdcard: '',
+					veteransTel: '',
+					veteransPic:'',
+					level: null,
+					address: ''
+				},
+				selectList: [],
+				string: '备注:1.省内军人不需要上传照片(即输入姓名与身份证号,然后点击【省内认证】即可)2.省外需要上传相关凭证(即需要上传照片,然后点击【省外认证】即可',
+				rules: {
+					veteransName: [
+						{ 
+							required: true, 
+							message: '请输入您的姓名!', 
+							trigger: ['change','blur'],
+						}
+					],
+					veteransIdcard: [
+						{	
+							required: true, 
+							message: '请输入您的身份证号码!', 
+							trigger: ['change','blur']
+						},
+						{
+							validator: (rule, value, callback) => {
+								return this.$u.test.idCard(value);
+							},
+							message: '身份证号码格式不正确',
+							trigger: ['change','blur'],
+						}
+					]
+				}
+			}
+		},
+		onLoad(e) {
+			this.getUploadInfoFn();
+			if(e.name){
+				this.form.veteransName = e.name;
+				this.form.veteransIdcard = e.pwd;
+				this.flag = false
+			}else if(e.id === '123'){
+				this.flag = false
+			}else{
+				this.flag = true
+				this.userInfo = uni.getStorageSync('userInfo');
+				if(this.userInfo){
+					if(this.userInfo.userId){
+						this.getRegisterFn();
+						this.type = this.userInfo.type;
+					}
+				}
+			};
+			this.amapPulgin = new amap.AMapWX({
+				key: this.key
+			});
+		},
+		onReady() {
+			this.$refs.uForm.setRules(this.rules);
+		},
+		methods: {
+			chooseLocation(e) {
+				uni.chooseLocation({
+					success: (res) => {
+						this.form.address = res.address
+					}
+				})
+			},
+			image(e) {
+				return http.webUrl + e
+			},
+			getUploadInfoFn(){
+				server.getUploadInfo({dictType: 'basics_level'}).then(res =>{
+					console.log("999[[[[]]]]",)
+					if(res){
+						res.forEach(item =>{
+							this.selectList.push({
+								label: item.dictLabel,
+								value: item.dictValue,
+							})
+						})
+					}
+				})
+			},
+			// 选择商品类型回调
+			selectConfirm(e) {
+				this.form.level = '';
+				this.levelType = null;
+				e.map((val, index) => {
+					this.form.level = val.value;
+					this.levelType = val.label;
+				})
+			},
+			getRegisterFn(){
+				server.getRegister(this.userInfo.userId, this.userInfo.type).then(res =>{
+					this.form = res
+				})
+			},
+			onSuccess(data, index, lists, name){
+				this.form.veteransPic = data.fileName
+			},
+			gotoDetails(){
+				uni.navigateTo({
+					url: '/pages/soldier/home/yxDetails'
+				})
+			},
+			submit(type) {
+				let _this = this;
+				this.$refs.uForm.validate(valid => {
+					if (valid) {
+						if(type === '2'){
+							console.log('red')
+							if(_this.form.veteransPic === ''){
+								this.$refs.uToast.show({
+									title: '请上传图片!',
+									type: 'default',
+								})
+								return
+							}
+						}
+						this.getUserIdCardFn(type)
+					} else {
+					}
+				});
+			},
+			getUserIdCardFn(type){
+				let _this = this;
+				let params = this.form;
+				params.veteransStatus = "1";
+				params.veteransType = type;
+				console.log(this.form,']]]')
+				server.getUserIdCard(params).then(res =>{
+					_this.$refs.uToast.show({
+						title: '提交认证成功,等待审核!',
+						type: 'default',
+					})
+					setTimeout(function()  {
+						uni.navigateBack({
+						    delta: 1
+						});
+					}, 2000);
+				})
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	/deep/ .u-form-item__message{
+		padding-left: 50rpx!important;
+	}
+	/deep/ .u-input__input{
+		color: #2E4F1C!important;
+		font-size: 28rpx;
+		font-family: PingFangSC-Regular, PingFang SC;
+		font-weight: 400;
+	}
+	/deep/ .u-border, .u-border-bottom, .u-border-left, .u-border-right, .u-border-top, .u-border-top-bottom{
+		
+	}
+	/deep/ .u-form-item{
+		display: -webkit-box;
+		display: -webkit-flex;
+		display: flex;
+		-webkit-box-orient: horizontal;
+		-webkit-box-direction: normal;
+		-webkit-flex-direction: row;
+		flex-direction: row;
+		box-sizing: border-box;
+		line-height: 96rpx;
+		-webkit-flex-direction: column;
+		flex-direction: column;
+		background: rgba(46, 79, 28, 0.05);
+		border-radius: 48rpx;
+		height: 96rpx;
+		margin-bottom: 60rpx;
+		padding-left: 30rpx!important;
+	}
+	.store-dis{
+		display: flex;
+		margin-bottom: 30rpx;
+		.store-address{
+			width: 580rpx;
+			padding: 16rpx 30rpx;
+			background:  rgba(46, 79, 28, 0.05);
+			border-radius: 48rpx 0rpx 0rpx 48rpx;
+			.select-address{
+				display: flex; 
+				align-items: center;
+				justify-content: space-between; 
+			}
+		}
+		.map-icon{
+			width: 110rpx;
+			background: #2E4F1C;
+			text-align: center;
+			border-radius: 0rpx 48rpx 48rpx 0rpx;
+			padding-top: 31rpx;
+			.icon-img{
+				width: 42rpx;
+				height: 42rpx;
+			}
+		}
+	}
+	.identity{
+		width: 100%;
+		height: 100vh;
+		padding: 60rpx 30rpx 10rpx;
+		.form-item{
+			display: flex;
+			.form-img{
+				width: 40rpx;
+				height: 40rpx;
+				padding-top: 15rpx;
+				padding-right: 18rpx;
+			}
+		}
+		.form-upload{
+			width: 100%;
+			height: 300rpx;
+			background: rgba(46, 79, 28, 0.05);
+			border-radius: 16rpx;
+			padding-left: 30rpx;
+			.upload-title{
+				height: 100rpx;
+				line-height: 100rpx;
+				position: relative;
+				.tips{
+					position: absolute;
+					top: 0rpx;
+					right: 30rpx;
+					text-align: right;
+				}
+			}
+		}
+		.point{
+			padding-top: 40rpx;
+			line-height: 48rpx;
+		}
+		.btn{
+			display: flex;
+			padding-top: 60rpx;
+			justify-content: space-between;
+		}
+		.btn1{
+			display: flex;
+			padding-top: 60rpx;
+			justify-content: center;
+		}
+		.form-submit{
+			width: 330rpx;
+			height: 96rpx;
+			line-height: 96rpx;
+			border-radius: 46rpx;
+			text-align: center;
+			font-weight: 600;
+		}
+		.form-submit11{
+			width: 390rpx;
+			height: 96rpx;
+			line-height: 96rpx;
+			border-radius: 46rpx;
+			text-align: center;
+			font-weight: 600;
+		}
+		.form-submit-nei{
+			background: #2E4F1C;
+			color: #FFFFFF;
+		}
+		.form-submit-wai{
+			background: #FFF;
+			color: #2E4F1C;
+			border: 2rpx solid #2E4F1C;
+		}
+	}
+</style>

+ 254 - 0
pages/soldier/home/index.vue

@@ -0,0 +1,254 @@
+<template>
+	<view class="home main-bg shadow">
+		<view class="home-header header-long-bg">
+			<view class="header-text font-forty font-color1">惠军通</view>
+			<image class="header-img" src="../../../static/img.png"></image>
+		</view>
+		<view class="add">
+			<view class="add-title font-thirty font-color3">服务推荐</view>
+			<view class="add-view">
+				<view class="add-list shadow3 padding" @click="goto('/pages/soldier/home/folder1/index')">
+					<view class="list-title font-thirty-two font-color3">
+						惠军服务
+					</view>
+					<view class="list-icon font-twenty-two font-color1">最新</view>
+					<image src="../../../static/1.png"></image>
+				</view>
+				<view class="add-list shadow3" @click="goto('/pages/soldier/home/folder2/index')">
+					<view class="list-title font-thirty-two font-color3">
+						拥军联盟
+					</view>
+					<view class="list-icon font-twenty-two font-color1">热门</view>
+					<image src="../../../static/3.png"></image>
+				</view>
+				<!-- @click="makePhone()" -->
+				<view class="add-list shadow3 padding" @click="goto('/pages/soldier/home/folder3/index')">
+					<view class="list-title font-thirty-two font-color3">
+						政策宣传
+					</view>
+					<image src="../../../static/2.png"></image>
+				</view>
+				<view class="add-list shadow3" @click="goto('/pages/soldier/home/folder4/index')">
+					<view class="list-title font-thirty-two font-color3">
+						创业就业
+					</view>
+					<image src="../../../static/4.png"></image>
+				</view>
+				<view class="add-list shadow3 padding" @click="goto('/pages/soldier/home/folder5/index')">
+					<view class="list-title font-thirty-two font-color3">
+						志愿拥军
+					</view>
+					<image src="../../../static/53.png"></image>
+				</view>
+				<view class="add-list shadow3" @click="goto('/pages/soldier/home/folder6/index')">
+					<view class="list-title font-thirty-two font-color3">
+						咨询问答
+					</view>
+					<image src="../../../static/6.png"></image>
+				</view>
+				<view class="add-list shadow3 padding" @click="gotoTab('/pages/soldier/home/folder7/index')">
+					<view class="list-title font-thirty-two font-color3">
+						退役军人管理
+					</view>
+					<image src="../../../static/7.png"></image>
+				</view>
+				<view class="add-list shadow3" @click="gotoData('/pages/soldier/user/add')">
+					<view class="list-title font-thirty-two font-color3">
+						信息采集
+					</view>
+					<image src="../../../static/8.png"></image>
+				</view>
+			</view>
+		</view>
+		<u-tabbar :show="show" :list="tabBarList" :active-color="activeColor" :inactive-color="inactiveColor"
+					:border-top="borderTop"></u-tabbar>
+		<u-toast ref="uToast" />
+	</view>
+</template>
+
+<script>
+	import server from "@/api/index";
+	import { mapGetters } from 'vuex'
+	export default {
+		data() {
+			return {
+				borderTop: false,
+				inactiveColor: '#ccc',
+				activeColor: '#2E4F1C',
+				show: false,
+			}
+		},
+		computed: {
+			...mapGetters([
+				'tabBarList',
+				'role'
+			])
+		},
+		onShow(){
+			console.log('onShow111')
+		},
+		onLoad() {
+			let role = uni.getStorageSync('role');
+			console.log('role', role)
+			if(role === '3' || role === '2'){
+				this.show = true;
+			}else{
+				this.show = false;
+			}
+		},
+		methods: {
+			showSoldier(){
+				console.log("show,solider9999")
+				let role = uni.getStorageSync('role');
+				console.log('role', role)
+				if(role === '3' || role === '2'){
+					this.show = true;
+				}else{
+					this.show = false;
+				}
+			},
+			goto(url){
+				uni.navigateTo({
+					url
+				});
+			},
+			gotoData(url){
+				console.log("===================================================")
+				console.log('url',url)
+				let role = uni.getStorageSync('role');
+				if(role){
+					this.role = role;
+				}
+				if(role === '4'){
+					uni.navigateTo({
+						url
+					});
+				}else{
+					uni.navigateTo({
+						url: '/pages/login/index?id=4&type=add'
+					});
+				}
+			},
+			gotoTab(url){
+				console.log('url',url)
+				let role = uni.getStorageSync('role');
+				if(role){
+					this.role = role;
+				}
+				if(role === '4'){
+					uni.navigateTo({
+						url
+					});
+				}else{
+					uni.navigateTo({
+						url: '/pages/login/index?id=4'
+					});
+				}
+			},
+			map(){
+				this.$refs.uToast.show({
+					title: '即将上线,敬请期待!',
+					type: 'default',
+				})
+			},
+			makePhone(){
+				server.getTelInfo().then(res =>{
+					if(res){
+						uni.makePhoneCall({
+							phoneNumber:res,
+							success: (res) => {
+								console.log(res)
+							},
+							fail: (err) => {
+								console.error(err)
+							}
+						})
+					}else{
+						this.$refs.uToast.show({
+							title: '暂无热线电话!',
+							type: 'default',
+						})
+					}
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.home{
+		width: 100%;
+		min-height: 100vh;
+		height: auto;
+		position: relative;
+		.home-header{
+			width: 100%;
+			height: 350rpx;
+			border-bottom-left-radius: 50rpx;
+			border-bottom-right-radius: 50rpx;
+			padding-top: 84rpx;
+			padding-left: 30rpx;
+			position: relative;
+			.header-text{
+				height: 96rpx;
+				line-height: 96rpx;
+			}
+			.header-img{
+				position: absolute;
+				top: 180rpx;
+				left: 30rpx;
+				width: calc(100% - 60rpx);
+				height: 360rpx;
+				border-radius: 24rpx;
+			}
+		}
+		.add{
+			margin-top: 190rpx;
+			width: calc(100% - 30rpx);
+			height: 1038rpx;
+			padding-left: 30rpx;
+			.add-title{
+				height: 120rpx;
+				line-height: 120rpx;
+				font-weight: 550;
+				letter-spacing: 2rpx;
+			}
+			.add-view{
+				display: flex;
+				flex-wrap: wrap;
+				justify-content: left;
+				.add-list{
+					width: calc(50% - 16rpx);
+					height: 200rpx;
+					border-radius: 8rpx;
+					margin-bottom: 30rpx;
+					padding-left: 30rpx;
+					padding-top: 40rpx;
+					position: relative;
+					.list-title{
+						font-weight: 550;
+						letter-spacing: 2rpx;
+					}
+					.list-icon{
+						width: 96rpx;
+						height: 36rpx;
+						margin-top: 26rpx;
+						background: linear-gradient(270deg, rgba(204, 16, 25, 0.5) 0%, #CC1019 100%);
+						border-radius: 24rpx;
+						text-align: center;
+					}
+					image{
+						width: 128rpx;
+						height: 120rpx;
+						position: absolute;
+						bottom: 5rpx;
+						right: 0rpx;
+					}
+				}
+				.padding{
+					margin-right: 30rpx;
+				}
+			}
+		}
+	}
+</style>

+ 158 - 0
pages/soldier/home/map.vue

@@ -0,0 +1,158 @@
+<template>
+	<view class="safety" id="container">
+		<map style="width: 100%; height: 75%;" :latitude="latitude" :longitude="longitude" scale="10"  
+			:markers="markers" :show-location="true" @markertap="markertap">
+		</map>
+		<view class="model">
+			<view class="info">
+				<image class="img" :src="image(model.shopsPic)"></image>
+				<view class="info-data">
+					<view class="info-title">名称:{{model.shopsName ? model.shopsName : '-'}}</view>
+					<view class="info-text">电话:{{model.shopsTel ? model.shopsTel : '-'}}</view>
+					<view class="info-shopsIntroduce">地址:{{model.shopsAddress ? model.shopsAddress : '-'}}</view>
+					<view class="info-shopsIntroduce">简介:{{model.shopsIntroduce ? model.shopsIntroduce : '-'}}</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import amap from '@/lib/amap-wx.130.js'
+	import server from "@/api/index";
+	import http from '@/common/http.js'
+	export default {
+		data() {
+			return {
+				pageNo: 1,
+				pageSize: 10,
+				id: 0,
+				clickable: true,
+				latitude: 43.616996,
+				longitude: 125.323643,
+				mapKey: '1dc63f21c12985e199a715faf4c02f36',
+				markers: [],
+				list: [],
+				model:{
+					shopsName: '',
+					shopsTel: '',
+					shopsIntroduce: '',
+					shopsPic: '',
+					shopsAddress: ''
+				}
+			}
+		},
+		onLoad() {
+			let that = this;
+			this.amapPlugin = new amap.AMapWX({
+				key: this.mapKey //该key 是在高德中申请的微信小程序key
+			});
+			this.amapPlugin.getRegeo({
+				type: 'gcj02', //map 组件使用的经纬度是国测局坐标, type 为 gcj02
+				success: function(res) {
+					const latitude = res[0].latitude;
+					const longitude = res[0].longitude;
+					that.longitude = longitude;
+					that.latitude = latitude;
+					console.log(that.longitude, that.latitude)
+					that.mapInfo = res[0];
+				},
+				fail: (res) => {
+					console.log(JSON.stringify(res));
+				}
+			});
+			this.getFn()
+		},
+		methods: {
+			image(e) {
+				return http.webUrl + e
+			},
+			getFn() {
+				server.getYongJun().then(res =>{
+					res.forEach((item, index) => {
+						this.markers.push({
+							id: item.shopsId,
+							latitude: Number(item.shopsLat),
+							longitude: Number(item.shopsLng),
+							iconPath: '../../../static/dian.png',
+							width: 24,
+							height: 24,
+							clickable: true,
+							shopsName: item.shopsName,
+							shopsTel: item.shopsTel,
+							shopsIntroduce: item.shopsIntroduce,
+							shopsPic: item.shopsPic,
+							shopsAddress: item.shopsAddress
+						})
+					})
+					if (this.markers[0]) {
+						this.model.shopsName = this.markers[0].shopsName
+						this.model.shopsTel = this.markers[0].shopsTel
+						this.model.shopsIntroduce = this.markers[0].shopsIntroduce
+						this.model.shopsPic = this.markers[0].shopsPic
+						this.model.shopsAddress = this.markers[0].shopsAddress
+					}
+				})
+			},
+			markertap(e) {
+				this.markers.forEach(item => {
+					if (e.detail.markerId === item.id) {
+						this.model.shopsName = item.shopsName
+						this.model.shopsTel = item.shopsTel
+						this.model.shopsIntroduce = item.shopsIntroduce
+						this.model.shopsPic = item.shopsPic
+						this.model.shopsAddress = item.shopsAddress
+					}
+				})
+			
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.safety {
+		position: absolute;
+		width: 100%;
+		height: 100%;
+		box-sizing: border-box;
+	}
+	.model {
+		width: 100%;
+		height: 25%;
+		position: absolute;
+		left: 0upx;
+		bottom: 0upx;
+		background-color: #FFFFFF;
+		z-index: 9999;
+		padding: 0rpx 30rpx;
+		.info {
+			width: 100%;
+			height: 100%;
+			display: flex;
+			flex-direction: row;
+			align-items: center;
+			justify-content: space-around;
+			.img{
+				width: 180rpx;
+				height: 180rpx;
+			}
+			.info-data{
+				width: calc(100% - 180rpx);
+				padding-left: 20upx;
+				
+			}
+			.info-title{
+			}
+			.info-text{
+				padding-top: 10upx;
+			}
+			.info-shopsIntroduce{
+				padding-top: 10upx;
+				line-height: 40rpx;
+				height: auto;
+				overflow: visible;
+			}
+		}
+	}
+</style>

+ 149 - 0
pages/soldier/home/policy.vue

@@ -0,0 +1,149 @@
+<template>
+	<view class="policy main-bg">
+		<view v-if="show">
+			<image class="header-img" src="../../../static/img.png"></image>
+			<view class="list main-bg" v-if="list.length > 0">
+				<view class="item" v-for="item in list" @click="goto(item)">
+					<image class="item-img" src="/static/new.png"></image>
+					<view class="item-right">
+						<view class="item-right-name font-twenty font-color3">{{ item.noticeTitle ? item.noticeTitle : '' }}</view>
+						<view class="item-right-time font-twenty-four font-color4">{{ item.createTime ? item.createTime : '' }}</view>
+					</view>
+				</view>
+			</view>
+			<view v-else>
+				<u-empty text="暂无数据" mode="list"></u-empty>
+			</view>
+		</view>
+		<view v-else>
+			<view class="list-people main-bg" v-if="list.length > 0">
+				<view class="item-people" v-for="item in list" @click="goto(item)">
+					<image class="people-img" :src="image(item.picUrl)"></image>
+					<view> {{ item.noticeTitle }}</view>
+				</view>
+			</view>
+			<view v-else>
+				<u-empty text="暂无数据" mode="list"></u-empty>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import http from '@/common/http.js'
+	import server from "@/api/index";
+	export default {
+		data() {
+			return {
+				list:[],
+				show: false,
+				type: null
+			}
+		},
+		onLoad(e) {
+			this.type = e.type;
+			if(e.type === '004' || e.type === '005'){
+				this.show = false;
+			}else{
+				this.show = true;
+			}
+			uni.startPullDownRefresh();
+		},
+		onPullDownRefresh() {
+			this.getListFn();
+			setTimeout(function () {
+				uni.stopPullDownRefresh();
+			}, 1000);
+		},
+		methods: {
+			image(e) {
+				return http.webUrl + e
+			},
+			getListFn(){
+				server.getInfo({ noticeType: this.type }).then(res => {
+					this.list = [];
+					if(res){
+						this.list = res
+					}
+				})
+			},
+			goto(item){
+				uni.navigateTo({
+				    url: '/pages/soldier/home/detail?id=' + item.noticeId
+				});
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.policy{
+		width: 100%;
+		min-height: 100vh;
+		height: auto;
+		.header-img{
+			width: 100%;
+			height: 392rpx;
+		}
+		.list{
+			width: 100%;
+			padding: 0rpx 30rpx;
+			.item{
+				height: 240rpx;
+				background: #FFFFFF;
+				padding: 30rpx;
+				margin-top: 30rpx;
+				display: flex;
+				.item-img{
+					width: 180rpx;
+					height: 180rpx;
+				}
+				.item-right{
+					width: calc(100% - 180rpx);
+					padding-left: 30rpx;
+					padding-top: 10rpx;
+					.item-right-name{
+						font-weight: 550;
+						letter-spacing: 2rpx;
+						line-height: 40rpx;
+						height: 80rpx;
+						text-overflow: -o-ellipsis-lastline;
+						overflow: hidden;
+						text-overflow: ellipsis;
+						display: -webkit-box;
+						-webkit-line-clamp: 2;
+						-webkit-box-orient: vertical;
+					}
+					.item-right-time{
+						padding-top: 20rpx;
+					}
+				}
+			}
+		}
+		.list-people{
+			width: 100%;
+			padding: 30rpx 30rpx;
+			display: flex;
+			justify-content: space-between;
+			flex-wrap: wrap;
+			.item-people{
+				width: calc(50% - 15rpx);
+				height: 370rpx;
+				margin-bottom: 20rpx;
+				overflow: hidden;
+				.people-img{
+					width: 100%;
+					height: 320rpx;
+					border-radius: 16rpx;
+				}
+				.people-name{
+					width: 100%;
+					height: 50rpx;
+					line-height: 50rpx;
+					text-align: center;
+					overflow: hidden;
+				}
+			}
+		}
+	}
+</style>

+ 155 - 0
pages/soldier/home/shop.vue

@@ -0,0 +1,155 @@
+<template>
+	<view class="shop main-bg">
+		<view class="view">
+			<view class="text">
+				<span class="font-color3 font-thirty-two">{{ form.shopsName }}</span>
+				<!-- <span class="padding font-color2 font-twenty-two">【 {{ change(form.shopsDiscount) }}折 】</span> -->
+			</view>
+			<view class="address font-color4 font-twenty-two">{{ form.shopsAddress }}</view>
+			<view class="font-color5 font-twenty-two">{{ form.text }}</view>
+			<image :src="image(form.shopsPic)" class="image"></image>
+			<view class="font-color3 font-twenty-four">店铺简介: {{ form.shopsIntroduce }}</view>
+		</view>
+		<view class="list">
+			<view class="list-title font-color3 font-thirty-two">
+				主营商品
+			</view>
+			<view class="list-view">
+				<view class="item" v-for="item in list" @click="goto(item.goodsId)">
+					<image class="item-img" :src="image(item.goodsPic)"></image>
+					<view class="name font-twenty ellipsis">{{ item.goodsName }}</view>
+					<view class="price font-color2 font-twenty">¥{{ item.goodsRatePrice }}</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import server from "@/api/index";
+import http from '@/common/http.js'
+export default {
+	data() {
+		return {
+			list:[],
+			form:{},
+			id: null,
+		}
+	},
+	onLoad(e) {
+		// this.getListFn(e.id);
+		// this.getGoodsInfoFn(e.id);
+		this.id = e.id;
+		setTimeout(function () {
+			console.log('start pulldown');
+		}, 1000);
+		uni.startPullDownRefresh();
+	},
+	onPullDownRefresh() {
+		this.getListFn(this.id);
+		this.getGoodsInfoFn(this.id);
+		setTimeout(function () {
+			uni.stopPullDownRefresh();
+		}, 1000);
+	},
+	methods:{
+		image(e) {
+			return http.webUrl + e
+		},
+		getGoodsInfoFn(id){
+			server.getGoodsInfo({shopsId: id, goodsStatus :'2'}).then(res =>{
+				this.list = [];
+				if(res){
+					this.list = res
+				}
+			})
+		},
+		image(e) {
+			return http.webUrl + e
+		},
+		change(e){
+			let num = e*10
+			return num
+		},
+		getListFn(e){
+			server.getYongJunDetails(e).then(res =>{
+				this.form = {}
+				if(res){
+					this.form = res
+				}
+			})
+		},
+		goto(id){
+			console.log("goto",id)
+			uni.navigateTo({
+			    url: '/pages/soldier/home/goods?id=' + id
+			})
+		}
+	}
+}
+</script>
+
+<style lang="scss" scoped>
+	.shop{
+		width: 100%;
+		min-height: 100vh;
+		height: auto;
+		padding: 30rpx;
+		.view{
+			width: 100%;
+			height: auto;
+			padding: 30rpx;
+			background: #FFFFFF;
+			.text{
+				.padding{
+					padding-left: 20rpx;
+				}
+			}
+			.address{
+				height: 68rpx;
+				line-height: 68rpx;
+			}
+			.image{
+				width: 100%;
+				height: 420rpx;
+				margin: 30rpx 0;
+			}
+		}
+		.list{
+			width: 100%;
+			.list-title{
+				width: 100%;
+				height: 115rpx;
+				line-height: 115rpx;
+				font-weight: 600;
+				letter-spacing: 2rpx;
+			}
+			.list-view{
+				width: 100%;
+				display: flex;
+				justify-content: space-between;
+				flex-wrap: wrap;
+				.item{
+					width: calc(50% - 15rpx);
+					height: 370rpx;
+					background: #FFFFFF;
+					border-radius: 8rpx;
+					margin-bottom: 30rpx;
+					.item-img{
+						width: 100%;
+						height: 228rpx;
+					}
+					.name{
+						width: 100%;
+						height: 80rpx;
+						line-height: 80rpx;
+						padding-left: 20rpx;
+					}
+					.price{
+						padding-left: 20rpx;
+					}
+				}
+			}
+		}
+	}
+</style>

+ 219 - 0
pages/soldier/home/union.vue

@@ -0,0 +1,219 @@
+<template>
+	<view class="union main-bg">
+		<view class="search">
+			<view class="item1">
+				<u-search placeholder="请输入企业名称" v-model="keyword" @search='searchFn' :show-action='false'>
+				</u-search>
+			</view>
+			<view class="item2"><!-- @click="chooseLocation()"-->
+				<!-- <u-icon name="map-fill" color="#2E4F1C" size="50" @click="go"></u-icon> -->
+				<image src="../../../static/ditu.png" @click="go" class="map-img"></image>
+			</view>
+		</view>
+		<view class="list">
+			<view class="item" v-for="(item, index) in list">
+				<image :src="image(item.shopsPic)" class="img" @click="goDel(item)"></image>
+				<view class="right" @click="goDel(item)">
+					<view class="font-color3 font-thirty-two ellipsis">{{ item.shopsName }}</view>
+					<view class="font-color2 font-twenty-two ellipsis line">{{ item.shopsIntroduce }}</view>
+					<view class="font-color4 font-twenty-two ellipsis">地址: {{ item.shopsAddress }}</view>
+					<!-- <view class="font-color5 font-twenty-two ellipsis address">{{distance(item)}}km</view> -->
+				</view>
+				<view class="phone" @click="makePhone(item.shopsTel)">
+					<u-icon name="phone-fill" color="#2E4F1C" size="30"></u-icon>
+				</view>
+			</view>
+		</view>
+		<u-toast ref="uToast" />
+	</view>
+</template>
+
+<script>
+	import amap from '@/lib/amap-wx.130.js'
+	import server from "@/api/index";
+	import http from '@/common/http.js'
+	export default {
+		data() {
+			return {
+				keyword: '',
+				key:'1dc63f21c12985e199a715faf4c02f36',
+				latitude: null,
+				longitude: null,
+				list: [],
+			}
+		},
+		onLoad() {
+			// this.amapPulgin = new amap.AMapWX({
+			// 	key: this.key
+			// })
+			// this.getLocation();
+			// this.getListFn();
+			setTimeout(function () {
+				console.log('start pulldown');
+			}, 1000);
+			uni.startPullDownRefresh();
+		},
+		onPullDownRefresh() {
+			this.getListFn();
+			setTimeout(function () {
+				uni.stopPullDownRefresh();
+			}, 1000);
+		},
+		methods: {
+			image(e) {
+				return http.webUrl + e
+			},
+			Rad(d){
+			   return d * Math.PI / 180.0;//经纬度转换成三角函数中度分表形式。
+			},
+			distance(item) {
+				var lng1 = this.longitude;
+				var lat1 = this.latitude;
+				var lng2 = item.shopsLng;
+				var lat2 = item.shopsLat;
+				var radLat1 = this.Rad(lat1);
+				var radLat2 = this.Rad(lat2);
+				var a = radLat1 - radLat2;
+				var b = this.Rad(lng1) - this.Rad(lng2);
+				var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
+				s = s * 6378.137;
+				s = Math.round(s * 10000) / 10000;
+				return s.toFixed(1)
+			},
+			rad(d) {
+				return d * Math.PI / 180.0; 
+			},
+			getListFn(){
+				server.getYongJun({shopsName: this.keyword, shopsStatus:'2'}).then(res =>{
+					this.list = [];
+					if(res){
+						this.list = res;
+					}
+				})
+			},
+			goDel(list){
+				uni.navigateTo({
+					url: '/pages/soldier/home/shop?id=' + list.shopsId
+				})
+			},
+			searchFn(value){
+				this.getListFn()
+			},
+			go(){
+				uni.navigateTo({
+					url: '/pages/soldier/home/map'
+				})
+			},
+			getLocation() {
+				let that = this;
+				that.amapPulgin.getRegeo({
+					type: 'gcj02', //map 组件使用的经纬度是国测局坐标, type 为 gcj02
+					success: res => {
+						const latitude = res[0].latitude;
+						const longitude = res[0].longitude;
+						that.longitude = longitude;
+						that.latitude = latitude;
+					},
+					fail: err => {
+						console.log(err)
+					}
+				})
+			},
+			makePhone(call){
+				if(call){
+					uni.makePhoneCall({
+						phoneNumber:call,
+						success: (res) => {
+							console.log(res)
+						},
+						fail: (err) => {
+							console.error(err)
+						}
+					})
+				}else{
+					this.$refs.uToast.show({
+						title: '暂无热线电话!',
+						type: 'default',
+					})
+				}
+				
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.union {
+		width: 100%;
+		padding: 30rpx;
+		min-height: 100vh;
+		height: auto;
+
+		.search {
+			display: flex;
+
+			.item1 {
+				width: calc(100% - 100rpx);
+			}
+
+			.item2 {
+				width: 100rpx;
+				padding-left: 40rpx;
+				padding-top: 5rpx;
+				.map-img{
+					width: 48rpx;
+					height: 48rpx;
+				}
+			}
+		}
+
+		.list {
+			width: 100%;
+			height: auto;
+			overflow-y: auto;
+			padding-top: 40rpx;
+
+			.item {
+				width: 100%;
+				height: 228rpx;
+				background: #FFFFFF;
+				border-radius: 8rpx;
+				display: flex;
+				margin-bottom: 30rpx;
+				position: relative;
+
+				.img {
+					width: 228rpx;
+					height: 100%;
+				}
+
+				.right {
+					width: calc(100% - 228rpx);
+					height: 100%;
+					padding: 30rpx 30rpx;
+
+					.line {
+						width: calc(100% - 40rpx);
+						height: 80rpx;
+						line-height: 80rpx;
+					}
+
+					.address {
+						padding-top: 22rpx;
+					}
+				}
+
+				.phone {
+					position: absolute;
+					right: 20rpx;
+					top: 90rpx;
+					width: 44rpx;
+					height: 44rpx;
+					border-radius: 22rpx;
+					border: 1rpx solid #2E4F1C;
+					text-align: center;
+				}
+			}
+		}
+	}
+</style>

Dosya farkı çok büyük olduğundan ihmal edildi
+ 129 - 0
pages/soldier/home/yxDetails.vue


+ 107 - 0
pages/soldier/news/index.vue

@@ -0,0 +1,107 @@
+<template>
+	<view class="content main-bg">
+		<view class="list" v-if="list.length > 0">
+			<view class="item" v-for="item in list">
+				<view class="time font-color3 font-twenty-four">{{ item.reviewerTime }}</view>
+				<view class="text font-color3 font-thirty-two">{{ item.msgInfo ? item.msgInfo : '' }}</view>
+				<view class="reason font-color3 font-twenty">{{ item.remark ? item.remark : '' }}</view>
+			</view>
+		</view>
+		<view class="empty" v-else>
+			<u-empty text="暂无消息" mode="list"></u-empty>
+		</view>
+		<u-tabbar :list="tabBarList" :active-color="activeColor" :inactive-color="inactiveColor"
+					:border-top="borderTop"></u-tabbar>
+	</view>
+</template>
+
+<script>
+import { mapGetters } from 'vuex'
+import server from "@/api/index";
+export default {
+	data() {
+		return {
+			borderTop: false,
+			inactiveColor: '#ccc',
+			activeColor: '#2E4F1C',
+			list: [],
+			userInfo:{}
+		}
+	},
+	computed: {
+		...mapGetters([
+			'tabBarList',
+			'role'
+		])
+	},
+	onLoad() {
+		setTimeout(function () {
+			console.log('start pulldown');
+		}, 1000);
+		uni.startPullDownRefresh();
+	},
+	onPullDownRefresh() {
+		this.userInfo = uni.getStorageSync('userInfo');
+		this.getListFn();
+		setTimeout(function () {
+			uni.stopPullDownRefresh();
+		}, 1000);
+	},
+	methods:{
+		show(){
+			this.userInfo = uni.getStorageSync('userInfo');
+			this.getListFn();
+		},
+		getListFn(){
+			if(this.userInfo.type === '2'){
+				server.getNews({veteransId: this.userInfo.userId, msgType: this.userInfo.type}).then(res =>{
+					this.list = [];
+					if(res){
+						this.list = res
+					}
+				})
+			}else if(this.userInfo.type === '1'){
+				server.getNews({veteransId: this.userInfo.nickName, msgType: this.userInfo.type}).then(res =>{
+					this.list = [];
+					if(res){
+						this.list = res
+					}
+				})
+			}
+		}
+	}
+}
+</script>
+
+<style lang="scss" scoped>
+	.content {
+		width: 100%;
+		height: auto;
+		min-height: 100vh;
+		padding: 30rpx;
+		.empty{
+			padding-top: 200rpx;
+		}
+		.list{
+			width: 100%;
+			.item{
+				width: 100%;
+				min-height: 165rpx;
+				height: auto;
+				background: #FFFFFF;
+				border-radius: 24rpx;
+				padding: 30rpx;
+				margin-bottom: 30rpx;
+				.text{
+					padding-top: 30rpx;
+					font-weight: 600;
+					letter-spacing: 2rpx;
+				}
+				.reason{
+					padding-top: 22rpx;
+					line-height: 40rpx;
+				}
+			}
+		}
+	}
+</style>

+ 318 - 0
pages/soldier/user/add.vue

@@ -0,0 +1,318 @@
+<template>
+	<view class="add main-bg">
+		<u-form :model="form" ref="uForm" :rules="rules">
+			<u-form-item 
+				label="姓名"
+				label-width="180" 
+				:label-position="labelPosition" 
+				prop="userName">
+				<u-input 
+					v-model="form.userName" 
+					placeholder-style="color: #2E4F1C;"
+					placeholder="请输入您的姓名" />
+			</u-form-item>
+			<u-form-item
+				label="身份证号码"
+				prop="userIdcard"
+				label-width="180" 
+				:label-position="labelPosition">
+				<view class="form-item">
+					<u-input 
+						v-model="form.userIdcard" 
+						placeholder-style="color: #2E4F1C;"
+						placeholder="请输入您的身份证号码" />
+				</view>
+			</u-form-item>
+			<u-form-item
+				label="手机号码"
+				prop="tel"
+				label-width="180" 
+				:label-position="labelPosition" 
+				>
+				<u-input 
+					v-model="form.tel" 
+					placeholder-style="color: #2E4F1C;"
+					placeholder="请输入您的手机号码" />
+			</u-form-item>
+			<u-form-item
+				:label-position="labelPosition"
+				label="身份"
+				prop="relationName"
+				label-width="150">
+				<u-input
+					type="select" 
+					:select-open="selectShow" 
+					v-model="form.relationName" 
+					placeholder="请选择" 
+					placeholder-style="color: #2E4F1C;"
+					@click="selectShow = true">
+				</u-input>
+			</u-form-item>
+			<view class="store-dis">
+				<view class="store-address">
+					<view class="select-address">
+						<view style="color: #303133;" class="font-twenty">
+							家庭住址
+						</view>
+						<u-input
+							v-model="form.address" 
+							placeholder-style="color: #2E4F1C;"
+							placeholder="请选择地址"/>
+					</view>
+				</view>
+				<view class="map-icon" @click="chooseLocation()">
+					<image src="/static/map.png" class="icon-img"></image>
+				</view>
+			</view>
+		</u-form>
+		<view @click="submit" class="form-submit">确认添加</view>
+		<u-select mode="single-column" :list="selectList" v-model="selectShow" @confirm="selectConfirm"></u-select>
+		<u-toast ref="uToast" />
+	</view>
+</template>
+
+<script>
+import server from "@/api/index";
+import amap from '@/lib/amap-wx.130.js'
+export default {
+	data() {
+		return {
+			labelPosition: 'left',
+			selectShow: false,
+			id: null,
+			userInfo: {},
+			addressName: '',
+			form: {
+				userName: '',
+				relationName: '',
+				relationId:'',
+				userIdcard: '',
+				tel: '',
+				address: ''
+			},
+			key:'1dc63f21c12985e199a715faf4c02f36',
+			selectList: [],
+			rules: {
+				userName: [
+					{ 
+						required: true, 
+						message: '请输入您的姓名!', 
+						trigger: ['change','blur'],
+					},
+					{
+						validator: (rule, value, callback) => {
+							return this.$u.test.chinese(value);
+						},
+						message: '姓名必须是汉字!',
+						trigger: ['change','blur'],
+					}
+				],
+				userIdcard: [
+					{	
+						required: true, 
+						message: '请输入您的身份证号码!', 
+						trigger: ['change','blur']
+					},
+					{
+						validator: (rule, value, callback) => {
+							return this.$u.test.idCard(value);
+						},
+						message: '身份证号码格式不正确',
+						trigger: ['change','blur'],
+					}
+				],
+				relationName: [
+					{	
+						required: true, 
+						message: '请选择身份!', 
+						trigger: ['change','blur']
+					}
+				],
+			}
+		}
+	},
+	onReady() {
+		this.$refs.uForm.setRules(this.rules);
+	},
+	onLoad(e) {
+		// this.userInfo = uni.getStorageSync('userInfo');
+		// if(e.id){
+		// 	this.id = e.id;
+		// 	this.getUserRelationInfoFn();
+		// }
+		this.getRelationInfoListFn();
+		this.amapPulgin = new amap.AMapWX({
+			key: this.key
+		})
+	},
+	methods:{
+		chooseLocation(e) {
+			uni.chooseLocation({
+				success: (res) => {
+					console.log("ppp99",res)
+					this.form.address = res.address
+				}
+			})
+		},
+		getLocation() {
+			let that = this;
+			that.amapPulgin.getRegeo({
+				success: res => {
+					console.log('当前定位', res);
+					that.addressName = `${res[0].regeocodeData.addressComponent.city}`
+					// uni.hideLoading();
+				},
+				fail: err => {
+					console.log(err)
+				}
+			})
+		},
+		getUserRelationInfoFn(){
+			server.getUserRelationInfo(this.id).then(res =>{
+				this.form = res
+			})
+		},
+		getRelationInfoListFn(){
+			server.getUploadInfo({dictType: 'basics_level'}).then(res =>{
+				this.selectList = [];
+				res.forEach(item =>{
+					this.selectList.push({
+						label: item.dictLabel,
+						value: item.dictValue,
+						// value: item.relationId,
+						// label: item.relationInfo
+					})
+				})
+			})
+		},
+		submit() {
+			let _this = this
+			this.$refs.uForm.validate(valid => {
+				if (valid) {
+					// if(_this.id){
+					// 	server.updateUserRelation(_this.form).then(res =>{
+					// 		_this.$refs.uToast.show({
+					// 			title: '修改军属信息成功!',
+					// 			type: 'default',
+					// 		})
+					// 		setTimeout(function()  {
+					// 			uni.navigateBack({
+					// 			    delta: 1
+					// 			});
+					// 		}, 2000);
+					// 	})
+					// }else{
+						let params = _this.form
+						params.remark = ''
+						server.getAdd(params).then(res =>{
+								_this.$refs.uToast.show({
+									title: '添加军属成功!',
+									type: 'default',
+								})
+								setTimeout(function()  {
+									uni.navigateBack({
+									    delta: 1
+									});
+								}, 2000);
+						})
+					// }
+				} else {
+					console.log('验证失败');
+				}
+			});
+		},
+		selectConfirm(e) {
+			this.form.relationName = '';
+			e.map((val, index) => {
+				this.form.relationName = val.label;
+				this.form.relationId = val.value;
+			})
+		},
+	},
+}
+</script>
+
+<style lang="scss" scoped>
+	/deep/ .u-icon__icon{
+		position: relative;
+		color: #2E4F1C!important;
+	}
+	/deep/ .u-form-item__message{
+		padding-right: 0rpx!important;
+		text-align: right;
+	}
+	/deep/ .u-input__input{
+		color: #2E4F1C!important;
+		font-size: 28rpx;
+		font-family: PingFangSC-Regular, PingFang SC;
+		font-weight: 400;
+		text-align: right;
+	}
+	/deep/ .u-border, .u-border-bottom, .u-border-left, .u-border-right, .u-border-top, .u-border-top-bottom{
+		
+	}
+	/deep/ .u-form-item{
+		display: -webkit-box;
+		display: -webkit-flex;
+		display: flex;
+		-webkit-box-orient: horizontal;
+		-webkit-box-direction: normal;
+		-webkit-flex-direction: row;
+		flex-direction: row;
+		box-sizing: border-box;
+		line-height: 96rpx;
+		-webkit-flex-direction: column;
+		flex-direction: column;
+		background: #FFFFFF;
+		border-radius: 24rpx;
+		height: 96rpx;
+		margin-bottom: 40rpx;
+		padding-left: 30rpx!important;
+		padding-right: 30rpx!important;
+	}
+	.store-dis{
+		display: flex;
+		margin-bottom: 30rpx;
+		.store-address{
+			width: 580rpx;
+			padding: 16rpx 30rpx;
+			background: #fff;
+			border-radius: 16rpx 0rpx 0rpx 16rpx;
+			.select-address{
+				display: flex; 
+				align-items: center;
+				justify-content: space-between; 
+			}
+		}
+		.map-icon{
+			width: 110rpx;
+			background: #2E4F1C;
+			text-align: center;
+			border-radius: 0rpx 16rpx 16rpx 0rpx;
+			padding-top: 31rpx;
+			.icon-img{
+				width: 42rpx;
+				height: 42rpx;
+			}
+		}
+	}
+	.add{
+		width: 100%;
+		height: auto;
+		min-height: 100vh;
+		padding: 30rpx 30rpx 30rpx;
+		.form-submit{
+			margin: 120rpx auto;
+			width: 570rpx;
+			height: 96rpx;
+			line-height: 96rpx;
+			text-align: center;
+			background: #2E4F1C;
+			border-radius: 49rpx;
+			font-size: 36rpx;
+			font-family: PingFangSC-Medium, PingFang SC;
+			font-weight: 500;
+			color: #fff;
+		}
+	}
+</style>

+ 94 - 0
pages/soldier/user/erweima.vue

@@ -0,0 +1,94 @@
+<template>
+	<view class="add main-bg">
+		<view class="header">
+			<view class="title font-color3 font-thirty-two">军人唯一识别码</view>
+			<view class="img">
+				<image class="image" :src="data"></image>
+			</view>
+			<view class="text">
+				<view class="time font-thirty-two font-color4">本码有效期: 5分钟</view>
+				<view class="obtain font-thirty-two font-color2" @click="getImg(userInfo.userId, userInfo.type)">重新获取</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import server from "@/api/index";
+export default {
+	data() {
+		return {
+			userInfo: {},
+			data: ''
+		}
+	},
+	onLoad() {
+		this.userInfo = uni.getStorageSync('userInfo');
+		this.getImg(this.userInfo.userId, this.userInfo.type);
+	},
+	methods:{
+		getImg(id, type){
+			console.log('id', id)
+			server.getUserQrCode(id,type).then(res=>{
+				console.log(res)
+				this.data = res
+			})
+		}
+	}
+}
+</script>
+
+<style lang="scss" scoped>
+	.add{
+		width: 100%;
+		height: auto;
+		min-height: 100vh;
+		padding: 30rpx 30rpx 30rpx;
+	}
+	.header{
+		margin-top: 30rpx;
+		height: 655rpx;
+		width: 100%;
+		background: #FFF;
+		border-radius: 24rpx;
+		// position: relative;
+		.title{
+			height: 165rpx;
+			line-height: 165rpx;
+			letter-spacing: 2rpx;
+			width: 100%;
+			text-align: center;
+			font-weight: 600;
+		}
+		.img{
+			width: 400rpx;
+			height: 400rpx;
+			margin: 0 auto;
+			position: relative;
+			.image{
+				width: 400rpx;
+				height: 400rpx;
+				border-radius: 24rpx;
+				position: absolute;
+				top: 0rpx;
+				left: 0rpx;
+			}
+		}
+		.text{
+			display: flex;
+			justify-content: space-between;
+			margin-top: 30rpx;
+			height: 30rpx;
+			line-height: 30rpx;
+			.time{
+				padding-left: 30rpx;
+			}
+			.obtain{
+				padding-right: 30rpx;
+				letter-spacing: 2rpx;
+				font-weight: 600;
+				text-align: right;
+			}
+		}
+	}
+</style>

+ 343 - 0
pages/soldier/user/index.vue

@@ -0,0 +1,343 @@
+<template>
+	<view class="content main-bg">
+		<view class="header">
+			<image class="img" src="/static/ing7.png"></image>
+			<view class="right">
+				<view class="right-display">
+					<view class="right-display-name font-color3 font-thirty-two">{{ form.veteransName }}</view>
+					<view class="right-display-status header-long-bg font-color1">{{ change(form.veteransStatus) ? change(form.veteransStatus) : '未认证' }}</view>
+				</view>
+				<view class="right-name font-color3 font-twenty">{{ handle(userInfo.type) }}</view>
+				<view class="right-login font-twenty font-color2" @click="outlogin">退出登录</view>
+				<!-- <view class="right-position font-twenty font-color5" @click="see">查看优惠记录</view> -->
+			</view>
+		</view>
+		<view class="sys" @click="goto('/pages/soldier/user/erweima')"><!--/pages/soldier/user/scanning-->
+			<view class="icon">
+				<image  src="/static/erweima.png"></image>
+				<!-- <u-icon name="scan" color="#2E4F1C" size="88"></u-icon> -->
+			</view>
+			<view class="text font-twenty font-color3">军人唯一识别码</view>
+		</view>
+		<!-- <view class="relatives" v-if="userInfo.type === '2'">
+			<view class="relatives-text">
+				<view class="text-me font-color3 font-thirty-two">我的军属</view>
+				<view 
+					class="text-add header-long-bg font-color1 font-thirty-two"
+					@click="goto('/pages/soldier/user/add')"
+					>添加军属</view>
+			</view>
+			<view class="relatives-list" v-if="list.length > 0">
+				<view class="list-item" v-for="item in list">
+					<view class="item-left font-color3 font-twenty-four">{{ item.relationName }}</view>
+					<view class="item-center">
+						<view class="item-center-name font-color3 font-twenty-four">姓名: {{ item.userName }}</view>
+						<view class="item-center-idCard font-color3 font-twenty-four">身份证号: {{ item.userIdcard }}</view>
+					</view>
+					<view class="item-right" v-if="userInfo != ''">
+						<view class="right-btn1 font-twenty font-color2" @click="handleModify(item)">修改</view>
+						<view class="right-btn2 font-twenty font-color5"  @click="handleDel(item.userId)">删除</view>
+					</view>
+				</view>
+			</view>
+			<view v-else style="padding-top: 100rpx;">
+				<u-empty text="暂无数据" mode="list"></u-empty>
+			</view>
+		</view> -->
+		<u-tabbar :list="tabBarList" :active-color="activeColor" :inactive-color="inactiveColor"
+					:border-top="borderTop"></u-tabbar>
+		<u-toast ref="uToast"></u-toast>
+	</view>
+</template>
+
+<script>
+import { mapGetters } from 'vuex'
+import server from "@/api/index";
+export default {
+	data() {
+		return {
+			borderTop: false,
+			inactiveColor: '#ccc',
+			activeColor: '#2E4F1C',
+			name: '',
+			status: '已认证',
+			position: '军人',
+			list: [],
+			form: {},
+			userInfo: {},
+		}
+	},
+	computed: {
+		...mapGetters([
+			'tabBarList',
+			'role'
+		])
+	},
+	onShow(){
+		this.userInfo = uni.getStorageSync('userInfo');
+		// this.getUserRelationListFn();
+		this.getListFn()
+	},
+	methods:{
+		handle(type){
+			if(type === '2'){
+				return '军人'
+			}else if(type === '3'){
+				return '军属'
+			}
+		},
+		change(type){
+			if(type === '1'){
+				return '未认证'
+			}else if(type === '2'){
+				return '已认证'
+			}else if(type === '3'){
+				return '未通过'
+			}
+		},
+		handleModify(item){
+			uni.navigateTo({
+				url: '/pages/soldier/user/add?id='+ item.userId
+			})
+		},
+		see(){
+			uni.navigateTo({
+				url: '/pages/merchant/home/record'
+			})
+		},
+		outlogin(){
+			let _this = this;
+			uni.showModal({
+			    title: '提示',
+			    content: '确定退出登录吗?',
+			    success: function (res) {
+			        if (res.confirm) {
+						uni.removeStorage({
+						    key: 'userInfo',
+						    success: function (res) {
+								uni.removeStorage({
+									key: 'role',
+								});
+								uni.removeStorage({
+									key: 'token',
+								    success: function (res) {
+										uni.reLaunch({
+										    url: '/pages/index/index'
+										});
+								    }
+								});
+								// uni.reLaunch({
+								//     url: '/pages/index/index'
+								// });
+						    }
+						});
+			        } else if (res.cancel) {
+			            console.log('用户点击取消');
+			        }
+			    }
+			});
+		},
+		handleDel(id){
+			let _this = this;
+			uni.showModal({
+			    title: '提示',
+			    content: '确定删除这个军属吗?',
+			    success: function (res) {
+			        if (res.confirm) {
+						server.getDel(id).then(res =>{
+								_this.$refs.uToast.show({
+									title: '删除成功!',
+									type: 'default',
+								});
+								_this.getUserRelationListFn();
+						})
+			        } else if (res.cancel) {
+			            console.log('用户点击取消');
+			        }
+			    }
+			});
+		},
+		getUserRelationListFn(){
+			server.getUserRelationList({remark: this.userInfo.userId}).then(res =>{
+				this.list = [];
+				if(res){
+					this.list = res
+				}
+			})
+		},
+		getListFn(){
+			server.getMe(this.userInfo.userId,this.userInfo.type).then(res =>{
+				this.form = res
+			})
+		},
+		goto(url){
+			uni.navigateTo({
+				url
+			})
+		}
+	}
+}
+</script>
+
+<style lang="scss" scoped>
+	.content {
+		width: 100%;
+		min-height: 100vh;
+		height: auto;
+		padding: 30rpx;
+		.header{
+			width: 100%;
+			height: 200rpx;
+			background: #FFFFFF;
+			border-radius: 24rpx;
+			padding: 30rpx;
+			display: flex;
+			.img{
+				width: 140rpx;
+				height: 145rpx;
+				margin-right: 20rpx;
+			}
+			.right{
+				position: relative;
+				width: calc(100% - 140rpx);
+				padding-top: 20rpx;
+				.right-display{
+					display: flex;
+					.right-display-name{
+						letter-spacing: 3rpx;
+						font-weight: 600;
+					}
+					.right-display-status{
+						height: 40rpx;
+						margin-left: 20rpx;
+						border-radius: 18rpx;
+						padding: 0rpx 16rpx;
+					}
+				}
+				.right-name{
+					padding-top: 20rpx;
+				}
+				.right-login{
+					position: absolute;
+					top: 40rpx;
+					right: 0rpx;
+					width: 180rpx;
+					height: 64rpx;
+					border-radius: 32rpx;
+					text-align: center;
+					line-height: 60rpx;
+					border-radius: 32rpx;
+					border: 1rpx solid #2E4F1C;
+				}
+				.right-position{
+					position: absolute;
+					top: 78rpx;
+					right: 0rpx;
+					width: 208rpx;
+					height: 64rpx;
+					border-radius: 32rpx;
+					border: 2px solid #CC1019;
+					text-align: center;
+					line-height: 60rpx;
+				}
+			}
+		}
+		.sys{
+			width: 100%;
+			height: 218rpx;
+			background: #FFFFFF;
+			border-radius: 24rpx;
+			margin-top: 30rpx;
+			padding: 30rpx;
+			.icon{
+				height: 88rpx;
+				text-align: center;
+				image{
+					width: 88rpx;
+					height: 88rpx;
+				}
+			}
+			.text{
+				text-align: center;
+				height: 100rpx;
+				line-height: 100rpx;
+				letter-spacing: 2rpx;
+			}
+		}
+		.relatives{
+			width: 100%;
+			height: auto;
+			overflow-y: auto;
+			.relatives-text{
+				width: 100%;
+				height: 142rpx;
+				line-height: 142rpx;
+				display: flex;
+				justify-content: space-between;
+				.text-me{
+					font-weight: 600;
+					letter-spacing: 3rpx;
+				}
+				.text-add{
+					margin-top: 35rpx;
+					width: 182rpx;
+					height: 72rpx;
+					line-height: 72rpx;
+					border-radius: 36rpx;
+					text-align: center;
+					letter-spacing: 1rpx;
+				}
+			}
+			.relatives-list{
+				width: 100%;
+				height: auto;
+				overflow-y: auto;
+				.list-item{
+					width: 100%;
+					height: 176rpx;
+					border-radius: 6rpx;
+					border: 1rpx solid #333333;
+					margin-bottom: 30rpx;
+					display: flex;
+					.item-left{
+						width: 93rpx;
+						height: 176rpx;
+						line-height: 172rpx;
+						border-right: 1rpx solid #333333;
+						text-align: center;
+					}
+					.item-center{
+						width: calc(100% - 240rpx);
+						height: 176rpx;
+						border-right: 1rpx solid #333333;
+						padding: 41rpx 30rpx;
+						.item-center-idCard{
+							padding-top: 20rpx;
+						}
+					}
+					.item-right{
+						width: 145rpx;
+						height: 176rpx;
+						margin: 0 auto;
+						padding: 30rpx 25rpx;
+						.right-btn1{
+							width: 96rpx;
+							height: 48rpx;
+							border-radius: 24rpx;
+							border: 1px solid #2E4F1C;
+							text-align: center;
+						}
+						.right-btn2{
+							width: 96rpx;
+							height: 48rpx;
+							border-radius: 24rpx;
+							margin-top: 20rpx;
+							border: 1px solid #CC1019;
+							text-align: center;
+						}
+					}
+				}
+			}
+		}
+	}
+</style>

+ 37 - 0
pages/soldier/user/scanning.vue

@@ -0,0 +1,37 @@
+<template>
+	<view><kingScan scanMode="scanCode" @handle='goto'></kingScan></view>
+</template>
+
+<script>
+import kingScan from '@/components/king-scan/king-scan.vue';
+export default {
+	components: {
+		kingScan
+	},
+	data() {
+		return {
+			flag: false,
+		};
+	},
+	onLoad(e) {
+		console.log("flag", e.flag)
+		this.flag = e.flag
+	},
+	methods: {
+		goto(money, id){
+			console.log('money, id',money, id)
+			if(this.flag){
+				uni.navigateTo({
+					url: '/pages/manage/account/adminData?money=' + money + '&id=' + id
+				})
+			}else{
+				uni.navigateTo({
+					url: '/pages/merchant/home/data?money=' + money + '&id=' + id
+				})
+			}
+		}
+	}
+};
+</script>
+
+<style lang="scss"></style>

BIN
static/1.png


BIN
static/11.png


BIN
static/12.png


BIN
static/2.png


BIN
static/21.png


BIN
static/22.png


BIN
static/23.png


BIN
static/24.png


BIN
static/3.png


BIN
static/31.png


BIN
static/32.png


BIN
static/33.png


BIN
static/34.png


BIN
static/4.png


BIN
static/41.png


BIN
static/42.png


BIN
static/43.png


BIN
static/44.png


+ 0 - 0
static/51.png


Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor