Parcourir la source

Merge remote-tracking branch 'origin/master'

guoyujia il y a 1 an
Parent
commit
36c934a274

+ 2 - 2
src/api/business/inspectionInstruction.js

@@ -11,9 +11,9 @@ export function listCategory(data) {
 }
 
 // 获取检查指导项目类别
-export function getCategoryInfo(id) {
+export function getCategoryInfo(id,type) {
 	return request({
-		url: baseUrl + '/business/inspectionInstruction/getCategoryInfo/' + id,
+		url: baseUrl + '/business/inspectionInstruction/getCategoryInfo/' + id+'/'+type,
 		method: 'get',
 	})
 }

+ 2 - 2
src/utils/auth.js

@@ -1,6 +1,6 @@
 import Cookies from 'js-cookie'
 
-const TokenKey = 'Admin-Token'
+const TokenKey = 'Dms-Admin-Token'
 
 export function getToken() {
   return Cookies.get(TokenKey)
@@ -15,7 +15,7 @@ export function removeToken() {
 }
 
 /** tentant 缓存 */
-const TenantKey = 'Tenant-Key'
+const TenantKey = 'Dms-Tenant-Key'
 
 export function getTenant() {
   const cookieTenant = Cookies.get(TenantKey)

+ 1 - 1
src/views/business/consult/index.vue

@@ -34,7 +34,7 @@
       <el-form-item label="产品描述:">
         <el-input
           placeholder="请输入关键字"
-          v-model.trim="queryParams.keywords"
+          v-model.trim="queryParams.productDescription"
           style="width: 120px"
           clearable
           @keyup.enter="handleQuery"

+ 107 - 82
src/views/business/inspectionInstruction/formCategory.vue

@@ -1,115 +1,140 @@
 <template>
-	<el-dialog title="检查指导项类别表单" v-model="visible" width="400px" append-to-body draggable>
-		<div class="form-container">
-			<el-form ref="categoryRef" v-loading="loading" class="master-container" :model="form" :rules="rules" label-width="80px">
-				<el-form-item label="父级类别" prop="parentId" :rules="rules">
-					<el-tree-select v-model="form.parentId" :data="parentCategories" check-strictly :render-after-expand="false" />
-				</el-form-item>
-				<el-form-item label="类别名称" prop="name">
-					<el-input v-model.trim="form.name" placeholder="类别名称" />
-				</el-form-item>
-				<el-form-item label="备注" prop="remark">
-					<el-input v-model.trim="form.remark" placeholder="请填写备注" />
-				</el-form-item>
-			</el-form>
-		</div>
-		<template #footer>
-			<el-button type="primary" icon="Check" @click="handleSave">确 定</el-button>
-			<el-button icon="Close" @click="handleCancel">取 消</el-button>
-		</template>
-	</el-dialog>
+  <el-dialog
+    title="检查指导项类别表单"
+    v-model="visible"
+    width="400px"
+    append-to-body
+    draggable
+  >
+    <div class="form-container">
+      <el-form
+        ref="categoryRef"
+        v-loading="loading"
+        class="master-container"
+        :model="form"
+        :rules="rules"
+        label-width="80px"
+      >
+        <el-form-item label="父级类别" prop="parentId" :rules="rules">
+          <el-tree-select
+            v-model="form.parentId"
+            :data="parentCategories"
+            check-strictly
+            :render-after-expand="false"
+          />
+        </el-form-item>
+        <el-form-item label="类别名称" prop="name">
+          <el-input v-model.trim="form.name" placeholder="类别名称" />
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model.trim="form.remark" placeholder="请填写备注" />
+        </el-form-item>
+      </el-form>
+    </div>
+    <template #footer>
+      <el-button type="primary" icon="Check" @click="handleSave"
+        >确 定</el-button
+      >
+      <el-button icon="Close" @click="handleCancel">取 消</el-button>
+    </template>
+  </el-dialog>
 </template>
 <script setup>
-import { getCategoryInfo, saveCategory } from '@/api/business/inspectionInstruction'
-const { proxy } = getCurrentInstance()
-const emit = defineEmits(['handleSaveSuccess'])
+import {
+  getCategoryInfo,
+  saveCategory,
+} from "@/api/business/inspectionInstruction";
+const { proxy } = getCurrentInstance();
+const emit = defineEmits(["handleSaveSuccess"]);
 /** 字典数组区 */
-const { is_allow_more } = proxy.useDict('is_allow_more')
+const { is_allow_more } = proxy.useDict("is_allow_more");
 /** 父类别 */
-const parentCategories = ref([])
-const loading = ref(false)
-const visible = ref(false)
+const parentCategories = ref([]);
+const loading = ref(false);
+const visible = ref(false);
 const data = reactive({
-	form: {},
-	rules: {
-		name: [{ required: true, message: '类别名称不能为空', trigger: 'blur' }],
-		parentId: [{ required: true, trigger: 'blur', validator: validateParentId }],
-	},
-})
-const { form, rules } = toRefs(data)
+  form: {},
+  rules: {
+    name: [{ required: true, message: "类别名称不能为空", trigger: "blur" }],
+    parentId: [
+      { required: true, trigger: "blur", validator: validateParentId },
+    ],
+  },
+});
+const { form, rules } = toRefs(data);
 
 /***********************  方法区  ****************************/
 /** 打开抽屉 */
 function open(id) {
-	reset()
-	visible.value = true
-	loading.value = true
-	getCategoryInfo(id || 0).then((res) => {
-		if (res.data.formData) {
-			form.value = res.data.formData
-		}
-		parentCategories.value = res.data.parentOptions
-		parentCategories.value.unshift({
-			value: '0',
-			label: '一级分类',
-		})
-		if (id) {
-			var index = parentCategories.value.findIndex((obj) => obj.value === id)
-			if (index > -1) {
-				parentCategories.value.splice(index, 1)
-			}
-		}
-		loading.value = false
-	})
+  reset();
+  visible.value = true;
+  loading.value = true;
+  getCategoryInfo(id || 0, 2).then((res) => {
+    if (res.data.formData) {
+      form.value = res.data.formData;
+    }
+    parentCategories.value = res.data.parentOptions;
+    parentCategories.value.unshift({
+      value: "0",
+      label: "一级分类",
+    });
+    if (id) {
+      var index = parentCategories.value.findIndex((obj) => obj.value === id);
+      if (index > -1) {
+        parentCategories.value.splice(index, 1);
+      }
+    }
+    loading.value = false;
+  });
 }
 
 /** 取消按钮 */
 function handleCancel() {
-	visible.value = false
-	reset()
+  visible.value = false;
+  reset();
 }
 
 /** 表单重置 */
 function reset() {
-	form.value = {
-		id: null,
-		type: 2,
-		parentId: '0',
-		name: '',
-		remark: '',
-		sort: 1,
-	}
-	proxy.resetForm('categoryRef')
+  form.value = {
+    id: null,
+    type: 2,
+    parentId: "0",
+    name: "",
+    remark: "",
+    sort: 1,
+  };
+  proxy.resetForm("categoryRef");
 }
 
 /** 提交按钮 */
 function handleSave() {
-	proxy.$refs['categoryRef'].validate((valid) => {
-		if (valid) {
-			saveCategory(form.value).then((res) => {
-				if (res.code === 200) {
-					proxy.$modal.msgSuccess('操作成功')
-					emit('handleSaveSuccess')
-				}
-				visible.value = false
-			})
-		}
-	})
+  proxy.$refs["categoryRef"].validate((valid) => {
+    if (valid) {
+      saveCategory(form.value).then((res) => {
+        if (res.code === 200) {
+          proxy.$modal.msgSuccess("操作成功");
+          emit("handleSaveSuccess");
+        }
+        visible.value = false;
+      });
+    }
+  });
 }
 
 /**
  * 校验自己不能是自己的父级
  */
 function validateParentId(rule, value, callback) {
-	if (value == form.value.id) {
-		callback(new Error('不能选择自己为父级'))
-	} else {
-		callback()
-	}
+  if (value == form.value.id) {
+    callback(new Error("不能选择自己为父级"));
+  } else {
+    callback();
+  }
 }
 
 /** 暴露给父组件的方法 */
 defineExpose({
-	open,
-})
+  open,
+});
 </script>

