From f90fbbc76d23340e4568dd4dadbab5f7f02a030f Mon Sep 17 00:00:00 2001
From: pengwei <2071057782@qq.com>
Date: 星期一, 24 三月 2025 14:49:24 +0800
Subject: [PATCH] 3.24功能新增

---
 项目代码/client/src/views/tts/CraftCenter/Craftcenter.vue |  616 ++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 357 insertions(+), 259 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/tts/CraftCenter/Craftcenter.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/tts/CraftCenter/Craftcenter.vue"
index b0201d8..dd4bc92 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/tts/CraftCenter/Craftcenter.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/tts/CraftCenter/Craftcenter.vue"
@@ -34,11 +34,13 @@
               <span>姝や负浠诲姟浣滅敤涓數姘旂殑鐨勮鎯呮楠ゅ伐鑹恒��</span>
               <div style="display: flex; margin-top: 0.81rem">
                 <span style="margin-right: 1.25rem"
-                  >姝ラ锛歿{ electric ? electric[0].maxNodal : "0" }}</span
+                  >姝ラ锛歿{
+                    electric.length != 0 ? electric[0].maxNodal : "0"
+                  }}</span
                 >
                 <span
                   >濂楃瓛鏁伴噺锛歿{
-                    electric ? electric[0].sumTorqueSum : "0"
+                    electric != 0 ? electric[0].sumTorqueSum : "0"
                   }}</span
                 >
               </div>
@@ -104,11 +106,13 @@
               <span>姝や负浠诲姟浣滅敤涓満姊扮殑鐨勮鎯呮楠ゅ伐鑹恒��</span>
               <div style="display: flex; margin-top: 0.81rem">
                 <span style="margin-right: 1.25rem"
-                  >姝ラ锛歿{ mechanical ? mechanical[0].maxNodal : "0" }}</span
+                  >姝ラ锛歿{
+                    mechanical != 0 ? mechanical[0].maxNodal : "0"
+                  }}</span
                 >
                 <span
                   >濂楃瓛鏁伴噺锛歿{
-                    mechanical ? mechanical[0].sumTorqueSum : "0"
+                    mechanical.length != 0 ? mechanical[0].sumTorqueSum : "0"
                   }}</span
                 >
               </div>
@@ -174,10 +178,14 @@
               <span>姝や负浠诲姟浣滅敤涓湴娌熺殑鐨勮鎯呮楠ゅ伐鑹恒��</span>
               <div style="display: flex; margin-top: 0.81rem">
                 <span style="margin-right: 1.25rem"
-                  >姝ラ锛歿{ trench ? trench[0].maxNodal : "0" }}</span
+                  >姝ラ锛歿{
+                    trench.length != 0 ? trench[0].maxNodal : "0"
+                  }}</span
                 >
                 <span
-                  >濂楃瓛鏁伴噺锛歿{ trench ? trench[0].sumTorqueSum : "0" }}</span
+                  >濂楃瓛鏁伴噺锛歿{
+                    trench.length != 0 ? trench[0].sumTorqueSum : "0"
+                  }}</span
                 >
               </div>
             </div>
@@ -234,6 +242,7 @@
           </el-icon>
         </div>
       </template>
+
       <div>
         <div class="head">
           <div class="serch">
@@ -304,6 +313,7 @@
           >
         </div>
         <el-table
+          empty-text="鏆傛棤鏁版嵁"
           style="margin-top: 1.13rem"
           :data="gridData"
           height="430"
@@ -383,70 +393,72 @@
           </h4>
         </div>
       </template>
