cz 1 年間 前
コミット
e783cae6f6

+ 39 - 53
src/components/testForm/index.vue

@@ -26,7 +26,7 @@
             :type="i.itemType ? i.itemType : 'text'"
             :placeholder="i.placeholder ? i.placeholder : '请输入'"
             :clearable="i.clearable ? i.clearable : false"
-            :readonly="i.readonly != undefined ? i.readonly : false"
+            :readonly="getFieldReadonly(i)"
             :rules="getRules(i.prop)"
             :required="getRequired(i.prop)"
           >
@@ -94,7 +94,7 @@
             :name="i.prop"
             v-model="formData[i.prop + 'Name']"
             is-link
-            :readonly="i.readonly != undefined ? i.readonly : true"
+            :readonly="true"
             :placeholder="i.placeholder ? i.placeholder : '请选择'"
             @click="() => (!formOption.readonly ? (i.showPicker = true) : '')"
             :rules="getRules(i.prop)"
@@ -113,7 +113,12 @@
                 i.fieldNames ? i.fieldNames : onePickerFieldNames
               "
               @cancel="i.showPicker = false"
-              @confirm="(option) => onConfirmPicker(option, i, index)"
+              @confirm="
+                (option) =>
+                  i.changeFn
+                    ? i.changeFn(option, i, index)
+                    : onConfirmPicker(option, i, index)
+              "
             />
           </van-popup>
           <!-- 时间选择器 -->
@@ -123,7 +128,7 @@
             :name="i.prop"
             v-model="formData[i.prop]"
             is-link
-            :readonly="i.readonly != undefined ? i.readonly : true"
+            :readonly="true"
             :placeholder="i.placeholder ? i.placeholder : '请选择'"
             @click="() => (!formOption.readonly ? (i.showPicker = true) : '')"
             :rules="getRules(i.prop)"
@@ -151,7 +156,7 @@
             :name="i.prop"
             v-model="formData[i.prop + 'Name']"
             is-link
-            :readonly="i.readonly != undefined ? i.readonly : true"
+            :readonly="true"
             :placeholder="i.placeholder ? i.placeholder : '请选择'"
             @click="() => (!formOption.readonly ? (i.showPicker = true) : '')"
             :rules="getRules(i.prop)"
@@ -182,7 +187,7 @@
             :name="i.prop"
             v-model="formData[i.prop + 'Name']"
             is-link
-            :readonly="i.readonly != undefined ? i.readonly : true"
+            :readonly="true"
             :placeholder="i.placeholder ? i.placeholder : '请选择'"
             @click="() => (!formOption.readonly ? (i.showPicker = true) : '')"
             :rules="getRules(i.prop)"
@@ -263,7 +268,7 @@
             :type="i.itemType ? i.itemType : 'text'"
             :placeholder="i.placeholder ? i.placeholder : '请输入'"
             :clearable="i.clearable ? i.clearable : false"
-            :readonly="i.readonly != undefined ? i.readonly : false"
+            :readonly="getFieldReadonly(i)"
             :rules="getRules(i.prop)"
             :required="getRequired(i.prop)"
             @change="
@@ -280,7 +285,7 @@
             :name="i.prop"
             v-model="formData[btnConfigCopy.prop][index][i.prop + 'Name']"
             is-link
-            :readonly="i.readonly != undefined ? i.readonly : true"
+            :readonly="true"
             :placeholder="i.placeholder ? i.placeholder : '请选择'"
             @click="handleListItemClick(i, index, sonIndex)"
             :rules="getRules(i.prop)"
@@ -294,7 +299,7 @@
             :name="i.prop"
             v-model="formData[btnConfigCopy.prop][index][i.prop]"
             is-link
-            :readonly="i.readonly != undefined ? i.readonly : true"
+            :readonly="true"
             :placeholder="i.placeholder ? i.placeholder : '请选择'"
             @click="handleListItemClick(i, index, sonIndex)"
             :rules="getRules(i.prop)"
@@ -437,6 +442,18 @@ const getReadonly = (i) => {
   return i.readonly ? i.readonly : i.name == "picker" ? true : false;
 };
 