+ 111 - 82
src/views/business/inspectionStandard/formCategory.vue

@@ -1,115 +1,144 @@
 <template>
-	<el-dialog title="检查指导项类别表单" v-model="visible" width="400px" append-to-body draggable>
-		<div class="form-container">
-			<el-form ref="categoryRef" v-loading="loading" class="master-container" :model="form" :rules="rules" label-width="80px">
-				<el-form-item label="父级类别" prop="parentId" :rules="rules">
-					<el-tree-select v-model="form.parentId" :data="parentCategories" check-strictly :render-after-expand="false" />
-				</el-form-item>
-				<el-form-item label="类别名称" prop="name">
-					<el-input v-model.trim="form.name" placeholder="类别名称" />
-				</el-form-item>
-				<el-form-item label="备注" prop="remark">
-					<el-input v-model.trim="form.remark" placeholder="请填写备注" />
-				</el-form-item>
-			</el-form>
-		</div>
-		<template #footer>
-			<el-button type="primary" icon="Check" @click="handleSave">确 定</el-button>
-			<el-button icon="Close" @click="handleCancel">取 消</el-button>
-		</template>
-	</el-dialog>
+  <el-dialog
+    title="检查指导项类别表单"
+    v-model="visible"
+    width="400px"
+    append-to-body
+    draggable
+  >
+    <div class="form-container">
+      <el-form
+        ref="categoryRef"
+        v-loading="loading"
+        class="master-container"
+        :model="form"
+        :rules="rules"
+        label-width="80px"
+      >
+        <el-form-item label="父级类别" prop="parentId" :rules="rules">
+          <el-tree-select
+            v-model="form.parentId"
+            :data="parentCategories"
+            check-strictly
+            :render-after-expand="false"
+          />
+        </el-form-item>
+        <el-form-item label="类别名称" prop="name">
+          <el-input v-model.trim="form.name" placeholder="类别名称" />
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model.trim="form.remark" placeholder="请填写备注" />
+        </el-form-item>
+      </el-form>
+    </div>
+    <template #footer>
+      <el-button type="primary" icon="Check" @click="handleSave"
+        >确 定</el-button
+      >
+      <el-button icon="Close" @click="handleCancel">取 消</el-button>
+    </template>
+  </el-dialog>
 </template>
 <script setup>
-import { getCategoryInfo, saveCategory } from '@/api/business/inspectionInstruction'
-const { proxy } = getCurrentInstance()
-const emit = defineEmits(['handleSaveSuccess'])
+import {
+  getCategoryInfo,
+  saveCategory,
+} from "@/api/business/inspectionInstruction";
+const { proxy } = getCurrentInstance();
+const emit = defineEmits(["handleSaveSuccess"]);
 /** 字典数组区 */
-const { is_allow_more } = proxy.useDict('is_allow_more')
+const { is_allow_more } = proxy.useDict("is_allow_more");
 /** 父类别 */
-const parentCategories = ref([])
-const loading = ref(false)
-const visible = ref(false)
+const parentCategories = ref([]);
+const loading = ref(false);
+const visible = ref(false);
 const data = reactive({
-	form: {},
-	rules: {
-		name: [{ required: true, message: '类别名称不能为空', trigger: 'blur' }],
-		parentId: [{ required: true, trigger: 'blur', validator: validateParentId }],
-	},
-})
-const { form, rules } = toRefs(data)
+  form: {},
+  rules: {
+    name: [{ required: true, message: "类别名称不能为空", trigger: "blur" }],
+    parentId: [
+      { required: true, trigger: "blur", validator: validateParentId },
+    ],
+  },
+});
+const { form, rules } = toRefs(data);
 
 /***********************  方法区  ****************************/
 /** 打开抽屉 */
 function open(id) {
-	reset()
-	visible.value = true
-	loading.value = true
-	getCategoryInfo(id || 0).then((res) => {
-		if (res.data.formData) {
-			form.value = res.data.formData
-		}
-		parentCategories.value = res.data.parentOptions
-		parentCategories.value.unshift({
-			value: '0',
-			label: '一级分类',
-		})
-		if (id) {
-			var index = parentCategories.value.findIndex((obj) => obj.value === id)
-			if (index > -1) {
-				parentCategories.value.splice(index, 1)
-			}
-		}
-		loading.value = false
-	})
+  reset();
+  console.log("id", id);
+  visible.value = true;
+  loading.value = true;
+  getCategoryInfo(id || 0, 1).then((res) => {
+    console.log("res", res);
+    if (res.data.formData) {
+      form.value = res.data.formData;
+    }
+    parentCategories.value = res.data.parentOptions;
+    parentCategories.value.unshift({
+      value: "0",
+      label: "一级分类",
+    });
+    if (id) {
+      var index = parentCategories.value.findIndex((obj) => obj.value === id);
+      if (index > -1) {
+        parentCategories.value.splice(index, 1);
+      }
+    }
+
+    console.log("parentCategories", parentCategories);
+    loading.value = false;
+  });
 }
 
 /** 取消按钮 */
 function handleCancel() {
-	visible.value = false
-	reset()
+  visible.value = false;
+  reset();
 }
 
 /** 表单重置 */
 function reset() {
-	form.value = {
-		id: null,
-		type: 1,
-		parentId: '0',
-		name: '',
-		remark: '',
-		sort: 1,
-	}
-	proxy.resetForm('categoryRef')
+  form.value = {
+    id: null,
+    type: 1,
+    parentId: "0",
+    name: "",
+    remark: "",
+    sort: 1,
+  };
+  proxy.resetForm("categoryRef");
 }
 
 /** 提交按钮 */
 function handleSave() {
-	proxy.$refs['categoryRef'].validate((valid) => {
-		if (valid) {
-			saveCategory(form.value).then((res) => {
-				if (res.code === 200) {
-					proxy.$modal.msgSuccess('操作成功')
-					emit('handleSaveSuccess')
-				}
-				visible.value = false
-			})
-		}
-	})
+  proxy.$refs["categoryRef"].validate((valid) => {
+    if (valid) {
+      saveCategory(form.value).then((res) => {
+        if (res.code === 200) {
+          proxy.$modal.msgSuccess("操作成功");
+          emit("handleSaveSuccess");
+        }
+        visible.value = false;
+      });
+    }
+  });
 }
 
 /**
  * 校验自己不能是自己的父级
  */
 function validateParentId(rule, value, callback) {
-	if (value == form.value.id) {
-		callback(new Error('不能选择自己为父级'))
-	} else {
-		callback()
-	}
+  if (value == form.value.id) {
+    callback(new Error("不能选择自己为父级"));
+  } else {
+    callback();
+  }
 }
 
 /** 暴露给父组件的方法 */
 defineExpose({
-	open,
-})
+  open,
+});
 </script>

+ 10 - 1
src/views/business/noCurrentReject/DialogSelectLot.vue

@@ -94,12 +94,16 @@
     </template>
   </el-dialog>
   <!-- 详情弹窗 -->
