From 01d52b4d848d2636fa778689a2c1f783e0e15bd4 Mon Sep 17 00:00:00 2001
From: haoxuan <haoxuan>
Date: 星期二, 16 四月 2024 18:30:08 +0800
Subject: [PATCH] wms项目 产品模块 增加启用多单位的前端开发+新增和编辑产品 2个接口联调
---
src/views/productManage/product/components/UnitMoreDialog.vue | 251 +++++++++++++++++++++++++++++++++++++++++
src/views/productManage/product/AddProductDialog.vue | 52 ++++++++
2 files changed, 301 insertions(+), 2 deletions(-)
diff --git a/src/views/productManage/product/AddProductDialog.vue b/src/views/productManage/product/AddProductDialog.vue
index 3be77ba..4649572 100644
--- a/src/views/productManage/product/AddProductDialog.vue
+++ b/src/views/productManage/product/AddProductDialog.vue
@@ -146,7 +146,7 @@
placeholder="鍗曚綅"
filterable
@change="Gtechange"
- style="width: 85%"
+ style="width: calc(85% - 110px)"
>
<el-option
v-for="ele in unitList"
@@ -160,6 +160,14 @@
style="font-size: 20px; color: gray"
@click="handleUnitShow"
></i>
+ <el-checkbox
+ class="margin_left_10px"
+ :disabled="editConfig.infomation.unit&&showFooter?false:true"
+ v-model="editConfig.infomation.moreUnit"
+ @change="moreUnitChange"
+ ></el-checkbox
+ >
+ <span class="margin_left_10px cursor_pointer" @click="handleUnitMore">鍚敤澶氬崟浣�</span>
</el-form-item>
<el-form-item label="浜у搧鏍囩" prop="productTagName">
@@ -542,6 +550,13 @@
:workList="unitList"
title="璁¢噺鍗曚綅"
></BomDialog>
+ <UnitMoreDialog
+ ref="unitMoreDialog"
+ @saveUnitMore="saveUnitMore"
+ :workList="unitList"
+ :dataList="editConfig.infomation.moreUnitList"
+ title="鍚敤澶氬崟浣�"
+ ></UnitMoreDialog>
</div>
</template>
@@ -555,7 +570,7 @@
import BomDialog from "./components/bomDialog";
import {getUnitInfo, } from "@/api/basic/standard";
// import { postGetSaveSUnitDict } from "@/api/basic/standard";
-
+import UnitMoreDialog from "./components/UnitMoreDialog";
export default {
mixins: [codeMixin],
@@ -576,6 +591,7 @@
components: {
IconCropper,
BomDialog,
+ UnitMoreDialog,
},
computed: {
modalTitle() {
@@ -688,6 +704,33 @@
// 鍗曚綅
handleUnitShow() {
this.editRow.editDialogVisible = true;
+ },
+ // 鍚敤澶氬崟浣�
+ handleUnitMore(){
+ if(this.editConfig.infomation.unit){
+ this.$refs.unitMoreDialog.editDialogVisible = true;
+ }else{
+ this.$message.error('璇峰厛閫夋嫨鍗曚綅锛�')
+ }
+ },
+ saveUnitMore(list){
+ this.editConfig.infomation.moreUnitList=list
+ },
+ // 鍚敤澶氬崟浣嶇殑寮�鍏�
+ moreUnitChange(){
+ let string=false;
+ if(this.editConfig.infomation.moreUnitList&&this.editConfig.infomation.moreUnitList.length>0){
+ for(let i in this.editConfig.infomation.moreUnitList){
+ if(this.editConfig.infomation.moreUnitList[i].unit&&this.editConfig.infomation.moreUnitList[i].amount){
+ string=true;
+ break;
+ }
+ }
+ }
+ if(!string){
+ this.editConfig.infomation.moreUnit=false
+ this.$message.error('璇峰厛閰嶇疆澶氬崟浣嶏紒')
+ }
},
handleConfirmSave(dataList) {
saveUnitDict({ data: dataList }).then((res) => {
@@ -839,6 +882,11 @@
params.codeStandardID = this.autoCodeObj.codeStandardID
params.autoIncr = this.autoCodeObj.maxAutoIncr
}
+ if(params.moreUnitList.length>0){
+ for(let i in params.moreUnitList){
+ params.moreUnitList[i].amount=Number(params.moreUnitList[i].amount)
+ }
+ }
requestUrl(params).then((res) => {
console.log(res)
this.editConfig.visible = false
diff --git a/src/views/productManage/product/components/UnitMoreDialog.vue b/src/views/productManage/product/components/UnitMoreDialog.vue
new file mode 100644
index 0000000..fd1d60b
--- /dev/null
+++ b/src/views/productManage/product/components/UnitMoreDialog.vue
@@ -0,0 +1,251 @@
+<template>
+ <el-dialog
+ :close-on-click-modal="false"
+ :visible.sync="editDialogVisible"
+ width="35rem"
+ class="add-event-dialog"
+ @close="shutdown"
+ append-to-body
+ >
+ <div slot="title" class="tac drawerHeader">
+ {{ title }}
+ </div>
+ <div class="drawerContent">
+ <el-form
+ ref="form"
+ :rules="rules"
+ :model="form"
+ :inline="true"
+ label-width="0"
+ label-position="left"
+ >
+ <div class="form-item" v-for="(item, index) in form.formList" :key="index">
+ <el-row>
+ <el-col :span="2" class="col-name">1</el-col>
+ <el-col :span="7">
+ <el-form-item
+ label=""
+ :prop="`formList.${index}.unit`"
+ :rules="[
+ {
+ required: item.amount?true:false,
+ message: '璇烽�夋嫨',
+ trigger: 'change',
+ },
+ ]"
+ >
+ <el-select
+ v-model.number="form.formList[index].unit"
+ placeholder="鍗曚綅"
+ filterable
+ clearable
+ :popper-append-to-body="false"
+ size="mini"
+ >
+ <el-option
+ v-for="ele in workList"
+ :key="ele.id"
+ :label="ele.name"
+ :value="ele.name"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="1" class="col-name">鈮�</el-col>
+ <el-col :span="7">
+ <el-form-item
+ label=""
+ :prop="`formList.${index}.amount`"
+ :rules="[
+ {
+ required: item.unit?true:false,
+ message: '璇峰~鍐欏ぇ浜庨浂鐨�2浣嶅皬鏁�',
+ trigger: ['change', 'blur'],
+ validator: validatorNum,
+ },
+ ]"
+ >
+ <el-input
+ v-model="item.amount"
+ placeholder="璇疯緭鍏�"
+ size="mini"
+ ></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="2" class="col-name">鍖�</el-col>
+ <el-col :span="5" v-if="index==0">
+ <el-form-item
+ label=""
+ :prop="`formList.${index}.floating`"
+ >
+ <el-checkbox
+ class="margin_left_10px"
+ v-model="item.floating"
+ >娴姩鎹㈢畻</el-checkbox
+ >
+ </el-form-item>
+ </el-col>
+ <el-col :span="5" class="col-name" v-else>
+ <el-button
+ @click="delItem(index)"
+ type="text"
+ size="small"
+ style="text-align:center;"
+ >娓呯┖</el-button
+ >
+ </el-col>
+ </el-row>
+ </div>
+ </el-form>
+ </div>
+ <div slot="footer" class="dialog-footer tac">
+ <el-button @click="shutdown">鍙栨秷</el-button
+ ><el-button
+ type="primary"
+ @click="handleConfirmSave()"
+ style="margin-left: 16px; color: #fff; background-color: #2a78fb"
+ >纭畾</el-button
+ >
+ </div>
+ </el-dialog>
+</template>
+
+<script>
+export default {
+ props: {
+ title: {
+ type: String,
+ },
+ dataList: {
+ type: [Array],
+ },
+ workList: {
+ type: [Array],
+ },
+ },
+ data() {
+ return {
+ editDialogVisible: false,
+
+ form: {
+ formList: [
+ {
+ unit:'',
+ amount:'',
+ floating:false,
+ },
+ {
+ unit:'',
+ amount:null,
+ floating:false,
+ },
+ {
+ unit:'',
+ amount:null,
+ floating:false,
+ }
+ ],
+ },
+ rules: {},
+ };
+ },
+ watch: {
+ editDialogVisible(newVal) {
+ if (newVal) {
+ this.getInfo()
+ }
+ },
+ dataList() {
+ },
+ },
+ mounted() {},
+ methods: {
+ getInfo(){
+ if(this.dataList&&this.dataList.length>0){
+ this.form.formList = this.dataList;
+ for(let i in this.form.formList){
+ this.form.formList[i].amount=this.form.formList[i].amount==0?null:this.form.formList[i].amount
+ }
+ }else{
+ this.form.formList = [
+ {
+ unit:'',
+ amount:null,
+ floating:false,
+ },
+ {
+ unit:'',
+ amount:null,
+ floating:false,
+ },
+ {
+ unit:'',
+ amount:null,
+ floating:false,
+ }
+ ]
+ }
+ },
+ delItem(index){
+ this.$set(this.form.formList[index],'unit','')
+ this.$set(this.form.formList[index],'amount','')
+ },
+ validatorNum(rule, value, callback) {
+ if(rule.required){
+ if (value == undefined || value == null) {
+ callback(new Error("璇疯緭鍏ユ湁鏁堟暟瀛�"));
+ } else {
+ let reg2 =
+ /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/;
+ if (!reg2.test(value) || value == 0) {
+ callback(new Error("璇峰~鍐欏ぇ浜庨浂鐨�2浣嶅皬鏁扮殑鏁板瓧"));
+ } else {
+ callback();
+ }
+ }
+ }else{
+ callback();
+ }
+ },
+ handleConfirmSave() {
+ this.$refs.form.validate((valid) => {
+ if (valid) {
+ this.shutdown()
+ this.$emit('saveUnitMore',this.form.formList)
+ }
+ })
+ },
+ shutdown() {
+ this.editDialogVisible = false;
+ },
+ },
+};
+</script>
+
+<style lang="scss" scoped>
+.drawerContent{
+ height:200px;
+ overflow-y: auto;
+ .el-form{
+ width:100%;
+
+ .col-name{
+ line-height:40px;
+ text-align:center;
+ }
+ }
+}
+.drawerFooter {
+ margin-top: 16px;
+ margin-right: 20px;
+ text-align: right;
+ .el-button {
+ width: 80px;
+ height: 38px;
+ border-color: rgba(0, 0, 0, 0.1);
+ font-family: PingFangSC-Medium, sans-serif;
+ color: #000;
+ }
+}
+
+</style>
--
Gitblit v1.8.0