From bb60c0d417b227f1144a6820d353db05c8dbf188 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=93=E5=B9=B3=E8=89=BA?= <52643018@qq.com> Date: Thu, 29 Jul 2021 18:15:28 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=8F=91=E8=B5=B7=E9=87=87?= =?UTF-8?q?=E8=B4=AD=E9=A1=B5=E9=9D=A2=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/http.interceptor.js | 5 +- common/mixin.js | 11 +-- components/wyb-table/wyb-table.vue | 31 ++++---- pages/canteen/index/index.vue | 1 + pages/canteen/login/index.vue | 22 +++++- pages/canteen/purchase/launch.vue | 112 +++++++++++++++++++++-------- pages/supply/index/index.vue | 1 + pages/supply/login/index.vue | 20 +++++- 8 files changed, 147 insertions(+), 56 deletions(-) diff --git a/common/http.interceptor.js b/common/http.interceptor.js index dbebadf..c6d5248 100644 --- a/common/http.interceptor.js +++ b/common/http.interceptor.js @@ -32,7 +32,10 @@ const install = (Vue, vm) => { Vue.prototype.$u.http.interceptor.response = res => { if(res.code == 0) { return res; - } else { + } else if (res.code == 9999) { + vm.$redirectToLogin('登录超时, 请重新登录'); + return false; + }else { vm.$msg(res.msg); return false; } diff --git a/common/mixin.js b/common/mixin.js index 74f1728..99f5dcd 100644 --- a/common/mixin.js +++ b/common/mixin.js @@ -9,8 +9,6 @@ export default{ this.pageScrollTop = res.scrollTop; }, onLoad(){ - let pages = getCurrentPages(); // 获取页面栈 - this.currentPage = pages[pages.length - 1].route; // 当前页面 let key_name = this.$getPageType() +'_token'; let user_token = uni.getStorageSync(key_name); if(!user_token){ @@ -19,10 +17,13 @@ export default{ }, methods: { $getPageType(){ + let pages = getCurrentPages(); // 获取页面栈 + let currentPage = pages[pages.length - 1].route; // 当前页面 + this.currentPage = currentPage; // 获取当前页面是属于供应端还是食堂端 - if(this.currentPage.indexOf('pages/supply') == 0){ + if(currentPage.indexOf('pages/supply') == 0){ return 'supply'; - }else if(this.currentPage.indexOf('pages/canteen') == 0){ + }else if(currentPage.indexOf('pages/canteen') == 0){ return 'canteen'; } }, @@ -125,7 +126,7 @@ export default{ 'pages/empty/index', '/preview-image' ]; - if(intercept_route.includes(this.currentPage)){ + if(intercept_route.includes(this.$getPageType())){ return; // 忽略提示跳转的路由 } let path_url = '/pages/'+ this.$getPageType() +'/login/index'; diff --git a/components/wyb-table/wyb-table.vue b/components/wyb-table/wyb-table.vue index 8361850..41438a3 100644 --- a/components/wyb-table/wyb-table.vue +++ b/components/wyb-table/wyb-table.vue @@ -205,7 +205,7 @@ bottomComputed: [], colorList: [], bgColorList: [], - contentsSort: this.toArray(), + contentsSort: this.contents.slice(), oContentsSort: [], sortWay: 0, sortKeys: [], @@ -535,7 +535,7 @@ } }, contents: { - type: [Array, Object], + type: Array, default() { return [{ name: '张三', @@ -755,18 +755,19 @@ }, methods: { // 校验数据格式,如果不是数组则转为数组 - toArray(){ - if(Array.isArray(this.contents)){ - return this.contents.slice(); - }else{ - let contents = {...this.$props.contents}; - let arr = []; - for(let i in contents){ - arr.push(contents[i]); - } - return arr; - } - }, + // toArray(val){ + // if(Array.isArray(val)){ + // console.log("ssssss=======") + // return val.slice(); + // }else{ + // let contents = {...val}; + // let arr = []; + // for(let i in contents){ + // arr.push(contents[i]); + // } + // return arr; + // } + // }, inputBlur(cIndex, hIndex, event){ let event_obj = {}; let value = event.detail.value; @@ -911,7 +912,7 @@ } } - if (content[header.key]) { + if (content && content[header.key]) { if (keys.includes(header.key)) { // 该单元格为链接 switch(this.urlCol[keys.indexOf(header.key)].type) { diff --git a/pages/canteen/index/index.vue b/pages/canteen/index/index.vue index 9d3d767..a667100 100644 --- a/pages/canteen/index/index.vue +++ b/pages/canteen/index/index.vue @@ -34,6 +34,7 @@ } }, onLoad(){ + // todo 优化:显示订单角标 this.getHomeData(); }, onReady(){ diff --git a/pages/canteen/login/index.vue b/pages/canteen/login/index.vue index 4dfcb1b..ab10e32 100644 --- a/pages/canteen/login/index.vue +++ b/pages/canteen/login/index.vue @@ -8,13 +8,29 @@ 登录账号 - + 登录密码 - + @@ -37,7 +53,7 @@ } }, onLoad(options){ - + // todo 优化:input输入后有clear按钮 }, onReady(){ // #ifndef MP diff --git a/pages/canteen/purchase/launch.vue b/pages/canteen/purchase/launch.vue index 0e1d278..261432e 100644 --- a/pages/canteen/purchase/launch.vue +++ b/pages/canteen/purchase/launch.vue @@ -32,12 +32,18 @@ 物资明细 - + {{ value.supplier_name }} 删除 - + @@ -59,22 +65,20 @@ data(){ return { date: this.$shared.recordTime(new Date(), '-', 'date'), // 选择时间 - material_list: {}, // 供应商,物资列表 - show_material: false, - render_material_list: [] + material_list: {}, // 供应商,物资列表,不被渲染,在底层逻辑运作 + show_material: false, // 是否显示采购清单按钮 + render_material_list: {} // 渲染出来的物资列表 } }, onLoad(){ - // todo 验证table有没有问题,因为它是从对象转为数组的 - // todo 选择供应商但未选择物资,点进去选择物资,选完回到当前页面,table没有显示 - // 监听MaterialList被操作 uni.$on('addMaterialList', res => { this.material_list = res; }) }, onShow(){ - let material_list = this.material_list; + let material_list = JSON.stringify(this.material_list); + material_list = JSON.parse(material_list); for(let i in material_list){ // table 标题处理 material_list[i].headers = [{ @@ -84,28 +88,60 @@ key: 'spec_name', label: '规格' },{ - key: 'purchase_number', - label: '采购数量' + key: 'unit', + label: '单位' + },{ + key: 'brand', + label: '品牌' },{ key: 'tax_price', - label: '税前价' + label: '含税价' },{ key: 'non_tax_price', - label: '税后价' + label: '不含税价' + },{ + key: 'purchase_number', + label: '数量' + },{ + key: 'operation', + label: '操作' }]; // table 内容处理 + let list_arr = []; for(let j in material_list[i].material_list){ material_list[i].material_list[j].purchase_number = {edit: true, value: ''}; + material_list[i].material_list[j].operation = {button: true, key: 'delete', value: '删除'}; + list_arr.push(material_list[i].material_list[j]); } + material_list[i].material_list = list_arr; } - this.material_list = material_list; + this.render_material_list = material_list; this.show_material = Object.keys(this.material_list).length > 0; + console.log("show..material_list", this.material_list); + console.log("show...render_material_list", this.render_material_list) }, methods: { - // table-input值被改变 todo + // table-input值被改变 onInputChange(event){ console.log("检测到table input被更改", event); - // this.contents[event.contentIndex][event.key].value = event.detailValue; + let supplier_id = event.lineData.supplier_id; // 取出第一层,供应商id + let material_index = event.contentIndex; // 取出第二层,物资下标 + let detailValue = event.detailValue; // 取出table input被输入的值 + let supplier_item = this.render_material_list[supplier_id]; // 取出所在供应商 + let material_item = supplier_item.material_list[material_index]; // 取出物资 + material_item.purchase_number.value = detailValue; // 将输入的值赋值给物资 + console.log("render_material_list_change", this.render_material_list); + }, + // table 操作按钮被点击 + onButtonClick(event){ + console.log("event", event); + if(event.content.key == 'delete'){ + let supplier_id = event.lineData.supplier_id; // 取出第一层,供应商id + let material_id = event.lineData.material_id; // 取出第二层,物资id + let material_index = event.lineData.contentIndex; // 取出第二层,物资下标 + this.render_material_list[supplier_id].material_list.splice(material_index, 1); + delete this.material_list[supplier_id].material_list[material_id]; + } }, // 时间选择 pickerChange(event){ @@ -113,29 +149,45 @@ }, // 移除供应商 removeSupplier(key){ - let material_list = {...this.material_list}; - delete material_list[key]; - this.material_list = material_list; + // 移除render_material_list + let render_material_list = {...this.render_material_list}; + delete render_material_list[key]; + this.render_material_list = render_material_list; + // 移除material_list + delete this.material_list[key]; + // 校验还有没有供应商,没有则不能显示选择物资按钮 + this.show_material = Object.keys(this.material_list).length > 0; }, // 保存并发单 save(_t){ - let material_list = this.material_list; + let material_list = this.render_material_list; let list = []; let is_empty = true; // 物资数据是否为空 for(let i in material_list){ if(Object.keys(material_list[i].material_list).length){ is_empty = false; let material = material_list[i].material_list; - let arr = []; - for(let j in material){ - arr.push({ - m_id: material[j].material_id, - m_spec_id: material[j].spec_id, - tax_price: material[j].tax_price, - non_tax_price: material[j].non_tax_price, - purchase_number: material[j].purchase_number.value || 0 - }); - } + // 数组写法 + let arr = material.map(item => { + return { + m_id: item.material_id, + m_spec_id: item.spec_id, + tax_price: item.tax_price, + non_tax_price: item.non_tax_price, + purchase_number: item.purchase_number.value || 0 + } + }); + // 对象写法: + // let arr = []; + // for(let j in material){ + // arr.push({ + // m_id: material[j].material_id, + // m_spec_id: material[j].spec_id, + // tax_price: material[j].tax_price, + // non_tax_price: material[j].non_tax_price, + // purchase_number: material[j].purchase_number.value || 0 + // }); + // } list.push({ supplier_id: material_list[i].id, material: arr diff --git a/pages/supply/index/index.vue b/pages/supply/index/index.vue index 193ee33..9648d56 100644 --- a/pages/supply/index/index.vue +++ b/pages/supply/index/index.vue @@ -33,6 +33,7 @@ } }, onLoad(){ + // todo 优化:显示订单角标 this.getData(); }, onReady(){ diff --git a/pages/supply/login/index.vue b/pages/supply/login/index.vue index 862c657..7014fe0 100644 --- a/pages/supply/login/index.vue +++ b/pages/supply/login/index.vue @@ -8,13 +8,29 @@ 登录账号 - + 登录密码 - +