-  <dialog-reject-info ref="dialogRejectInfoRef" />
+  <dialog-reject-info
+    ref="dialogRejectInfoRef"
+    @handleSaveSuccess="getIndexList()"
+  />
 </template>
 <script setup>
 import { listDayworkLot } from "@/api/business/daywork";
 import DialogRejectInfo from "./DialogRejectInfo";
 const { proxy } = getCurrentInstance();
+const emit = defineEmits(["handleSaveSuccess"]);
 const total = ref(0);
 const props = defineProps({
   multipleSelected: {
@@ -148,6 +152,11 @@ function getList() {
   });
 }
 
+function getIndexList() {
+  console.log("获取列表");
+  emit("handleSaveSuccess");
+}
+
 /**
  * 列表checkbox列选择 事件
  */

+ 11 - 3
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
@@ -155,7 +163,7 @@
       @handleSaveSuccess="getList()"
     />
     <!-- 选择批次弹窗 -->
-    <dialog-select-lot ref="dialogSelectLot" />
+    <dialog-select-lot ref="dialogSelectLot" @handleSaveSuccess="getList()" />
   </div>
 </template>
 

+ 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);
 }
 
 /** 使用新方式 */

+ 1 - 1
src/views/business/productInspectionInstruction/index.vue

@@ -124,7 +124,7 @@
 						<el-button type="primary" icon="Plus" @click="handleAddInstruction"
 							v-hasPermi="['business:productInspectionInstruction:add']"
 							:disabled="!currentTechnologicalProcessDetail.id">
-							添加工艺 </el-button>
+							添加 </el-button>
 					</el-form-item>
 				</el-form>
 				<div class="el-table-container">

+ 1 - 1
src/views/business/productInspectionStandard/index.vue

@@ -123,7 +123,7 @@
           <el-form-item>
             <el-button type="primary" icon="Plus" @click="handleAddInstruction"
               v-hasPermi="['business:productInspectionStandard:add']" :disabled="!currentTechnologicalProcessDetail.id">
-              添加工艺 </el-button>
+              添加 </el-button>
           </el-form-item>
         </el-form>
         <div class="el-table-container">

+ 390 - 278
src/views/business/returnReceipt/form.vue

@@ -1,318 +1,430 @@
 <template>
-	<el-drawer title="外协单信息" :with-header="false" v-model="visible" direction="rtl" size="100%">
-		<div class="form-container column-container">
-			<div class="form-btns-container">
-				<span class="title-label">
-					<el-icon><Document /></el-icon>
-					<span>收回单信息</span>
-				</span>
-				<el-button-group>
-					<el-button type="primary" icon="Finished" @click="submitForm"> 确认收回 </el-button>
-				</el-button-group>
+  <el-drawer
+    title="外协单信息"
+    :with-header="false"
+    v-model="visible"
+    direction="rtl"
+    size="100%"
+  >
+    <div class="form-container column-container">
+      <div class="form-btns-container">
+        <span class="title-label">
+          <el-icon><Document /></el-icon>
+          <span>收回单信息</span>
+        </span>
+        <el-button-group>
+          <el-button type="primary" icon="Finished" @click="submitForm">
+            确认收回
+          </el-button>
+        </el-button-group>
 