-      <el-form
-        :model="form"
-        label-width="auto"
-        label-position="top"
-        :rules="rules"
-        ref="ruleFormRef"
-      >
-        <el-row :gutter="10">
-          <el-col :span="8"
-            ><el-form-item prop="nodal">
-              <template #label>
-                <span style="font-size: 0.88rem; color: black">搴忓彿</span>
-              </template>
-              <el-input
-                size="small"
-                v-model.number="form.nodal"
-                placeholder="璇疯緭鍏�"
-                style="height: 2rem"
-              /> </el-form-item
-          ></el-col>
+      <el-scrollbar height="44rem">
+        <el-form
+          :model="form"
+          label-width="auto"
+          label-position="top"
+          :rules="rules"
+          ref="ruleFormRef"
+        >
+          <el-row :gutter="10">
+            <el-col :span="8"
+              ><el-form-item prop="nodal">
+                <template #label>
+                  <span style="font-size: 0.88rem; color: black">搴忓彿</span>
+                </template>
+                <el-input
+                  size="small"
+                  v-model.number="form.nodal"
+                  placeholder="璇疯緭鍏�"
+                  style="height: 2rem"
+                /> </el-form-item
+            ></el-col>
 
-          <el-col :span="8"
-            ><el-form-item prop="setpNum">
-              <template #label>
-                <span style="font-size: 0.88rem; color: black">鎺掑簭</span>
-              </template>
-              <el-input
-                size="small"
-                v-model.number="form.setpNum"
-                placeholder="璇疯緭鍏�"
-                style="height: 2rem"
-              /> </el-form-item
-          ></el-col>
-          <el-col :span="8"
-            ><el-form-item prop="DeviceCode">
-              <template #label>
-                <span style="font-size: 0.88rem; color: black">鐗╂枡</span>
-              </template>
-              <el-input
-                v-model="form.material"
-                style="height: 2rem"
-                placeholder="璇疯緭鍏�"
-              /> </el-form-item
-          ></el-col>
-        </el-row>
-        <el-row :gutter="10">
-          <el-col
-            ><el-form-item prop="craftsStep">
-              <template #label>
-                <span style="font-size: 0.88rem; color: black"
-                  >宸ヨ壓椤剁偣/姝ラ</span
-                >
-              </template>
-              <el-input
-                size="small"
-                v-model="form.craftsStep"
-                placeholder="璇疯緭鍏�"
-                style="height: 2rem"
-              /> </el-form-item
-          ></el-col>
-        </el-row>
+            <el-col :span="8"
+              ><el-form-item prop="setpNum">
+                <template #label>
+                  <span style="font-size: 0.88rem; color: black">鎺掑簭</span>
+                </template>
+                <el-input
+                  size="small"
+                  v-model.number="form.setpNum"
+                  placeholder="璇疯緭鍏�"
+                  style="height: 2rem"
+                /> </el-form-item
+            ></el-col>
+            <el-col :span="8"
+              ><el-form-item prop="DeviceCode">
+                <template #label>
+                  <span style="font-size: 0.88rem; color: black">鐗╂枡</span>
+                </template>
+                <el-input
+                  v-model="form.material"
+                  style="height: 2rem"
+                  placeholder="璇疯緭鍏�"
+                /> </el-form-item
+            ></el-col>
+          </el-row>
 
-        <el-row :gutter="10">
-          <!-- <el-col :span="8"
+          <el-row :gutter="10">
+            <el-col
+              ><el-form-item prop="craftsStep">
+                <template #label>
+                  <span style="font-size: 0.88rem; color: black"
+                    >宸ヨ壓椤剁偣/姝ラ</span
+                  >
+                </template>
+                <el-input
+                  size="small"
+                  v-model="form.craftsStep"
+                  placeholder="璇疯緭鍏�"
+                  style="height: 2rem"
+                /> </el-form-item
+            ></el-col>
+          </el-row>
+
+          <el-row :gutter="10">
+            <!-- <el-col :span="8"
             ><el-form-item prop="isinvolved">
               <template #label>
                 <span style="font-size: 0.88rem; color: black">鏄惁娑夊強</span>
@@ -465,32 +477,105 @@
                 />
               </el-select> </el-form-item
           ></el-col> -->
