Forráskód Böngészése

Merge branch 'master' of http://120.46.159.163:7400/ezhizao/ezhizao_dms_vue

ezhizao_zx 1 éve
szülő
commit
50b462dba1

+ 1 - 1
package.json

@@ -34,7 +34,7 @@
     "print-js": "^1.6.0",
     "qs": "^6.11.2",
     "sortable.js": "^0.3.0",
-    "sortablejs": "^1.15.0",
+    "sortablejs": "^1.15.2",
     "vue": "3.2.45",
     "vue-cropper": "1.0.3",
     "vue-router": "4.1.4"

+ 10 - 0
src/api/business/carrier.js

@@ -1,6 +1,7 @@
 import request from '@/utils/request'
 
 const baseUrl = import.meta.env.VITE_APP_BASE_API
+const baseUrlProduction = import.meta.env.VITE_APP_PRODUCTION_API
 
 // 载具类别列表
 export function listCategory(query) {
@@ -115,6 +116,15 @@ export function unAbandoned(id) {
     method: 'get'
   })
 }
+
+//是否可以打印
+export function whether(data) {
+  return request({
+    url: baseUrlProduction + '/business/carrier/whether',
+    method: 'post',
+    data: data
+  })
+}
 export function downloadQcImgs(query) {
   return request({
     url: baseUrl + '/business/carrier/downloadQcImgs',

+ 17 - 0
src/api/business/supplier.js

@@ -44,6 +44,14 @@ export function getSupplierProduct(data) {
 		params: data
 	})
 }
+// 查询外协商对应的联系人
+export function getSupplierContacts(data) {
+	return request({
+		url: baseUrl + '/business/supplier/getSupplierContacts',
+		method: 'get',
+		params: data
+	})
+}
 
 // 查询外协商对应的产品列表
 // 通过post,是不需要分页的
@@ -64,6 +72,15 @@ export function saveSupplierProduct(data) {
 	})
 }
 