-				<div class="close-btn" @click="cancel">
-					<i class="fa fa-times" aria-hidden="true" />
-					<!-- <span>关闭</span> -->
-				</div>
-			</div>
-			<el-form ref="formRef" class="master-container" :model="form" v-loading="loading" label-width="120px">
-				<el-row :gutter="20">
-					<el-col :span="6">
-						<el-form-item label="单据号" prop="formCode">
-							<el-input v-model="form.formCode" readonly />
-						</el-form-item>
-					</el-col>
-					<el-col :span="6">
-						<el-form-item label="表单日期" prop="formDate">
-							<el-date-picker
-							    v-if="editStatus"
-								v-model="form.formDate"
-								type="date"
-								value-format="YYYY-MM-DD"
-								style="width: 100%"
-							>
-							</el-date-picker>
-							<el-input v-model="form.formDate" v-else readonly />
-						</el-form-item>
-					</el-col>
-					<el-col :span="6">
-						<el-form-item label="外协商名称" prop="supplierName">
-							<el-input v-if="editStatus" v-model="form.supplierName" readonly placeholder="请输入外协商名称">
-								<template #append>
-									<el-button icon="Search" @click="handleShowDialogSuppliers" />
-								</template>
-							</el-input>
-							<span v-else>{{ form.supplierName }}</span>
-						</el-form-item>
-					</el-col>
-					<el-col :span="6">
-						<el-form-item label="备注" prop="remark">
-							<el-input v-model="form.remark" v-if ="editStatus" />
-							<el-input v-model="form.remark" v-else readonly />
-						</el-form-item>
-					</el-col>
-				</el-row>
-			</el-form>
-			<!-- 渲染数据区 -->
-			<div class="form-details-btns-container">
-				<el-button type="primary" icon="Plus" v-if="form.supplierName!=''" :disabled="!editStatus"  @click="handleShowDialogOutSourceDetails"> 添加收回明细 </el-button>
-			</div>
-			<div class="el-table-container">
-				<div class="el-table-inner-container">
-					<el-table v-loading="loading" :data="form.details" size="small" border height="100%">
-						<el-table-column label="行号" type="index" align="center" width="48" />
-						<el-table-column label="批次号" align="center" prop="lotCode" width="104" />
-						<el-table-column label="产品描述" align="center" prop="productDescription" width="320" />
-						<el-table-column label="产品数量" align="center" prop="productNum" width="96" />
-						<el-table-column
-							label ='原箱号'
-							align="center"
-							prop="originalCarrier"
-							width="320"
-						/>
-						<el-table-column
-							label="新箱号"
-							align="center"
-							prop="newCarrier"
-							width="320"
-						/>
-						<el-table-column label="外协工序" align="center" prop="processAlias" width="120" />
-						<el-table-column label="收回数量" align="center" prop="receiptNum" width="104"/>
-						<el-table-column label="确定数量" align="center" prop="auditNum" width="104">
-							<template #default="scope">
-								<el-input-number
-									v-model="scope.row.auditNum"
-									:min="0"
-									controls-position="right"
-									style="text-align: center"
-								/>
-							</template>
-						</el-table-column>
-						<el-table-column label="备注" align="center" prop="remark">
-							<template #default="scope">
-								<el-input v-model="scope.row.remark" v-if="editStatus" />
-								<el-input v-model="scope.row.remark" v-else readonly />
-							</template>
-						</el-table-column>
-						<el-table-column label="审核状态" align="center" prop="status" width="200">
-							<template #default="scope">
-							<el-switch
-								v-model="scope.row.status"
-								style="--el-switch-on-color: #13ce66; --el-switch-off-color: #ff4949"
-								:active-value="1"
-								:inactive-value="0"
-								active-text="已审核"
-    							inactive-text="未审核"
-								@change="handleChangeAuditStatus(scope.row)"
-								/>
-							</template>
-						</el-table-column>
-						<el-table-column label="反选" align="center" width="100">
-							<template #default="scope">
-						<el-button
-							icon="delete"
-							link
-							type="danger"
-							@click="handleDelReturnReceiveDetail(scope.row)"
-							>删除
-						</el-button>
-					</template>
-					</el-table-column>
-					</el-table>
-				</div>
-			</div>
-		</div>
-			<!-- 收回明细选择 -->
-			<dialog-outsource-details
-			ref="dialogOutsourceDetailsRef"
-			:multiple-selected="handleMultipleSelectedOutsourceDetails"
-		/>
-		<!-- 外协商选择 -->
-		<dialog-suppliers ref="dialogSuppliersRef" :single-selected="handleSingleSelectedSuppliers" />
-	</el-drawer>
+        <div class="close-btn" @click="cancel">
+          <i class="fa fa-times" aria-hidden="true" />
+          <!-- <span>关闭</span> -->
+        </div>
+      </div>
+      <el-form
+        ref="formRef"
+        class="master-container"
+        :model="form"
+        v-loading="loading"
+        label-width="120px"
+      >
+        <el-row :gutter="20">
+          <el-col :span="6">
+            <el-form-item label="单据号" prop="formCode">
+              <el-input v-model="form.formCode" readonly />
+            </el-form-item>
+          </el-col>
+          <el-col :span="6">
+            <el-form-item label="表单日期" prop="formDate">
+              <el-date-picker
+                v-if="editStatus"
+                v-model="form.formDate"
+                type="date"
+                value-format="YYYY-MM-DD"
+                style="width: 100%"
+              >
+              </el-date-picker>
+              <el-input v-model="form.formDate" v-else readonly />
+            </el-form-item>
+          </el-col>
+          <el-col :span="6">
+            <el-form-item label="外协商名称" prop="supplierName">
+              <el-input
+                v-if="editStatus"
+                v-model="form.supplierName"
+                readonly
+                placeholder="请输入外协商名称"
+              >
+                <template #append>
+                  <el-button icon="Search" @click="handleShowDialogSuppliers" />
+                </template>
+              </el-input>
+              <span v-else>{{ form.supplierName }}</span>
+            </el-form-item>
+          </el-col>
+          <el-col :span="6">
+            <el-form-item label="备注" prop="remark">
+              <el-input v-model="form.remark" v-if="editStatus" />
+              <el-input v-model="form.remark" v-else readonly />
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <!-- 渲染数据区 -->
+      <div class="form-details-btns-container">
+        <el-button
+          type="primary"
+          icon="Plus"
+          v-if="form.supplierName != ''"
+          :disabled="!editStatus"
+          @click="handleShowDialogOutSourceDetails"
+        >
+          添加收回明细
+        </el-button>
+      </div>
+      <div class="el-table-container">
+        <div class="el-table-inner-container">
+          <el-table
+            v-loading="loading"
+            :data="form.details"
+            size="small"
+            border
+            height="100%"
+          >
+            <el-table-column
+              label="行号"
+              type="index"
+              align="center"
+              width="48"
+            />
+            <el-table-column
+              label="批次号"
+              align="center"
+              prop="lotCode"
+              width="104"
+            />
+            <el-table-column
+              label="产品描述"
+              align="center"
+              prop="productDescription"
+              width="320"
+            />
+            <el-table-column
+              label="产品数量"
+              align="center"
+              prop="productNum"
+              width="96"
+            />
+            <el-table-column
+              label="原箱号"
+              align="center"
+              prop="originalCarrier"
+              width="320"
+            />
+            <el-table-column
+              label="新箱号"
+              align="center"
+              prop="newCarrier"
+              width="320"
+            />
+            <el-table-column
+              label="外协工序"
+              align="center"
+              prop="processAlias"
+              width="120"
+            />
+            <el-table-column
+              label="收回数量"
+              align="center"
+              prop="receiptNum"
+              width="104"
+            />
+            <el-table-column
+              label="确定数量"
+              align="center"
+              prop="auditNum"
+              width="104"
+            >
+              <template #default="scope">
+                <el-input-number
+                  v-model="scope.row.auditNum"
+                  :min="0"
+                  controls-position="right"
+                  style="text-align: center"
+                />
+              </template>
+            </el-table-column>
+            <el-table-column label="备注" align="center" prop="remark">
+            </el-table-column>
+            <el-table-column
+              label="审核状态"
+              align="center"
+              prop="status"
+              width="200"
+            >
+              <template #default="scope">
+                <el-switch
+                  v-model="scope.row.status"
+                  style="
+                    --el-switch-on-color: #13ce66;
+                    --el-switch-off-color: #ff4949;
+                  "
+                  :active-value="1"
+                  :inactive-value="0"
+                  active-text="已审核"
+                  inactive-text="未审核"
+                  @change="handleChangeAuditStatus(scope.row)"
+                />
+              </template>
+            </el-table-column>
+            <el-table-column label="反选" align="center" width="100">
+              <template #default="scope">
+                <el-button
+                  icon="delete"
+                  link
+                  type="danger"
+                  @click="handleDelReturnReceiveDetail(scope.row)"
+                  >删除
+                </el-button>
+              </template>
+            </el-table-column>
+          </el-table>
+        </div>
+      </div>
+    </div>
+    <!-- 收回明细选择 -->
+    <dialog-outsource-details
+      ref="dialogOutsourceDetailsRef"
+      :multiple-selected="handleMultipleSelectedOutsourceDetails"
+    />
+    <!-- 外协商选择 -->
+    <dialog-suppliers
+      ref="dialogSuppliersRef"
+      :single-selected="handleSingleSelectedSuppliers"
+    />
+  </el-drawer>
 </template>
 <script setup>
-import { getReceipt,addReceipt,updateReceipt} from '@/api/business/returnReceipt'
-import dialogOutsourceDetails from './DialogOutsourceDetails'
-import dialogSuppliers from './DialogSuppliers'
-const emit = defineEmits(['handleSaveSuccess'])
-const { proxy } = getCurrentInstance()
+import {
+  getReceipt,
+  addReceipt,
+  updateReceipt,
+} from "@/api/business/returnReceipt";
+import dialogOutsourceDetails from "./DialogOutsourceDetails";
+import dialogSuppliers from "./DialogSuppliers";
+const emit = defineEmits(["handleSaveSuccess"]);
+const { proxy } = getCurrentInstance();
 /** 表单抽屉 页变量 */
