From 119efc91fd3374131c31b8c5f8f5f7cb8f6731cf Mon Sep 17 00:00:00 2001 From: zuozhengqing <a13193816592@163.com> Date: 星期五, 17 十一月 2023 09:34:59 +0800 Subject: [PATCH] 将出入库明细拆分为出库明细和入库明细 --- src/router/product/index.js | 13 src/router/report/index.js | 2 src/views/reportForm/inboundOutboundDetail/index.vue | 55 +- src/components/layout/components/appsidebar/index.vue | 3 src/views/reportForm/locationReport/index.vue | 6 src/router/index.js | 2 src/views/reportForm/outboundDetail/index.vue | 265 ++++++++++++ src/views/reportForm/outboundDetail/AddOutboundDetailDialog.vue | 881 +++++++++++++++++++++++++++++++++++++++++ 8 files changed, 1,189 insertions(+), 38 deletions(-) diff --git a/src/components/layout/components/appsidebar/index.vue b/src/components/layout/components/appsidebar/index.vue index e28de9b..06522e8 100644 --- a/src/components/layout/components/appsidebar/index.vue +++ b/src/components/layout/components/appsidebar/index.vue @@ -61,7 +61,8 @@ <el-menu-item index="/reportForm/inventoryReport">搴撳瓨鎶ヨ〃</el-menu-item> <el-menu-item index="/reportForm/locationReport">浣嶇疆鎶ヨ〃</el-menu-item> <!-- <el-menu-item index="/warehouseManage/bussinessType">鏌愭棩搴撳瓨</el-menu-item> --> - <el-menu-item index="/reportForm/inboundOutboundDetail">鍑哄叆搴撴槑缁嗘姤琛�</el-menu-item> + <el-menu-item index="/reportForm/inboundOutboundDetail">鍏ュ簱鏄庣粏鎶ヨ〃</el-menu-item> + <el-menu-item index="/reportForm/outboundDetail">鍑哄簱鏄庣粏鎶ヨ〃</el-menu-item> </el-submenu> </el-menu> </div> diff --git a/src/router/index.js b/src/router/index.js index 013fdc1..dffb3c5 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -115,7 +115,7 @@ to.meta.title = to.params.name // document.title = to.meta.title } else if (to.name === "inboundOutboundDetail") { - to.meta.title = "鍑哄叆搴撴槑缁�" + to.meta.title = "鍏ュ簱鏄庣粏鎶ヨ〃" // document.title = to.meta.title } }) diff --git a/src/router/product/index.js b/src/router/product/index.js index 6fbf969..61dafed 100644 --- a/src/router/product/index.js +++ b/src/router/product/index.js @@ -1,7 +1,8 @@ // const type from '@/router/deployCode' const product = (resolve) => require(["@/views/productManage/product/index"], resolve) // 浜у搧 -const inboundOutboundDetail = (resolve) => require(["@/views/reportForm/inboundOutboundDetail/index"], resolve) // 鍑哄叆搴撴槑缁� +const inboundOutboundDetail = (resolve) => require(["@/views/reportForm/inboundOutboundDetail/index"], resolve) // 鍏ュ簱鏄庣粏鎶ヨ〃 +const outboundDetail = (resolve) => require(["@/views/reportForm/outboundDetail/index"], resolve) // 鍏ュ簱鏄庣粏鎶ヨ〃 const productCategory = (resolve) => require(["@/views/productManage/productCategory/index"], resolve) // 浜у搧绫诲埆 const productList = (resolve) => require(["@/views/productManage/productCategory/ProductList"], resolve) // 浜у搧绫诲埆-浜у搧 const overviewList = (resolve) => require(["@/views/overview/OverviewListView"], resolve) // 姒傝堪-浜у搧鍒楄〃 @@ -29,7 +30,15 @@ name: "inboundOutboundDetail", component: inboundOutboundDetail, meta: { - title: "鍑哄叆搴撴槑缁�" + title: "鍏ュ簱鏄庣粏鎶ヨ〃" + } + }, + { + path: "/reportForm/outboundDetail", + name: "outboundDetail", + component: outboundDetail, + meta: { + title: "鍑哄簱鏄庣粏鎶ヨ〃" } }, { diff --git a/src/router/report/index.js b/src/router/report/index.js index 32a54ff..668db2e 100644 --- a/src/router/report/index.js +++ b/src/router/report/index.js @@ -26,7 +26,7 @@ name: "inboundOutboundDetail", component: inboundOutboundDetail, meta: { - title: "鍑哄叆搴撴槑缁�" + title: "鍏ュ簱鏄庣粏鎶ヨ〃" } } ] diff --git a/src/views/reportForm/inboundOutboundDetail/index.vue b/src/views/reportForm/inboundOutboundDetail/index.vue index c354af5..b7f5122 100644 --- a/src/views/reportForm/inboundOutboundDetail/index.vue +++ b/src/views/reportForm/inboundOutboundDetail/index.vue @@ -104,7 +104,7 @@ prop: "date", isShowColumn: true, default: true, - date: true + // date: true }, { label: "鍗曞彿", @@ -115,6 +115,12 @@ { label: "浜у搧", prop: "productName", + isShowColumn: true, + default: true + }, + { + label: "浜у搧缂栫爜", + prop: "productId", isShowColumn: true, default: true }, @@ -147,6 +153,12 @@ { label: "鍗曚綅", prop: "unit", + isShowColumn: true, + default: true + }, + { + label: "閲嶉噺", + prop: "weight", isShowColumn: true, default: true }, @@ -196,36 +208,28 @@ pageSize: this.pagerOptions.pageSize }).then((res) => { if (res.code === 200) { + res.data.map((item)=>{ + let dateObject = new Date(item.date); + let formattedDateString = dateObject.toISOString().split('T')[0]; + item.date=formattedDateString + }) this.tableList.tableInfomation = res.data this.pagerOptions.totalCount = res.total } }) } else { - // await getProductOperatonList({ - // productId: this.params.id, - // page: this.pagerOptions.currPage, - // pageSize: this.pagerOptions.pageSize - // }).then((res) => { - // if (res.code === 200) { - // const list = res.data.map((item) => { - // return { - // ...item, - // fromLocation: item.fromLocation.name, - // toLocation: item.toLocation.name, - // productName: this.params.name, - // amount: item.details[0].product.amount, - // unit: item.details[0].product.unit - // } - // }) - // this.tableList.tableInfomation = list || [] - // this.pagerOptions.totalCount = res.total - // } - // }) await getHistory({ + baseOperationType:1, + keyWord:this.params.keyWord, page: this.pagerOptions.currPage, pageSize: this.pagerOptions.pageSize }).then((res) => { if (res.code === 200) { + res.data.map((item)=>{ + let dateObject = new Date(item.date); + let formattedDateString = dateObject.toISOString().split('T')[0]; + item.date=formattedDateString + }) this.tableList.tableInfomation = res.data?res.data:[] this.pagerOptions.totalCount = res.total } @@ -236,15 +240,6 @@ getList(val) { this.params.keyWord=val; this.getData() - // getHistory({ - // page: this.pagerOptions.currPage, - // pageSize: this.pagerOptions.pageSize - // }).then((res) => { - // if (res.code === 200) { - // this.tableList.tableInfomation = res.data - // this.pagerOptions.totalCount = res.total - // } - // }) }, // 琛岀偣鍑� tableRowClick(row) { diff --git a/src/views/reportForm/locationReport/index.vue b/src/views/reportForm/locationReport/index.vue index 3832e68..4c2bc2a 100644 --- a/src/views/reportForm/locationReport/index.vue +++ b/src/views/reportForm/locationReport/index.vue @@ -60,7 +60,7 @@ data() { return { tableList: {}, - showcol: [ "浜у搧绫诲埆", "棰勭暀鏁伴噺", "浠峰��"], + showcol: [ "浜у搧绫诲埆", "浠峰��"], // countcol: [ // { label: "鍦ㄥ簱鏁伴噺", unit: "" }, // { label: "棰勭暀鏁伴噺", unit: "" }, @@ -172,8 +172,8 @@ { label: "棰勭暀鏁伴噺", prop: "availableStore", - isShowColumn: true, - default: true, + default: false, + isShowColumn: showcol.includes("棰勭暀鏁伴噺"), unit: "", textAlign:"right" }, diff --git a/src/views/reportForm/outboundDetail/AddOutboundDetailDialog.vue b/src/views/reportForm/outboundDetail/AddOutboundDetailDialog.vue new file mode 100644 index 0000000..2097ac0 --- /dev/null +++ b/src/views/reportForm/outboundDetail/AddOutboundDetailDialog.vue @@ -0,0 +1,881 @@ +<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 === "鏌ョ湅" ? editCommonConfig.title : editCommonConfig.title + addName }}</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" + > + <div> + <!-- <div>aaa</div> --> + <StatusCommonView + :showButton="showButton" + :isValidateClick="isValidateClick" + :isDelClick="isDelClick" + :list="list" + :showCancel="showCancel" + @delClick="delClick" + @validateClick="validateClick" + @btnCancel="btnCancel" + /> + </div> + <div class="basic-info"> + <div class="basic-info-view"> + <el-row> + <el-col :span="12"> + <el-form-item prop="companyName"> + <span slot="label">{{ workType === 1 ? "渚涘簲鍟�" : workType === 2 ? "瀹㈡埛" : "鑱旂郴浜�" }}</span> + <el-select + v-model="editConfig.infomation.companyName" + placeholder="璇烽�夋嫨" + size="mini" + style="width: 90%" + :disabled="!showFooter" + @change="companyChange" + > + <el-option + v-for="item in companyOptions" + :key="item.id" + :label="item.name" + :value="{ value: item.id, label: item.name }" + > + </el-option> + </el-select> + </el-form-item> + </el-col> + <!-- <el-col :span="12"> + <el-form-item v-if="workType === 3" label="鑱旂郴浜�" prop="contacterName"> + <el-select + v-model="editConfig.infomation.contacterName" + 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 v-if="workType === 2" 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="operationDate"> + <el-date-picker + v-model="editConfig.infomation.operationDate" + value-format="yyyy-MM-dd" + type="date" + placeholder="閫夋嫨鏃ユ湡" + style="width: 90%" + :disabled="!showFooter" + > + </el-date-picker> + </el-form-item> + </el-col> + <el-col v-if="showOperationType" :span="12"> + <el-form-item label="鍏ュ簱绫诲瀷" prop="operationTypeId"> + <el-select + v-model="editConfig.infomation.operationTypeId" + placeholder="璇烽�夋嫨" + size="mini" + style="width: 90%" + :disabled="!showFooter" + > + <el-option v-for="item in operationTypeOptions" :key="item.id" :label="item.name" :value="item.id"> + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col v-else :span="12"> + <el-form-item label="鍏ュ簱绫诲瀷"> + <el-input v-model="receiptType" disabled style="width: 90%"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鏉ユ簮鍗曟嵁" prop="sourceNumber"> + <el-input + v-model="editConfig.infomation.sourceNumber" + placeholder="渚嬪:PO0032" + style="width: 90%" + :disabled="!showFooter" + ></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item v-if="workType !== 1" label="婧愪綅缃�" prop="fromLocationId"> + <el-select + v-model="editConfig.infomation.fromLocationId" + placeholder="璇烽�夋嫨" + size="mini" + style="width: 90%" + :disabled="!showFooter" + > + <el-option + v-for="item in toLocationOptions" + :key="item.id" + :label="item.jointName" + :value="item.id" + > + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item v-if="workType !== 2" label="浠撳簱浣嶇疆" prop="toLocationId"> + <el-select + v-model="editConfig.infomation.toLocationId" + placeholder="璇烽�夋嫨" + size="mini" + style="width: 90%" + :disabled="!showFooter" + > + <el-option + v-for="item in toLocationOptions" + :key="item.id" + :label="item.jointName" + :value="item.id" + > + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="璐熻矗浜�" prop="contacterName"> + <el-select + v-model="editConfig.infomation.contacterName" + placeholder="璇烽�夋嫨" + size="mini" + style="width: 90%" + :disabled="!showFooter" + @change="contacterChange" + > + <el-option + v-for="item in memberOptions" + :key="item.id" + :label="item.name" + :value="{ value: item.id, label: item.name }" + > + </el-option> + </el-select> + </el-form-item> + </el-col> + <!-- <el-col :span="12"> + <el-form-item v-if="workType !== 1" 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="24"> + <el-form-item label="澶囨敞" prop="comment"> + <el-input + v-model.trim="editConfig.infomation.comment" + size="mini" + type="textarea" + style="width: 96%" + :autosize="{ minRows: 3 }" + :disabled="!showFooter" + ></el-input> + </el-form-item> + </el-col> + </el-row> + </div> + <div class="bottom"> + <el-tabs v-model="activeName" type="card"> + <!-- <el-tab-pane v-if="workType !== 1" label="璇︽儏" name="detail"> </el-tab-pane> --> + <el-tab-pane label="浜у搧" name="first"> </el-tab-pane> + <el-tab-pane label="鍙戣揣淇℃伅" name="two"></el-tab-pane> + </el-tabs> + <!-- 鎿嶄綔 --> + <div v-if="activeName === 'first'"> + <CommonFormTableView + :product-table-list="productTableList" + :detail-enter="!showFooter" + @inputContent="inputContent" + @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> + </el-table-column> + </template> + </CommonFormTableView> + </div> + <!-- 鍙戣揣淇℃伅 --> + <div v-if="activeName==='two'"> + <el-form label-position="left" label-width="80px" :model="shipmentsInfo"> + <el-form-item label="鎵胯繍鍟�" style="width: 50%;"> + <el-select :disabled="!showFooter" v-model="editConfig.infomation.logisticCompanyId" placeholder="璇烽�夋嫨" style="width: 100%;"> + <el-option + v-for="item in shipmentsInfo.carrier" + :key="item.id" + :label="item.name" + :value="item.id"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="杩愬崟鍙�" style="width: 50%;"> + <el-input :disabled="!showFooter" v-model="editConfig.infomation.waybillNumber"></el-input> + </el-form-item> + <el-form-item label="閲嶉噺" style="width: 50%;"> + <el-input :disabled="!showFooter" v-model="editConfig.infomation.weight"></el-input> + </el-form-item> + <el-form-item label="鐗╂祦閲嶉噺" style="width: 50%;"> + <el-input :disabled="!showFooter" v-model="editConfig.infomation.logisticWeight"></el-input> + </el-form-item> + </el-form> + </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> + </el-table-column> + </template> + </CommonFormTableView> + </div> --> + </div> + </div> + </el-form> + <!-- 灏� --> + <div slot="footer" class="dialog-footer"> + <!-- <el-button type="primary" size="small" @click="editConfig.visible = false">淇濆苟鎻愪氦瀹℃壒</el-button> --> + <el-button type="primary" size="small" @click="saveClick('form')" :disabled="!showFooter">淇濆瓨</el-button> + <el-button size="small" @click="editConfig.visible = false">鍙栨秷</el-button> + </div> + </el-dialog> + </div> +</template> + +<script> +import CommonFormTableView from "@/components/makepager/CommonFormTableView" +import { + getLocationList, + addOperation, + updateOperation, + updateStatus, + stateCancel, + deleteOperation, + getListTransfer, + getLogisticCompanyList +} from "@/api/overview/overview" +import { getCompanyList } from "@/api/common/other" +export default { + name: "AddOverviewDialog", + props: { + editCommonConfig: { + type: Object, + default: () => { + return { + visible: false, + title: "鏂板缓", + operationTypeId: 0, + infomation: {} + } + } + }, + workType: { + type: Number, + default: 1 + }, + addName: { + type: String, + default: "璋冩嫧" + }, + showOperationType: { + type: Boolean, + default: false + } + }, + components: { CommonFormTableView }, + computed: {}, + data() { + return { + dialogWidth: "50%", + editConfig: this.editCommonConfig, + rules: { + sourceNumber: [{ required: true, message: "璇疯緭鍏ユ潵婧愬崟鎹�", trigger: "blur" }], + operationDate: [{ required: true, message: "璇烽�夋嫨鏃ユ湡", trigger: "change" }], + toLocationId: [{ required: true, message: "璇烽�夋嫨浠撳簱浣嶇疆", trigger: "change" }], + fromLocationId: [{ required: true, message: "璇烽�夋嫨婧愪綅缃�", trigger: "change" }], + operationTypeId: [{ required: true, message: "璇烽�夋嫨鍏ュ簱绫诲瀷", trigger: "change" }] + }, + companyOptions: [], // 鍏徃 + memberOptions: [{ id: 1, name: "绠$悊鍛�" }], + toLocationOptions: [], // 婧愪綅缃� 浠撳簱浣嶇疆 + list: [ + { label: "鑽夌", status: "todo", value: 1 }, + { label: "姝e湪绛夊緟", status: "todo", value: 2 }, + { label: "灏辩华", status: "todo", value: 3 }, + { label: "瀹屾垚", status: "todo", value: 4 }, + { label: "宸插彇娑�", status: "todo", value: 5 } + ], + showButton: true, + activeName: "first", + productTableList: {}, + tableData: [], + countId: 0, + isNoProduct: true, // 娣诲姞鏄庣粏琛屾椂鏄惁鏈変骇鍝佹湭閫夋嫨 + showEdit: false, // 鏄惁鏄剧ず缂栬緫鎸夐挳 + isDelClick: false, // 鍒犻櫎鎸夐挳鏄惁鍙偣鍑� + showFooter: false, // 鏄惁鏄剧ず鍙栨秷淇濆瓨 + currentState: "todo", // 褰撳墠鐘舵�� + detailTableList: {}, + detailTableData: [{ name: "ssss" }], + detailId: 0, + isNoDetail: false, // 娣诲姞璇︽儏鏄庣粏琛屾椂鏄惁鏈�夋嫨 + tableColumn: [], + receiptType: "", // 鍏ュ簱绫诲瀷 + companyObj: {}, + contacterObj: {}, + isValidateClick: false, // 楠岃瘉鏄惁鏄剧ず + operationTypeOptions: [], // 鍏ュ簱绫诲瀷鍒楄〃 + shipmentsInfo: { + carrier:[], + waybillNumber:'', + weight:0, + logisticWeight:0, + }, + showCancel:false, // 鍙栨秷鏄惁鍙互鏄剧ず + } + }, + created() { + this.setTableForm() + this.setBottonView() + this.setDetailTableForm() + this.getCompanyList() + this.getLocationList() + this.receiptType = this.editConfig.title === "鏌ョ湅" ? this.editConfig.infomation.operationTypeName : this.addName + if (this.showOperationType) { + this.getListTransfer() + } + this.getLogisticCompanyList() + }, + methods: { + // 鑾峰彇鍏徃鍒楄〃 + async getCompanyList() { + await getCompanyList().then((res) => { + console.log(res) + if (res.code === 200) { + this.companyOptions = res.data + } + }) + }, + // 鑾峰彇浠撳簱浣嶇疆鍒楄〃 + async getLocationList() { + await getLocationList({ + keyWord: "", + jointName: this.editConfig.code, + page: 0, + pageSize: 0 + }).then((res) => { + console.log(res) + if (res.code === 200) { + this.toLocationOptions = res.data + } + }) + }, + // 鑾峰彇浠撳簱绫诲瀷 + async getListTransfer() { + await getListTransfer({ + keyword: "", + page: 0, + pageSize: 0 + }).then((res) => { + console.log(res.data) + if (res.code === 200) { + const list = res.data.map((item) => { + return { + name: item.name, + id: item.id + } + }) + this.operationTypeOptions = list || [] + } + }) + }, + // 璁剧疆鍒犻櫎/鎵撳嵃/缂栬緫鏄惁鏄剧ず + setBottonView() { + console.log(this.editConfig.infomation.status) + if (this.editConfig.title === "鏂板缓") { + this.showButton = false + this.showEdit = false + this.showFooter = true + this.isValidateClick = false + } else if (this.editConfig.title === "缂栬緫") { + this.showButton = true + this.showEdit = false + this.isDelClick = true + this.showFooter = true + } else if (this.editConfig.title === "鏌ョ湅" && this.editConfig.infomation.status !== 4) { + this.showButton = true + this.showEdit = true + this.isDelClick = true + this.showFooter = false + if (this.editConfig.infomation.status === "瀹屾垚") { + this.isValidateClick = false + }else if(this.editConfig.infomation.status === 3){ + this.isValidateClick = true + this.showCancel=true + }else{ + this.isValidateClick = true + + } + } else if (this.editConfig.infomation.status === 4 || this.editConfig.infomation.status === "瀹屾垚") { + this.showButton = true + this.showEdit = false + this.isDelClick = true + this.showFooter = false + this.isValidateClick = false + } else if (this.editConfig.infomation.status === 5) { + this.showButton = true + this.showEdit = false + this.showFooter = false + this.isValidateClick = false + } else { + // 灏辩华--- + this.showButton = true + this.showEdit = true + this.showFooter = false + this.isValidateClick = true + this.showCancel=true + } + if (this.editConfig.title === "鏂板缓") { + this.list[0].status = "active" + } else { + this.list.map((item) => { + console.log(item, this.editConfig.infomation.status, "鎵撳嵃淇℃伅") + if (item.value === this.editConfig.infomation.status || item.label === this.editConfig.infomation.status) { + item.status = "active" + } else { + item.status = "todo" + } + }) + } + }, + // 鍏抽棴 + handleClose() { + this.editConfig.visible = false + }, + // 缂栬緫 + editClick() { + this.showEdit = false + this.showButton = false + this.showFooter = true + this.setTableForm() + }, + async getLogisticCompanyList(){ + await getLogisticCompanyList().then((res) => { + if(res.code===200){ + this.shipmentsInfo.carrier=res.data + } + }) + }, + // 淇濆瓨 + saveClick(formName) { + this.$refs[formName].validate((valid) => { + if (valid) { + for (let i = 0; i < this.tableData.length; i++) { + if (this.tableData[i].productName.length === 0) { + this.isNoProduct = true + break + } else { + this.isNoProduct = false + } + } + if (this.isNoProduct) { + this.$message.error("璇锋坊鍔犳槑缁嗚鎴栭�夋嫨浜у搧涓嶈兘涓虹┖") + } else { + let requestUrl = this.editConfig.title === "鏂板缓" ? addOperation : updateOperation + let params = this.saveParams() + requestUrl({ + ...params + }).then((res) => { + console.log(res) + this.editConfig.visible = false + if (res.code === 200) { + this.$message.success("娣诲姞鎴愬姛") + this.$parent.getData() + } + }) + } + } + }) + }, + saveParams() { + let data = this.editConfig.infomation + let companyID = 0 + let companyName = "" + let contacterID = 0 + let contacterName = "" + if (this.editConfig.title === "鏂板缓") { + companyID = Object.keys(this.companyObj).length === 0 ? 0 : this.companyObj.value + companyName = Object.keys(this.companyObj).length === 0 ? "" : this.companyObj.label + contacterID = Object.keys(this.contacterObj).length === 0 ? 0 : this.contacterObj.value + contacterName = Object.keys(this.contacterObj).length === 0 ? "" : this.contacterObj.label + } else { + companyID = Object.keys(this.companyObj).length === 0 ? data.companyID : this.companyObj.value + companyName = Object.keys(this.companyObj).length === 0 ? data.companyName : this.companyObj.label + contacterID = Object.keys(this.contacterObj).length === 0 ? data.contacterID : this.contacterObj.value + contacterName = Object.keys(this.contacterObj).length === 0 ? data.contacterName : this.contacterObj.label + } + let params = { + baseOperationType: data.baseOperationType, + comment: data.comment || "", + companyID: companyID, + companyName: companyName, + contacterID: contacterID, + contacterName: contacterName, + details: this.tableData, + fromLocationId: data.fromLocationId || 0, + id: data.id, + number: data.number || "", + operationDate: data.operationDate || "", + operationTypeId: this.showOperationType ? data.operationTypeId : this.editConfig.operationTypeId, + operationTypeName: this.receiptType, + sourceNumber: data.sourceNumber || "", + status: 3, + toLocationId: data.toLocationId || 0, + waybillNumber:data.waybillNumber||'', + weight:data.weight||0, + logisticWeight:data.logisticWeight||0, + logisticCompanyId:data.logisticCompanyId, + } + return params + }, + // 鍒犻櫎 + async delClick() { + await deleteOperation(this.editConfig.infomation.id).then((res) => { + console.log(res) + this.editConfig.visible = false + if (res.code === 200) { + this.$message.success("鍒犻櫎鎴愬姛") + this.$parent.getData() + } + }) + }, + // 鎿嶄綔鍒楄〃 + setTableForm() { + if ( + this.editConfig.title !== "鏂板缓" && + this.editConfig.infomation.details && + this.editConfig.infomation.details.length > 0 + ) { + const list = this.editConfig.infomation.details.map((item) => { + return { + ...item, + productName: item.product.name, + unit: item.product.unit + } + }) + this.tableData = list + } else { + this.tableData = [] + } + // this.tableData = this.editConfig.title !== "鏂板缓" ? list : [] + this.productTableList = { + tableData: this.tableData, + tableColumn: [ + { label: "浜у搧", prop: "productName", productName: true, isRequird: true }, + // { label: "璇存槑", prop: "number", input: true }, + // { label: "鏃ユ湡", prop: "amount", date: true, isRequird: true }, + // { label: "鎴鏃ユ湡", prop: "price", date: true }, + { label: "鏁伴噺", prop: "amount", inputFloat: true }, + { label: "璁¢噺鍗曚綅", prop: "unit" } + ] + } + }, + // 鎿嶄綔杈撳叆 + inputContent(val, prop, row) { + this.countId = row.countId + this.tableData.map((item) => { + if (item.countId === row.countId) { + item[prop] = val + } + }) + }, + // 鏂板 + addProductClick(value) { + console.log(value) + if (value === "鎿嶄綔") { + console.log(this.tableData) + for (let i = 0; i < this.tableData.length; i++) { + if (this.tableData[i].productName.length === 0) { + this.isNoProduct = false + break + } else { + this.isNoProduct = true + } + } + if (this.isNoProduct) { + this.countId++ + this.tableData.push({ + countId: this.countId, + productId: "", + amount: 0, + unit: "", + productName: "" + }) + } + } 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 + }) + } + } + }, + // 鍒犻櫎 + handleDelClick(scope, value) { + console.log(scope) + if (value === "鎿嶄綔") { + this.tableData.splice(scope.$index, 1) + } else { + this.detailTableData.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 + } + }) + }, + // 瀹㈡埛閫夋嫨 + companyChange(val) { + console.log(val) + this.companyObj = val + }, + // 璐熻矗浜洪�夋嫨 + contacterChange(val) { + this.contacterObj = val + }, + // 楠岃瘉 + async validateClick() { + await updateStatus(this.editConfig.infomation.id).then((res) => { + console.log(res) + this.editConfig.visible = false + if (res.code === 200) { + this.$message.success("楠岃瘉鎴愬姛") + this.$parent.getData() + } + }) + }, + + // 鍙栨秷 + btnCancel(){ + this.$confirm('纭畾鍙栨秷鍚楋紵', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + stateCancel(this.editConfig.infomation.id).then((res) => { + console.log(res) + this.editConfig.visible = false + if (res.code === 200) { + this.$message.success("鍙栨秷璋冩嫧") + this.$parent.getData() + } + }) + this.list.map((item) => { + if (item.label==="宸插彇娑�") { + item.status = "active" + } else { + item.status = "todo" + } + }) + }).catch(() => { + }); + } + } +} +</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: 15px; + } + .el-button { + &:hover { + border: 1px solid #dcdfe6; + color: #333; + } + } + .el-tabs--card > .el-tabs__header { + border-bottom: none; + } + // .el-tabs__item.is-active { + // color: #333; + // background: #f1f3f8; + // } + .el-tabs__item { + height: 30px; + line-height: 30px; + font-size: 13px; + background: #f3f3f3; + } + .el-tabs__header { + margin: 0 0 1px; + } + .bottom{ + .el-form{ + // border-top: 1px solid #EBEEF5; + } + .el-form-item{ + height: 28px; + .el-input { + input{ + height: 28px; + } + } + } + } +} +</style> diff --git a/src/views/reportForm/outboundDetail/index.vue b/src/views/reportForm/outboundDetail/index.vue new file mode 100644 index 0000000..02183b3 --- /dev/null +++ b/src/views/reportForm/outboundDetail/index.vue @@ -0,0 +1,265 @@ +<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"> + <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" :edit-common-config="editConfig" :add-name="this.$route.params.name" /> + </div> +</template> + +<script> +import pageMixin from "@/components/makepager/pager/mixin/pageMixin" +import { getHistory } from "@/api/reportForm/inventoryRwport" +// import { getProductOperatonList } from "@/api/product/product" + +import AddOverviewDialog from "@/views/reportForm/outboundDetail/AddOutboundDetailDialog.vue" +import { getDataByType } from "@/api/data" +export default { + name: "outboundDetail", + props: {}, + components: { AddOverviewDialog }, + mixins: [pageMixin], + computed: {}, + data() { + return { + tableList: {}, + showcol: ["鐘舵��"], + searchOptions: [], + commonDetail: { + visible: false, + title: "鏂板缓", + infomation: {} + }, + editConfig: { + visible: false, + title: "鏂板缓", + infomation: {} + }, + params: {}, + baseOperationTypeList:getDataByType("baseOperationTypeTwo"), + } + }, + created() { + this.setTable() + console.log(this.$route.params) + var paramsList = sessionStorage.getItem("paramsList") + let params = {} + if (paramsList) { + params = JSON.parse(sessionStorage.getItem("paramsList")) + } else { + params = this.$route.params + sessionStorage.setItem("paramsList", JSON.stringify(params)) + } + this.params = params + console.log(this.params,'====111') + this.getData() + }, + // 椤甸潰閿�姣佷箣鍓� + beforeDestroy() { + sessionStorage.removeItem("paramsList") + }, + 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: "date", + isShowColumn: true, + default: true, + // date: true + }, + { + label: "鍗曞彿", + prop: "number", + isShowColumn: true, + default: true + }, + { + label: "浜у搧", + prop: "productName", + isShowColumn: true, + default: true + }, + { + label: "浜у搧缂栫爜", + prop: "productId", + isShowColumn: true, + default: true + }, + { + label: "涓氬姟绫诲瀷", + prop: "baseOperationType", + isShowColumn: true, + default: true, + conversion: true, + getStatus: this.getBaseOperationTypeList + }, + { + label: "浠�", + prop: "fromLocation", + isShowColumn: true, + default: true + }, + { + label: "鑷�", + prop: "toLocation", + isShowColumn: true, + default: true + }, + { + label: "鏁伴噺", + prop: "amount", + isShowColumn: true, + default: true + }, + { + label: "鍗曚綅", + prop: "unit", + isShowColumn: true, + default: true + }, + { + label: "閲嶉噺", + prop: "weight", + isShowColumn: true, + default: true + }, + { + label: "鐘舵��", + prop: "status", + width: 120, + isShowColumn: showcol.includes("鐘舵��"), + default: false, + status: true, + isCallMethod: true, + getCallMethod: this.getStatus + }, + { + label: "瀹屾垚鑰�", + prop: "contactedName", + isShowColumn: showcol.includes("瀹屾垚鑰�"), + default: false + } + ] + return tableColumn + }, + selTableCol(val) { + this.showcol = val + this.tableList.tableColumn = this.setTableColumn(val) + }, + getBaseOperationTypeList(val){ + let string = "--" + if (val) { + for (let i in this.baseOperationTypeList) { + if (this.baseOperationTypeList[i].id == val) { + return this.baseOperationTypeList[i].name + } + } + } + return string + }, + // 搴撳瓨鎶ヨ〃璺宠浆璇锋眰鏁版嵁 + async getData() { + if (this.params.name === "鎶ヨ〃") { + await getHistory({ + keyWord:this.params.keyWord, + produceId:this.params.produceId, + unit:this.params.unit, + productName:this.params.productName, + page: this.pagerOptions.currPage, + pageSize: this.pagerOptions.pageSize + }).then((res) => { + if (res.code === 200) { + res.data.map((item)=>{ + let dateObject = new Date(item.date); + let formattedDateString = dateObject.toISOString().split('T')[0]; + item.date=formattedDateString + }) + this.tableList.tableInfomation = res.data + this.pagerOptions.totalCount = res.total + } + }) + } else { + await getHistory({ + keyWord:this.params.keyWord, + baseOperationType:2, + page: this.pagerOptions.currPage, + pageSize: this.pagerOptions.pageSize + }).then((res) => { + if (res.code === 200) { + res.data.map((item)=>{ + let dateObject = new Date(item.date); + let formattedDateString = dateObject.toISOString().split('T')[0]; + item.date=formattedDateString + }) + this.tableList.tableInfomation = res.data?res.data:[] + this.pagerOptions.totalCount = res.total + } + }) + } + }, + // 鎼滅储 + getList(val) { + this.params.keyWord=val; + this.getData() + }, + // 琛岀偣鍑� + tableRowClick(row) { + console.log(row,"鐪嬬湅row") + this.editConfig.visible = true + this.editConfig.title = "鏌ョ湅" + this.editConfig.infomation = { ...row } + }, + // 鏂板缓 + addBtnClick() { + // this.editConfig.visible = true + this.editConfig.title = "鏂板缓" + }, + // 鐘舵�� + getStatus(val) { + return val === 1 ? "鑽夌" : val === 3 ? "灏辩华" : "瀹屾垚" + } + } +} +</script> + +<!-- Add "scoped" attribute to limit CSS to this component only --> +<style lang="scss" scoped></style> -- Gitblit v1.8.0