-          <el-col :span="16"
-            ><el-form-item prop="tools">
-              <template #label>
-                <div style="display: flex; align-items: center">
-                  <span style="font-size: 0.88rem; color: black">宸ュ叿</span>
-                </div>
-              </template>
-              <el-select
-                v-model="tools"
-                placeholder="璇烽�夋嫨"
-                multiple
-                filterable
-                :remote-method="GJremoteMethod"
-                :loading="GJloading"
-                size="small"
-                value-key="id"
-              >
-                <el-option
-                  v-for="item in GJoptions"
-                  :key="item.id"
-                  :label="item.toolName"
-                  :value="item"
-                /> </el-select></el-form-item
-          ></el-col>
-        </el-row>
-        <!-- <el-row>
+            <el-col :span="8"
+              ><el-form-item prop="tools">
+                <template #label>
+                  <div style="display: flex; align-items: center">
+                    <span style="font-size: 0.88rem; color: black">宸ュ叿</span>
+                  </div>
+                </template>
+                <el-select
+                  style="height: 2rem"
+                  v-model="tools"
+                  placeholder="璇烽�夋嫨"
+                  multiple
+                  filterable
+                  :remote-method="GJremoteMethod"
+                  :loading="GJloading"
+                  size="small"
+                  value-key="id"
+                >
+                  <el-option
+                    v-for="item in GJoptions"
+                    :key="item.id"
+                    :label="item.toolName"
+                    :value="item"
+                  /> </el-select></el-form-item
+            ></el-col>
+
+            <el-col :span="4"
+              ><el-form-item prop="tools">
+                <template #label>
+                  <div style="display: flex; align-items: center">
+                    <span style="font-size: 0.88rem; color: black"
+                      >绗竴娆℃壄鍔涚殑鍊�</span
+                    >
+                  </div>
+                </template>
+                <el-input
+                  size="small"
+                  v-model="form.torqueOne"
+                  placeholder="璇疯緭鍏�"
+                  style="height: 2rem"
+                >
+                  <template #suffix>
+                    <span style="font-size: 0.88rem; color: black">N*m</span>
+                  </template>
+                </el-input>
+              </el-form-item></el-col
+            >
+
+            <el-col :span="4"
+              ><el-form-item prop="tools">
+                <template #label>
+                  <div style="display: flex; align-items: center">
+                    <span style="font-size: 0.88rem; color: black">鏁伴噺</span>
+                  </div>
+                </template>
+                <el-input
+                  size="small"
+                  v-model="form.torqueOneQuantity"
+                  placeholder="璇疯緭鍏�"
+                  style="height: 2rem" /></el-form-item
+            ></el-col>
+
+            <el-col :span="4"
+              ><el-form-item prop="tools">
+                <template #label>
+                  <div style="display: flex; align-items: center">
+                    <span style="font-size: 0.88rem; color: black"
+                      >绗簩娆℃壄鍔涚殑鍊�</span
+                    >
+                  </div>
+                </template>
+                <el-input
+                  size="small"
+                  v-model="form.torqueTwo"
+                  placeholder="璇疯緭鍏�"
+                  style="height: 2rem"
+                >
+                  <template #suffix>
+                    <span style="font-size: 0.88rem; color: black">N*m</span>
+                  </template>
+                </el-input></el-form-item
+              ></el-col
+            >
+
+            <el-col :span="4"
+              ><el-form-item prop="tools">
+                <template #label>
+                  <div style="display: flex; align-items: center">
+                    <span style="font-size: 0.88rem; color: black">鏁伴噺</span>
+                  </div>
+                </template>
+                <el-input
+                  size="small"
+                  v-model="form.torqueTwoQuantity"
+                  placeholder="璇疯緭鍏�"
+                  style="height: 2rem" /></el-form-item
+            ></el-col>
+          </el-row>
+          <!-- <el-row>
           <el-form-item prop="Unit">
             <template #label
               ><span style="font-size: 0.88rem; color: black"
@@ -539,68 +624,72 @@
             </el-upload>
           </el-form-item>
         </el-row> -->
-        <el-row>
-          <h4
-            style="
-              color: rgba(16, 16, 16, 1);
-              font-size: 1.13rem;
-              font-weight: bold;
-            "
-          >
-            宸ヨ壓鍐呭
-          </h4>
-        </el-row>
-        <el-row>
-          <el-col>
-            <el-form-item prop="craftContent">
-              <template #label>
-                <span style="font-size: 0.88rem; color: black">鍐呭鎻忚堪</span>
-              </template>
-              <el-input
-                type="textarea"
-                :rows="3"
-                v-model="form.craftContent"
-                placeholder="璇疯緭鍏�"
-              />
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-form-item prop="checkList">
-            <template #label>
-              <div style="display: flex; align-items: center">
-                <span style="font-size: 0.88rem; color: black">閫夋嫨濂楃瓛</span>
-              </div>
-            </template>
-            <div
+          <el-row>
+            <h4
               style="
