lilei %!s(int64=4) %!d(string=hai) anos
pai
achega
d1b05fcd7b
Modificáronse 12 ficheiros con 778 adicións e 20 borrados
  1. 4 0
      .gitignore
  2. 11 0
      api/banner.js
  3. 148 0
      api/order.js
  4. 110 0
      components/icon-items-list/icon-items-list.vue
  5. 270 0
      package-lock.json
  6. 5 1
      package.json
  7. 230 19
      pages/index/index.vue
  8. BIN=BIN
      static/navIcon/djzx.png
  9. BIN=BIN
      static/navIcon/spxd.png
  10. BIN=BIN
      static/navIcon/xcjc.png
  11. BIN=BIN
      static/navIcon/zdjl.png
  12. BIN=BIN
      static/pt.png

+ 4 - 0
.gitignore

@@ -0,0 +1,4 @@
+node_modules/
+.project
+unpackage/
+.DS_Store

+ 11 - 0
api/banner.js

@@ -0,0 +1,11 @@
+import axios from '@/libs/axios.js'
+
+// banner图片列表
+export const bannerList = (params) => {
+  const url = `zycar-mgr/banner/query`
+  return axios.request({
+    url: url,
+    data: params,
+    method: 'post'
+  })
+}

+ 148 - 0
api/order.js

@@ -0,0 +1,148 @@
+import axios from '@/libs/axios.js'
+// 保存订单
+export const saveOrder = (params) => {
+  return axios.request({
+    url: 'order/save',
+    data: params,
+    method: 'post'
+  })
+}
+// 查询订单支付信息
+export const findPayInfo = (params) => {
+  return axios.request({
+    url: `order/findPayInfo/${params.orderId}`,
+    method: 'get'
+  })
+}
+// 工单收款保存
+export const orderPay = (params) => {
+  return axios.request({
+    url: `order/pay`,
+    method: 'post',
+    data: params
+  })
+}
+// 工单详情查询
+export const orderFind = (params) => {
+  return axios.request({
+    url: `order/find/${params.orderId}`,
+    method: 'get'
+  })
+}
+// 工单列表查询
+export const orderQueryLike = (params) => {
+  return axios.request({
+    url: `order/queryLike/${params.pageNo}/${params.pageSize}`,
+    data: {
+			queryWord: params.queryWord,
+			queryBeginDate: params.queryBeginDate,
+			queryEndDate: params.queryEndDate,
+			typeId: params.typeId,
+			finishFlag: params.finishFlag,
+			orderFlag: params.orderFlag,
+			orderSource: params.orderSource,
+			orderFlags: params.orderFlags
+			},
+    method: 'post'
+  })
+}
+// 取消订单
+export const cancelOrder = (params) => {
+  return axios.request({
+    url: `order/cancel/${params.orderId}`,
+    method: 'get'
+  })
+}
+// 删除订单
+export const deleteOrder = (params) => {
+  return axios.request({
+    url: `order/delete/${params.orderId}`,
+    method: 'get'
+  })
+}
+// 订单完工
+export const finishOrder = (params) => {
+  return axios.request({
+    url: `order/finish/${params.orderId}`,
+    method: 'get'
+  })
+}
+// 订单配件快速入库
+export const savePartStack = (params) => {
+  return axios.request({
+    url: `purchase/quick`,
+    method: 'post',
+    data: params
+  })
+}
+// 人员查询
+export const listEmployee = (params) => {
+  return axios.request({
+    url: `employee/findAll`,
+    data: params,
+    method: 'post'
+  })
+}
+
+// 工单看板列表查询
+export const findOrderAndVehicle = (params) => {
+  return axios.request({
+    url: `index/findOrderAndVehicle`,
+    method: 'get'
+  })
+}
+// 判断工单中的车辆是否存在
+export const findVehicle = (params) => {
+  return axios.request({
+    url: `index/findVehicle`,
+    data: {'number': params.number},
+    method: 'post'
+  })
+}
+// 删除代开单
+export const delVehicleAiMsg = (params) => {
+  return axios.request({
+    url: `vehicleAiMsg/delete`,
+    data: {'id': params.id},
+    method: 'post'
+  })
+}
+// 轮询查看是否有车辆出入
+export const findIdentityVehicle = (params) => {
+  return axios.request({
+    url: `index/findIdentityVehicle`,
+    method: 'get'
+  })
+}
+// 提成分配查询
+export const getRoyalty = params => {
+  return axios.request({
+    url: `kpiList/splitList/${params.pageNo}/${params.pageSize}`,
+    method: 'post',
+    data: params
+  })
+}
+// 提成分配设置
+export const getSplit = params => {
+  return axios.request({
+    url: `kpiList/split`,
+    method: 'post',
+    data: params
+  })
+}
+//  移动端完工添加服务人员
+export const smAddSerPerson = (params) => {
+  return axios.request({
+    url: `order/addSerPerson`,
+    method: 'post',
+    data: params
+  })
+}
+ // 订单详情中,查看订单使用的优惠券
+export const getOrderUsedCoupon = (params) => {
+  return axios.request({
+    url: `zycar-mgr/coupon/queryByOrder`,
+    method: 'post',
+    data: params
+  })
+}

