From 1ae0722c4a8022961c48c34588823fdd23698e44 Mon Sep 17 00:00:00 2001 From: haoxuan <haoxuan> Date: 星期三, 20 九月 2023 19:17:26 +0800 Subject: [PATCH] 仓库管理 仓库+业务类型 接口列表 添加编辑 删除 联调 业务类型缺少字段 --- src/views/warehouseManage/bussinessType/AddBussinessType.vue | 185 ++++++++-- src/components/makepager/TableCommonView.vue | 4 src/views/warehouseManage/warehouse/index.vue | 51 +- src/api/warehouseManage/warehouse.js | 63 +++ src/views/productManage/productCategory/AddProductCategoryDialog.vue | 217 ++++++++++--- src/api/data.js | 138 ++++++++ src/api/product/productCategory.js | 40 ++ src/views/warehouseManage/bussinessType/index.vue | 56 ++- src/views/productManage/productCategory/index.vue | 48 +- src/views/warehouseManage/warehouse/AddDialog.vue | 131 ++++--- 10 files changed, 716 insertions(+), 217 deletions(-) diff --git a/src/api/data.js b/src/api/data.js index baf311a..f98678f 100644 --- a/src/api/data.js +++ b/src/api/data.js @@ -17,9 +17,145 @@ id: 4 } ] - +// 浠撳簱 +// 鍏ュ悜杩愯緭 +const inboundTransportation=[ + { + name:'鐩存帴鎺ユ敹浜у搧锛�1姝ユ敹璐э級', + id:1, + disabled:false, + }, + { + name:'鎺ュ埌浜у搧鍒版敹鏂欏尯锛屽啀鍏ュ簱锛�2姝ユ敹璐э級', + id:2, + disabled:true, + }, + { + name:'鎺ユ敹浜у搧鍒版敹鏂欏尯锛屾楠岋紝鐒跺悗鍏ュ簱锛�3姝ユ敹璐э級', + id:3, + disabled:true, + } +] +// 鍑哄簱杩愯緭 +const outboundTransportation=[ + { + name:'鐩存帴鍑哄簱锛�1姝ワ級', + id:1, + disabled:false, + }, + { + name:'閫佸埌寰呭嚭搴撳尯锛屽啀閫佽揣锛�2姝ュ彂璐э級', + id:2, + disabled:true, + }, + { + name:'鍖呰浜у搧锛屽彂閫佸埌寰呭嚭搴撳尯锛屽啀閫佽揣锛�3姝ュ彂璐э級', + id:3, + disabled:true, + } +] +// 涓氬姟绫诲瀷 +// 浣滀笟绫诲瀷 +const baseOperationType=[ + { + name: "鏀惰揣", + id: 1 + }, + { + name: "鍙戣揣", + id: 2 + }, + { + name: "鍐呴儴璋冩嫧", + id: 3 + }, +] +//鍒涘缓娆犲崟 +const createBackorder=[ + { + name: "鎻愰棶", + id: 1 + }, + { + name: "鎬绘槸", + id: 2 + }, + { + name: "浠庝笉", + id: 3 + }, +] +//淇濈暀鏂瑰紡 鍦ㄩ瀹氭棩鏈熶箣鍓�=3 +const reservationMethod=[ + { + name: "纭鏃�", + id: 1 + }, + { + name: "鎵嬪伐", + id: 2 + } +] +// 浜у搧绫诲埆 +// 寮哄埗涓嬫灦绛栫暐 +const forceRemovalStrategy=[ + { + name: "First In First Out (FIFO)", + id: 1 + }, + { + name: "Last In First Out (LIFO)", + id: 2 + }, + { + name: "Closest Location", + id: 3 + }, +] +//鎴愭湰鏂规硶 +const costingMethod=[ + { + name: "鏍囧噯浠锋牸", + id: 1 + }, + { + name: "鍏堣繘鍏堝嚭 (FIFO)", + id: 2 + }, + { + name: "骞冲潎鎴愭湰锛圓VCO锛�", + id: 3 + }, +] +// 搴撳瓨璁′环 +const inventoryValuation=[ + { + name: "鎵嬪姩", + id: 1 + }, + { + name: "鑷姩", + id: 2 + } +] export const getDataByType = (type) => { if (type == "purchaseStatus") { return purchaseStatus + }else if(type=='inboundTransportation'){ + return inboundTransportation + }else if(type=='outboundTransportation'){ + return outboundTransportation + }else if(type=='baseOperationType'){ + return baseOperationType; + }else if(type=='createBackorder'){ + return createBackorder; + }else if(type=='reservationMethod'){ + return reservationMethod; + }else if(type=='forceRemovalStrategy'){ + return forceRemovalStrategy + }else if(type=='costingMethod'){ + return costingMethod + }else if(type=='inventoryValuation'){ + return inventoryValuation } } diff --git a/src/api/product/productCategory.js b/src/api/product/productCategory.js new file mode 100644 index 0000000..87421a2 --- /dev/null +++ b/src/api/product/productCategory.js @@ -0,0 +1,40 @@ +import request from "@/common/untils/request.js" +import axios from "axios" +// 浜у搧绫诲瀷鍒楄〃 +export function getProductCategoryList(data) { + return request({ + url: "/api-wms/v1/product/getProductCategoryList", + method: "post", + data + }) +} +// 浜у搧绫诲瀷璇︽儏 +export const getProductCategoryDetails = async (data) => { + return await axios.get(`/api-wms/v1/product/getProductCategoryDetails/`+data.id, { + + }) +} +// 鍒涘缓浜у搧绫诲瀷 +export function addProductCategory(data) { + return request({ + url: "/api-wms/v1/product/addProductCategory", + method: "post", + data + }) +} +// 鍒犻櫎浜у搧绫诲瀷 +export function deleteProductCategory(data) { + return request({ + url: "/api-wms/v1/product/deleteProductCategory/"+data.id, + method: "delete", + data + }) +} +// 鏇存柊浜у搧绫诲瀷 +export function updateProductCategory(data) { + return request({ + url: "/api-wms/v1/product/updateProductCategory", + method: "post", + data + }) +} \ No newline at end of file diff --git a/src/api/warehouseManage/warehouse.js b/src/api/warehouseManage/warehouse.js new file mode 100644 index 0000000..b68f3f9 --- /dev/null +++ b/src/api/warehouseManage/warehouse.js @@ -0,0 +1,63 @@ +import request from "@/common/untils/request.js" +import axios from "axios" + +// 浠撳簱鍒楄〃 +export const getWarehouseList = async (data) => { + return await axios.get(`/api-wms/v1/warehouse/warehouse`, { + params: data + }) +} +// 鍒涘缓浠撳簱 +export function addWarehouse(data) { + return request({ + url: "/api-wms/v1/warehouse/warehouse", + method: "post", + data + }) +} +// 鍒犻櫎浠撳簱 +export function deleteWarehouse(data) { + return request({ + url: "/api-wms/v1/warehouse/warehouse/"+data.id, + method: "delete", + data + }) +} +// 鏇存柊浠撳簱 +export function updateWarehouse(data) { + return request({ + url: "/api-wms/v1/warehouse/warehouse/"+data.id, + method: "put", + data + }) +} +// 涓氬姟绫诲瀷 鍒楄〃 +export const getOperationTypeList = async (data) => { + return await axios.get(`/api-wms/v1/operationType/operationType`, { + params: data + }) +} +// 鍒涘缓涓氬姟绫诲瀷 +export function addOperationType(data) { + return request({ + url: "/api-wms/v1/operationType/operationType", + method: "post", + data + }) +} +// 鍒犻櫎涓氬姟绫诲瀷 +export function deleteOperationType(data) { + return request({ + url: "/api-wms/v1/operationType/operationType/"+data.id, + method: "delete", + data + }) +} +// 鏇存柊涓氬姟绫诲瀷 +export function updateOperationType(data) { + return request({ + url: "/api-wms/v1/operationType/operationType/"+data.id, + method: "put", + data + }) +} diff --git a/src/components/makepager/TableCommonView.vue b/src/components/makepager/TableCommonView.vue index 10a0bca..5133ded 100644 --- a/src/components/makepager/TableCommonView.vue +++ b/src/components/makepager/TableCommonView.vue @@ -68,9 +68,13 @@ @click="selCommonClick(scope.row)" >{{ scope.row[item.prop] }}</span > + <span v-else-if="item.propType=='mulitple'"> + {{ scope.row[item.prop][item.propTwo]?scope.row[item.prop][item.propTwo]:'--' }} + </span> <span :class="item.className ? item.className : ''" v-else>{{ scope.row[item.prop] ? scope.row[item.prop] : scope.row[item.prop] === 0 ? scope.row[item.prop] : "--" }}</span> + </template> </el-table-column> <slot name="tableButton" /> diff --git a/src/views/productManage/productCategory/AddProductCategoryDialog.vue b/src/views/productManage/productCategory/AddProductCategoryDialog.vue index 32c5b96..a73afb8 100644 --- a/src/views/productManage/productCategory/AddProductCategoryDialog.vue +++ b/src/views/productManage/productCategory/AddProductCategoryDialog.vue @@ -15,10 +15,22 @@ <span>鎵撳嵃</span> </span> --> <span class="btn" style="margin-left: 15px"> - <i class="el-icon-s-tools"></i> - <span>鍔ㄤ綔</span> + <el-button + plain + size="mini" + style="margin-left: 15px" + @click="deleteClick" + >鍒犻櫎</el-button + > </span> - <el-button v-if="showEdit" plain size="mini" style="margin-left: 15px" @click="editClick">缂栬緫</el-button> + <el-button + v-if="showEdit" + plain + size="mini" + style="margin-left: 15px" + @click="editClick" + >缂栬緫</el-button + > </div> </div> <!-- 鍐呭 --> @@ -37,9 +49,9 @@ <el-row> <el-col :span="24"> <div style="margin-left: 20px">绫诲埆</div> - <el-form-item label="" prop="client_name" label-width="20px"> + <el-form-item label="" prop="name" label-width="20px"> <el-input - v-model="editConfig.infomation.client_name" + v-model="editConfig.infomation.name" placeholder="" :disabled="!showFooter" style="width: 85%" @@ -47,15 +59,24 @@ </el-form-item> </el-col> <el-col :span="24"> - <el-form-item label="涓婄骇鍝佺被" prop="client_name" style="margin-left: 20px"> + <el-form-item + label="涓婄骇鍝佺被" + prop="parentId" + style="margin-left: 20px" + > <el-select - v-model="editConfig.infomation.memberId" + v-model="editConfig.infomation.parentId" placeholder="璇烽�夋嫨" size="mini" style="width: 45%" :disabled="!showFooter" > - <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :value="item.id"> + <el-option + v-for="item in productCategoryList" + :key="item.id" + :label="item.name" + :value="item.id" + > </el-option> </el-select> </el-form-item> @@ -66,7 +87,7 @@ <div class="purchase-view"> <div class="left"> <div class="second-label">鐗╂祦</div> - <el-form-item label="璺嚎" prop="client_name" style="margin-left: 20px"> + <!-- <el-form-item label="璺嚎" prop="client_name" style="margin-left: 20px"> <el-select v-model="editConfig.infomation.memberId" multiple @@ -78,46 +99,70 @@ <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" style="margin-left: 20px"> + </el-form-item> --> + <el-form-item + label="寮哄埗涓嬫灦绛栫暐" + prop="forceRemovalStrategy" + style="margin-left: 20px" + > <el-select - v-model="editConfig.infomation.memberId" - multiple + v-model="editConfig.infomation.forceRemovalStrategy" 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 + v-for="item in forceRemovalStrategyList" + :key="item.id" + :label="item.name" + :value="item.id" + > </el-option> </el-select> </el-form-item> </div> <div class="right"> <div class="second-label">搴撳瓨璁′环</div> - <el-form-item label="鎴愭湰鏂规硶" prop="client_name" style="margin-left: 20px"> + <el-form-item + label="鎴愭湰鏂规硶" + prop="costingMethod" + style="margin-left: 20px" + > <el-select - v-model="editConfig.infomation.memberId" - multiple + v-model="editConfig.infomation.costingMethod" 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 + v-for="item in costingMethodList" + :key="item.id" + :label="item.name" + :value="item.id" + > </el-option> </el-select> </el-form-item> - <el-form-item label="搴撳瓨璁′环" prop="client_name" style="margin-left: 20px"> + <el-form-item + label="搴撳瓨璁′环" + prop="inventoryValuation" + style="margin-left: 20px" + > <el-select - v-model="editConfig.infomation.memberId" - multiple + v-model="editConfig.infomation.inventoryValuation" 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 + v-for="item in inventoryValuationList" + :key="item.id" + :label="item.name" + :value="item.id" + > </el-option> </el-select> </el-form-item> @@ -129,14 +174,24 @@ <!-- 灏� --> <div v-if="showFooter" 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')">淇濆瓨</el-button> - <el-button size="small" @click="editConfig.visible = false">鍙栨秷</el-button> + <el-button type="primary" size="small" @click="saveClick('form')" + >淇濆瓨</el-button + > + <el-button size="small" @click="editConfig.visible = false" + >鍙栨秷</el-button + > </div> </el-dialog> </div> </template> <script> +import { + addProductCategory, + updateProductCategory, + deleteProductCategory, +} from "@/api/product/productCategory"; +import { getDataByType } from "@/api/data"; export default { name: "AddProductCategoryDialog", props: { @@ -146,10 +201,16 @@ return { visible: false, title: "鏂板缓", - infomation: { type: [] } - } - } - } + infomation: { type: [] }, + }; + }, + }, + productCategoryList: { + type: Array, + default: () => { + return []; + }, + }, }, components: {}, computed: {}, @@ -158,55 +219,111 @@ 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" }] + name: [{ required: true, message: "璇疯緭鍏�", trigger: "change" }], }, + forceRemovalStrategyList: getDataByType("forceRemovalStrategy"), + // 鎴愭湰鏂规硶 + costingMethodList: getDataByType("costingMethod"), + // 搴撳瓨璁′环 + inventoryValuationList: getDataByType("inventoryValuation"), memberOptions: [], paymentTypeListOptions: [], showButton: true, showEdit: false, // 鏄惁鏄剧ず缂栬緫鎸夐挳 isDelClick: false, // 鍒犻櫎鎸夐挳鏄惁鍙偣鍑� - showFooter: false // 鏄惁鏄剧ず鍙栨秷淇濆瓨 - } + showFooter: false, // 鏄惁鏄剧ず鍙栨秷淇濆瓨 + }; }, created() { - this.setBottonView() + this.setBottonView(); }, methods: { // 璁剧疆鍒犻櫎/鎵撳嵃/缂栬緫鏄惁鏄剧ず setBottonView() { if (this.editConfig.title === "鏂板缓") { - this.showButton = false - this.showEdit = false - this.showFooter = true + this.showButton = false; + this.showEdit = false; + this.showFooter = true; } else { - this.showEdit = true - this.showFooter = false + this.showEdit = true; + this.showFooter = false; } }, // 鍏抽棴 handleClose() { - this.editConfig.visible = false + this.editConfig.visible = false; + }, + // 鍒櫎 + deleteClick() { + let data = JSON.parse(JSON.stringify(this.editConfig.infomation)); + deleteProductCategory({ id: data.id }).then((res) => { + if (res.code === 200) { + this.editConfig.visible = false; + this.$message.success("鍒櫎鎴愬姛"); + this.$emit("refresh"); + } + }); }, // 缂栬緫 editClick() { - this.showEdit = false - this.showButton = false - this.showFooter = true + this.showEdit = false; + this.showButton = false; + this.showFooter = true; + }, + saveParams() { + let data = JSON.parse(JSON.stringify(this.editConfig.infomation)); + + let params = { + costingMethod: data.costingMethod, + forceRemovalStrategy: data.forceRemovalStrategy, + inventoryValuation: data.inventoryValuation, + name: data.name, + parentId: data.parentId, + }; + if (data.id) { + params.id = data.id; + } + return params; }, // 淇濆瓨 - saveClick() {}, + saveClick(formName) { + this.$refs[formName].validate((valid) => { + if (valid) { + const params = this.saveParams(); + if (this.editConfig.title === "鏂板缓") { + addProductCategory(params).then((res) => { + if (res.code === 200) { + this.editConfig.visible = false; + this.$message.success("娣诲姞鎴愬姛"); + this.$emit("refresh"); + } + }); + } else { + updateProductCategory(params).then((res) => { + if (res.code === 200) { + this.editConfig.visible = false; + this.$message.success("缂栬緫鎴愬姛"); + this.$emit("refresh"); + } + }); + } + } else { + console.log("error submit"); + return false; + } + }); + }, // 鍒犻櫎 delClick() {}, // 浜у搧 productClick() { - this.$router.push({ path: "/productManage/productList", query: { name: "浜у搧" } }) - } - } -} + this.$router.push({ + path: "/productManage/productList", + query: { name: "浜у搧" }, + }); + }, + }, +}; </script> <!-- Add "scoped" attribute to limit CSS to this component only --> diff --git a/src/views/productManage/productCategory/index.vue b/src/views/productManage/productCategory/index.vue index 704747e..d6fe181 100644 --- a/src/views/productManage/productCategory/index.vue +++ b/src/views/productManage/productCategory/index.vue @@ -23,14 +23,13 @@ </div> </div> <!-- 鏂板缓/缂栬緫 --> - <AddProductCategoryDialog v-if="editConfig.visible" :edit-common-config="editConfig" /> + <AddProductCategoryDialog v-if="editConfig.visible" :productCategoryList="tableList.tableInfomation" @refresh="refresh" :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 { getProductCategoryList } from "@/api/product/productCategory" import AddProductCategoryDialog from "@/views/productManage/productCategory/AddProductCategoryDialog" export default { @@ -62,7 +61,7 @@ tableColumn: [ { label: "浜у搧绫诲瀷", - prop: "id", + prop: "name", isShowColumn: true, default: true } @@ -70,41 +69,46 @@ } }, // 璇锋眰鏁版嵁 - async getData(val, content) { - await getProductList({ - [val]: content, + async getData() { + await getProductCategoryList({ + keyword: this.keyword, 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 + if (res.code === 200) { + const list = res.data?res.data:[] + this.tableList.tableInfomation = list + this.pagerOptions.totalCount = res.total } }) }, + refresh(){ + this.pagerOptions.currPage=1 + this.getData() + }, // 鎼滅储 getList(val) { - console.log(val) + this.keyword=val; + this.pagerOptions.currPage=1 + this.getData() }, // 琛岀偣鍑� tableRowClick(row) { - console.log(row) - this.editConfig.visible = true this.editConfig.title = "缂栬緫" this.editConfig.infomation = { ...row } + this.editConfig.visible = true }, // 鏂板缓 addBtnClick() { - this.editConfig.visible = true this.editConfig.title = "鏂板缓" + this.editConfig.infomation={ + costingMethod:null, + forceRemovalStrategy:null, + inventoryValuation:null, + name:'', + parentId:null, + } + this.editConfig.visible = true } } } diff --git a/src/views/warehouseManage/bussinessType/AddBussinessType.vue b/src/views/warehouseManage/bussinessType/AddBussinessType.vue index 102d20b..4d907a1 100644 --- a/src/views/warehouseManage/bussinessType/AddBussinessType.vue +++ b/src/views/warehouseManage/bussinessType/AddBussinessType.vue @@ -49,17 +49,18 @@ </el-row> <div class="purchase-view"> <div class="left" style="margin-left: 20px"> - <el-form-item label="浣滀笟绫诲瀷" prop="operate_type" :label-width="labelWidth"> + <el-form-item label="浣滀笟绫诲瀷" prop="baseOperationType" :label-width="labelWidth"> <el-select - v-model="editConfig.infomation.operate_type" + v-model="editConfig.infomation.baseOperationType" placeholder="璇烽�夋嫨" size="mini" style="width: 85%" :disabled="!showFooter" > - <el-option v-for="item in operateTypeOptions" :key="item" :label="item" :value="item"> </el-option> + <el-option v-for="item in baseOperationTypeList" :key="item.id" :label="item.name" :value="item.id"> </el-option> </el-select> </el-form-item> + <el-form-item label="搴忓彿鍓嶇紑" prop="client_name" :label-width="labelWidth"> <el-input v-model="editConfig.infomation.client_name" @@ -68,37 +69,41 @@ style="width: 85%" ></el-input> </el-form-item> - <el-form-item label="浠撳簱" prop="client_name" :label-width="labelWidth"> + <el-form-item label="浠撳簱" prop="warehouseId" :label-width="labelWidth"> <el-select - v-model="editConfig.infomation.memberId" - multiple + v-model="editConfig.infomation.warehouseId" placeholder="璇烽�夋嫨" size="mini" style="width: 85%" :disabled="!showFooter" > - <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :value="item.id"> + <el-option v-for="item in warehouseList" :key="item.id" :label="item.name" :value="item.id"> </el-option> </el-select> </el-form-item> <el-form-item - v-if="editConfig.infomation.operate_type !== '鏀惰揣'" + v-if="editConfig.infomation.baseOperationType !== 1" label="淇濈暀鏂瑰紡" - prop="resource" + prop="reservationMethod" :label-width="labelWidth" > <el-radio-group - v-model="editConfig.infomation.resource" + v-model="editConfig.infomation.reservationMethod" @input="reserveMethodClick" :disabled="!showFooter" > - <div style="margin-top: 8px"><el-radio label="纭鏃�"></el-radio></div> - <div style="margin-top: 10px"><el-radio label="鎵嬪伐"></el-radio></div> - <div style="margin-top: 10px"><el-radio label="鍦ㄩ瀹氭棩鏈熶箣鍓�"></el-radio></div> + <div style="margin-top: 8px"> + <el-radio v-for="item in reservationMethodList" + :key="item.id" + :value="item.id" + :label="item.name" + > + </el-radio> + </div> </el-radio-group> </el-form-item> - <el-form-item - v-if="editConfig.infomation.operate_type !== '鏀惰揣'" + <!-- <el-form-item + v-if="editConfig.infomation.resource == '鍦ㄩ瀹氭棩鏈熶箣鍓�'" label="鍦ㄩ瀹氭棩鏈熷墠棰勫畾" prop="client_name" :label-width="labelWidth" @@ -109,44 +114,44 @@ :disabled="!showFooter" style="width: 85%" ></el-input> - </el-form-item> + </el-form-item> --> </div> <div class="right"> - <el-form-item label="閫�璐х被鍨�" prop="client_name"> + + <el-form-item label="閫�璐х被鍨�" prop="returnOperationTypeID"> <el-select - v-model="editConfig.infomation.memberId" - multiple + v-model="editConfig.infomation.returnOperationTypeID" + v-if="editConfig.infomation.baseOperationType" placeholder="璇烽�夋嫨" size="mini" style="width: 85%" :disabled="!showFooter" > - <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :value="item.id"> + <el-option v-for="item in returnOperationTypeList" :key="item.id" :label="item.username" :value="item.id"> </el-option> </el-select> </el-form-item> - <el-form-item label="鍒涘缓娆犲崟" prop="client_name"> + <el-form-item label="鍒涘缓娆犲崟" prop="createBackorder"> <el-select - v-model="editConfig.infomation.memberId" - multiple + v-model="editConfig.infomation.createBackorder" placeholder="璇烽�夋嫨" size="mini" style="width: 85%" :disabled="!showFooter" > - <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :value="item.id"> + <el-option v-for="item in createBackorderList" :key="item.id" :label="item.name" :value="item.id"> </el-option> </el-select> </el-form-item> - <el-form-item label="鏄剧ず浣滀笟璇︽儏" prop="showDetail"> - <el-checkbox v-model="editConfig.infomation.showDetail"></el-checkbox> + <el-form-item label="鏄剧ず浣滀笟璇︽儏" prop="showOperations"> + <el-checkbox v-model="editConfig.infomation.showOperations"></el-checkbox> </el-form-item> <el-form-item - v-if="editConfig.infomation.operate_type === '鏀惰揣'" + v-if="editConfig.infomation.baseOperationType === 1" label="棰勫~鍐欎綔涓氳鎯�" - prop="showDetail" + prop="showOperations" > - <el-checkbox v-model="editConfig.infomation.showDetail"></el-checkbox> + <el-checkbox v-model="editConfig.infomation.showOperations"></el-checkbox> </el-form-item> </div> </div> @@ -158,29 +163,27 @@ <div class="purchase-view"> <div class="left"> <div class="second-label">浣嶇疆</div> - <el-form-item label="榛樿婧愪綅缃�" prop="client_name" style="margin-left: 20px"> + <el-form-item label="榛樿婧愪綅缃�" prop="defaultLocationSrcId" style="margin-left: 20px"> <el-select - v-model="editConfig.infomation.memberId" - multiple + v-model="editConfig.infomation.defaultLocationSrcId" placeholder="璇烽�夋嫨" size="mini" style="width: 85%" :disabled="!showFooter" > - <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :value="item.id"> + <el-option v-for="item in locationList" :key="item.id" :label="item.username" :value="item.id"> </el-option> </el-select> </el-form-item> - <el-form-item label="榛樿鐩殑浣嶇疆" prop="client_name" style="margin-left: 20px"> + <el-form-item label="榛樿鐩殑浣嶇疆" prop="defaultLocationDestId" style="margin-left: 20px"> <el-select - v-model="editConfig.infomation.memberId" - multiple + v-model="editConfig.infomation.defaultLocationDestId" placeholder="璇烽�夋嫨" size="mini" style="width: 85%" :disabled="!showFooter" > - <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :value="item.id"> + <el-option v-for="item in locationList" :key="item.id" :label="item.username" :value="item.id"> </el-option> </el-select> </el-form-item> @@ -201,6 +204,8 @@ </template> <script> +import { addOperationType,updateOperationType,getWarehouseList,deleteOperationType} from "@/api/warehouseManage/warehouse" +import { getDataByType } from "@/api/data"; export default { name: "AddBussinessType", props: { @@ -222,25 +227,50 @@ 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" }] + // 鍏ュ簱绫诲瀷 + client_name: [{ required: true, message: "璇疯緭鍏�", trigger: "change" }], + // 鍓嶇紑 + number: [{ required: true, message: "璇疯緭鍏�", trigger: "change" }], + baseOperationType: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }], }, - memberOptions: [], - operateTypeOptions: ["鏀惰揣", "鍙戣揣", "鍐呴儴璋冩嫧"], // 鎿嶄綔绫诲瀷 + // 浣嶇疆 + locationList: [], + warehouseList:[], + // 閫�璐х被鍨� + returnOperationTypeList:[], + // 浣滀笟绫诲瀷 + baseOperationTypeList:getDataByType('baseOperationType'), + // 鍒涘缓娆犲崟 + createBackorderList:getDataByType('createBackorder'), + // 淇濈暀鏂瑰紡 + reservationMethodList:getDataByType('reservationMethod'), showButton: true, showEdit: false, // 鏄惁鏄剧ず缂栬緫鎸夐挳 isDelClick: false, // 鍒犻櫎鎸夐挳鏄惁鍙偣鍑� showFooter: false, // 鏄惁鏄剧ず鍙栨秷淇濆瓨 - labelWidth: "80px" + labelWidth: "90px" } }, created() { + this.getList() this.setBottonView() }, methods: { + // 浠撳簱 + async getWarehouse() { + await getWarehouseList({ + keyword: '', + page: 0, + pageSize: 0 + }).then((res) => { + if (res.data.code == 200) { + this.warehouseList = res.data.data?res.data.data:[] + } + }) + }, + getList(){ + this.getWarehouse() + }, // 璁剧疆鍒犻櫎/鎵撳嵃/缂栬緫鏄惁鏄剧ず setBottonView() { if (this.editConfig.title === "鏂板缓") { @@ -256,14 +286,77 @@ handleClose() { this.editConfig.visible = false }, + // 鍒櫎 + deleteClick() { + let data = JSON.parse(JSON.stringify(this.editConfig.infomation)); + deleteOperationType({ id: data.id }).then((res) => { + if (res.code === 200) { + this.editConfig.visible = false; + this.$message.success("鍒櫎鎴愬姛"); + this.$emit("refresh"); + } + }); + }, // 缂栬緫 editClick() { this.showEdit = false this.showButton = false this.showFooter = true }, + saveParams() { + let data =JSON.parse(JSON.stringify(this.editConfig.infomation)); + + let params = { + // 浣滀笟绫诲瀷 + baseOperationType:data.baseOperationType, + // 閫�璐х被鍨� + returnOperationTypeID:data.returnOperationTypeID, + // 鍒涘缓娆犲崟 + createBackorder:data.createBackorder, + // 浠撳簱 + warehouseId:data.warehouseId, + // 鏄剧ず浣滀笟璇︽儏 + showOperations:data.showOperations, + // 淇濈暀鏂瑰紡 + reservationMethod:data.reservationMethod, + // 榛樿鍘熶綅缃� + defaultLocationSrcId:data.defaultLocationSrcId, + // 榛樿鐩爣浣嶇疆 + defaultLocationDestId:data.defaultLocationDestId, + } + if(data.id){ + params.id=data.id + } + return params; + }, // 淇濆瓨 - saveClick() {}, + saveClick(formName) { + this.$refs[formName].validate((valid) => { + if (valid) { + const params = this.saveParams(); + if (this.editConfig.title === "鏂板缓") { + addOperationType(params).then((res) => { + if (res.code === 200) { + this.editConfig.visible = false; + this.$message.success("娣诲姞鎴愬姛"); + this.$emit('refresh') + } + }); + } else { + updateOperationType(params).then((res) => { + if (res.code === 200) { + this.editConfig.visible = false; + this.$message.success("缂栬緫鎴愬姛"); + this.$emit('refresh') + } + }); + } + }else { + console.log("error submit"); + return false; + } + }); + }, // 鍒犻櫎 delClick() {}, // 浜у搧 diff --git a/src/views/warehouseManage/bussinessType/index.vue b/src/views/warehouseManage/bussinessType/index.vue index 8f3b512..d81f3dc 100644 --- a/src/views/warehouseManage/bussinessType/index.vue +++ b/src/views/warehouseManage/bussinessType/index.vue @@ -23,13 +23,13 @@ </div> </div> <!-- 鏂板缓/缂栬緫 --> - <AddBussinessType v-if="editConfig.visible" :edit-common-config="editConfig" /> + <AddBussinessType v-if="editConfig.visible" @refresh="refresh" :edit-common-config="editConfig" /> </div> </template> <script> import pageMixin from "@/components/makepager/pager/mixin/pageMixin" -import { getProductList } from "@/api/product/product" +import { getOperationTypeList } from "@/api/warehouseManage/warehouse" // import DetailProduct from "@/views/productManage/product/DetailProduct" import AddBussinessType from "@/views/warehouseManage/bussinessType/AddBussinessType" @@ -42,7 +42,7 @@ data() { return { tableList: {}, - searchOptions: [], + keyword:'', editConfig: { visible: false, title: "鏂板缓", @@ -83,7 +83,9 @@ }, { label: "浠撳簱", - prop: "deviceName", + propType:'mulitple', + propTwo:'name', + prop: "warehouse", isShowColumn: true, default: true } @@ -95,41 +97,57 @@ this.tableList.tableColumn = this.setTableColumn(val) }, // 璇锋眰鏁版嵁 - async getData(val, content) { - await getProductList({ - [val]: content, + async getData() { + await getOperationTypeList({ + keyword: this.keyword, 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" - } - }) + const list = res.data.data this.tableList.tableInfomation = list || [] this.pagerOptions.totalCount = res.data.data.total } }) }, + refresh(){ + this.pagerOptions.currPage=1 + this.getData() + }, // 鎼滅储 getList(val) { - console.log(val) + this.keyword=val; + this.pagerOptions.currPage=1 + this.getData() }, // 琛岀偣鍑� tableRowClick(row) { - console.log(row) - this.editConfig.visible = true this.editConfig.title = "缂栬緫" this.editConfig.infomation = { ...row } + this.editConfig.visible = true }, // 鏂板缓 addBtnClick() { - this.editConfig.visible = true this.editConfig.title = "鏂板缓" + this.editConfig.infomation={ + // 浣滀笟绫诲瀷 + baseOperationType:null, + // 閫�璐х被鍨� + returnOperationTypeID:null, + // 鍒涘缓娆犲崟 + createBackorder:null, + // 浠撳簱 + warehouseId:null, + // 鏄剧ず浣滀笟璇︽儏 + showOperations:null, + // 淇濈暀鏂瑰紡 + reservationMethod:null, + // 榛樿鍘熶綅缃� + defaultLocationSrcId:null, + // 榛樿鐩爣浣嶇疆 + defaultLocationDestId:null, + } + this.editConfig.visible = true } } } diff --git a/src/views/warehouseManage/warehouse/AddDialog.vue b/src/views/warehouseManage/warehouse/AddDialog.vue index b3dd77e..662ca4c 100644 --- a/src/views/warehouseManage/warehouse/AddDialog.vue +++ b/src/views/warehouseManage/warehouse/AddDialog.vue @@ -15,8 +15,7 @@ <span>鎵撳嵃</span> </span> <span class="btn" style="margin-left: 15px"> - <i class="el-icon-s-tools"></i> - <span>鍔ㄤ綔</span> + <el-button plain size="mini" style="margin-left: 15px" @click="deleteClick">鍒犻櫎</el-button> </span> <el-button v-if="showEdit" plain size="mini" style="margin-left: 15px" @click="editClick">缂栬緫</el-button> </div> @@ -40,29 +39,29 @@ <el-row> <el-col :span="24" class="line_height_30px"> - <el-form-item label="浠撳簱" prop="client_name"> + <el-form-item label="浠撳簱" prop="name"> <el-input :disabled="showEdit" - v-model="editConfig.infomation.inspectionScale" + v-model="editConfig.infomation.name" placeholder="璇疯緭鍏�" ></el-input> </el-form-item> </el-col> <el-col :span="11"> - <el-form-item label="缂╁啓" prop="client_name"> + <el-form-item label="缂╁啓" prop="code"> <el-input :disabled="showEdit" - v-model="editConfig.infomation.inspectionScale" + v-model="editConfig.infomation.code" placeholder="璇疯緭鍏�" ></el-input> </el-form-item> </el-col> <el-col :span="2"> </el-col> <el-col :span="11"> - <el-form-item label="鍦板潃" prop="client_name"> + <el-form-item label="鍦板潃" prop="address"> <el-input :disabled="showEdit" - v-model="editConfig.infomation.inspectionScale" + v-model="editConfig.infomation.address" placeholder="璇疯緭鍏�" ></el-input> </el-form-item> @@ -73,27 +72,27 @@ <el-tabs v-model="activeName" type="card"> <el-tab-pane label="浠撳簱閰嶇疆" name="first"> <div class="second-label">杩愯緭</div> - <el-form-item label="鍏ュ悜杩愯緭" prop="desc"> + <el-form-item label="鍏ュ悜杩愯緭" prop="inboundTransportation"> <el-radio-group :disabled="showEdit" - v-model="editConfig.value1" + v-model="editConfig.infomation.inboundTransportation" > <el-radio style="width:100%;" class="line_height_30px" - v-for="(item,index) in wareList" - :key='index' + v-for="(item) in inboundTransportationList" + :key='item.id' :disabled="item.disabled" :label="item.id" >{{item.name}}</el-radio> </el-radio-group> </el-form-item> - <el-form-item label="鍑哄簱杩愯緭" prop="desc"> + <el-form-item label="鍑哄簱杩愯緭" prop="outboundTransportation"> <el-radio-group :disabled="showEdit" - v-model="editConfig.value2" + v-model="editConfig.infomation.outboundTransportation" > <el-radio style="width:100%;" class="line_height_30px" - v-for="(item,index) in wareoutList" - :key='index' + v-for="(item) in outboundTransportationList" + :key='item.id' :disabled="item.disabled" :label="item.id" >{{item.name}}</el-radio> @@ -114,6 +113,8 @@ </template> <script> +import { addWarehouse,updateWarehouse,deleteWarehouse } from "@/api/warehouseManage/warehouse" +import { getDataByType } from "@/api/data"; export default { name: "AddScrapDialog", props: { @@ -136,51 +137,16 @@ dialogWidth: "50%", editConfig: this.editCommonConfig, rules: { - - 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" }] + name: [{ required: true, message: "璇疯緭鍏�", trigger: "change" }], + code: [{ required: true, message: "璇疯緭鍏�", trigger: "change" }], }, memberOptions: [], paymentTypeListOptions: [], showEdit: false, // 鏄惁鏄剧ず缂栬緫鎸夐挳 showFooter: false, // 鏄惁鏄剧ず鍙栨秷淇濆瓨 currentState: "todo", // 褰撳墠鐘舵�� - wareList:[ - { - name:'鐩存帴鎺ユ敹浜у搧锛�1姝ユ敹璐э級', - id:1, - disabled:false, - }, - { - name:'鎺ュ埌浜у搧鍒版敹鏂欏尯锛屽啀鍏ュ簱锛�2姝ユ敹璐э級', - id:2, - disabled:true, - }, - { - name:'鎺ユ敹浜у搧鍒版敹鏂欏尯锛屾楠岋紝鐒跺悗鍏ュ簱锛�3姝ユ敹璐э級', - id:3, - disabled:true, - } - ], - wareoutList:[ - { - name:'鐩存帴鍑哄簱锛�1姝ワ級', - id:1, - disabled:false, - }, - { - name:'閫佸埌寰呭嚭搴撳尯锛屽啀閫佽揣锛�2姝ュ彂璐э級', - id:2, - disabled:true, - }, - { - name:'鍖呰浜у搧锛屽彂閫佸埌寰呭嚭搴撳尯锛屽啀閫佽揣锛�3姝ュ彂璐э級', - id:3, - disabled:true, - } - ], + inboundTransportationList:getDataByType('inboundTransportation'), + outboundTransportationList:getDataByType('outboundTransportation'), } }, created() { @@ -208,13 +174,66 @@ handleClose() { this.editConfig.visible = false }, + // 鍒櫎 + deleteClick() { + let data = JSON.parse(JSON.stringify(this.editConfig.infomation)); + deleteWarehouse({ id: data.id }).then((res) => { + if (res.code === 200) { + this.editConfig.visible = false; + this.$message.success("鍒櫎鎴愬姛"); + this.$emit("refresh"); + } + }); + }, // 缂栬緫 editClick() { this.showEdit = false this.showFooter = true }, + saveParams() { + let data =JSON.parse(JSON.stringify(this.editConfig.infomation)); + + let params = { + address:data.address, + buyToResupply:data.buyToResupply, + code:data.code, + name:data.name, + inboundTransportation:data.inboundTransportation, + outboundTransportation:data.outboundTransportation, + } + if(data.id){ + params.id=data.id + } + return params; + }, // 淇濆瓨 - saveClick() {} + saveClick(formName) { + this.$refs[formName].validate((valid) => { + if (valid) { + const params = this.saveParams(); + if (this.editConfig.title === "鏂板缓") { + addWarehouse(params).then((res) => { + if (res.code === 200) { + this.editConfig.visible = false; + this.$message.success("娣诲姞鎴愬姛"); + this.$emit('refresh') + } + }); + } else { + updateWarehouse(params).then((res) => { + if (res.code === 200) { + this.editConfig.visible = false; + this.$message.success("缂栬緫鎴愬姛"); + this.$emit('refresh') + } + }); + } + }else { + console.log("error submit"); + return false; + } + }); + } } } </script> diff --git a/src/views/warehouseManage/warehouse/index.vue b/src/views/warehouseManage/warehouse/index.vue index d7c28ab..832163d 100644 --- a/src/views/warehouseManage/warehouse/index.vue +++ b/src/views/warehouseManage/warehouse/index.vue @@ -3,7 +3,7 @@ <div class="top"> <SearchCommonView :add-title="'鏂板缓'" - :placeholder="'璇疯緭鍏ュ崟鍙�'" + :placeholder="'璇疯緭鍏ヤ粨搴�'" :amount-view="false" @addCommonClick="addBtnClick" @searchClick="getList" @@ -23,14 +23,13 @@ </div> </div> <!-- 鏂板缓/缂栬緫 --> - <AddDialog v-if="editConfig.visible" :edit-common-config="editConfig" /> + <AddDialog v-if="editConfig.visible" @refresh="refresh" :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 { getWarehouseList } from "@/api/warehouseManage/warehouse" import AddDialog from "@/views/warehouseManage/warehouse/AddDialog" export default { @@ -42,7 +41,7 @@ data() { return { tableList: {}, - searchOptions: [], + keyword:'', editConfig: { visible: false, title: "鏂板缓", @@ -77,7 +76,7 @@ let tableColumn = [ { label: "浠撳簱", - prop: "id", + prop: "name", isShowColumn: true, default: true }, @@ -89,7 +88,7 @@ }, { label: "鍦板潃", - prop: "id", + prop: "address", isShowColumn: true, default: true } @@ -101,33 +100,31 @@ this.tableList.tableColumn = this.setTableColumn(val) }, // 璇锋眰鏁版嵁 - async getData(val, content) { - await getProductList({ - [val]: content, + async getData() { + await getWarehouseList({ + keyword: this.keyword, 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 + if (res.data.code == 200) { + const list = res.data.data?res.data.data:[] + this.tableList.tableInfomation = list + this.pagerOptions.totalCount = res.data.total } }) }, + refresh(){ + this.pagerOptions.currPage=1 + this.getData() + }, // 鎼滅储 getList(val) { - console.log(val) + this.keyword=val; + this.pagerOptions.currPage=1 + this.getData() }, // 琛岀偣鍑� tableRowClick(row) { - console.log(row) this.editConfig.visible = true this.editConfig.title = "缂栬緫" this.editConfig.infomation = { ...row } @@ -135,6 +132,14 @@ // 鏂板缓 addBtnClick() { this.editConfig.visible = true + this.editConfig.infomation={ + address:'', + buyToResupply:'', + code:'', + name:'', + inboundTransportation:1, + outboundTransportation:1, + } this.editConfig.title = "鏂板缓" } } -- Gitblit v1.8.0