-                display: flex;
-                justify-content: space-between;
-                width: 32.5rem;
-                height: 25rem;
+                color: rgba(16, 16, 16, 1);
+                font-size: 1.13rem;
+                font-weight: bold;
               "
             >
-              <div style="width: 50%; height: 100%; background: #f5f5f5">
-                <div
-                  style="
-                    padding: 0.88rem 0.88rem 0 0.88rem;
-                    box-sizing: border-box;
-                  "
-                >
-                  <el-input
+              宸ヨ壓鍐呭
+            </h4>
+          </el-row>
+          <el-row>
+            <el-col>
+              <el-form-item prop="craftContent">
+                <template #label>
+                  <span style="font-size: 0.88rem; color: black">鍐呭鎻忚堪</span>
+                </template>
+                <el-input
+                  type="textarea"
+                  :rows="3"
+                  v-model="form.craftContent"
+                  placeholder="璇疯緭鍏�"
+                />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-form-item prop="checkList">
+              <template #label>
+                <div style="display: flex; align-items: center">
+                  <span style="font-size: 0.88rem; color: black">閫夋嫨濂楃瓛</span>
+                </div>
+              </template>
+              <div
+                style="
+                  display: flex;
+                  justify-content: space-between;
+                  width: 32.5rem;
+                  height: 25rem;
+                "
+              >
+                <div style="width: 50%; height: 100%; background: #f5f5f5">
+                  <div
+                    style="
+                      padding: 0.88rem 0.88rem 0 0.88rem;
+                      box-sizing: border-box;
+                    "
+                  >
+                    <!-- <el-input
                     placeholder="鎼滅储"
                     style="height: 2rem; background: #f5f5f5; border: none"
                     :prefix-icon="Search"
                     v-model="value"
-                  ></el-input>
-                  <div
-                    style="height: 1.25rem; display: flex; align-items: center"
-                  >
-                    <span
-                      style="color: rgba(28, 31, 35, 0.8); font-size: 0.75rem"
-                      >鍏眥{ checkList.length }}椤�</span
+                  ></el-input> -->
+                    <div
+                      style="
+                        height: 1.25rem;
+                        display: flex;
+                        align-items: center;
+                      "
                     >
-                    <!-- <span
+                      <span
+                        style="color: rgba(28, 31, 35, 0.8); font-size: 0.75rem"
+                        >鍏眥{ checkList.length }}椤�</span
+                      >
+                      <!-- <span
                       @click="handleCheckAllChange"
                       style="
                         color: rgba(28, 31, 35, 0.8);
@@ -610,77 +699,79 @@
                       "
                       >鍏ㄩ��</span
                     > -->
+                    </div>
                   </div>