+ 110 - 0
components/icon-items-list/icon-items-list.vue

@@ -0,0 +1,110 @@
+<template>
+	<div class="icon-items-list" :class="'icon-items-list-'+type">
+		<div class="icon-items-icons" v-for="(item,index) in list" :key="item.id" :style="{width:itemWidth}" @click="toPage(item,index)">
+			<image class="icon-items-imgse" :class="item.auth?'':'uni-img-gray'" :fade-show='true' :src="item.icon"></image>
+			<div class="icon-items-text">{{item.name.slice(0,14)}}</div>
+		</div>
+		<div class="nodata" v-if="list.length==0">{{noDataText}}</div>
+	</div>
+</template>
+
+<script>
+	export default {
+		name: "iconItemsList",
+		props:{
+			// 套餐服务项 或配件id
+			list:{
+				type: Array,
+				default: function(){
+					return []
+				}
+			},
+			itemWidth: {
+				type: String,
+				default: '25%'
+			},
+			type: {
+				type: String,
+				default: 'icon'
+			},
+			noDataText: {
+				type: String,
+				default: '暂无数据'
+			}
+		},
+		data() {
+			return {
+				datas: this.list
+			}
+		},
+		methods: {
+			toPage(item,index){
+				if(!item.auth){
+					uni.showToast({icon: 'none',title: '你无权限操作此功能'})
+					return
+				}
+				if(item.url&&item.url!=''){
+					if(item.target == 'page'){
+						// console.log(item.url)
+						// 生意经
+						if(this.type=="knowledge"){
+							this.$store.state.vuex_knowledgePageNo = index
+						}
+						uni.navigateTo({
+							url: item.url
+						})
+					}
+					if(item.target == 'tabPage'){
+						uni.switchTab({
+							url: item.url
+						})
+					}
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="less">
+	.icon-items-list{
+		align-items: center;
+		display: flex;
+		flex-wrap: wrap;
+		.nodata{
+			text-align: center;
+			font-size: 24upx;
+			width: 100%;
+			color: #999999;
+		}
+	}
+	.icon-items-list-icon{
+		.icon-items-imgse{
+			width: 50upx;
+			height: 50upx;
+		}
+		.icon-items-text{
+			font-size: 28upx;
+			color: #666666;
+			margin-top: 5upx;
+		}
+	}
+	.icon-items-icons{
+		text-align: center;
+		margin: 20upx 0;
+	}
+	// 生意经
+	.icon-items-list-knowledge{
+		align-items: flex-start;
+		.icon-items-imgse{
+			width: 215upx;
+			height: 140upx;
+			border-radius: 10upx;
+		}
+		.icon-items-text{
+			font-size: 28upx;
+			color: #666666;
+			padding: 0 10upx;
+			min-height: 70upx;
+		}
+	}
+</style>

+ 270 - 0
package-lock.json

@@ -4,10 +4,280 @@
   "lockfileVersion": 1,
   "requires": true,
   "dependencies": {
+    "ansi-regex": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+      "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
+    },
+    "ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "requires": {
+        "color-convert": "^1.9.0"
+      }
+    },
+    "async-validator": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-3.4.0.tgz",
+      "integrity": "sha512-VrFk4eYiJAWKskEz115iiuCf9O0ftnMMPXrOFMqyzGH2KxO7YwncKyn/FgOOP+0MDHMfXL7gLExagCutaZGigA=="
+    },
+    "base64-js": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
+      "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g=="
+    },
+    "buffer": {
+      "version": "5.6.0",
+      "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz",
+      "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==",
+      "requires": {
+        "base64-js": "^1.0.2",
+        "ieee754": "^1.1.4"
+      }
+    },
+    "buffer-alloc": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
+      "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
+      "requires": {
+        "buffer-alloc-unsafe": "^1.1.0",
+        "buffer-fill": "^1.0.0"
+      }
+    },
+    "buffer-alloc-unsafe": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
+      "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
+    },
+    "buffer-fill": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
+      "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw="
+    },
+    "buffer-from": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+      "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
+    },
+    "camelcase": {
+      "version": "5.3.1",
+      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+      "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
+    },
+    "cliui": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+      "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+      "requires": {
+        "string-width": "^3.1.0",
+        "strip-ansi": "^5.2.0",
+        "wrap-ansi": "^5.1.0"
+      }
+    },
+    "color-convert": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+      "requires": {
+        "color-name": "1.1.3"
+      }
+    },
+    "color-name": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+    },
+    "decamelize": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
+    },
+    "dijkstrajs": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.1.tgz",
+      "integrity": "sha1-082BIh4+pAdCz83lVtTpnpjdxxs="
+    },
+    "emoji-regex": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+      "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
+    },
+    "find-up": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+      "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+      "requires": {
+        "locate-path": "^3.0.0"
+      }
+    },
+    "get-caller-file": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+      "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
+    },
+    "ieee754": {
+      "version": "1.1.13",
+      "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
+      "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg=="
+    },
+    "is-fullwidth-code-point": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+      "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
+    },
+    "isarray": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+      "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="
+    },
+    "locate-path": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+      "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+      "requires": {
+        "p-locate": "^3.0.0",
+        "path-exists": "^3.0.0"
+      }
+    },
+    "lodash": {
+      "version": "4.17.20",
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
+      "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA=="
+    },
+    "moment": {
+      "version": "2.27.0",
+      "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz",
+      "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ=="
+    },
+    "p-limit": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+      "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+      "requires": {
+        "p-try": "^2.0.0"
+      }
+    },
+    "p-locate": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+      "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+      "requires": {
+        "p-limit": "^2.0.0"
+      }
+    },
+    "p-try": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
+    },
+    "path-exists": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+      "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
+    },
+    "pngjs": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz",
+      "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w=="
+    },
+    "qrcode": {
+      "version": "1.4.4",
+      "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.4.4.tgz",
+      "integrity": "sha512-oLzEC5+NKFou9P0bMj5+v6Z40evexeE29Z9cummZXZ9QXyMr3lphkURzxjXgPJC5azpxcshoDWV1xE46z+/c3Q==",
+      "requires": {
+        "buffer": "^5.4.3",
+        "buffer-alloc": "^1.2.0",
+        "buffer-from": "^1.1.1",
+        "dijkstrajs": "^1.0.1",
+        "isarray": "^2.0.1",
+        "pngjs": "^3.3.0",
+        "yargs": "^13.2.4"
+      }
+    },
+    "require-directory": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
+    },
+    "require-main-filename": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+      "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
+    },
+    "set-blocking": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+      "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
+    },
+    "string-width": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+      "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+      "requires": {
+        "emoji-regex": "^7.0.1",
+        "is-fullwidth-code-point": "^2.0.0",
+        "strip-ansi": "^5.1.0"
+      }
+    },
+    "strip-ansi": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+      "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+      "requires": {
+        "ansi-regex": "^4.1.0"
+      }
+    },
     "uview-ui": {
       "version": "1.6.5",
       "resolved": "https://registry.npmjs.org/uview-ui/-/uview-ui-1.6.5.tgz",
       "integrity": "sha512-bvesRrQiu99vMG5l6YHfBC5PnrK3S1efw5nYUu9oZpagUtjN2YIVzQUPSzCAduoGIVuqzQ8LrM9CMdWgNXv/RQ=="
+    },
+    "which-module": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+      "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
+    },
+    "wrap-ansi": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+      "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+      "requires": {
+        "ansi-styles": "^3.2.0",
+        "string-width": "^3.0.0",
+        "strip-ansi": "^5.0.0"
+      }
+    },
+    "y18n": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
+      "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w=="
+    },
+    "yargs": {
+      "version": "13.3.2",
+      "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
+      "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
+      "requires": {
+        "cliui": "^5.0.0",
+        "find-up": "^3.0.0",
+        "get-caller-file": "^2.0.1",
+        "require-directory": "^2.1.1",
+        "require-main-filename": "^2.0.0",
+        "set-blocking": "^2.0.0",
+        "string-width": "^3.0.0",
+        "which-module": "^2.0.0",
+        "y18n": "^4.0.0",
+        "yargs-parser": "^13.1.2"
+      }
+    },
+    "yargs-parser": {
+      "version": "13.1.2",
+      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
+      "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
+      "requires": {
+        "camelcase": "^5.0.0",
+        "decamelize": "^1.2.0"
+      }
     }
   }
 }