-const loading = ref(false)
-const visible = ref(false)
-const editStatus = ref(false)
-const webHost = import.meta.env.VITE_APP_BASE_API
-const form = ref({})
+const loading = ref(false);
+const visible = ref(false);
+const editStatus = ref(false);
+const webHost = import.meta.env.VITE_APP_BASE_API;
+const form = ref({});
 
 /****************************  方法区  ****************************/
 /** 打开抽屉 */
 const open = (row) => {
-	reset()
-	visible.value = true
-	if (row) {
-		loading.value = true
-		editStatus.value = row.editStatus
-		getReceipt(row.id).then((response) => {
-			form.value = response.data
-			loading.value = false
-		})
-	} else {
-		editStatus.value = true
-	}
-}
+  reset();
+  visible.value = true;
+  if (row) {
+    loading.value = true;
+    editStatus.value = row.editStatus;
+    getReceipt(row.id).then((response) => {
+      form.value = response.data;
+      loading.value = false;
+    });
+  } else {
+    editStatus.value = true;
+  }
+};
 
 /** 取消按钮 */
 const cancel = () => {
-	visible.value = false
-	reset()
-}
+  visible.value = false;
+  reset();
+};
 
 /** 表单重置 */
 const reset = () => {
-	form.value = {
-		id: null,
-		formCode: '',
-		formDate: proxy.parseTime(new Date(), '{y}-{m}-{d}'),
-		supplierId: '0',
-		supplierName: '',
-		remark: '',
-		details: []
-	}
-	proxy.resetForm('formRef')
-}
+  form.value = {
+    id: null,
+    formCode: "",
+    formDate: proxy.parseTime(new Date(), "{y}-{m}-{d}"),
+    supplierId: "0",
+    supplierName: "",
+    remark: "",
+    details: [],
+  };
+  proxy.resetForm("formRef");
+};
 /***************************** 外协商对话框相关 *****************************/
 //打开外协商选择对话框
 const handleShowDialogSuppliers = () => {
-	proxy.$refs.dialogSuppliersRef.open()
-}
+  proxy.$refs.dialogSuppliersRef.open();
+};
 //外协商选择带回
 const handleSingleSelectedSuppliers = (selection) => {
-	console.log(selection)
-	//如果收回明细已存在,切换外协商名字,删除添加的收回明细
-	if(selection.id != form.value.supplierId && form.value.details.length>0) {
-		form.value.details = []
-	}
-	form.value.supplierId = selection.id
-	form.value.supplierName = selection.name
-}
+  console.log(selection);
+  //如果收回明细已存在,切换外协商名字,删除添加的收回明细
+  if (selection.id != form.value.supplierId && form.value.details.length > 0) {
+    form.value.details = [];
+  }
+  form.value.supplierId = selection.id;
+  form.value.supplierName = selection.name;
+};
 /***************************** 外协明细对话框相关 *****************************/
 // 打开外协明细选择对话框
 const handleShowDialogOutSourceDetails = () => {
-	var info = {} 
-	info.outsourceDetailIds = form.value.details.map((item) => item.outsourceDetailId)
-	info.supplierId = form.value.supplierId
-	proxy.$refs.dialogOutsourceDetailsRef.open(info)
-}
+  var info = {};
+  info.outsourceDetailIds = form.value.details.map(
+    (item) => item.outsourceDetailId
+  );
+  info.supplierId = form.value.supplierId;
+  proxy.$refs.dialogOutsourceDetailsRef.open(info);
+};
 // 外协明细选择带回
 const handleMultipleSelectedOutsourceDetails = (selection) => {
-	console.log(selection)
-	for(let i = 0;i<selection.length;i++) {
-		for(let j = 0;j<selection[i].processes.length;j++) {
-			const newDetail = {
-			outsourceDetailId: selection[i].id,
-			productDescription: selection[i].productDescription,
-			lotCode:selection[i].lotCode,
-			lotId:selection[i].lotId,
-			dayworkId:selection[i].dayworkId,
-			productId:selection[i].productId,
-			productNum: selection[i].productNum,
-			receiptNum: selection[i].processes[j].qualifiedNum?selection[i].processes[j].qualifiedNum:0,
-			originalCarrier:selection[i].originalCarrier,
-			originalCarrierCount:selection[i].originalCarrierCount,
-			newCarrier:selection[i].newCarrier,
-			newCarrierCount:selection[i].newCarrierCount,
-			processNames: selection[i].processNames,
-			remark: '',
-			technologicalProcessId:selection[i].processes[j].technologicalProcessId,
-			technologyVersion:selection[i].processes[j].technologyVersion,
-			technologicalProcessDetailId:selection[i].processes[j].technologicalProcessDetailId,
-			processId:selection[i].processes[j].processId,
-			processAlias:selection[i].processes[j].processAlias,
-			processCode:selection[i].processes[j].processCode,
-			processStepNumber:selection[i].processes[j].processStepNumber,
-			status:0,
-			auditNum:0
-			}
-		    form.value.details.push(newDetail)
-		}
-		}
-}
+  console.log(selection);
+  for (let i = 0; i < selection.length; i++) {
+    for (let j = 0; j < selection[i].processes.length; j++) {
+      const newDetail = {
+        outsourceDetailId: selection[i].id,
+        productDescription: selection[i].productDescription,
+        lotCode: selection[i].lotCode,
+        lotId: selection[i].lotId,
+        dayworkId: selection[i].dayworkId,
+        productId: selection[i].productId,
+        productNum: selection[i].productNum,
+        receiptNum: selection[i].processes[j].qualifiedNum
+          ? selection[i].processes[j].qualifiedNum
+          : 0,
+        originalCarrier: selection[i].originalCarrier,
+        originalCarrierCount: selection[i].originalCarrierCount,
+        newCarrier: selection[i].newCarrier,
+        newCarrierCount: selection[i].newCarrierCount,
+        processNames: selection[i].processNames,
+        remark: "",
+        technologicalProcessId:
+          selection[i].processes[j].technologicalProcessId,
+        technologyVersion: selection[i].processes[j].technologyVersion,
+        technologicalProcessDetailId:
+          selection[i].processes[j].technologicalProcessDetailId,
+        processId: selection[i].processes[j].processId,
+        processAlias: selection[i].processes[j].processAlias,
+        processCode: selection[i].processes[j].processCode,
+        processStepNumber: selection[i].processes[j].processStepNumber,
+        status: 0,
+        auditNum: 0,
+      };
+      form.value.details.push(newDetail);
+    }
+  }
+};
 //审核状态按钮
 function handleChangeAuditStatus(row) {
-console.log(row)
+  console.log(row);
 }
 /** 提交按钮 */
 function submitForm() {
-	proxy.$refs['formRef'].validate((valid) => {
-		if (valid) {
-			var flag = true;
-			for (let i = 0; i < form.value.details.length; i++) {
-				var tempList = form.value.details.filter(item => {
-			return item.lotId ==form.value.details[i].lotId
-		})
-				//如果外协填入收回数量,则判断确定数量不能大于收回数量
-				if(form.value.details[i].receiptNum > 0) {
-				if(form.value.details[i].auditNum > form.value.details[i].receiptNum) {
-					flag = false
-					proxy.$modal.msgError('第' + (i + 1) + '行确定数量不能大于收回数量')
-				   }
-				}//外协没填收回数量
-				else {
-					//外协没填收回数量,第一行工序确定数量不能超过产品数量,第二行工序确定数量不能超过上一道序的确定数量
-					var index = tempList.indexOf(form.value.details[i])
-					if(index>0 && form.value.details[i].auditNum > tempList[index-1].auditNum) {
-						flag = false
-						proxy.$modal.msgError('第' + (i + 1) +'行确定数量不能超过上一道序的确定数量')
-					}
-			    if(form.value.details[i].auditNum > form.value.details[i].productNum) {
-					flag = false
-					proxy.$modal.msgError('第' + (i + 1) + '行确定数量不能大于产品数量' + form.value.details[i].productNum)
-			}
-			}
-			if(form.value.details[i].auditNum == 0) {
-				flag = false
-				proxy.$modal.msgError('第' + (i + 1) + '行确定数量不能为0')
-			}
-		}
-		if(form.value.details.length==0) {
-				flag = false
-				proxy.$modal.msgError('收回明细不能为空')
-			}
-		console.log(form.value.details.length)
-			if(flag) {
-				console.log(form.value)
-			if (form.value.id != null) {
-				console.log(form.value)
-				updateReceipt(form.value).then((response) => {
-					proxy.$modal.msgSuccess('修改成功')
-					visible.value = false
-					emit('handleSaveSuccess')
-				})
-			} else {
-				console.log(form.value)
-				addReceipt(form.value).then((response) => {
-					proxy.$modal.msgSuccess('新增成功')
-					visible.value = false
-					emit('handleSaveSuccess')
-				})
-			}
-			}
-		}
-	})
+  proxy.$refs["formRef"].validate((valid) => {
+    if (valid) {
+      var flag = true;
+      var confirmFlag = false;
+      for (let i = 0; i < form.value.details.length; i++) {
+        var tempList = form.value.details.filter((item) => {
+          return item.lotId == form.value.details[i].lotId;
+        });
+        //如果外协填入收回数量,则判断确定数量不能大于收回数量
+        // if (form.value.details[i].receiptNum > 0) {
+        // 	if (form.value.details[i].auditNum > form.value.details[i].receiptNum) {
+        // 		flag = false
+        // 		proxy.$modal.msgError('第' + (i + 1) + '行确定数量不能大于收回数量')
+        // 	}
+        // } else {
+        //外协没填收回数量
+        //外协没填收回数量,第一行工序确定数量不能超过产品数量,第二行工序确定数量不能超过上一道序的确定数量
+        var index = tempList.indexOf(form.value.details[i]);
+        // if (index > 0 && form.value.details[i].auditNum > tempList[index - 1].auditNum) {
+        // 	flag = false
+        // 	proxy.$modal.msgError('第' + (i + 1) + '行确定数量不能超过上一道序的确定数量')
+        // }
+        // if (form.value.details[i].auditNum > form.value.details[i].productNum) {
+        // 	flag = false
+        // 	proxy.$modal.msgError('第' + (i + 1) + '行确定数量不能大于产品数量' + form.value.details[i].productNum)
+        // }
+        // }
+        if (form.value.details[i].auditNum == 0) {
+          // flag = false
+          // proxy.$modal.msgError('第' + (i + 1) + '行确定数量不能为0')
+          confirmFlag = true;
+        }
+      }
+      if (form.value.details.length == 0) {
+        flag = false;
+        proxy.$modal.msgError("收回明细不能为空");
+      }
+      console.log(form.value.details.length);
+      if (flag) {
+        console.log(form.value);
+        if (confirmFlag) {
+          proxy.$modal
+            .confirm("存在填写确定数量为0的工序,确定要收回吗?")
+            .then(function () {
+              if (form.value.id != null) {
+                console.log(form.value);
+                updateReceipt(form.value).then((response) => {
+                  proxy.$modal.msgSuccess("修改成功");
+                  visible.value = false;
+                  emit("handleSaveSuccess");
+                });
+              } else {
+                console.log(form.value);
+                addReceipt(form.value).then((response) => {
+                  proxy.$modal.msgSuccess("新增成功");
+                  visible.value = false;
+                  emit("handleSaveSuccess");
+                });
+              }
+            })
+            .catch((error) => {
+              proxy.$modal.msg("取消确认");
+            });
+        } else {
+          if (form.value.id != null) {
+            console.log(form.value);
+            updateReceipt(form.value).then((response) => {
+              proxy.$modal.msgSuccess("修改成功");
+              visible.value = false;
+              emit("handleSaveSuccess");
+            });
+          } else {
+            console.log(form.value);
+            addReceipt(form.value).then((response) => {
+              proxy.$modal.msgSuccess("新增成功");
+              visible.value = false;
+              emit("handleSaveSuccess");
+            });
+          }
+        }
+      }
+    }
+  });
 }
 //反选操作
 function handleDelReturnReceiveDetail(row) {
-	proxy.$modal
+  proxy.$modal
     .confirm("是否确认删除选中的数据项,如果删除,同时删除该批次下所有工序?")
     .then(function () {
-      form.value.details = form.value.details.filter(item => {
-		return item.lotId !=row.lotId
-	  })
-    })
+      form.value.details = form.value.details.filter((item) => {
+        return item.lotId != row.lotId;
+      });
+    });
 }
 
 /** 暴露给父组件的方法 */
 defineExpose({
-	open
-})
+  open,
+});
 </script>