-                </div>
-                <el-scrollbar height="20rem" style="padding-left: 0.88rem">
-                  <el-checkbox-group
-                    :indeterminate="isIndeterminate"
-                    @change="checkChange"
-                    v-model="checkboxId"
-                    style="display: flex; flex-direction: column"
-                  >
-                    <el-checkbox
-                      :max="2"
-                      v-for="item in sleeveData"
-                      :key="item.id"
-                      :label="item.articleName"
-                      :value="item.id"
-                    />
-                  </el-checkbox-group>
-                </el-scrollbar>
-              </div>
-              <div style="width: 50%; height: 100%">
-                <div
-                  style="padding: 0.88rem 0 0 0.88rem; box-sizing: border-box"
-                >
-                  <span style="color: rgb(167, 171, 176); font-size: 0.88rem"
-                    >宸查�墈{ checkList.length }}椤�</span
-                  >
-                  <span
-                    @click="clear"
-                    style="
-                      color: rgb(65, 70, 76);
-                      font-size: 0.88rem;
-                      margin-left: 1rem;
-                      cursor: pointer;
-                    "
-                    >娓呯┖</span
-                  >
-                </div>
-                <el-scrollbar
-                  height="calc(25rem - 44.15px)"
-                  style="padding-left: 0.88rem"
-                >
-                  <p
-                    style="
-                      display: flex;
-                      justify-content: space-between;
-                      margin: 0.5rem 0;
-                    "
-                    v-for="item in checkList"
-                    :key="item.id"
-                    class="scrollbar-demo-item"
-                  >
-                    <span>
-                      {{ item.articleName }}
-                    </span>
-                    <span>
-                      <el-input-number
-                        size="small"
-                        style="width: 7rem"
-                        v-model="item.num"
-                        :min="1"
-                        :max="100"
-                        @change="handleChange"
+                  <el-scrollbar height="20rem" style="padding-left: 0.88rem">
+                    <el-checkbox-group
+                      :indeterminate="isIndeterminate"
+                      @change="checkChange"
+                      v-model="checkboxId"
+                      style="display: flex; flex-direction: column"
+                    >
+                      <el-checkbox
+                        :max="2"
+                        v-for="item in sleeveData"
+                        :key="item.id"
+                        :label="item.articleName"
+                        :value="item.id"
                       />
-                    </span>
-                  </p>
-                </el-scrollbar>
+                    </el-checkbox-group>
+                  </el-scrollbar>
+                </div>
+                <div style="width: 50%; height: 100%">
+                  <div
+                    style="padding: 0.88rem 0 0 0.88rem; box-sizing: border-box"
+                  >
+                    <span style="color: rgb(167, 171, 176); font-size: 0.88rem"
+                      >宸查�墈{ checkList.length }}椤�</span
+                    >
+                    <span
+                      @click="clear"
+                      style="
+                        color: rgb(65, 70, 76);
+                        font-size: 0.88rem;
+                        margin-left: 1rem;
+                        cursor: pointer;
+                      "
+                      >娓呯┖</span
+                    >
+                  </div>
+                  <el-scrollbar
+                    height="calc(25rem - 44.15px)"
+                    style="padding-left: 0.88rem"
+                  >
+                    <p
+                      style="
+                        display: flex;
+                        justify-content: space-between;
+                        margin: 0.5rem 0;
+                      "
+                      v-for="item in checkList"
+                      :key="item ? item.id : ''"
+                      class="scrollbar-demo-item"
+                    >
+                      <span>
+                        {{ item ? item.articleName : "" }}
+                      </span>
+                      <span>
+                        <el-input-number
+                          size="small"
+                          style="width: 7rem"
+                          v-model="item.num"
+                          :min="1"
+                          :max="100"
+                          @change="handleChange"
+                        />
+                      </span>
+                    </p>
+                  </el-scrollbar>
+                </div>
               </div>
-            </div>
-          </el-form-item>
-        </el-row>
-      </el-form>
+            </el-form-item>
+          </el-row>
+        </el-form>
+      </el-scrollbar>
+
       <template #footer>
         <div class="dialog-footer" style="text-align: center">
           <el-button @click="craftdialogVisible = false" style="height: 2rem"
@@ -699,7 +790,7 @@
   </div>
 </template>
 <script setup>