+ 5 - 1
package.json

@@ -14,6 +14,10 @@
   "author": "",
   "license": "ISC",
   "dependencies": {
-    "uview-ui": "^1.6.5"
+    "uview-ui": "^1.6.5",
+    "async-validator": "^3.3.0",
+    "lodash": "^4.17.19",
+    "moment": "^2.27.0",
+    "qrcode": "^1.4.4"
   }
 }

+ 230 - 19
pages/index/index.vue

@@ -1,20 +1,96 @@
 <template>
 	<view class="content">
-		<button @click="openVideo">
-			开始巡店
-		</button>
+		<!-- 轮播图 -->
+		<swiper class="top-ad-swiper" :indicator-dots="false" :autoplay="true" :interval="5000" :duration="600" :circular="true">
+			<swiper-item v-for="(item,index) in imageTopList" :key="index">
+				<div class="swiper-item uni-bg-red">
+					<image class="swiper-item-imgse" :fade-show='true' :src="item.photo"></image>
+				</div>
+			</swiper-item>
+		</swiper>
+		<!-- 导航按钮 -->
+		<div class="nav-items">
+			<iconItemsList :list="navList"></iconItemsList>
+		</div>
+		<u-gap height="10" bg-color="#f8f8f8"></u-gap>
+		<!-- 待办单 -->
+		<div class="panel-box">
+			<div class="panel-title">
+				<span class="texts">待办单</span>
+				<span class="btns">更多 
+				<u-icon color="#4eacfe" name="arrow-right" size="24"></u-icon>
+				</span>
+			</div>
+			<div class="panel-body">
+				<div class="order-list">
+					<div v-for="item in orderData" :key="item.id">
+						<span>{{item.createDate}}</span>
+						<span>{{item.vehicleNumber}}</span>
+						<span :class="getClass(item.status)">{{item.status}}</span>
+					</div>
+				</div>
+				<div class="nodata" v-if="orderData.length==0">{{noOrderDataText}}</div>
+			</div>
+		</div>
+		<u-gap height="10" bg-color="#f8f8f8"></u-gap>
 	</view>
 </template>
 
 <script>
