From 36fb84a1ec003eb97502d8cc6f56bca67e1502a0 Mon Sep 17 00:00:00 2001 From: yangfeng <wanwan926_4@163.com> Date: 星期五, 15 九月 2023 11:25:04 +0800 Subject: [PATCH] 产品出入库明细页面及公共组件优化 --- src/views/productManage/product/index.vue | 2 src/router/product/index.js | 9 + src/views/reportForm/inboundOutboundDetail/index.vue | 199 +++++++++++++++++++++++++++++++++ src/views/reportForm/index.vue | 21 +++ src/components/makepager/StatusCommonView.vue | 2 src/router/index.js | 2 src/views/productManage/product/AddProductDialog.vue | 100 +++++++--------- 7 files changed, 278 insertions(+), 57 deletions(-) diff --git a/src/components/makepager/StatusCommonView.vue b/src/components/makepager/StatusCommonView.vue index 2c788d0..d8b23c8 100644 --- a/src/components/makepager/StatusCommonView.vue +++ b/src/components/makepager/StatusCommonView.vue @@ -2,7 +2,7 @@ <div class="common-status"> <div v-if="showButton" style="margin-left: 30px"> <el-button plain size="mini" @click="delClick" :disabled="isDelClick">鍒犻櫎</el-button> - <el-button plain size="mini" style="cursor: no-drop">鎵撳嵃</el-button> + <el-button plain size="mini" disabled>鎵撳嵃</el-button> </div> <div class="arrowsBox"> <div diff --git a/src/router/index.js b/src/router/index.js index a875f2f..b12b86e 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -97,7 +97,7 @@ const router = createRouter() router.afterEach((to, from, next) => { - if (to.path === "/overview/overviewList" && to.query.name) { + if ((to.path === "/overview/overviewList" || to.path === "/reportForm/inOutboundDetail") && to.query.name) { console.log(from, next) to.meta.title = to.query.name document.title = to.meta.title diff --git a/src/router/product/index.js b/src/router/product/index.js index e05f5ad..b132e6c 100644 --- a/src/router/product/index.js +++ b/src/router/product/index.js @@ -1,6 +1,7 @@ // const type from '@/router/deployCode' const product = (resolve) => require(["@/views/productManage/product/index"], resolve) // 浜у搧 +const inOutboundDetail = (resolve) => require(["@/views/reportForm/inboundOutboundDetail/index"], resolve) // 鍑哄叆搴撴槑缁� const appconfig = [ { @@ -10,6 +11,14 @@ meta: { title: "浜у搧绠$悊" } + }, + { + path: "/reportForm/inOutboundDetail", + name: "inOutboundDetail", + component: inOutboundDetail, + meta: { + title: "鍑哄叆搴撴槑缁�" + } } ] diff --git a/src/views/productManage/product/AddProductDialog.vue b/src/views/productManage/product/AddProductDialog.vue index 022c0c6..7320da8 100644 --- a/src/views/productManage/product/AddProductDialog.vue +++ b/src/views/productManage/product/AddProductDialog.vue @@ -32,9 +32,9 @@ style="height: 60vh; overflow-x: hidden" > <div class="content-btn"> - <el-button plain size="mini">鏍囩鎵撳嵃</el-button> - <el-button plain size="mini">鏇存柊鏁伴噺</el-button> - <el-button plain size="mini">鎵ц琛ヨ揣</el-button> + <el-button plain size="mini" disabled>鏍囩鎵撳嵃</el-button> + <el-button plain size="mini" disabled>鏇存柊鏁伴噺</el-button> + <el-button plain size="mini" disabled>鎵ц琛ヨ揣</el-button> </div> <div class="basic-info"> @@ -60,7 +60,7 @@ <div class="right-label">棰勬祴</div> </div> </div> - <div class="sub-number"> + <div class="sub-number" @click="inOutBoundClick" style="cursor: pointer"> <div class="left icon-view"><i class="el-icon-sort"></i></div> <div class="right"> <div class="right-label">{{ "杩�: " + 0 }}</div> @@ -100,7 +100,11 @@ <el-col :span="20"> <div style="margin-left: 20px">浜у搧鍚嶇О</div> <el-form-item label="" prop="client_name" label-width="20px"> - <el-input v-model="editConfig.infomation.client_name" placeholder=""></el-input> + <el-input + v-model="editConfig.infomation.client_name" + placeholder="" + :disabled="!showFooter" + ></el-input> </el-form-item> </el-col> <el-col :span="4"> @@ -111,8 +115,8 @@ </el-col> <el-col :span="24"> <div style="margin-left: 20px; margin-top: -30px"> - <el-checkbox v-model="marketable">鍙攢鍞�</el-checkbox> - <el-checkbox v-model="procurable">鍙噰璐�</el-checkbox> + <el-checkbox v-model="marketable" :disabled="!showFooter">鍙攢鍞�</el-checkbox> + <el-checkbox v-model="procurable" :disabled="!showFooter">鍙噰璐�</el-checkbox> </div> </el-col> </el-row> @@ -320,12 +324,11 @@ <div class="purchase-view"> <div class="left"> <div class="second-label">浣滀笟</div> - <el-form-item label="璺嚎" prop="client_name" style="margin-left: 20px"> - <el-checkbox-group v-model="editConfig.infomation.type"> - <el-checkbox label="璐濇�濈渚涘簲浜у搧鏉ヨ嚜鍖椾含浠�" name="type"></el-checkbox> - <el-checkbox label="璐濇�濈-warehouse#6:渚涘簲浜у搧鏉ヨ嚜璐濇�濈123" name="type"></el-checkbox> - <el-checkbox label="璐濇�濈-warehouse#4:渚涘簲浜у搧鏉ヨ嚜鍖椾含浠�" name="type"></el-checkbox> - <el-checkbox label="璐濇�濈-warehouse#4:渚涘簲浜у搧鏉ヨ嚜璐濇�濈123" name="type"></el-checkbox> + <el-form-item label="璺嚎" prop="checkedCities" style="margin-left: 20px"> + <el-checkbox-group v-model="checkedCities" :min="1" :max="2"> + <el-checkbox v-for="city in cities" :label="city" :key="city" class="list-item">{{ + city.length > 20 ? city.substring(0, 20) + "..." : city + }}</el-checkbox> </el-checkbox-group> </el-form-item> </div> @@ -352,7 +355,7 @@ style="width: 85%" :disabled="!showFooter" ></el-input> - <span>kg</span> + <span> kg</span> </el-form-item> <el-form-item label="浣撶Н" prop="client_name" style="margin-left: 20px"> <el-input @@ -362,7 +365,7 @@ style="width: 85%" :disabled="!showFooter" ></el-input> - <span>m鲁</span> + <span> m鲁</span> </el-form-item> <el-form-item label="瀹㈡埛鍓嶇疆鏃堕棿" prop="client_name" style="margin-left: 20px"> <el-input @@ -372,7 +375,7 @@ style="width: 85%" :disabled="!showFooter" ></el-input> - <span>澶�</span> + <span> 澶�</span> </el-form-item> <el-form-item label="HS缂栫爜" prop="name" style="margin-left: 20px"> <el-input @@ -471,7 +474,7 @@ return { visible: false, title: "鏂板缓", - infomation: {} + infomation: { type: [] } } } } @@ -507,7 +510,9 @@ showFooter: false, // 鏄惁鏄剧ず鍙栨秷淇濆瓨 imageSrc: "", // 鍥剧墖鍦板潃 marketable: true, // 鍙攢鍞� - procurable: true // 鍙噰璐� + procurable: true, // 鍙噰璐� + checkedCities: ["涓婃捣", "鍖椾含"], + cities: ["涓婃捣瀵瑰瀵瑰瀵瑰澶氬澶氬澶氬澶氬寳浜瀵瑰瀵瑰瀵�", "鍖椾含瀵瑰瀵瑰瀵瑰澶�", "骞垮窞", "娣卞湷"] } }, created() { @@ -521,32 +526,10 @@ this.showButton = false this.showEdit = false this.showFooter = true + } else { + this.showEdit = true + this.showFooter = false } - // } else if (this.editConfig.infomation.status === "瀹屾垚") { - // this.showButton = true - // this.showEdit = false - // this.isDelClick = true - // this.showFooter = false - // } else if (this.editConfig.infomation.status === "宸插彇娑�") { - // this.showButton = true - // this.showEdit = false - // this.showFooter = false - // } else { - // this.showButton = true - // 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() { @@ -621,19 +604,21 @@ }, // 涓婁紶鍥剧墖 toGetImg() { - if (inputElement === null) { - // 鐢熸垚鏂囦欢涓婁紶鐨勬帶浠� - inputElement = document.createElement("input") - inputElement.setAttribute("type", "file") - inputElement.style.display = "none" - if (window.addEventListener) { - inputElement.addEventListener("change", this.uploadFile, false) - } else { - inputElement.attachEvent("onchange", this.uploadFile) + if (this.showFooter) { + if (inputElement === null) { + // 鐢熸垚鏂囦欢涓婁紶鐨勬帶浠� + inputElement = document.createElement("input") + inputElement.setAttribute("type", "file") + inputElement.style.display = "none" + if (window.addEventListener) { + inputElement.addEventListener("change", this.uploadFile, false) + } else { + inputElement.attachEvent("onchange", this.uploadFile) + } + document.body.appendChild(inputElement) } - document.body.appendChild(inputElement) + inputElement.click() } - inputElement.click() }, uploadFile(el) { if (el && el.target && el.target.files && el.target.files.length > 0) { @@ -662,6 +647,10 @@ } } } + }, + // 杩涘嚭鐐瑰嚮 + inOutBoundClick() { + this.$router.push({ path: "/reportForm/inOutboundDetail", query: { name: "浜у搧鍚嶇О/鍑哄叆搴撴槑缁�" } }) } } } @@ -757,6 +746,9 @@ border-bottom: 1px solid #d9d9d9; margin-bottom: 10px; } + .list-item { + width: 300px; + } .avatar-uploader .el-upload { border: 1px dashed #d9d9d9; border-radius: 6px; diff --git a/src/views/productManage/product/index.vue b/src/views/productManage/product/index.vue index 113929a..85e9876 100644 --- a/src/views/productManage/product/index.vue +++ b/src/views/productManage/product/index.vue @@ -29,7 +29,7 @@ </div> <!-- 鍥捐〃褰㈠紡 --> <div v-if="isIconIndex === '1'" class="product-view"> - <div class="product-box" v-for="item in tableList.tableInfomation" :key="item.id"> + <div class="product-box" v-for="item in tableList.tableInfomation" :key="item.id" @click="tableRowClick(item)"> <div class="left"> <el-image style="width: 60px; height: 80px" :src="url"></el-image> </div> diff --git a/src/views/reportForm/inboundOutboundDetail/index.vue b/src/views/reportForm/inboundOutboundDetail/index.vue new file mode 100644 index 0000000..8ac2cc1 --- /dev/null +++ b/src/views/reportForm/inboundOutboundDetail/index.vue @@ -0,0 +1,199 @@ +<template> + <div class="rightContent"> + <div class="top"> + <SearchCommonView + :add-title="'鏂板缓'" + :showAdd="false" + :placeholder="'璇疯緭鍏ュ弬鑰�'" + :amount-view="false" + @addCommonClick="addBtnClick" + @searchClick="getList" + /> + </div> + <div class="list-view"> + <TableCommonView + ref="tableListRef" + :table-list="tableList" + @selTableCol="selTableCol" + @tableRowClick="tableRowClick" + ></TableCommonView> + <div class="btn-pager"> + <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" /> + </div> + </div> + </div> +</template> + +<script> +import pageMixin from "@/components/makepager/pager/mixin/pageMixin" +import { getProductList } from "@/api/product/product" +// import DetailProduct from "@/views/productManage/product/DetailProduct" + +export default { + name: "InboundOutboundDetail", + props: {}, + components: {}, + 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: "id", + isShowColumn: true, + default: true + }, + { + label: "浜у搧", + prop: "id", + isShowColumn: true, + default: true + }, + { + label: "浠�", + prop: "deviceName", + isShowColumn: true, + default: true + }, + { + label: "鑷�", + prop: "id", + isShowColumn: true, + default: true + }, + { + label: "鍏徃", + prop: "shopName", + isShowColumn: showcol.includes("鍏徃"), + default: false + }, + { + label: "鏁伴噺", + prop: "deviceId", + isShowColumn: true, + default: true + }, + { + label: "鐘舵��", + prop: "status", + width: 120, + isShowColumn: showcol.includes("鐘舵��"), + default: false, + status: true + }, + { + label: "瀹屾垚鑰�", + prop: "preTime", + isShowColumn: showcol.includes("瀹屾垚鑰�"), + default: false + } + ] + 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> +// .rightContent { +// height: 100%; +// background: #e6ecf2; +// padding: 10px; +// .top { +// margin-bottom: 20px; +// height: 60px; +// background: #fff; +// border-radius: 8px; +// } +// .list-view { +// height: calc(100% - 120px); +// } +// } +</style> diff --git a/src/views/reportForm/index.vue b/src/views/reportForm/index.vue new file mode 100644 index 0000000..adc8766 --- /dev/null +++ b/src/views/reportForm/index.vue @@ -0,0 +1,21 @@ +<template> + <div class="content"> + <router-view /> + </div> +</template> + +<script> +export default { + name: "CustomM", + props: {} +} +</script> + +<!-- Add "scoped" attribute to limit CSS to this component only --> +<style lang="scss" scoped> +.content { + width: 100%; + background-color: #fff; + height: calc(100vh - 70px); +} +</style> -- Gitblit v1.8.0