+ 13 - 14
src/views/business/returnReceipt/index.vue

@@ -46,13 +46,19 @@
 
     <!-- 功能按钮区 -->
     <div class="list-btns-container">
-      <el-button type="primary" icon="Plus" @click="handleShowFormDialog(null)">
+      <el-button
+        type="primary"
+        icon="Plus"
+        v-hasPermi="['business:returnReceipt:add']"
+        @click="handleShowFormDialog(null)"
+      >
         新增
       </el-button>
       <el-button
         type="danger"
         icon="Delete"
         :disabled="multiple"
+        v-hasPermi="['business:returnReceipt:remove']"
         @click="handleDelete"
       >
         删除
@@ -92,19 +98,11 @@
               {{ 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="状态" 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="操作"
@@ -117,6 +115,7 @@
                 link
                 type="warning"
                 icon="Edit"
+                v-hasPermi="['business:returnReceipt:edit']"
                 @click="handleShowFormDialog(scope.row)"
               >
                 编辑

+ 156 - 94
src/views/business/returnTurnover/DialogReturnTurnover.vue

@@ -14,47 +14,71 @@
         :rules="rules"
         label-width="80px"
       >
-      <el-form-item
-              label="下序工段:"
-              prop="productionDeptId"
-              label-width="100px"
-            >
-              <el-select-v2
-                v-model="form.productionDeptId"
-                clearable
-                :disabled="!form.flag"
-                :options="deptList"
-                placeholder="请选择下序工段"
-                style="width: 220px"
-              />
-            </el-form-item>
-            <el-form-item label="周转载具:"  prop="carrierIds"  label-width="100px">
-                  <el-select v-model="form.carrierIds" :disabled="form.productionDeptId == null ||!form.flag"
-                    multiple filterable remote reserve-keyword placeholder="请选择载具" value-key="value"
-                    :remote-method="(arg) => remoteCarriers(arg, form.carriers)" :loading="loadingCarrier"
-                    @change="(arg) => handleCarrierChange(arg)">
-                    <el-option v-for="item in carriers" :key="item.value" :label="item.label" :value="item.value"/>
-                  </el-select>
-                </el-form-item>
+        <el-form-item
+          label="下序工段:"
+          prop="productionDeptId"
+          label-width="100px"
+        >
+          <el-select-v2
+            v-model="form.productionDeptId"
+            clearable
+            :disabled="!form.flag"
+            :options="deptList"
+            placeholder="请选择下序工段"
+            style="width: 220px"
+          />
+        </el-form-item>
+        <el-form-item label="周转载具:" prop="carrierIds" label-width="100px">
+          <el-select
+            v-model="form.carrierIds"
+            :disabled="form.productionDeptId == null || !form.flag"
+            multiple
+            filterable
+            remote
+            reserve-keyword
+            placeholder="请选择载具"
+            value-key="value"
+            :remote-method="(arg) => remoteCarriers(arg, form.carriers)"
+            :loading="loadingCarrier"
+            @change="(arg) => handleCarrierChange(arg)"
+          >
+            <el-option
+              v-for="item in carriers"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            />
+          </el-select>
+        </el-form-item>
       </el-form>
     </div>
     <template #footer>
-      <el-button type="primary" icon="Check" @click="handleSave"
+      <el-button
+        v-if="form.flag"
+        type="primary"
+        icon="Check"
+        @click="handleSave"
         >确 定</el-button
       >
-      <el-button icon="Close" @click="handleCancel">取 消</el-button>
+      <el-button v-if="form.flag" icon="Close" @click="handleCancel"
+        >取 消</el-button
+      >
     </template>
   </el-dialog>
 </template>
 <script setup>
-import {listCarriers} from '@/api/business/lot'
-import { getTurnoverDeptList,updateReceiptTurnover,getNowBindCarriers } from '@/api/business/returnTurnover'
-import { ref } from 'vue';
+import { listCarriers } from "@/api/business/lot";
+import {
+  getTurnoverDeptList,
+  updateReceiptTurnover,
+  getNowBindCarriers,
+} from "@/api/business/returnTurnover";
+import { ref } from "vue";
 const { proxy } = getCurrentInstance();
 const emit = defineEmits(["handleSaveSuccess"]);
 /**工周转弹窗变量 */
-const carriers = ref([])
-const deptList = ref([])
+const carriers = ref([]);
+const deptList = ref([]);
 const loadingCarrier = ref(false);
 const visible = ref(false);
 const data = reactive({
@@ -64,7 +88,12 @@ const data = reactive({
       { required: true, message: "下序工段不能为空", trigger: "change" },
     ],
     carrierIds: [
-      { required: true,type: 'array', message: "周转载具不能为空", trigger: "blur" },
+      {
+        required: true,
+        type: "array",
+        message: "周转载具不能为空",
+        trigger: "blur",
+      },
     ],
   },
 });
@@ -75,58 +104,84 @@ const { form, rules } = toRefs(data);
 function open(data) {
   reset();
   visible.value = true;
-  if(data.productionDeptId == 0) {
-    data.productionDeptId =null
+  if (data.productionDeptId == 0) {
+    data.productionDeptId = null;
   }
   form.value = proxy.deepClone(data);
-  console.log(form.value)
-  getNowCarriers(data)
-  getTurnoverDept(data)
-  getCarriers()
+  console.log(form.value);
+  getNowCarriers(data);
+  getTurnoverDept(data);
+  getCarriers();
 }
 function getCarriers() {
-  listCarriers({ isAbandoned: 0, pageSize: 200 }).then(res => {
+  listCarriers({ isAbandoned: 0, pageSize: 200 }).then((res) => {
     if (res.code === 200) {
-      carriers.value.push(...res.rows.map(v => ({ value: v.id, label: v.code })))
-      carriers.value.push(...form.value.carriers)
-      console.log(carriers.value)
+      carriers.value.push(
+        ...res.rows.map((v) => ({ value: v.id, label: v.code }))
+      );
+      carriers.value.push(...form.value.carriers);
+      console.log(carriers.value);
     }
-  })
+  });
 }
 //判断箱子是否需要解绑
 function getNowCarriers(data) {
-  getNowBindCarriers(data).then(res =>{
-    if(res.code == 200) {
-      form.value.carriers = (res.data.dayworkCarrierList && res.data.dayworkCarrierList.length>0)? res.data.dayworkCarrierList.map(v => ({ value: v.carrierId, label: v.carrierCode })) :[]
-      form.value.carrierIds = res.data.carrierIds
+  getNowBindCarriers(data).then((res) => {
+    if (res.code == 200) {
+      form.value.carriers =
+        res.data.dayworkCarrierList && res.data.dayworkCarrierList.length > 0
+          ? res.data.dayworkCarrierList.map((v) => ({
+              value: v.carrierId,
+              label: v.carrierCode,
+            }))
+          : [];
+      form.value.carrierIds = res.data.carrierIds;
     }
-  })
+  });
 }
 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
+  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;
     }
-  })
+  });
 }
 function remoteCarriers(queryString, choiced) {
-  console.log(choiced)
-  loadingCarrier.value = true
-  listCarriers({ isAbandoned: 0, pageSize: 200, code: queryString != '' ? queryString : null }).then(res => {
+  console.log(choiced);
+  loadingCarrier.value = true;
+  listCarriers({
+    isAbandoned: 0,
+    pageSize: 200,
+    code: queryString != "" ? queryString : null,
+  }).then((res) => {
     if (res.code === 200) {
-      carriers.value = res.rows.map(v => ({ value: v.id, label: v.code,category:v.categoryId }))
-      carriers.value.push(...choiced.filter(v => !carriers.value.map(e => e.value).includes(v.id)).map(v => ({ value: v.id, label: v.code})))
+      carriers.value = res.rows.map((v) => ({
+        value: v.id,
+        label: v.code,
+        category: v.categoryId,
+      }));
+      carriers.value.push(
+        ...choiced
+          .filter((v) => !carriers.value.map((e) => e.value).includes(v.id))
+          .map((v) => ({ value: v.id, label: v.code }))
+      );
     } else {
-      carriers.value = []
-      carriers.value.push(...choiced)
+      carriers.value = [];
+      carriers.value.push(...choiced);
     }
-    loadingCarrier.value = false
-  })
+    loadingCarrier.value = false;
+  });
 }
 
 function handleCarrierChange(arg) {
-  form.value.carriers = carriers.value.filter(v => arg.includes(v.value)).map(v => ({ id: v.value, code: v.label}))
+  form.value.carriers = carriers.value
+    .filter((v) => arg.includes(v.value))
+    .map((v) => ({ id: v.value, code: v.label }));
 }
 
 /** 取消按钮 */