+const getFieldReadonly = (i) => {
+  if (i.readonly && i.readonly === true) {
+    return true;
+  } else {
+    if (formOption.value.readonly && formOption.value.readonly === true) {
+      return true;
+    } else {
+      return false;
+    }
+  }
+};
+
 // 国家初始化
 const cityOptionInit = () => {
   proxy.post("/areaInfo/list", { parentId: "0" }).then((res) => {
@@ -552,38 +569,6 @@ const formDataShowLabel = () => {
       }
     }
   }
-  if (formOption.value.btnConfig && formOption.value.btnConfig.isNeed) {
-    const list = formData.value[btnConfigCopy.prop];
-    for (let i = 0; i < list.length; i++) {
-      const x = list[i];
-      for (let j = 0; j < btnConfigCopy.listConfig.length; j++) {
-        const listEle = btnConfigCopy.listConfig[j];
-        if (
-          listEle.type === "picker" &&
-          listEle.itemType &&
-          listEle.itemType !== "datePicker"
-        ) {
-          if (listEle.data && listEle.data.length > 0) {
-            formData.value[btnConfigCopy.prop][i][listEle.prop + "Name"] =
-              selectDataEcho(
-                listEle,
-                formData.value[btnConfigCopy.prop][i][listEle.prop]
-              );
-          } else {
-            if (callNum.value <= 3) {
-              setTimeout(() => {
-                callNum.value++;
-                return formDataShowLabel();
-              }, 1500);
-            }
-            return;
-          }
-        } else {
-          continue;
-        }
-      }
-    }
-  }
 };
 
 const formDataInit = () => {
@@ -598,7 +583,10 @@ const formDataInit = () => {
     upload: [],
   };
   // 判断是否需要按钮
-  if (formOption.value.btnConfig && formOption.value.btnConfig.isNeed) {
+  if (
+    formOption.value.btnConfig &&
+    Object.keys(formOption.value.btnConfig).length > 0
+  ) {
     btnConfigCopy = { ...formOption.value.btnConfig };
     if (formData.value[btnConfigCopy.prop] === undefined) {
       formData.value[btnConfigCopy.prop] = [];
@@ -667,18 +655,16 @@ const onConfirmPicker = (option, item, index) => {
 const currentIndex = ref(-1);
 const currentSonIndex = ref(-1);
 const handleListItemClick = (i, index, sonIndex) => {
-  if (i.readonly && i.readonly === true) {
+  if (i.readonly !== undefined && i.readonly === true) {
     return;
-  }
-  if (i.readonly !== undefined && i.readonly === false) {
-    currentIndex.value = index;
-    currentSonIndex.value = sonIndex;
-    btnConfigCopy.listConfig[sonIndex].showPicker = true;
-  }
-  if (!formOption.value.readonly) {
-    currentIndex.value = index;
-    currentSonIndex.value = sonIndex;
-    btnConfigCopy.listConfig[sonIndex].showPicker = true;
+  } else {
+    if (formOption.value.readonly) {
+      return;
+    } else {
+      currentIndex.value = index;
+      currentSonIndex.value = sonIndex;
+      btnConfigCopy.listConfig[sonIndex].showPicker = true;
+    }
   }
 };
 const onConfirmListPicker = (option, item) => {

+ 59 - 17
src/views/JXSK/mes/task/add.vue

@@ -28,13 +28,14 @@ const route = useRoute();
 const formDom = ref(null);
 const formData = reactive({
   data: {
-    list: [],
+    productionTaskDetailList: [],
   },
 });
 const rules = {
-  warehouseName: [{ required: true, message: "仓库名称不能为空" }],
-  productName: [{ required: true, message: "物品名称不能为空" }],
-  quantity: [{ required: true, message: "入库数量不能为空" }],
+  productionPlanId: [{ required: true, message: "请选择生产计划" }],
+  dueDate: [{ required: true, message: "请选择任务期限" }],
+  personLiableId: [{ required: true, message: "请选择负责人" }],
+  quantity: [{ required: true, message: "请输入任务数量" }],
 };
 const formOption = reactive({
   readonly: false, //用于控制整个表单是否只读
@@ -42,12 +43,35 @@ const formOption = reactive({
   labelAlign: "top",
   scroll: true,
   labelWidth: "62pk",
+  hiddenSubmitBtn: false,
   btnConfig: {
     isNeed: false,
-    prop: "list",
+    prop: "productionTaskDetailList",
     plain: true,
-    listTitle: "",
-    listConfig: [],
+    listTitle: "产品明细",
+    listConfig: [
+      {
+        type: "input",
+        itemType: "text",
+        label: "产品SN",
+        prop: "productSn",
+        readonly: true,
+      },
+      {
+        type: "input",
+        itemType: "text",
+        label: "当前工序",
+        prop: "productionProcessesName",
+        readonly: true,
+      },
+      {
+        type: "input",
+        itemType: "text",
+        label: "累计耗时",
+        prop: "cumulativeTime",
+        readonly: true,
+      },
+    ],
     clickFn: () => {},
   },
 });
@@ -55,7 +79,7 @@ const formConfig = reactive([
   {
     type: "picker",
     label: "生产计划",
-    prop: "warehouseId",
+    prop: "productionPlanId",
     itemType: "onePicker",
     showPicker: false,
     fieldNames: {
@@ -63,31 +87,43 @@ const formConfig = reactive([
       value: "value",
     },
     data: [],
+    changeFn: (option, item, index) => {
+      if (option.selectedOptions[0]) {
+        formData.data["productionPlanId" + "Name"] =
+          option.selectedOptions[0].label;
+        formData.data.productionPlanId = option.selectedOptions[0].value;
+        formData.data.productName = option.selectedOptions[0].productName;
+        formData.data.waitQuantity = option.selectedOptions[0].quantity;
+        formConfig[index].showPicker = false;
+      } else {
+        formConfig[index].showPicker = false;
+      }
+    },
   },
   {
     type: "input",
     itemType: "text",
     label: "产品名称",
-    prop: "reamlke",
+    prop: "productName",
     readonly: true,
   },
   {
     type: "input",
     itemType: "number",
     label: "待排程数量",
-    prop: "reamlke",
+    prop: "waitQuantity",
     readonly: true,
   },
   {
     type: "input",
     itemType: "number",
     label: "任务数量",
-    prop: "reamlke",
+    prop: "quantity",
   },
   {
     type: "picker",
     label: "负责人",
-    prop: "warehouseId",
+    prop: "personLiableId",
     itemType: "onePicker",
     showPicker: false,
     fieldNames: {
@@ -99,7 +135,7 @@ const formConfig = reactive([
   {
     type: "picker",
     label: "完成期限",
-    prop: "date",
+    prop: "dueDate",
     itemType: "datePicker",
     showPicker: false,
     split: "-",
@@ -131,11 +167,14 @@ const getDict = () => {
 
 const onClickLeft = () => history.back();
 const onSubmit = () => {
-  proxy.post("/productionTask/add", formData.data).then(
+  if (formData.data.quantity > formData.data.waitQuantity) {
+    return showFailToast("任务数量不可大于待排程数量");
+  }
+  proxy.post("/productionTask/addByJxst", formData.data).then(
     (res) => {
       setTimeout(() => {
         showSuccessToast("添加成功");
-        proxy.$router.push("/main/task");
+        proxy.$router.push("/main/jxskTask");
       }, 500);
     },
     (err) => {
@@ -144,9 +183,10 @@ const onSubmit = () => {
   );
 };
 const getDetails = () => {
-  proxy.post("/productionTask/detail", { id: route.query.id }).then(
+  proxy.post("/productionTask/detailByJxst", { id: route.query.id }).then(
     (res) => {
-      console.log(res, "ada");
+      res.data.waitQuantity = res.data.remainingQuantity;
+      formData.data = res.data;
     },
     (err) => {
       return showFailToast(err.message);
@@ -157,6 +197,8 @@ onMounted(() => {
   getDict();
   if (route.query.id) {
     getDetails();
+    formOption.readonly = true; //全部只读
+    formOption.hiddenSubmitBtn = true; //隐藏提交按钮
   }
 });
 </script>

+ 4 - 4
src/views/JXSK/mes/task/index.vue

@@ -64,13 +64,13 @@ const listConfig = ref([
     prop: "quantity",
   },
   {
-    label: "完成期限",
-    prop: "dueDate",
-  },
-  {
     label: "负责人",
     prop: "personLiableName",
   },
+  {
+    label: "完成期限",
+    prop: "dueDate",
+  },
 ]);
 const onRefresh = () => {
   req.value.pageNum = 1;

+ 2 - 0
src/views/JXSK/salesContract/add.vue

@@ -241,6 +241,8 @@ const getDetails = (id) => {
   proxy.post("/salesContract/detail", { id }).then((res) => {
     if (res.data && res.data.contractDetailsList.length > 0) {
       res.data.salesContractDetailsList = res.data.contractDetailsList;
+    } else {
+      res.data.salesContractDetailsList = [];
     }
     formData.data = res.data;
     changeAmount();