+import iconItemsList from '@/components/icon-items-list/icon-items-list.vue'
+import { bannerList } from "@/api/banner.js"
+import { orderQueryLike, finishOrder } from '@/api/order'
+import moment from 'moment'
 export default {
+	components: {
+		iconItemsList
+	},
 	data() {
 		return {
-			wv: null
+			// 顶部轮播图片
+			imageTopList:[],
+			noOrderDataText: '数据加载中,请稍后...',
+			orderData: [],
+			// 快捷导航
+			navList: [
+				{
+					id: 'XC',
+					icon: '/static/navIcon/spxd.png',
+					name: '视频巡店',
+					url:'/pages/welcomeVehicle?orderType=1&title=洗车开单',
+					target: 'page',
+					auth: true
+				},
+				{
+					id: 'KX',
+					icon: '/static/navIcon/djzx.png',
+					name: '点检中心',
+					url:'/pages/welcomeVehicle?orderType=2&title=保养开单',
+					target: 'page',
+					auth: true
+				},
+				{
+					id: 'TC',
+					icon: '/static/navIcon/xcjc.png',
+					name: '现场巡店',
+					url:'/pages/welcomeVehicle?orderType=3&title=套餐开单',
+					target: 'page',
+					auth: true
+				},
+				{
+					id: 'MR',
+					icon: '/static/navIcon/zdjl.png',
+					name: '巡店记录',
+					url:'/pages/more',
+					target: 'page',
+					auth: true
+				}
+			],
 		};
 	},
 	onLoad() {
-		let _this = this
+		this.getBanner('HOME_TOP')
+		this.getOrderData()
 	},
 	methods: {
 		openVideo() {
@@ -22,24 +98,159 @@ export default {
 			 	url:"/pages/shopTour/shopTour"
 			 })
 		},
+		// 消息提示
+		showTotast(title){
+			uni.showToast({
+				icon: 'none',
+				title:title
+			})
+		},
+		// 获取顶部与中部轮播图片
+		getBanner(position){
+			bannerList({
+				position: position,
+				status : '1',
+			}).then(res=>{
+				console.log(res,"-----------")
+				if(res.status == 200){
+					if(position == 'HOME_TOP'){
+						this.imageTopList=res.data
+					}
+				}
+			}).catch(err=>{
+				console.log('数据获取失败')
+			})
+		},
+		// 获取工单看板
+		getOrderData(){
+			let _this = this
+			let orderData = {
+			  pageNo: 1,
+			  pageSize: 5,
+			  queryEndDate: moment().format('YYYY-MM-DD'),
+			  queryBeginDate: moment().subtract(7, 'days').format('YYYY-MM-DD')
+			}
+			orderQueryLike(orderData).then(res=>{
+				console.log(res,'oooooooooo')
+				if(res.status==200){
+					let data = res.data.list
+					let temp = []
+					if(data.length) {
+						data.map(item=>{
+							// 已完工 已结清
+							if(item.finishFlag == 'FINI' && item.orderFlag == 'PAED' ){
+								item.status = '已结清'
+							}
+							// 已完工 未结算
+							if (item.finishFlag == 'FINI' && item.orderFlag == 'UNPA'){
+								item.status = '待结算'
+							}
+							// 已开单 未完工 未结算
+							if (item.finishFlag == 'SAVE' && item.orderFlag == 'UNPA'){
+								item.status = '待完工'
+							}
+							// 扫码洗车 已结清 未完工 
+							if (item.finishFlag == 'SAVE' && item.orderFlag == 'PAED'){
+								item.status = '待完工'
+							}
+							// 销售单 已结清
+							if (item.typeId == 2 && item.orderFlag == 'PAED'){
+								item.status = '已结清'
+							}
+							// 销售单 待结算
+							if (item.typeId == 2 && item.orderFlag == 'UNPA'){
+								item.status = '待结算'
+							}
+							temp.push(item)
+							return
+						})
+						_this.orderData = temp.slice(0,3)
+					} else {
+						_this.orderData = []
+						_this.noOrderDataText = '暂无数据'
+					}
+				} else {
+					this.showTotast(res.message ? res.message : '网络似乎出错了,请稍后再试')
+					this.noOrderDataText = res.message ? res.message : '网络似乎出错了,请稍后再试'
+				}
+			})
+		},
+		// 根据工单状态 附class名
+		getClass(flag){
+			if (flag == '已结清'){
+				return 'yiJs'
+			}
+			if (flag == '待完工'){
+				return 'daiWg'
+			}
+			if (flag == '待结算'){
+				return 'daiJs'
+			}
+		},
 	}
 };
 </script>
 
