From b823a11d74b6623fadcfab27150cdbb0ad9766f5 Mon Sep 17 00:00:00 2001 From: yangfeng <wanwan926_4@163.com> Date: 星期五, 15 九月 2023 17:50:07 +0800 Subject: [PATCH] 调拨列表页面、报废列表、新建页面开发 --- src/views/operate/allot/index.vue | 250 +++++++++++++ src/views/operate/scrap/AddScrapDialog.vue | 265 +++++++++++++ src/views/overview/AddOverviewDialog.vue | 275 +++++++++++-- src/views/overview/OverviewListView.vue | 10 src/views/productManage/product/index.vue | 6 src/views/operate/scrap/index.vue | 177 +++++++++ src/views/overview/index.vue | 29 src/router/operate/index.js | 19 src/components/layout/components/appsidebar/index.vue | 4 src/components/makepager/FormBtnsView.vue | 29 + src/views/productManage/product/AddProductDialog.vue | 22 11 files changed, 994 insertions(+), 92 deletions(-) diff --git a/src/components/layout/components/appsidebar/index.vue b/src/components/layout/components/appsidebar/index.vue index f662cb6..7c6cca3 100644 --- a/src/components/layout/components/appsidebar/index.vue +++ b/src/components/layout/components/appsidebar/index.vue @@ -38,8 +38,8 @@ </template> <!-- <el-menu-item index="/productManage/product">琛ヨ揣</el-menu-item> <el-menu-item index="/productManage/product">搴撳瓨璋冩暣</el-menu-item> --> - <el-menu-item index="/productManage/product">璋冩嫧</el-menu-item> - <el-menu-item index="/productManage/product">鎶ュ簾</el-menu-item> + <el-menu-item index="/operate/allot">璋冩嫧</el-menu-item> + <el-menu-item index="/operate/scrap">鎶ュ簾</el-menu-item> </el-submenu> <el-submenu index="4"> <template slot="title"> diff --git a/src/components/makepager/FormBtnsView.vue b/src/components/makepager/FormBtnsView.vue index 982a477..c312e36 100644 --- a/src/components/makepager/FormBtnsView.vue +++ b/src/components/makepager/FormBtnsView.vue @@ -1,20 +1,20 @@ <template> <div class="content-number"> - <div v-if="!showProduct && !showWarehouse && !showPosition" class="sub-number"> + <!-- <div v-if="!showProduct && !showWarehouse && !showPosition" class="sub-number"> <div class="left"><i class="el-icon-s-fold"></i></div> <div class="right"> <div class="right-label">{{ 0 }}</div> <div class="right-label">棰濆鐨勪环鏍�</div> </div> - </div> - <div v-if="!showProduct && !showWarehouse && !showPosition" class="sub-number"> + </div> --> + <div v-if="!showProduct && !showWarehouse && !showPosition && !addProduct" class="sub-number left_border"> <div class="left"><i class="el-icon-present"></i></div> <div class="right"> <div class="right-label">{{ "0.00" + "浠�" }}</div> - <div class="right-label">鍦ㄦ墜</div> + <div class="right-label">鍦ㄥ簱</div> </div> </div> - <div v-if="!showProduct && !showWarehouse && !showPosition" class="sub-number"> + <div v-if="!showProduct && !showWarehouse && !showPosition && !addProduct" class="sub-number"> <div class="left"><i class="el-icon-present"></i></div> <div class="right"> <div class="right-label">{{ "0.00" + "浠�" }}</div> @@ -26,6 +26,7 @@ class="sub-number" @click="inOutBoundClick" style="cursor: pointer" + :class="{ left_border: addProduct }" > <div class="left icon-view"><i class="el-icon-sort"></i></div> <div class="right"> @@ -40,7 +41,7 @@ <div class="right-label">閲嶈璐ц鍒�</div> </div> </div> - <div v-if="showProduct" class="sub-number right-border" @click="productClick" style="cursor: pointer"> + <div v-if="showProduct" class="sub-number left_border" @click="productClick" style="cursor: pointer"> <div class="left"><i class="el-icon-s-fold"></i></div> <div class="right"> <div class="right-label">{{ 0 }}</div> @@ -53,14 +54,14 @@ <div class="right-one">涓婃灦瑙勫垯</div> </div> </div> - <div v-if="!showProduct && !showWarehouse && !showPosition" class="sub-number"> + <!-- <div v-if="!showProduct && !showWarehouse && !showPosition" class="sub-number"> <div class="left"><i class="el-icon-s-data"></i></div> <div class="right"> <div class="right-label">{{ "0.00" + "浠�" }}</div> <div class="right-label">宸插敭</div> </div> - </div> - <div v-if="!showProduct && !showWarehouse && !showPosition" class="sub-number"> + </div> --> + <div v-if="!showProduct && !showWarehouse && !showPosition && showProcure" class="sub-number"> <div class="left"><i class="el-icon-bank-card"></i></div> <div class="right"> <div class="right-label">{{ "0.00" + "浠�" }}</div> @@ -96,6 +97,14 @@ showPosition: { type: Boolean, default: false + }, + addProduct: { + type: Boolean, + default: false + }, + showProcure: { + type: Boolean, + default: true } }, data() { @@ -146,7 +155,7 @@ } } } - .right-border { + .left_border { border-left: 1px solid #e9e9e9; } } diff --git a/src/router/operate/index.js b/src/router/operate/index.js index b328478..855d0d0 100644 --- a/src/router/operate/index.js +++ b/src/router/operate/index.js @@ -1,14 +1,23 @@ // const type from '@/router/deployCode' -const product = (resolve) => require(["@/views/productManage/product/index"], resolve) // 浜у搧绠$悊 +const allot = (resolve) => require(["@/views/operate/allot/index"], resolve) // 璋冩嫧 +const scrap = (resolve) => require(["@/views/operate/scrap/index"], resolve) // 鎶ュ簾 const appconfig = [ { - path: "/productManage/product", - name: "product", - component: product, + path: "/operate/allot", + name: "allot", + component: allot, meta: { - title: "浜у搧绠$悊" + title: "璋冩嫧" + } + }, + { + path: "/operate/scrap", + name: "scrap", + component: scrap, + meta: { + title: "鎶ュ簾鍗�" } } ] diff --git a/src/views/operate/allot/index.vue b/src/views/operate/allot/index.vue new file mode 100644 index 0000000..042e54b --- /dev/null +++ b/src/views/operate/allot/index.vue @@ -0,0 +1,250 @@ +<template> + <div class="rightContent"> + <div class="top"> + <SearchCommonView + :add-title="'鏂板缓'" + :placeholder="'璇疯緭鍏ュ崟鍙�'" + :amount-view="false" + @addCommonClick="addBtnClick" + @searchClick="getList" + /> + </div> + <div class="list-view"> + <div class="table"> + <TableCommonView + ref="tableListRef" + :table-list="tableList" + @selTableCol="selTableCol" + @tableRowClick="tableRowClick" + ></TableCommonView> + </div> + <div class="btn-pager"> + <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" /> + </div> + </div> + <!-- 鏂板缓/缂栬緫 --> + <AddOverviewDialog v-if="editConfig.visible" :work-type="'鍐呴儴璋冩嫧'" :edit-common-config="editConfig" /> + </div> +</template> + +<script> +import pageMixin from "@/components/makepager/pager/mixin/pageMixin" +import { getProductList } from "@/api/product/product" +// import DetailProduct from "@/views/productManage/product/DetailProduct" +import AddOverviewDialog from "@/views/overview/AddOverviewDialog" + +export default { + name: "AllotView", + props: {}, + components: { AddOverviewDialog }, + mixins: [pageMixin], + computed: {}, + data() { + return { + tableList: {}, + showcol: ["浠�", "鑷�", "鑱旂郴浜�", "鏃ユ湡", "鏉ユ簮鍗曟嵁", "鍏徃", "鐘舵��"], + searchOptions: [], + commonDetail: { + visible: false, + title: "鏂板缓", + infomation: {} + }, + editConfig: { + visible: false, + title: "鏂板缓", + infomation: {} + } + } + }, + created() { + this.setTable() + this.getData() + }, + methods: { + setTable() { + this.tableList = { + tableInfomation: [], + selectBox: true, + showcol: this.showcol, + allcol: [], + tableColumn: this.setTableColumn(this.showcol) + } + let allcol = [] + for (let i = 0; i < this.tableList.tableColumn.length; i++) { + if (!this.tableList.tableColumn[i].default) { + const label = this.tableList.tableColumn[i].label + allcol.push(label) + } + } + this.tableList.allcol = allcol + }, + setTableColumn(showcol) { + let tableColumn = [ + { + label: "鍗曞彿", + prop: "id", + isShowColumn: true, + default: true + }, + { + label: "浠�", + prop: "deviceName", + isShowColumn: showcol.includes("浠�"), + default: false + }, + { + label: "鑷�", + prop: "id", + isShowColumn: showcol.includes("鑷�"), + default: false + }, + { + label: "鑱旂郴浜�", + prop: "deviceId", + isShowColumn: showcol.includes("鑱旂郴浜�"), + default: false + }, + { + label: "璐熻矗浜�", + prop: "shopName", + isShowColumn: showcol.includes("璐熻矗浜�"), + default: false + }, + { + label: "鏃ユ湡", + prop: "preTime", + isShowColumn: showcol.includes("鏃ユ湡"), + default: false, + date: true + }, + { + label: "浜у搧鍙敤鎬�", + prop: "status", + isShowColumn: showcol.includes("浜у搧鍙敤鎬�"), + width: 100, + default: false + }, + { + label: "鎴鏃ユ湡", + prop: "faultTime", + isShowColumn: showcol.includes("鎴鏃ユ湡"), + default: false + }, + { + label: "瀹為檯鏃ユ湡", + prop: "shopName", + isShowColumn: showcol.includes("瀹為檯鏃ユ湡"), + default: false + }, + { + label: "鏉ユ簮鍗曟嵁", + prop: "faultLevel", + isShowColumn: showcol.includes("鏉ユ簮鍗曟嵁"), + default: false + }, + { + label: "娆犲崟", + prop: "status", + isShowColumn: showcol.includes("娆犲崟"), + default: false + }, + { + label: "杩借釜鍙傝��", + prop: "status", + isShowColumn: showcol.includes("杩借釜鍙傝��"), + default: false + }, + { + label: "鎵胯繍鍟�", + prop: "status", + isShowColumn: showcol.includes("鎵胯繍鍟�"), + default: false + }, + { + label: "鐩殑鍦�", + prop: "status", + isShowColumn: showcol.includes("鐩殑鍦�"), + default: false + }, + { + label: "閲嶉噺", + prop: "status", + isShowColumn: showcol.includes("閲嶉噺"), + default: false + }, + { + label: "鐗╂祦閲嶉噺", + prop: "status", + isShowColumn: showcol.includes("鐗╂祦閲嶉噺"), + default: false + }, + { + label: "鎿嶄綔绫诲瀷", + prop: "faultTime", + isShowColumn: showcol.includes("鎿嶄綔绫诲瀷"), + default: false + }, + { + label: "鍏徃", + prop: "faultTime", + isShowColumn: showcol.includes("鍏徃"), + default: false + }, + { + label: "鐘舵��", + prop: "status", + width: 120, + isShowColumn: showcol.includes("鐘舵��"), + default: false, + status: true + } + ] + return tableColumn + }, + selTableCol(val) { + this.showcol = val + this.tableList.tableColumn = this.setTableColumn(val) + }, + // 璇锋眰鏁版嵁 + async getData(val, content) { + await getProductList({ + [val]: content, + page: this.pagerOptions.currPage, + pageSize: this.pagerOptions.pageSize + }).then((res) => { + if (res.data.code === 200) { + const list = res.data.data.list.map((item) => { + return { + ...item, + supplierNumber: item.supplier.number, + status: "灏辩华", + preTime: "2023-09-04 11:20:00" + } + }) + this.tableList.tableInfomation = list || [] + this.pagerOptions.totalCount = res.data.data.total + } + }) + }, + // 鎼滅储 + getList(val) { + console.log(val) + }, + // 琛岀偣鍑� + tableRowClick(row) { + console.log(row) + this.editConfig.visible = true + this.editConfig.title = "缂栬緫" + this.editConfig.infomation = { ...row } + }, + // 鏂板缓 + addBtnClick() { + this.editConfig.visible = true + this.editConfig.title = "鏂板缓" + } + } +} +</script> + +<!-- Add "scoped" attribute to limit CSS to this component only --> +<style lang="scss" scoped></style> diff --git a/src/views/operate/scrap/AddScrapDialog.vue b/src/views/operate/scrap/AddScrapDialog.vue new file mode 100644 index 0000000..ceff99b --- /dev/null +++ b/src/views/operate/scrap/AddScrapDialog.vue @@ -0,0 +1,265 @@ +<template> + <div class="add-common"> + <el-dialog + :title="editCommonConfig.title + '鎶ュ簾鍗�'" + :visible.sync="editConfig.visible" + :width="dialogWidth" + :before-close="handleClose" + > + <!-- 澶� --> + <div slot="title" class="dialog-header"> + <span>{{ editCommonConfig.title + "鎶ュ簾鍗�" }}</span> + <div class="header_btns"> + <span class="btn"> + <i class="el-icon-printer"></i> + <span>鎵撳嵃</span> + </span> + <span class="btn" style="margin-left: 15px"> + <i class="el-icon-s-tools"></i> + <span>鍔ㄤ綔</span> + </span> + <el-button v-if="showEdit" plain size="mini" style="margin-left: 15px" @click="editClick">缂栬緫</el-button> + </div> + </div> + <!-- 鍐呭 --> + <el-form + ref="form" + :model="editConfig.infomation" + :rules="rules" + label-position="right" + label-width="120px" + size="mini" + style="height: 60vh; overflow-x: hidden" + > + <div> + <!-- <div>aaa</div> --> + <StatusCommonView :list="list" /> + </div> + <div class="basic-info"> + <div class="basic-info-view"> + <el-row> + <el-col :span="12"> + <el-form-item label="浜у搧" prop="client_name"> + <el-select + v-model="editConfig.infomation.memberId" + placeholder="璇烽�夋嫨" + size="mini" + style="width: 90%" + :disabled="!showFooter" + > + <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :value="item.id"> + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="婧愪綅缃�" prop="client_name"> + <el-select + v-model="editConfig.infomation.memberId" + placeholder="璇烽�夋嫨" + size="mini" + style="width: 90%" + :disabled="!showFooter" + > + <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :value="item.id"> + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鏁伴噺" prop="client_name"> + <el-input-number + v-model="editConfig.infomation.number" + placeholder="" + :min="0" + :precision="2" + :controls="false" + style="width: 90%" + :disabled="!showFooter" + ></el-input-number> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鎶ュ簾浣嶇疆" prop="client_name"> + <el-select + v-model="editConfig.infomation.memberId" + placeholder="璇烽�夋嫨" + size="mini" + style="width: 90%" + :disabled="!showFooter" + > + <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :value="item.id"> + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鏉ユ簮鍗曟嵁" prop="memberId"> + <el-input + v-model="editConfig.infomation.memberId" + placeholder="渚嬪:PO0032" + style="width: 90%" + :disabled="!showFooter" + ></el-input> + </el-form-item> + </el-col> + </el-row> + </div> + </div> + </el-form> + <!-- 灏� --> + <div v-if="showFooter" slot="footer" class="dialog-footer"> + <el-button size="small" @click="editConfig.visible = false">鍙栨秷</el-button> + <el-button type="primary" size="small" @click="saveClick('form')">淇濆瓨</el-button> + </div> + </el-dialog> + </div> +</template> + +<script> +export default { + name: "AddScrapDialog", + props: { + editCommonConfig: { + type: Object, + default: () => { + return { + visible: false, + title: "鏂板缓", + infomation: {} + } + } + } + }, + components: {}, + computed: {}, + data() { + return { + dialogWidth: "50%", + editConfig: this.editCommonConfig, + rules: { + client_name: [{ required: true, message: "璇烽�夋嫨瀹㈡埛鍚嶇О", trigger: "change" }], + number: [{ required: true, message: "璇疯緭鍏ラ��娆惧崟缂栧彿", trigger: "blur" }], + refundDate: [{ required: true, message: "璇烽�夋嫨閫�娆炬棩鏈�", trigger: "change" }], + memberId: [{ required: true, message: "璇烽�夋嫨閿�鍞礋璐d汉", trigger: "change" }], + sale_return_nunber: [{ required: true, message: "璇烽�夋嫨閿�鍞��璐у崟", trigger: "change" }] + }, + memberOptions: [], + paymentTypeListOptions: [], + list: [ + { label: "鑽夌", status: "todo" }, + { label: "瀹屾垚", status: "todo" } + ], + showEdit: false, // 鏄惁鏄剧ず缂栬緫鎸夐挳 + showFooter: false, // 鏄惁鏄剧ず鍙栨秷淇濆瓨 + currentState: "todo" // 褰撳墠鐘舵�� + } + }, + created() { + this.setBottonView() + }, + methods: { + // 璁剧疆鍒犻櫎/鎵撳嵃/缂栬緫鏄惁鏄剧ず + setBottonView() { + if (this.editConfig.title === "鏂板缓") { + this.showEdit = false + this.showFooter = true + } else if (this.editConfig.infomation.status === "瀹屾垚") { + this.showEdit = false + this.showFooter = false + } else { + this.showEdit = true + this.showFooter = false + } + if (this.editConfig.title === "鏂板缓") { + this.list[0].status = "active" + } else { + this.list.map((item) => { + if (item.label === this.editConfig.infomation.status) { + item.status = "active" + } else { + item.status = "todo" + } + }) + } + }, + // 鍏抽棴 + handleClose() { + this.editConfig.visible = false + }, + // 缂栬緫 + editClick() { + this.showEdit = false + this.showFooter = true + }, + // 淇濆瓨 + saveClick() {} + } +} +</script> + +<!-- Add "scoped" attribute to limit CSS to this component only --> +<style lang="scss" scoped> +.dialog-header { + display: flex; + align-items: center; + font-size: 14px; + color: #333; + .header_btns { + margin-left: auto; + margin-right: 60px; + .btn { + cursor: no-drop; + } + } +} +.content-status { + display: flex; +} +.basic-info { + height: calc(100% - 80px); + overflow: auto; + margin: 20px; + border: 1px solid #dcdfe6; + box-shadow: inset 0 0 2px #dee2e6; + -moz-box-shadow: inset 0 0 2px #dee2e6; + -webkit-box-shadow: inset 0 0 2px #dee2e6; + .basic-info-view { + margin-top: 20px; + } +} +.purchase-view { + display: flex; + .left { + width: 50%; + } + .right { + width: 50%; + } +} +.second-label { + margin-left: 20px; + border-bottom: 1px solid #d9d9d9; + margin-bottom: 10px; +} +::v-deep { + .el-dialog__headerbtn { + position: absolute; + top: 18px; + } + .el-button { + &:hover { + border: 1px solid #dcdfe6; + color: #333; + } + } + .el-tabs--card > .el-tabs__header .el-tabs__nav { + margin-left: 20px; + } + .el-tabs__item { + height: 30px; + line-height: 30px; + font-size: 13px; + } +} +</style> diff --git a/src/views/operate/scrap/index.vue b/src/views/operate/scrap/index.vue new file mode 100644 index 0000000..87c6af0 --- /dev/null +++ b/src/views/operate/scrap/index.vue @@ -0,0 +1,177 @@ +<template> + <div class="rightContent"> + <div class="top"> + <SearchCommonView + :add-title="'鏂板缓'" + :placeholder="'璇疯緭鍏ュ崟鍙�'" + :amount-view="false" + @addCommonClick="addBtnClick" + @searchClick="getList" + /> + </div> + <div class="list-view"> + <div class="table"> + <TableCommonView + ref="tableListRef" + :table-list="tableList" + :show-checkcol="false" + @tableRowClick="tableRowClick" + ></TableCommonView> + </div> + <div class="btn-pager"> + <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" /> + </div> + </div> + <!-- 鏂板缓/缂栬緫 --> + <AddScrapDialog v-if="editConfig.visible" :edit-common-config="editConfig" /> + </div> +</template> + +<script> +import pageMixin from "@/components/makepager/pager/mixin/pageMixin" +import { getProductList } from "@/api/product/product" +// import DetailProduct from "@/views/productManage/product/DetailProduct" +import AddScrapDialog from "@/views/operate/scrap/AddScrapDialog" + +export default { + name: "ScrapView", + props: {}, + components: { AddScrapDialog }, + mixins: [pageMixin], + computed: {}, + data() { + return { + tableList: {}, + searchOptions: [], + editConfig: { + visible: false, + title: "鏂板缓", + infomation: {} + } + } + }, + created() { + this.setTable() + this.getData() + }, + methods: { + setTable() { + this.tableList = { + tableInfomation: [], + selectBox: true, + showcol: this.showcol, + allcol: [], + tableColumn: this.setTableColumn(this.showcol) + } + let allcol = [] + for (let i = 0; i < this.tableList.tableColumn.length; i++) { + if (!this.tableList.tableColumn[i].default) { + const label = this.tableList.tableColumn[i].label + allcol.push(label) + } + } + this.tableList.allcol = allcol + }, + setTableColumn(showcol) { + console.log(showcol) + let tableColumn = [ + { + label: "鍗曞彿", + prop: "id", + isShowColumn: true, + default: true + }, + { + label: "鏃ユ湡", + prop: "deviceName", + isShowColumn: true, + default: true + }, + { + label: "浜у搧", + prop: "id", + isShowColumn: true, + default: true + }, + { + label: "鏁伴噺", + prop: "deviceId", + isShowColumn: true, + default: false + }, + { + label: "璁¢噺鍗曚綅", + prop: "shopName", + isShowColumn: true, + default: false + }, + { + label: "婧愪綅缃�", + prop: "preTime", + isShowColumn: true, + default: false + }, + { + label: "鎶ュ簾浣嶇疆", + prop: "status", + isShowColumn: true, + default: false + }, + { + label: "鐘舵��", + prop: "status", + width: 120, + isShowColumn: true, + default: true, + status: true + } + ] + return tableColumn + }, + selTableCol(val) { + this.showcol = val + this.tableList.tableColumn = this.setTableColumn(val) + }, + // 璇锋眰鏁版嵁 + async getData(val, content) { + await getProductList({ + [val]: content, + page: this.pagerOptions.currPage, + pageSize: this.pagerOptions.pageSize + }).then((res) => { + if (res.data.code === 200) { + const list = res.data.data.list.map((item) => { + return { + ...item, + supplierNumber: item.supplier.number, + status: "鑽夌", + preTime: "2023-09-04 11:20:00" + } + }) + this.tableList.tableInfomation = list || [] + this.pagerOptions.totalCount = res.data.data.total + } + }) + }, + // 鎼滅储 + getList(val) { + console.log(val) + }, + // 琛岀偣鍑� + tableRowClick(row) { + console.log(row) + this.editConfig.visible = true + this.editConfig.title = "缂栬緫" + this.editConfig.infomation = { ...row } + }, + // 鏂板缓 + addBtnClick() { + this.editConfig.visible = true + this.editConfig.title = "鏂板缓" + } + } +} +</script> + +<!-- Add "scoped" attribute to limit CSS to this component only --> +<style lang="scss" scoped></style> diff --git a/src/views/overview/AddOverviewDialog.vue b/src/views/overview/AddOverviewDialog.vue index 7a35712..abf3d6d 100644 --- a/src/views/overview/AddOverviewDialog.vue +++ b/src/views/overview/AddOverviewDialog.vue @@ -8,7 +8,7 @@ > <!-- 澶� --> <div slot="title" class="dialog-header"> - <span>{{ editCommonConfig.title + "閲囪喘鍏ュ簱" }}</span> + <span>{{ editCommonConfig.title + addName }}</span> <div class="header_btns"> <span class="btn"> <i class="el-icon-printer"></i> @@ -39,7 +39,7 @@ <div class="basic-info-view"> <el-row> <el-col :span="12"> - <el-form-item label="鎺ユ敹" prop="client_name"> + <el-form-item v-if="workType === '鏀惰揣'" label="瀹㈡埛" prop="client_name"> <el-select v-model="editConfig.infomation.memberId" placeholder="璇烽�夋嫨" @@ -53,7 +53,35 @@ </el-form-item> </el-col> <el-col :span="12"> - <el-form-item label="瀹夋帓鐨勬棩鏈�" prop="refundDate"> + <el-form-item v-if="workType === '鍐呴儴璋冩嫧'" label="鑱旂郴浜�" prop="client_name"> + <el-select + v-model="editConfig.infomation.memberId" + placeholder="璇烽�夋嫨" + size="mini" + style="width: 63%" + :disabled="!showFooter" + > + <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :value="item.id"> + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item v-if="workType === '鍙戣揣'" label="閫佽揣鍦板潃" prop="client_name"> + <el-select + v-model="editConfig.infomation.memberId" + placeholder="璇烽�夋嫨" + size="mini" + style="width: 63%" + :disabled="!showFooter" + > + <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :value="item.id"> + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鏃ユ湡" prop="refundDate"> <el-date-picker v-model="editConfig.infomation.refundDate" value-format="yyyy-MM-dd" @@ -66,7 +94,7 @@ </el-form-item> </el-col> <el-col :span="12"> - <el-form-item label="浣滀笟绫诲瀷" prop="client_name"> + <el-form-item label="鍏ュ簱绫诲瀷" prop="client_name"> <el-select v-model="editConfig.infomation.memberId" placeholder="璇烽�夋嫨" @@ -80,7 +108,7 @@ </el-form-item> </el-col> <el-col :span="12"> - <el-form-item label="婧愬崟鎹�" prop="memberId"> + <el-form-item label="鏉ユ簮鍗曟嵁" prop="memberId"> <el-input v-model="editConfig.infomation.memberId" placeholder="渚嬪:PO0032" @@ -90,7 +118,21 @@ </el-form-item> </el-col> <el-col :span="12"> - <el-form-item label="鐩殑浣嶇疆" prop="client_name"> + <el-form-item v-if="workType !== '鏀惰揣'" label="婧愪綅缃�" prop="client_name"> + <el-select + v-model="editConfig.infomation.memberId" + placeholder="璇烽�夋嫨" + size="mini" + style="width: 63%" + :disabled="!showFooter" + > + <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :value="item.id"> + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item v-if="workType !== '鍙戣揣'" label="浠撳簱浣嶇疆" prop="client_name"> <el-select v-model="editConfig.infomation.memberId" placeholder="璇烽�夋嫨" @@ -107,22 +149,39 @@ </div> <div class="bottom"> <el-tabs v-model="activeName" type="card"> + <el-tab-pane v-if="workType !== '鏀惰揣'" label="璇︽儏" name="detail"> </el-tab-pane> <el-tab-pane label="鎿嶄綔" name="first"> </el-tab-pane> <el-tab-pane label="鍏朵粬淇℃伅" name="second"> - <el-col :span="12"> - <el-form-item label="璐熻矗浜�" prop="client_name"> - <el-select - v-model="editConfig.infomation.memberId" - placeholder="璇烽�夋嫨" - size="mini" - style="width: 63%" - :disabled="!showFooter" - > - <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :value="item.id"> - </el-option> - </el-select> - </el-form-item> - </el-col> + <div class="purchase-view"> + <div class="left"> + <div class="second-label">鍏朵粬淇℃伅</div> + <el-form-item v-if="workType !== '鏀惰揣'" label="閫佽揣绛栫暐" prop="client_name"> + <el-select + v-model="editConfig.infomation.memberId" + placeholder="璇烽�夋嫨" + size="mini" + style="width: 63%" + :disabled="!showFooter" + > + <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :value="item.id"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="璐熻矗浜�" prop="client_name"> + <el-select + v-model="editConfig.infomation.memberId" + placeholder="璇烽�夋嫨" + size="mini" + style="width: 63%" + :disabled="!showFooter" + > + <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :value="item.id"> + </el-option> + </el-select> + </el-form-item> + </div> + <div class="right"></div> + </div> </el-tab-pane> <el-tab-pane label="澶囨敞" name="third"> <el-form-item label="澶囨敞" prop="desc"> @@ -137,17 +196,37 @@ </el-form-item> </el-tab-pane> </el-tabs> + <!-- 鎿嶄綔 --> <div v-if="activeName === 'first'"> <CommonFormTableView :product-table-list="productTableList" :detail-enter="!showFooter" @inputContent="inputContent" - @addProductClick="addProductClick" + @addProductClick="addProductClick('鎿嶄綔')" > <template v-if="showFooter" slot="tableButton"> <el-table-column label="鎿嶄綔" width="60" fixed="right" align="center"> <template slot-scope="scope"> - <div @click="handleDelClick(scope)"> + <div @click="handleDelClick(scope, '鎿嶄綔')"> + <i class="el-icon-delete"></i> + </div> + </template> + </el-table-column> + </template> + </CommonFormTableView> + </div> + <!-- 璇︽儏 --> + <div v-if="activeName === 'detail'"> + <CommonFormTableView + :product-table-list="detailTableList" + :detail-enter="!showFooter" + @inputContent="inputDetail" + @addProductClick="addProductClick('璇︽儏')" + > + <template v-if="showFooter" slot="tableButton"> + <el-table-column label="鎿嶄綔" width="60" fixed="right" align="center"> + <template slot-scope="scope"> + <div @click="handleDelClick(scope, '璇︽儏')"> <i class="el-icon-delete"></i> </div> </template> @@ -182,6 +261,14 @@ infomation: {} } } + }, + workType: { + type: String, + default: "鏀惰揣" + }, + addName: { + type: String, + default: "璋冩嫧" } }, components: { CommonFormTableView }, @@ -209,16 +296,24 @@ activeName: "first", productTableList: {}, tableData: [{ name: "ssss" }], + productId: 0, isNoProduct: false, // 娣诲姞鏄庣粏琛屾椂鏄惁鏈変骇鍝佹湭閫夋嫨 showEdit: false, // 鏄惁鏄剧ず缂栬緫鎸夐挳 isDelClick: false, // 鍒犻櫎鎸夐挳鏄惁鍙偣鍑� showFooter: false, // 鏄惁鏄剧ず鍙栨秷淇濆瓨 - currentState: "todo" // 褰撳墠鐘舵�� + currentState: "todo", // 褰撳墠鐘舵�� + detailTableList: {}, + detailTableData: [{ name: "ssss" }], + detailId: 0, + isNoDetail: false, // 娣诲姞璇︽儏鏄庣粏琛屾椂鏄惁鏈�夋嫨 + tableColumn: [] } }, created() { this.setTableForm() this.setBottonView() + this.setDetailTableForm() + this.activeName = this.workType === "鏀惰揣" ? "first" : "detail" }, methods: { // 璁剧疆鍒犻櫎/鎵撳嵃/缂栬緫鏄惁鏄剧ず @@ -268,6 +363,7 @@ saveClick() {}, // 鍒犻櫎 delClick() {}, + // 鎿嶄綔鍒楄〃 setTableForm() { this.productTableList = { tableData: this.tableData, @@ -281,7 +377,7 @@ ] } }, - // 浜у搧鍒楄〃杈撳叆 + // 鎿嶄綔杈撳叆 inputContent(val, prop, row) { this.productId = row.productId this.tableData.map((item) => { @@ -290,35 +386,99 @@ } }) }, - // 浜у搧鏂板 - addProductClick() { - console.log(this.tableData) - for (let i = 0; i < this.tableData.length; i++) { - if (this.tableData[i].name.length === 0) { - this.isNoProduct = true - break - } else { - this.isNoProduct = false + // 鏂板 + addProductClick(value) { + if (value === "鎿嶄綔") { + console.log(this.tableData) + for (let i = 0; i < this.tableData.length; i++) { + if (this.tableData[i].name.length === 0) { + this.isNoProduct = true + break + } else { + this.isNoProduct = false + } + } + if (!this.isNoProduct) { + this.productId++ + this.tableData.push({ + productId: this.productId, + id: 0, + amount: 0, + desc: "", + name: "", + number: "", + price: 0, + total: 0 + }) + } + } else { + console.log(this.detailTableData) + for (let i = 0; i < this.detailTableData.length; i++) { + if (this.detailTableData[i].name.length === 0) { + this.isNoDetail = true + break + } else { + this.isNoDetail = false + } + } + if (!this.isNoDetail) { + this.detailId++ + this.detailTableData.push({ + detailId: this.detailId, + id: 0, + amount: 0, + desc: "", + name: "", + number: "", + price: 0, + total: 0 + }) } } - if (!this.isNoProduct) { - this.productId++ - this.tableData.push({ - productId: this.productId, - id: 0, - amount: 0, - desc: "", - name: "", - number: "", - price: 0, - total: 0 - }) + }, + // 鍒犻櫎 + handleDelClick(scope, value) { + console.log(scope) + if (value === "鎿嶄綔") { + this.tableData.splice(scope.$index, 1) + } else { + this.detailTableData.splice(scope.$index, 1) } }, - // 浜у搧鍒犻櫎 - handleDelClick(scope) { - console.log(scope) - this.tableData.splice(scope.$index, 1) + // 璇︽儏鍒楄〃 + setDetailTableForm() { + this.setTableColumn() + this.detailTableList = { + tableData: this.detailTableData, + tableColumn: this.tableColumn + } + }, + setTableColumn() { + if (this.workType === "鍐呴儴璋冩嫧") { + this.tableColumn = [ + { label: "浜у搧", prop: "name", productName: true, isRequird: true }, + { label: "浠�", prop: "number", select: true }, + { label: "鑷�", prop: "amount", select: true }, + { label: "瀹屾垚", prop: "total", inputFloat: true }, + { label: "璁¢噺鍗曚綅", prop: "total", select: true } + ] + } else { + this.tableColumn = [ + { label: "浜у搧", prop: "name", productName: true, isRequird: true }, + { label: "浠�", prop: "number", select: true }, + { label: "瀹屾垚", prop: "total", inputFloat: true }, + { label: "璁¢噺鍗曚綅", prop: "total", select: true } + ] + } + }, + // 璇︽儏杈撳叆 + inputDetail(val, prop, row) { + this.detailId = row.detailId + this.detailTableData.map((item) => { + if (item.detailId === row.detailId) { + item[prop] = val + } + }) } } } @@ -353,9 +513,20 @@ .basic-info-view { margin-top: 20px; } - // .bottom { - // margin-left: 20px; - // } +} +.purchase-view { + display: flex; + .left { + width: 50%; + } + .right { + width: 50%; + } +} +.second-label { + margin-left: 20px; + border-bottom: 1px solid #d9d9d9; + margin-bottom: 10px; } ::v-deep { .el-dialog__headerbtn { diff --git a/src/views/overview/OverviewListView.vue b/src/views/overview/OverviewListView.vue index b8044ad..1f628c3 100644 --- a/src/views/overview/OverviewListView.vue +++ b/src/views/overview/OverviewListView.vue @@ -23,7 +23,12 @@ </div> </div> <!-- 鏂板缓/缂栬緫 --> - <AddOverviewDialog v-if="editConfig.visible" :edit-common-config="editConfig" /> + <AddOverviewDialog + v-if="editConfig.visible" + :work-type="workType" + :edit-common-config="editConfig" + :add-name="this.$route.query.name" + /> </div> </template> @@ -53,7 +58,8 @@ visible: false, title: "鏂板缓", infomation: {} - } + }, + workType: this.$route.query.workType } }, created() { diff --git a/src/views/overview/index.vue b/src/views/overview/index.vue index 536bea9..c535477 100644 --- a/src/views/overview/index.vue +++ b/src/views/overview/index.vue @@ -17,7 +17,7 @@ > <div class="top"> <div class="label"> - <span style="cursor: pointer" @click="labelClick(item.name)">{{ item.name }}</span> + <span style="cursor: pointer" @click="labelClick(item)">{{ item.name }}</span> </div> <div class="set">...</div> </div> @@ -60,31 +60,38 @@ tableList: [ { name: "閲囪喘鍏ュ簱", - status: "active" + status: "active", + workType: "鏀惰揣" }, { name: "鍐呴儴璋冩嫧", - status: "done" + status: "done", + workType: "鍐呴儴璋冩嫧" }, { - name: "3", - status: "done" + name: "璁㈠崟鍙戣揣鍑哄簱", + status: "done", + workType: "鍙戣揣" }, { name: "2", - status: "active" + status: "active", + workType: "鏀惰揣" }, { name: "3", - status: "todo" + status: "todo", + workType: "鏀惰揣" }, { name: "2", - status: "active" + status: "active", + workType: "鏀惰揣" }, { name: "3", - status: "todo" + status: "todo", + workType: "鏀惰揣" } ], editConfig: { @@ -99,8 +106,8 @@ getList(val) { console.log(val) }, - labelClick(name) { - this.$router.push({ path: "/overview/overviewList", query: { name: name } }) + labelClick(item) { + this.$router.push({ path: "/overview/overviewList", query: { name: item.name, workType: item.workType } }) }, getData() {} } diff --git a/src/views/productManage/product/AddProductDialog.vue b/src/views/productManage/product/AddProductDialog.vue index b71c4a6..32cffde 100644 --- a/src/views/productManage/product/AddProductDialog.vue +++ b/src/views/productManage/product/AddProductDialog.vue @@ -38,7 +38,7 @@ </div> <div class="basic-info"> - <FormBtnsView @inOutBoundClick="inOutBoundClick" /> + <FormBtnsView :add-product="addProduct" @inOutBoundClick="inOutBoundClick" :show-procure="showProcure" /> <div class="basic-info-view"> <el-row> <el-col :span="20"> @@ -59,8 +59,12 @@ </el-col> <el-col :span="24"> <div style="margin-left: 20px; margin-top: -30px"> - <el-checkbox v-model="marketable" :disabled="!showFooter">鍙攢鍞�</el-checkbox> - <el-checkbox v-model="procurable" :disabled="!showFooter">鍙噰璐�</el-checkbox> + <el-checkbox v-model="marketable" :disabled="!showFooter" @change="checkboxChange('閿�鍞�', $event)" + >鍙攢鍞�</el-checkbox + > + <el-checkbox v-model="procurable" :disabled="!showFooter" @change="checkboxChange('閲囪喘', $event)" + >鍙噰璐�</el-checkbox + > </div> </el-col> </el-row> @@ -457,7 +461,9 @@ marketable: true, // 鍙攢鍞� procurable: true, // 鍙噰璐� checkedCities: ["涓婃捣", "鍖椾含"], - cities: ["涓婃捣瀵瑰瀵瑰瀵瑰澶氬澶氬澶氬澶氬寳浜瀵瑰瀵瑰瀵�", "鍖椾含瀵瑰瀵瑰瀵瑰澶�", "骞垮窞", "娣卞湷"] + cities: ["涓婃捣瀵瑰瀵瑰瀵瑰澶氬澶氬澶氬澶氬寳浜瀵瑰瀵瑰瀵�", "鍖椾含瀵瑰瀵瑰瀵瑰澶�", "骞垮窞", "娣卞湷"], + addProduct: false, + showProcure: true } }, created() { @@ -471,9 +477,11 @@ this.showButton = false this.showEdit = false this.showFooter = true + this.addProduct = true } else { this.showEdit = true this.showFooter = false + this.addProduct = false } }, // 鍏抽棴 @@ -596,6 +604,12 @@ // 杩涘嚭鐐瑰嚮 inOutBoundClick() { this.$router.push({ path: "/reportForm/inOutboundDetail", query: { name: "浜у搧鍚嶇О/鍑哄叆搴撴槑缁�" } }) + }, + // 鍙攢鍞�/鍙噰璐� + checkboxChange(val, param) { + if (val === "閲囪喘") { + this.showProcure = param + } } } } diff --git a/src/views/productManage/product/index.vue b/src/views/productManage/product/index.vue index 85e9876..08c4dcc 100644 --- a/src/views/productManage/product/index.vue +++ b/src/views/productManage/product/index.vue @@ -156,12 +156,6 @@ default: false }, { - label: "鍏徃", - prop: "shopName", - isShowColumn: showcol.includes("鍏徃"), - default: false - }, - { label: "閿�鍞环鏍�", prop: "faultLevel", isShowColumn: showcol.includes("閿�鍞环鏍�"), -- Gitblit v1.8.0