@@ -139,48 +194,55 @@ function reset() {
   form.value = {
     productionDeptId: null,
     productionCarrier: null,
-    lotId:null,
-    dayworkId:null
+    lotId: null,
+    dayworkId: null,
   };
   proxy.resetForm("returnTurnoverRef");
 }
 
 /** 提交按钮 */
 function handleSave() {
-  if(!form.value.flag) {
-    visible.value = false
-  }else{
-  proxy.$refs["returnTurnoverRef"].validate((valid) => {
-    if (valid) {
-      //如果没有重新选箱
-      if(form.value.carriers[0].value != undefined) {
-        form.value.carriers = form.value.carriers.map(v => ({ id: v.value, code: v.label}))
+  if (!form.value.flag) {
+    visible.value = false;
+  } else {
+    proxy.$refs["returnTurnoverRef"].validate((valid) => {
+      if (valid) {
+        //如果没有重新选箱
+        if (form.value.carriers[0].value != undefined) {
+          form.value.carriers = form.value.carriers.map((v) => ({
+            id: v.value,
+            code: v.label,
+          }));
+        }
+        const carriersMap = new Map();
+        // 填充映射,自动去重
+        form.value.carriers.forEach((carrier) => {
+          // 使用 code 作为键
+          carriersMap.set(carrier.code, carrier);
+        });
+        // 从映射中提取唯一对象,形成新数组
+        const uniqueCarriers = Array.from(carriersMap.values());
+        form.value.carriers = uniqueCarriers;
+        // 如果需要,可以创建一个由 code 组成的字符串
+        form.value.productionCarrier = form.value.carriers
+          .map((v) => v.code)
+          .join(",");
+        form.value.productionDeptName = deptList.value.find(
+          (v) => v.value == form.value.productionDeptId
+        ).label;
+        console.log(form.value.carriers);
+        console.log(form.value);
+        updateReceiptTurnover(form.value).then((response) => {
+          proxy.$modal.msgSuccess("修改成功");
+          visible.value = false;
+          emit("handleSaveSuccess");
+        });
       }
-      const carriersMap = new Map();
-      // 填充映射,自动去重
-      form.value.carriers.forEach(carrier => {
-        // 使用 code 作为键
-        carriersMap.set(carrier.code, carrier);
-      });
-      // 从映射中提取唯一对象,形成新数组
-      const uniqueCarriers = Array.from(carriersMap.values());
-      form.value.carriers = uniqueCarriers;
-      // 如果需要,可以创建一个由 code 组成的字符串
-      form.value.productionCarrier = form.value.carriers.map(v => v.code).join(',');
-      form.value.productionDeptName = deptList.value.find(v => v.value == form.value.productionDeptId).label
-      console.log(form.value.carriers)
-      console.log(form.value)
-      updateReceiptTurnover(form.value).then((response) => {
-					proxy.$modal.msgSuccess('修改成功')
-					visible.value = false
-					emit('handleSaveSuccess')
-				})
-    }
-  });
-}
+    });
+  }
 }
 /** 暴露给父组件的方法 */
 defineExpose({
-  open
+  open,
 });
 </script>

+ 131 - 90
src/views/business/supplier/form.vue

@@ -1,117 +1,158 @@
 <template>
-	<el-dialog title="供应商信息" height="400px" v-model="visible" width="500px" append-to-body draggable>
-		<div class="form-container">
-			<!-- 主表 -->
-			<el-form ref="formRef" class="master-container" :model="form" :rules="rules" label-width="120px">
-				<el-form-item label="供应商名称" prop="name">
-					<el-input v-model.trim="form.name" placeholder="请输入供应商名称" />
-				</el-form-item>
-				<el-form-item label="助记码" prop="mnemonicCode">
-					<el-input v-model.trim="form.mnemonicCode" placeholder="请输入助记码" />
-				</el-form-item>
-				<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-select v-model="form.settlementType" placeholder="请选择结算方式">
-						<el-option v-for="dict in settlementType" :key="dict.value" :label="dict.label" :value="dict.value" />
-					</el-select>
-				</el-form-item>
-				<el-form-item label="损耗上限(%)" prop="lossLimit">
-					<el-input-number v-model="form.lossLimit" :min="0" :max="100" :precision="2" controls-position="right" placeholder="请输入损耗上限(%)" />
-				</el-form-item>
-				<el-form-item label="备注" prop="remark">
-					<el-input v-model.trim="form.remark" placeholder="请输入备注" />
-				</el-form-item>
-			</el-form>
-		</div>
-		<template #footer>
-			<el-button type="primary" icon="Check" @click="handleSave">确 定</el-button>
-			<el-button icon="Close" @click="handleCancel">取 消</el-button>
-		</template>
-	</el-dialog>
+  <el-dialog
+    title="供应商信息"
+    height="400px"
+    v-model="visible"
+    width="500px"
+    append-to-body
+    draggable
+  >
+    <div class="form-container">
+      <!-- 主表 -->
+      <el-form
+        ref="formRef"
+        class="master-container"
+        :model="form"
+        :rules="rules"
+        label-width="120px"
+      >
+        <el-form-item label="供应商名称" prop="name">
+          <el-input v-model.trim="form.name" placeholder="请输入供应商名称" />
+        </el-form-item>
+        <el-form-item label="供应商编码">
+          <el-input v-model.trim="form.code" placeholder="请输入助记码" />
+        </el-form-item>
+        <el-form-item label="助记码" prop="mnemonicCode">
+          <el-input
+            v-model.trim="form.mnemonicCode"
+            placeholder="请输入助记码"
+          />
+        </el-form-item>
+
+        <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-select v-model="form.settlementType" placeholder="请选择结算方式">
+            <el-option
+              v-for="dict in settlementType"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="损耗上限(%)" prop="lossLimit">
+          <el-input-number
+            v-model="form.lossLimit"
+            :min="0"
+            :max="100"
+            :precision="2"
+            controls-position="right"
+            placeholder="请输入损耗上限(%)"
+          />
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model.trim="form.remark" placeholder="请输入备注" />
+        </el-form-item>
+      </el-form>
+    </div>
+    <template #footer>
+      <el-button type="primary" icon="Check" @click="handleSave"
+        >确 定</el-button
+      >
+      <el-button icon="Close" @click="handleCancel">取 消</el-button>
+    </template>
+  </el-dialog>
 </template>
 <script setup>
-import { getInfo, save } from '@/api/business/supplier'
-const { proxy } = getCurrentInstance()
-const emit = defineEmits(['handleSaveSuccess'])
+import { getInfo, save } from "@/api/business/supplier";
+const { proxy } = getCurrentInstance();
+const emit = defineEmits(["handleSaveSuccess"]);
 const props = defineProps({
-	deliveryMethod: {
-		type: Array,
-		default: []
-	},
-	settlementType: {
-		type: Array,
-		default: []
-	}
-})
+  deliveryMethod: {
+    type: Array,
+    default: [],
+  },
+  settlementType: {
+    type: Array,
+    default: [],
+  },
+});
 /** 产品表单变量 */