-<style>
+<style lang="scss">
 .content {
-	display: flex;
-	flex-direction: column;
-	align-items: center;
-	justify-content: center;
-}
-.controls-yt {
-	position: absolute;
-	top: 20rpx;
-	right: 20rpx;
-	width: 80rpx;
-	height: 80rpx;
-	border-radius: 100%;
-	background: rgba(0, 0, 0, 0.6);
+	.top-ad-swiper{
+		height: 340upx;
+	}
+	.swiper-item-imgse{
+		width: 750upx;
+		height: 340upx;
+	}
+	.panel-box{
+		.panel-title{
+			display: flex;
+			align-items: center;
+			padding:20upx 15upx;
+			border-bottom: 2upx solid #eee;
+			.texts{
+				font-size: 28upx;
+				flex-grow: 1;
+				padding-left: 15upx;
+				background: url(/static/pt.png) no-repeat left center;
+				background-size: auto 80%;
+			}
+			.btns{
+				font-size: 24upx;
+				color: #999;
+			}
+		}
+		.panel-body{
+			padding: 20upx 0;
+			.nodata{
+				text-align: center;
+				font-size: 24upx;
+				width: 100%;
+				color: #999999;
+				padding: 30upx 0;
+			}
+		}
+	}
+	.order-list{
+		> div{
+			display: flex;
+			align-items: center;
+			font-size: 30upx;
+			padding: 14upx 0;
+			
+			span{
+				flex-grow: 1;
+				text-align: center;
+				color: #666;
+			}
+			span.daiJs{
+				color: #ff0000;
+			}
+			span.daiWg{
+				color: #ffaa00;
+			}
+			span.yiJs{
+				color: #5fbe00;
+			}
+		}
+	}
 }
 </style>

BIN=BIN
static/navIcon/djzx.png


BIN=BIN
static/navIcon/spxd.png


BIN=BIN
static/navIcon/xcjc.png


BIN=BIN
static/navIcon/zdjl.png


BIN=BIN
static/pt.png