wangxin 1 year ago
parent
commit
24b3a3ef96
2 changed files with 134 additions and 90 deletions
  1. 121 88
      src/views/business/outsource/DialogSuppliers.vue
  2. 13 2
      src/views/business/outsource/form.vue

+ 121 - 88
src/views/business/outsource/DialogSuppliers.vue

@@ -1,132 +1,165 @@
 <template>
-	<el-dialog title="添加外协商" v-model="visible" width="600px" height="400px" @close="close" append-to-body draggable>
-		<el-form ref="dialogForm" class="master-container" :model="queryParams" :inline="true" style="align-items: center">
-			<div style="display: flex">
-				<el-form-item label="外协商名称:" prop="name">
-					<el-input
-						v-model.trim="queryParams.name"
-						type="text"
-						@keydown.enter.prevent
-						style="width: 120px"
-						placeholder="请输入关键字"
-						:clearable="true"
-						@keyup.enter="handleSearch"
-					/>
-				</el-form-item>
-				<el-form-item label="助记码:" prop="name">
-					<el-input
-						v-model.trim="queryParams.mnemonicCode"
-						type="text"
-						@keydown.enter.prevent
-						style="width: 120px"
-						placeholder="请输入关键字"
-						:clearable="true"
-						@keyup.enter="handleSearch"
-					/>
-				</el-form-item>
-				<el-form-item>
-					<el-button type="info" icon="Search" @click="handleSearch">搜索</el-button>
-				</el-form-item>
-			</div>
-		</el-form>
+  <el-dialog
+    title="添加外协商"
+    v-model="visible"
+    width="600px"
+    height="400px"
+    @close="close"
+    append-to-body
+    draggable
+  >
+    <el-form
+      ref="dialogForm"
+      class="master-container"
+      :model="queryParams"
+      :inline="true"
+      style="align-items: center"
+    >
+      <div style="display: flex">
+        <el-form-item label="外协商名称:" prop="name">
+          <el-input
+            v-model.trim="queryParams.name"
+            type="text"
+            @keydown.enter.prevent
+            style="width: 120px"
+            placeholder="请输入关键字"
+            :clearable="true"
+            @keyup.enter="handleSearch"
+          />
+        </el-form-item>
+        <el-form-item label="助记码:" prop="name">
+          <el-input
+            v-model.trim="queryParams.mnemonicCode"
+            type="text"
+            @keydown.enter.prevent
+            style="width: 120px"
+            placeholder="请输入关键字"
+            :clearable="true"
+            @keyup.enter="handleSearch"
+          />
+        </el-form-item>
+        <el-form-item>
+          <el-button type="info" icon="Search" @click="handleSearch"
+            >搜索</el-button
+          >
+        </el-form-item>
+      </div>
+    </el-form>
 
-		<el-table ref="dialogTable" :data="dataList" size="small" v-loading="loading" border height="370px">
-			<el-table-column type="index" label="行号" width="50" align="center" />
-			<el-table-column label="外协商名称" align="center" prop="name" />
-			<el-table-column label="助记码" align="center" prop="mnemonicCode" width="120" />
-			<el-table-column label="操作" width="64" align="center">
-				<template #default="scope">
-					<el-button type="success" icon="finished" circle @click="handleSingleSelected(scope.row)" />
-				</template>
-			</el-table-column>
-		</el-table>
-		<!-- 分页 -->
-		<pagination
-			v-show="total > 0"
-			:total="total"
-			v-model:page="queryParams.pageNum"
-			v-model:limit="queryParams.pageSize"
-			@pagination="getList"
-		/>
-	</el-dialog>
+    <el-table
+      ref="dialogTable"
+      :data="dataList"
+      size="small"
+      v-loading="loading"
+      border
+      height="370px"
+    >
+      <el-table-column type="index" label="行号" width="50" align="center" />
+      <el-table-column label="外协商名称" align="center" prop="name" />
+      <el-table-column
+        label="助记码"
+        align="center"
+        prop="mnemonicCode"
+        width="120"
+      />
+      <el-table-column label="操作" width="64" align="center">
+        <template #default="scope">
+          <el-button
+            type="success"
+            icon="finished"
+            circle
+            @click="handleSingleSelected(scope.row)"
+          />
+        </template>
+      </el-table-column>
+    </el-table>
+    <!-- 分页 -->
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      v-model:page="queryParams.pageNum"
+      v-model:limit="queryParams.pageSize"
+      @pagination="getList"
+    />
+  </el-dialog>
 </template>
 <script setup>