-import { ref, reactive, onMounted, toRef } from "vue";
+import { ref, reactive, onMounted, toRef, computed } from "vue";
 import { Search } from "@element-plus/icons-vue";
 import {
   GetSleeveandStep,
@@ -729,11 +820,11 @@
 //閫夋嫨鐨勫绛掓暟鎹�
 const checkList = ref([]);
 //鐢垫皵鏁伴噺
-const electric = ref(null);
+const electric = ref([]);
 //鏈烘鏁伴噺
-const mechanical = ref(null);
+const mechanical = ref([]);
 //鍦版矡
-const trench = ref(null);
+const trench = ref([]);
 //鏂板宸ヨ壓/缂栬緫宸ヨ壓
 const type = ref("鏂板");
 //鑾峰彇鏁版嵁
@@ -860,14 +951,15 @@
 
 //缂栬緫宸ヨ壓
 const Editcraft = (row) => {
-  console.log(row);
-
   let data = Object.assign({}, row);
   type.value = "缂栬緫";
   detailsDialogVisible.value = false;
   craftdialogVisible.value = true;
   form.value = data;
-  tools.value = row.tools ? row.tools.split(",") : "";
+  tools.value = data.tools ? data.tools.split(",") : "";
+  console.log("tools", tools.value);
+
+  checkboxId.value = [Number(row.articleOneid), Number(row.articleTowid)];
   ArticleInfom({
     page: 1,
     rows: 100,
@@ -887,7 +979,26 @@
     ],
   }).then((res) => {
     sleeveData.value = res.rows;
+    checkList.value = res.rows.map((item) => {
+      if (Number(row.articleOneid) == item.id) {
+        return {
+          ...item,
+          num: row.articleOne,
+        };
+      } else if (item.id == row.articleTowid) {
+        return {
+          ...item,
+          num: row.articleTwo,
+        };
+      } else {
+        return {};
+      }
+    });
+    checkList.value = checkList.value.filter((item) => {
+      return Object.keys(item).length > 0;
+    });
   });
+
   GetTool({
     page: 1,
     rows: 100,
@@ -920,42 +1031,16 @@
 };
 //淇濆瓨
 const addprocess = async (formEl) => {
+  console.log(checkboxId.value);
   userName.value = JSON.parse(localStorage.getItem("user")).userName;
   let string = "";
-  // if (tools.value.length == 0) {
-  //   ElMessage({
-  //     message: "璇烽�夋嫨宸ュ叿",
-  //     type: "warning",
-  //   });
-  //   return;
-  // }
   if (tools.value.length > 0) {
-    if (type.value == "缂栬緫") {
-      string = tools.value
-        ? tools.value
-            .map((item) => {
-              return item;
-            })
-            .join(",")
-        : "";
-      return;
-    }
     string = tools.value
-      ? tools.value
-          .map((item) => {
-            return item.toolName;
-          })
-          .join(",")
-      : "";
+      .map((item) => {
+        return typeof item == "string" ? item : item.toolName;
+      })
+      .join(",");
   }
-
-  // if (checkList.value.length == 0) {
-  //   ElMessage({
-  //     message: "璇烽�夋嫨濂楃瓛",
-  //     type: "warning",
-  //   });
-  //   return;
-  // }
   if (form.value.nodal == 0) {
     ElMessage({
       message: "搴忓彿鏈�灏忎负1",
@@ -963,22 +1048,33 @@
     });
     return;
   }
+  console.log(checkList.value);
 
   form.value.aritcleoneid =
     checkList.value.length != 0 ? checkList.value[0].id : "";
   form.value.articleone =
     checkList.value.length != 0 ? checkList.value[0].num : "";
   form.value.aritcletowid =
-    checkList.value.length != 0 ? checkList.value[1].id : "";
+    checkList.value.length != 0 && checkList.value.length > 1
+      ? checkList.value[1].id
+      : "";
   form.value.articletwo =
-    checkList.value.length != 0 ? checkList.value[1].num : "";
+    checkList.value.length != 0 && checkList.value.length > 1
+      ? checkList.value[1].num
+      : "";
   form.value.creater = userName.value;
   form.value.tools = string;
   form.value.craftstype = title.value;
-  form.value.torqueOneQuantity = tools.value.length;
   form.value.id = form.value.craftID ? form.value.craftID : 0;
-  console.log(form.value);
-
+  form.value.torqueSum = computed(() => {
+    if (form.value.torqueOne > 1 && form.value.torqueTwo > 1) {
+      return 2;
+    } else if (form.value.torqueOne > 1 || form.value.torqueTwo > 1) {
+      return 1;
+    } else {
+      return 0;
+    }
+  });
   if (!formEl) return;
   await formEl.validate((valid, fields) => {
     if (valid) {
@@ -1108,6 +1204,8 @@
     }
   );
   tools.value = [];
+  checkList.value = [];
+  checkboxId.value = [];
 };
 //瀵煎嚭鏂规硶
 const printExcel = () => {

--
Gitblit v1.9.3