+// 保存外协商对应的联系人
+export function saveSupplierContacts(data) {
+	return request({
+		url: baseUrl + '/business/supplier/saveSupplierContacts',
+		method: 'post',
+		data: data
+	})
+}
+
 // 保存外协商对应的产品对应的工序列表
 export function saveSupplierProductProcess(data) {
 	return request({

+ 37 - 28
src/views/business/carrier/index.vue

@@ -290,6 +290,7 @@ import {
   saveCarrierReject,
   download,
   printQrcodePdf,
+  whether,
 } from "@/api/business/carrier";
 import carrierForm from "./form";
 import printJS from "print-js";
@@ -503,19 +504,23 @@ const handleUnAbandoned = (row) => {
 };
 
 const handleBatchPrintQrCode = async () => {
-  const imageGroup = document.getElementById("image-group");
-  // for (var i = 0; i < selections.value.length; i++) {
-  //   console.log(webHost + selections.value[i].qcCode);
-  //   const img = document.createElement('img');
-  //   img.src = webHost + selections.value[i].qcCode
-  //   imageGroup.appendChild(img);
-  // }
-  printJS({
-    printable: "image-group", // 这里是你要打印内容的DOM元素的id
-    type: "html",
-    style: "@page { size: auto;  margin: 0mm; }", // 可以添加打印样式
+  whether(selections.value).then((res) => {
+    if (res.code == 200) {
+      const imageGroup = document.getElementById("image-group");
+      // for (var i = 0; i < selections.value.length; i++) {
+      //   console.log(webHost + selections.value[i].qcCode);
+      //   const img = document.createElement('img');
+      //   img.src = webHost + selections.value[i].qcCode
+      //   imageGroup.appendChild(img);
+      // }
+      printJS({
+        printable: "image-group", // 这里是你要打印内容的DOM元素的id
+        type: "html",
+        style: "@page { size: auto;  margin: 0mm; }", // 可以添加打印样式
+      });
+      // window.print();
+    }
   });
-  // window.print();
 };
 
 const handleBatchPrintPdf = () => {
@@ -548,24 +553,28 @@ const handleBatchPrintPdf = () => {
 async function handleBatchDownloadQrCode() {
   console.log(selections.value);
 
-  const zip = new JSZip();
-  const zipFilename = "二维码.zip";
-
-  for (var i = 0; i < selections.value.length; i++) {
-    console.log(webHost + selections.value[i].qcCode);
-
-    // 下载二维码图片数据
-    const qrCodeResponse = await fetch(webHost + selections.value[i].qcCode);
-    const qrCodeBlob = await qrCodeResponse.blob();
+  whether(selections.value).then(async (res) => {
+    if (res.code == 200) {
+      const zip = new JSZip();
+      const zipFilename = "二维码.zip";
+      for (var i = 0; i < selections.value.length; i++) {
+        console.log(webHost + selections.value[i].qcCode);
 
-    // 将二维码图片添加到 ZIP 文件中
-    zip.file(selections.value[i].code + ".png", qrCodeBlob);
-  }
+        // 下载二维码图片数据
+        const qrCodeResponse = await fetch(
+          webHost + selections.value[i].qcCode
+        );
+        const qrCodeBlob = await qrCodeResponse.blob();
 
-  // 生成 ZIP 文件并提供下载
-  zip.generateAsync({ type: "blob" }).then((content) => {
-    // 使用 FileSaver.js 将 ZIP 文件保存到本地
-    saveAs(content, zipFilename);
+        // 将二维码图片添加到 ZIP 文件中
+        zip.file(selections.value[i].code + ".png", qrCodeBlob);
+      }
+      // 生成 ZIP 文件并提供下载
+      zip.generateAsync({ type: "blob" }).then((content) => {
+        // 使用 FileSaver.js 将 ZIP 文件保存到本地
+        saveAs(content, zipFilename);
+      });
+    }
   });
 }
 

+ 3 - 0
src/views/business/noCurrentReject/DialogRejectInfo.vue

@@ -222,6 +222,9 @@
                 v-model="detailInfo.rejectNum"
                 :min="1"
                 :max="detailInfo.productionQuantity"
+                :decimal="false"
+                :step="1"
+                step-strictly
                 label="数量"
                 style="width: 140px"
               />

+ 10 - 2
src/views/business/noCurrentReject/index.vue

@@ -54,12 +54,18 @@
     </el-form>
     <!-- 功能按钮区 -->
     <div class="list-btns-container">
-      <el-button type="primary" icon="Plus" @click="handleLogDialog">
+      <el-button
+        type="primary"
+        icon="Plus"
+        v-hasPermi="['business:noCurrentReject:save']"
+        @click="handleLogDialog"
+      >
         新增
       </el-button>
       <el-button
         type="danger"
         icon="Delete"
+        v-hasPermi="['business:noCurrentReject:remove']"
         :disabled="ids.length === 0"
         @click="handleDelete"
       >
@@ -112,6 +118,7 @@
                 link
                 type="warning"
                 icon="Edit"
+                v-hasPermi="['business:noCurrentReject:edit']"
                 @click="handleShowTurnoverDialog(scope.row)"
               >
                 编辑
@@ -121,9 +128,10 @@
                 link
                 type="danger"
                 icon="Delete"
+                v-hasPermi="['business:noCurrentReject:remove']"
                 @click="handleDelete(scope.row)"
               >
-                编辑
+                删除
               </el-button>
               <!-- <el-button
                 v-else

+ 1 - 1
src/views/business/outsource/DialogProducts.vue

@@ -40,6 +40,7 @@
           :active-value="1"
           inactive-text="否"
           :inactive-value="0"
+          @change="handleSearch"
         />
       </el-form-item>
       <el-form-item label-width="20px">
@@ -167,7 +168,6 @@ function getList() {
   queryParams.value.supplierId = props.supplierId;
   listForOutsource(queryParams.value).then((res) => {
     productList.value = res.rows;
-    console.log("productList", productList.value);
     total.value = res.total;
     loading.value = false;
   });

+ 0 - 2
src/views/business/outsource/form.vue

@@ -651,8 +651,6 @@ function handleCarrierChange(arg, item) {
   item.newCarriers = carriers.value
     .filter((v) => arg.includes(v.value))
     .map((v) => ({ id: v.value, code: v.label }));
-  console.log("item", item);
-  console.log("form", form.value);
 }
 
 /** 使用新方式 */

+ 20 - 18
src/views/business/outsource/index.vue

@@ -93,12 +93,16 @@
       >
         删除
       </el-button>
-      <!--
-			<el-button type="warning" icon="Download" @click="handleExport" v-hasPermi="['business:outsource:export']">
-				导出
-			</el-button>
-			<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
-			-->
+
+      <el-button
+        type="warning"
+        icon="Download"
+        :disabled="ids.length != 1"
+        @click="handleExport"
+        v-hasPermi="['business:outsource:export']"
+      >
+        导出
+      </el-button>
     </div>
 
     <!-- 渲染数据区 -->
@@ -188,7 +192,7 @@
                 type="warning"
                 icon="Edit"
                 @click="handleUpdate(scope.row)"
-                v-hasPermi="['business:outsource:save']"
+                v-hasPermi="['business:outsource:edit']"
               >
                 编辑
               </el-button>
@@ -198,7 +202,7 @@
                 type="primary"
                 icon="View"
                 @click="handleUpdate(scope.row)"
-                v-hasPermi="['business:outsource:save']"
+                v-hasPermi="['business:outsource:query']"
               >
                 查看
               </el-button>
@@ -239,7 +243,11 @@
 </template>
 
 <script setup name="Order">
-import { listOrder, delOrder } from "@/api/business/outsourcedOrder";
+import {
+  listOrder,
+  delOrder,
+  exportOutsource,
+} from "@/api/business/outsourcedOrder";
 import orderForm from "./form";
 const { proxy } = getCurrentInstance();
 /** 字典数组区 */
@@ -260,8 +268,8 @@ const queryParams = ref({
   pageSize: 10,
   formCode: null,
   formDate: null,
-  startTime:null,
-  endTime:null,
+  startTime: null,
+  endTime: null,
   supplierName: null,
   deliveryMethod: null,
   packagingMethod: null,
@@ -335,13 +343,7 @@ function handleDelete(row) {
 
 /** 导出按钮操作 */
 function handleExport() {
-  proxy.download(
-    "business/order/export",
-    {
-      ...queryParams.value,
-    },
-    `order_${new Date().getTime()}.xlsx`
-  );
+  exportOutsource({ id: ids.value[0] });
 }
 
 getList();

+ 1 - 1
src/views/business/returnReceipt/DialogOutsourceDetails.vue

@@ -9,7 +9,7 @@
 		draggable
 	>
 		<el-form ref="dialogForm" :model="queryParams" :inline="true" style="padding-top: 16px">
-			<el-form-item label="批次号:" prop="lotCode" label-width="90">
+			<el-form-item label="批次号:" prop="lotCode" label-width="70">
 				<el-input
 					v-model.trim="queryParams.lotCode"
 					type="text"

+ 4 - 4
src/views/business/returnReceipt/form.vue

@@ -7,7 +7,7 @@
 					<span>收回单信息</span>
 				</span>
 				<el-button-group>
-					<el-button type="primary" icon="Finished" @click="submitForm"> 保存 </el-button>
+					<el-button type="primary" icon="Finished" @click="submitForm"> 确认收回 </el-button>
 				</el-button-group>
 
 				<div class="close-btn" @click="cancel">
@@ -273,12 +273,12 @@ function submitForm() {
 				flag = false
 				proxy.$modal.msgError('第' + (i + 1) + '行确定数量不能为0')
 			}
-			if(form.value.details.length==0 && !form.value.id) {
+		}
+		if(form.value.details.length==0) {
 				flag = false
 				proxy.$modal.msgError('收回明细不能为空')
 			}
-		}
-		console.log(form.value.details)
+		console.log(form.value.details.length)
 			if(flag) {
 				console.log(form.value)
 			if (form.value.id != null) {

+ 15 - 1
src/views/business/returnReceipt/index.vue

@@ -92,6 +92,19 @@
               {{ parseTime(scope.row.formDate, "{y}-{m}-{d}") }}
             </template>
           </el-table-column>
+		  <el-table-column
+              label="状态"
+              width="80"
+              prop="status"
+              align="center"
+            >
+              <template #default="scope">
+                <dict-tag
+                  :options="is_audit_num"
+                  :value="scope.row.status"
+                />
+              </template>
+            </el-table-column>
           <el-table-column label="备注" align="center" prop="remark" />
           <el-table-column
             label="操作"
@@ -132,7 +145,8 @@
 import { listReceipt, delReceipt } from "@/api/business/returnReceipt";
 import receiptForm from "./form";
 const { proxy } = getCurrentInstance();
-
+/** 字典数组区 */
+const { is_audit_num } = proxy.useDict("is_audit_num");
 const dataList = ref([]);
 const loading = ref(true);
 const multiple = ref(false);

+ 4 - 3
src/views/business/returnTurnover/DialogReturnTurnover.vue

@@ -81,7 +81,7 @@ function open(data) {
   form.value = proxy.deepClone(data);
   console.log(form.value)
   getNowCarriers(data)
-  getTurnoverDept()
+  getTurnoverDept(data)
   getCarriers()
 }
 function getCarriers() {
@@ -102,8 +102,9 @@ function getNowCarriers(data) {
     }
   })
 }
-function getTurnoverDept() {
-  getTurnoverDeptList({dayworkId: form.value.dayworkId}).then(res =>{
+function getTurnoverDept(data) {
+  let lastProcessStepNumber = data.processes[data.processes.length-1].processStepNumber
+  getTurnoverDeptList({dayworkId: form.value.dayworkId,processStepNumber: lastProcessStepNumber}).then(res =>{
     if(res.code === 200){
       deptList.value = res.data
     }

+ 34 - 34
src/views/business/returnTurnover/index.vue

@@ -145,40 +145,40 @@ function resetQuery() {
 /** 修改周转按钮操作 */
 function handleShowTurnoverDialog(row) {
 	console.log(row)
-	proxy.$refs.dialogReturnTurnoverRef.open(row)
+	//proxy.$refs.dialogReturnTurnoverRef.open(row)
 	//判断该批次的工序是否需要审核
-	// getP2NeedCheckProcess("Y").then(res => {
-	// 	if(res.code == 200) {
-	// 		//需要序检的工序
-	// 		var process = []
-	// 		let needCheckProcessCodeList = res.rows.map(item => item.prcode.trim())
-	// 		let returnReceiptProcessCodeList=row.finishedProcesses.map(v => ({ processCode: v.processCode, processStepNumber: v.processStepNumber,returnReceiptDetailId:v.returnReceiptDetailId }))
-	// 		for(let i = 0;i<needCheckProcessCodeList.length;i++) {
-	// 			for(let j = 0;j<returnReceiptProcessCodeList.length;j++) {
-	// 				if(needCheckProcessCodeList[i] == returnReceiptProcessCodeList[j].processCode) {
-	// 					process.push(returnReceiptProcessCodeList[j])
-	// 				}
-	// 			}
-	// 		}
-	// 		console.log(needCheckProcessCodeList)
-	// 		console.log(returnReceiptProcessCodeList)
-	// 		console.log(process)
-	// 		if(process.length >0) {
-	// 			getProcessInspectionList(process[process.length - 1]).then(res => {
-	// 				if(res.code == 200) {
-	// 					if(res.data){
-	// 					proxy.$refs.dialogReturnTurnoverRef.open(row)
-	// 					}
-	// 					else {
-	// 						proxy.$modal.msgError('该批次的工序序检未合格,不能周转')
-	// 					}
-	// 				}
-	// 			})
-	// 		}else {
-	// 			proxy.$refs.dialogReturnTurnoverRef.open(row)
-	// 		}
-	// 	}
-	// })
+	getP2NeedCheckProcess("Y").then(res => {
+		if(res.code == 200) {
+			//需要序检的工序
+			var process = []
+			let needCheckProcessCodeList = res.rows.map(item => item.prcode.trim())
+			let returnReceiptProcessCodeList=row.finishedProcesses.map(v => ({ processCode: v.processCode, processStepNumber: v.processStepNumber,returnReceiptDetailId:v.returnReceiptDetailId }))
+			for(let i = 0;i<needCheckProcessCodeList.length;i++) {
+				for(let j = 0;j<returnReceiptProcessCodeList.length;j++) {
+					if(needCheckProcessCodeList[i] == returnReceiptProcessCodeList[j].processCode) {
+						process.push(returnReceiptProcessCodeList[j])
+					}
+				}
+			}
+			console.log(needCheckProcessCodeList)
+			console.log(returnReceiptProcessCodeList)
+			console.log(process)
+			if(process.length >0) {
+				getProcessInspectionList(process[process.length - 1]).then(res => {
+					if(res.code == 200) {
+						if(res.data){
+						proxy.$refs.dialogReturnTurnoverRef.open(row)
+						}
+						else {
+							proxy.$modal.msgError('当前批次检查未处于合格状态,暂时无法周转')
+						}
+					}
+				})
+			}else {
+				proxy.$refs.dialogReturnTurnoverRef.open(row)
+			}
+		}
+	})
 }
 
 /** 导出按钮操作 */
@@ -192,5 +192,5 @@ function handleExport() {
 	)
 }
 
-getList()
+getList();
 </script>

+ 23 - 2
src/views/business/reviseBath/producedLotForm.vue

@@ -45,6 +45,15 @@
             @keydown.enter.prevent
           />
         </el-form-item>
+        <el-form-item label="图纸版本:">
+          <el-select-v2
+            v-model="queryParams.technologyVersion"
+            clearable
+            :options="technologyVersionList"
+            placeholder="请选择图纸版本"
+            style="width: 160px"
+          />
+        </el-form-item>
         <el-form-item label="工段:">
           <el-select-v2
             v-model="queryParams.deptId"
@@ -72,7 +81,6 @@
           collapse-tags-tooltip
           clearable
           placeholder="请选择标识"
-          @change="handleFlagChange"
         >
           <el-option
             v-for="item in is_identification"
@@ -217,6 +225,7 @@ const lotList = ref([]);
 const lotInfo = ref([]);
 const visible = ref(false);
 const processList = ref([]);
+const technologyVersionList = ref([]);
 const deptList = ref([]);
 /** 查询对象 */
 const queryParams = ref({
@@ -225,6 +234,7 @@ const queryParams = ref({
   lotCode: "",
   deptId: null,
   processId:null,
+  technologyVersion:null
 });
 const queryDeptParams = ref({
   lineNumber: "",
@@ -238,7 +248,7 @@ const open = (row) => {
   currentProductionPlan.value = row;
   queryParams.value.lineNumber = row.lineNumber;
   queryParams.value.productionPlanNo = row.productionPlanNo;
-  queryParams.value.technologyVersion = row.technologyVersion;
+  // queryParams.value.technologyVersion = row.technologyVersion;
   queryDeptParams.value.lineNumber = row.lineNumber;
   queryDeptParams.value.productionPlanNo = row.productionPlanNo;
   getDeptList(queryDeptParams.value).then((res) => {
@@ -262,10 +272,20 @@ function handleColumnClick(lotCode) {
 }
 /**获取生产计划列表 */
 function getProducedLotList() {
+  technologyVersionList.value = [];
   loading.value = true;
   getProducedLot(queryParams.value).then((res) => {
     if (res.code == 200) {
       lotList.value = res.rows;
+      for(let i = 0; i < res.rows.length; i++) {
+        if(technologyVersionList.value.findIndex(item => item.value == res.rows[i].technologyVersion) == -1) {
+          technologyVersionList.value.push({
+            label: res.rows[i].technologyVersion,
+            value: res.rows[i].technologyVersion
+          })
+        }
+      }
+      console.log(technologyVersionList.value)
       lotInfo.value = res.rows;
       loading.value = false;
     }
@@ -289,6 +309,7 @@ function reset() {
   queryParams.value.pageSize = 10;
   queryParams.value.lotCode = null;
   queryParams.value.deptId = null;
+  queryParams.value.technologyVersion = null
 
   proxy.resetForm("queryRef");
 }

+ 18 - 11
src/views/business/supplier/DialogProcesses.vue

@@ -9,6 +9,7 @@
 							:key="item.technologyVersion"
 							:label="item.technologyVersion"
 							:value="item.technologyVersion"
+							@change="handleTechnologyVersionChange"
 						/>
 					</el-select>
 				</el-form-item>
@@ -97,7 +98,7 @@ const selections = ref([])
  */
 function open() {
 	visible.value = true
-	getList()
+	getTechnologicalVersionList()
 }
 
 /**
@@ -109,26 +110,32 @@ function close() {
 	queryParams.value.pageNum = 1
 	visible.value = false
 }
-
-/**
- * 加载数据
- */
-function getList() {
-	loading.value = true
+function getTechnologicalVersionList() {
 	queryParams.value.productId = productId.value
 	getTechnologicalForSupplier({ productId: queryParams.value.productId }).then((res) => {
 		technologyVersions.value = res.data
 		if (technologyVersions.value.length > 0) {
 			queryParams.value.technologyVersion = technologyVersions.value[0].technologyVersion
-			getProcessesForSupplier(queryParams.value).then((res1) => {
-				processList.value = res1.data
-				loading.value = false
-			})
+			getList()
 		} else {
 			loading.value = false
 		}
 	})
 }
+/**
+ * 加载数据
+ */
+function getList() {
+	loading.value = true
+	getProcessesForSupplier(queryParams.value).then((res1) => {
+		processList.value = res1.data
+		loading.value = false
+	})
+}
+//切换工艺版本
+function handleTechnologyVersionChange() {
+     getList()
+}
 
 /**
  * 列表checkbox列选择 事件

+ 106 - 16
src/views/business/supplier/contactsForm.vue

@@ -17,7 +17,7 @@
         <el-button
             type="primary"
             icon="Check"
-            style="margin-right: 10px"
+            style="margin-right: 10px;margin-left: 10px;"
             @click="handleSave"
         >保 存
         </el-button
@@ -30,7 +30,7 @@
           <el-button
               type="warning"
               icon="Plus"
-              @click="handleOpenPerson('person')"
+              @click="handleAddConcacts()"
           >添加人员
           </el-button
           >
@@ -55,11 +55,40 @@
             height="100%"
         >
           <el-table-column type="selection" width="40" align="center"/>
-          <el-table-column label="姓名" prop="name" align="center"/>
-          <el-table-column label="职务" prop="rule" align="center"/>
-          <el-table-column label="电话" prop="phoneNumber" align="center"/>
-          <el-table-column label="邮箱" prop="eamil" align="center"/>
-          <el-table-column label="默认联系人" align="center" prop="status" width="200">
+          <el-table-column type="index" label="行号" width="50" align="center" />
+          <el-table-column label="姓名" prop="name" align="center">
+            <template #default="scope">
+              <el-input
+                v-model.trim="scope.row.name"
+                placeholder="请输入姓名"
+              />
+            </template>
+          </el-table-column>
+          <el-table-column label="职务" prop="rule" align="center">
+            <template #default="scope">
+              <el-input
+                v-model.trim="scope.row.rule"
+                placeholder="请输入职务"
+              />
+            </template>
+          </el-table-column>
+          <el-table-column label="电话" prop="phoneNumber" align="center">
+            <template #default="scope">
+              <el-input
+                v-model.trim="scope.row.phoneNumber"
+                placeholder="请输入电话"
+              />
+            </template>
+          </el-table-column>
+          <el-table-column label="邮箱" prop="email" align="center">
+            <template #default="scope">
+              <el-input
+                v-model.trim="scope.row.email"
+                placeholder="请输入邮箱"
+              />
+            </template>
+          </el-table-column>
+          <el-table-column label="是否默认联系人" align="center" prop="status" width="200">
 							<template #default="scope">
 							<el-switch
 								v-model="scope.row.isDefault"
@@ -78,18 +107,34 @@
   </el-drawer>
 </template>
 <script setup>
+import {saveSupplierContacts, getSupplierContacts} from "@/api/business/supplier";
 const {proxy} = getCurrentInstance();
-const emit = defineEmits(["handleSaveResourceSuccess"]);
+const emit = defineEmits(["handleSaveSuccess"]);
 /** 表单抽屉 页变量 */
 const selections = ref([]);
 const loading = ref(false);
+const info = ref({})
 const contactsList = ref([]);
 const visible = ref(false);
+const detailsRow = {
+  id: null,
+  name: "",
+  rule: "",
+  phoneNumber: "",
+  email:"",
+  isDefault:0
+};
 
 /***********************  方法区  ****************************/
 /** 打开抽屉 */
-const open = (row) => {
+const open = (data) => {
   loading.value = true;
+  info.value = data
+  getSupplierContacts({supplierId: data.id}).then(res =>{
+    if(res.code == 200) {
+      contactsList.value = res.data
+    }
+  })
   loading.value = false;
   visible.value = true;
 };
@@ -100,17 +145,33 @@ const open = (row) => {
 function handleSelectionChange(selection) {
   selections.value = selection;
 }
+//添加人员
+function handleAddConcacts() {
+  const newDetail = JSON.parse(JSON.stringify(detailsRow));
+  newDetail.supplierId = info.value.id
+  newDetail.supplierName = info.value.name
+  contactsList.value.push(newDetail)
+}
+function handleChangeAuditStatus(row) {
+ if(row.isDefault == 1) {
+  var defaultList = contactsList.value.filter(item => {return item.isDefault == 1 && item!=row})
+  console.log(defaultList)
+  if (defaultList.length > 0) {
+    contactsList.value = contactsList.value.map(item => {
+      if (item.isDefault == 1) {
+        return defaultList[0] === item ? { ...item, isDefault: 0 }: item ;
+      }
+      return item;
+    });
+  }
+ }
+}
 
 /**批量删除 */
 function handleDelete() {
-  checkUseEquipment(selections.value).then(res => {
-    if(res.code == 200) {
-        form.value.groupDetailList = form.value.groupDetailList.filter(
+ contactsList.value = contactsList.value.filter(
       (item) => !selections.value.some((selectedItem) => selectedItem === item)
   );
-    }
-  })
-
 }
 
 /**
@@ -122,7 +183,36 @@ function close() {
 
 /** 提交按钮 */
 const handleSave = () => {
-
+  var flag = true
+  for(let i = 0; i < contactsList.value.length; i++) {
+    if(contactsList.value[i].name =="") {
+      proxy.$modal.msgError("第"+(i+1)+"行姓名不能为空");
+      return;
+    }
+    if(contactsList.value[i].phoneNumber =="") {
+      proxy.$modal.msgError("第"+(i+1)+"行电话不能为空");
+      return;
+    }
+  }
+  if(contactsList.value.length == 0) {
+    flag = false
+    proxy.$modal.msgError("请添加联系人");
+  }
+  let isDefaultList = contactsList.value.filter(item => { return item.isDefault == 1
+  })
+  if(isDefaultList.length == 0) {
+    flag = false
+    proxy.$modal.msgError("请设置默认联系人");
+  }
+  if(flag) {
+  saveSupplierContacts(contactsList.value).then(res => {
+    if(res.code == 200) {
+      proxy.$modal.msgSuccess("保存成功");
+      visible.value = false;
+      emit("handleSaveSuccess");
+    }
+  })
+}
     }
 
 

+ 4 - 3
src/views/business/supplier/form.vue

@@ -9,12 +9,12 @@
 				<el-form-item label="助记码" prop="mnemonicCode">
 					<el-input v-model.trim="form.mnemonicCode" placeholder="请输入助记码" />
 				</el-form-item>
-				<el-form-item label="发货方式" prop="deliveryMethod">
+				<el-form-item label="默认发货方式" prop="deliveryMethod">
 					<el-select v-model="form.deliveryMethod" placeholder="请选择发货方式">
 						<el-option v-for="dict in deliveryMethod" :key="dict.value" :label="dict.label" :value="dict.value" />
 					</el-select>
 				</el-form-item>
-				<el-form-item label="结算方式" prop="settlementType">
+				<el-form-item label="默认结算方式" prop="settlementType">
 					<el-select v-model="form.settlementType" placeholder="请选择结算方式">
 						<el-option v-for="dict in settlementType" :key="dict.value" :label="dict.label" :value="dict.value" />
 					</el-select>
@@ -53,7 +53,8 @@ const visible = ref(false)
 const data = reactive({
 	form: {},
 	rules: {
-		name: [{ required: true, message: '供应商名称不能为空', trigger: 'blur' }]
+		name: [{ required: true, message: '供应商名称不能为空', trigger: 'blur' }],
+		mnemonicCode: [{ required: true, message: '助记码不能为空', trigger: 'blur' }]
 	}
 })
 const { form, rules } = toRefs(data)

+ 6 - 1
src/views/business/supplier/index.vue

@@ -57,6 +57,8 @@
 						<el-table-column label="损耗上限" width="96" align="center" prop="lossLimit">
 							<template #default="scope"> {{ scope.row.lossLimit }}% </template>
 						</el-table-column>
+						<el-table-column label="默认联系人" width="120" align="center" prop="contactName" />
+							<el-table-column label="默认联系电话" width="120" align="center" prop="contactPhoneNumber" />
 						<el-table-column label="备注" align="center" prop="remark" />
 						<el-table-column label="操作" width="350" align="center">
 							<template #default="scope">
@@ -273,7 +275,7 @@
 		<!-- 管理员设置 -->
 		<dialog-set-admin ref="setAdminRef" />
 		<!-- 联系人设置 -->
-		<contacts-form ref="setContactsRef" />
+		<contacts-form ref="setContactsRef" @handleSaveSuccess =getList() />
 	</div>
 </template>
 
@@ -411,6 +413,9 @@ const getCurrentSupplierProduct = () => {
 		if (supplierProductList.value.length > 0) {
 			currentProduct.value = supplierProductList.value[0]
 			proxy.$refs.productTable.setCurrentRow(supplierProductList.value[0])
+		}else{
+			supplierProductProcessList.value = []
+			currentProduct.value = {}
 		}
 		supplierProductLoading.value = false
 	})