-import { list } from '@/api/business/supplier'
-const { proxy } = getCurrentInstance()
+import { list } from "@/api/business/supplier";
+const { proxy } = getCurrentInstance();
 /** 字典数组区 */
-const { process_status } = proxy.useDict('process_status')
+const { process_status } = proxy.useDict("process_status");
 /** 工序变量 */
-const total = ref(0)
+const total = ref(0);
 const props = defineProps({
-	singleSelected: {
-		type: Function,
-		default: null
-	}
-})
+  singleSelected: {
+    type: Function,
+    default: null,
+  },
+});
 
-const { singleSelected } = toRefs(props)
-const dataList = ref([])
-const visible = ref(false)
-const loading = ref(false)
+const { singleSelected } = toRefs(props);
+const dataList = ref([]);
+const visible = ref(false);
+const loading = ref(false);
 const queryParams = ref({
-	name: '',
-	pageNum: 1,
-	pageSize: 10
-})
-const selections = ref([])
+  name: "",
+  pageNum: 1,
+  pageSize: 10,
+});
+const selections = ref([]);
 
 /**
  * 对话框打开 事件
  */
 function open() {
-	visible.value = true
-	getList()
+  visible.value = true;
+  getList();
 }
 
 /**
  * 对话框关闭 事件
  */
 function close() {
-	proxy.$refs.dialogForm.resetFields()
-	proxy.$refs.dialogTable.clearSelection()
-	queryParams.value.pageNum = 1
-	visible.value = false
+  proxy.$refs.dialogForm.resetFields();
+  proxy.$refs.dialogTable.clearSelection();
+  queryParams.value.pageNum = 1;
+  visible.value = false;
 }
 
 /**
  * 加载数据
  */
 function getList() {
-	loading.value = true
-	queryParams.value.supplierId = props.supplierId
-	list(queryParams.value).then((res) => {
-		dataList.value = res.rows
-		total.value = res.total
-		loading.value = false
-	})
+  loading.value = true;
+  queryParams.value.supplierId = props.supplierId;
+  list(queryParams.value).then((res) => {
+    dataList.value = res.rows;
+    total.value = res.total;
+    loading.value = false;
+  });
 }
 
 /**
  * 列表checkbox列选择 事件
  */
 function handleSelectionChange(selection) {
-	selections.value = selection
+  selections.value = selection;
 }
 
 /**  搜索 事件 */
 function handleSearch() {
-	getList()
+  getList();
 }
 
 /** 单选事件 */
 function handleSingleSelected(row) {
-	if (singleSelected.value) {
-		singleSelected.value(row)
-	}
-	close()
+  if (singleSelected.value) {
+    singleSelected.value(row);
+  }
+  close();
 }
 
 defineExpose({
-	open
-})
+  open,
+});
 </script>

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

@@ -328,7 +328,7 @@
       ref="dialogProcessesRef"
       :multiple-selected="handleMultipleSelectedProcesses"
     />
-    <!-- 工序选择 -->
+    <!-- 新箱号选择 -->
     <dialog-carrier
       ref="dialogCarrierRef"
       :multiple-selected="handleMultipleSelectedOutsourceCarriers"
@@ -449,6 +449,16 @@ function reset() {
 }
 /** 提交按钮 */
 function submitForm() {
+  if (!form.value.details || form.value.details.length == 0) {
+    proxy.$modal.msgError("请添加产品明细");
+    return;
+  }
+  form.value.details.forEach((item) => {
+    if (!item.processNames) {
+      proxy.$modal.msgError("请选择" + item.lotCode + "批次的工序");
+    }
+    return;
+  });
   proxy.$refs["formRef"].validate((valid) => {
     if (valid) {
       if (form.value.id != null) {
@@ -479,6 +489,7 @@ const handleShowDialogSuppliers = () => {
 const handleSingleSelectedSupplier = (data) => {
   console.log(data);
   form.value.supplierId = data.id;
+  form.value.lossLimit = data.lossLimit;
   form.value.supplierName = data.name;
   form.value.deliveryMethod = data.deliveryMethod;
   form.value.settlementType = data.settlementType;
@@ -525,13 +536,13 @@ const handleShowDialogOutsourceCarriers = (row) => {
 };
 // 箱子选择带回
 const handleMultipleSelectedOutsourceCarriers = (selection, lotId) => {
-  console.log("selection", selection);
   const carrierNames = selection.map((item) => item.code);
   let carrierNamesString = carrierNames.join(",");
   form.value.details.map((item) => {
     if (item.lotId == lotId) {
       item.newCarrier = carrierNamesString;
       item.newCarrierCount = selection.length;
+      item.newCarriers = selection;
     }
   });
 };