-const loading = ref(false)
-const visible = ref(false)
+const loading = ref(false);
+const visible = ref(false);
 const data = reactive({
-	form: {},
-	rules: {
-		name: [{ required: true, message: '供应商名称不能为空', trigger: 'blur' }],
-		mnemonicCode: [{ required: true, message: '助记码不能为空', trigger: 'blur' }]
-	}
-})
-const { form, rules } = toRefs(data)
+  form: {},
+  rules: {
+    name: [{ required: true, message: "供应商名称不能为空", trigger: "blur" }],
+    mnemonicCode: [
+      { required: true, message: "助记码不能为空", trigger: "blur" },
+    ],
+  },
+});
+const { form, rules } = toRefs(data);
 
 /***********************  方法区  ****************************/
 /** 打开抽屉 */
 function open(data) {
-	reset()
-	visible.value = true
-	loading.value = true
-	const id = data ? data.id : 0
-	getInfo(id).then((res) => {
-		if (res.data) {
-			form.value = res.data
-		}
-		loading.value = false
-	})
+  reset();
+  visible.value = true;
+  loading.value = true;
+  const id = data ? data.id : 0;
+  getInfo(id).then((res) => {
+    if (res.data) {
+      form.value = res.data;
+    }
+    loading.value = false;
+  });
 }
 
 /** 取消按钮 */
 function handleCancel() {
-	visible.value = false
-	reset()
+  visible.value = false;
+  reset();
 }
 
 /** 表单重置 */
 function reset() {
-	form.value = {
-		id: null,
-		mnemonicCode: '',
-		deliveryMethod: '1',
-		settlementType: '1',
-		lossLimit: 0.0,
-		remark: ''
-	}
-	proxy.resetForm('formRef')
+  form.value = {
+    id: null,
+    mnemonicCode: "",
+    deliveryMethod: "1",
+    settlementType: "1",
+    lossLimit: 0.0,
+    remark: "",
+  };
+  proxy.resetForm("formRef");
 }
 
 /** 提交按钮 */
 function handleSave() {
-	proxy.$refs['formRef'].validate((valid) => {
-		if (valid) {
-			save(form.value).then((res) => {
-				if (res.code === 200) {
-					proxy.$modal.msgSuccess('操作成功')
-					emit('handleSaveSuccess')
-				} else {
-					proxy.$modal.msgWarn(res.msg)
-				}
-				visible.value = false
-			})
-		}
-	})
+  proxy.$refs["formRef"].validate((valid) => {
+    if (valid) {
+      save(form.value).then((res) => {
+        if (res.code === 200) {
+          proxy.$modal.msgSuccess("操作成功");
+          emit("handleSaveSuccess");
+        } else {
+          proxy.$modal.msgWarn(res.msg);
+        }
+        visible.value = false;
+      });
+    }
+  });
 }
 
 /** 暴露给父组件的方法 */
 defineExpose({
-	open
-})
+  open,
+});
 </script>

+ 5 - 2
src/views/dialog/InstructionChoiceDialog.vue

@@ -61,7 +61,7 @@
               </el-form>
             </div>
             <div class="el-table-container" :style="{ bottom: instructionTotal > 0 ? '35px' : '0' }">
-              <el-table ref="employeeTable" v-loading="instructionLoading" row-key="id"
+              <el-table ref="instructionTable" v-loading="instructionLoading" row-key="id"
                 :data="currentCategory ? instructionList : []" size="default" border height="100%"
                 header-row-class-name="list-header-row" row-class-name="list-row"
                 @selection-change="handleSelectionChange"
@@ -88,7 +88,7 @@
   </el-dialog>
 </template>
 <script setup>
-import { ref, toRefs } from 'vue'
+import { ref, toRefs, nextTick } from 'vue'
 import { listCategory, list } from '@/api/business/inspectionInstruction'
 const { proxy } = getCurrentInstance()
 const props = defineProps({
@@ -147,6 +147,9 @@ function close() {
 
 function open() {
   visible.value = true
+  nextTick(_ => {
+    proxy.$refs.instructionTable.clearSelection()
+  })
   loadCategory()
 }