From d49c469a63ebb84623a2377e2c666307a2689025 Mon Sep 17 00:00:00 2001
From: pengwei <2071057782@qq.com>
Date: 星期四, 10 四月 2025 15:06:34 +0800
Subject: [PATCH] 优化

---
 项目代码/client/src/views/tts/CraftCenter/Craftcenter.vue | 1108 ++++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 874 insertions(+), 234 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 e1a51eb..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"
@@ -33,8 +33,16 @@
             >
               <span>姝や负浠诲姟浣滅敤涓數姘旂殑鐨勮鎯呮楠ゅ伐鑹恒��</span>
               <div style="display: flex; margin-top: 0.81rem">
-                <span style="margin-right: 1.25rem">姝ラ锛�12</span>
-                <span>濂楃瓛鏁伴噺锛�34</span>
+                <span style="margin-right: 1.25rem"
+                  >姝ラ锛歿{
+                    electric.length != 0 ? electric[0].maxNodal : "0"
+                  }}</span
+                >
+                <span
+                  >濂楃瓛鏁伴噺锛歿{
+                    electric != 0 ? electric[0].sumTorqueSum : "0"
+                  }}</span
+                >
               </div>
             </div>
           </div>
@@ -59,7 +67,7 @@
               font-size: 0.88rem;
               cursor: pointer;
             "
-            @click="addcraft()"
+            @click="addcraft('鐢垫皵')"
           >
             鏂板宸ヨ壓
           </div>
@@ -97,8 +105,16 @@
             >
               <span>姝や负浠诲姟浣滅敤涓満姊扮殑鐨勮鎯呮楠ゅ伐鑹恒��</span>
               <div style="display: flex; margin-top: 0.81rem">
-                <span style="margin-right: 1.25rem">姝ラ锛�12</span>
-                <span>濂楃瓛鏁伴噺锛�34</span>
+                <span style="margin-right: 1.25rem"
+                  >姝ラ锛歿{
+                    mechanical != 0 ? mechanical[0].maxNodal : "0"
+                  }}</span
+                >
+                <span
+                  >濂楃瓛鏁伴噺锛歿{
+                    mechanical.length != 0 ? mechanical[0].sumTorqueSum : "0"
+                  }}</span
+                >
               </div>
             </div>
           </div>
@@ -123,7 +139,7 @@
               font-size: 0.88rem;
               cursor: pointer;
             "
-            @click="addcraft()"
+            @click="addcraft('鏈烘')"
           >
             鏂板宸ヨ壓
           </div>
@@ -161,8 +177,16 @@
             >
               <span>姝や负浠诲姟浣滅敤涓湴娌熺殑鐨勮鎯呮楠ゅ伐鑹恒��</span>
               <div style="display: flex; margin-top: 0.81rem">
-                <span style="margin-right: 1.25rem">姝ラ锛�12</span>
-                <span>濂楃瓛鏁伴噺锛�34</span>
+                <span style="margin-right: 1.25rem"
+                  >姝ラ锛歿{
+                    trench.length != 0 ? trench[0].maxNodal : "0"
+                  }}</span
+                >
+                <span
+                  >濂楃瓛鏁伴噺锛歿{
+                    trench.length != 0 ? trench[0].sumTorqueSum : "0"
+                  }}</span
+                >
               </div>
             </div>
           </div>
@@ -187,7 +211,7 @@
               font-size: 0.88rem;
               cursor: pointer;
             "
-            @click="addcraft()"
+            @click="addcraft('鍦版矡')"
           >
             鏂板宸ヨ壓
           </div>
@@ -213,9 +237,12 @@
           >
             {{ title }}
           </h4>
-          <el-icon size="25" @click="close"><CloseBold /></el-icon>
+          <el-icon size="25" @click="close">
+            <CloseBold />
+          </el-icon>
         </div>
       </template>
+
       <div>
         <div class="head">
           <div class="serch">
@@ -244,9 +271,23 @@
               />
             </div>
             <div class="serch_box">
-              <div class="serchb">鍏ㄥ眬鎼滅储</div>
+              <div class="serchb">
+                <el-select
+                  v-model="queryForm.selectType"
+                  placeholder="璇烽�夋嫨"
+                  size="small"
+                  style="width: 100%; height: 100%; font-size: 0.15rem"
+                >
+                  <el-option
+                    v-for="item in selectoptions"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
+                  />
+                </el-select>
+              </div>
               <input
-                v-model="queryForm.selectName"
+                v-model="queryForm.selectInput"
                 placeholder="璇疯緭鍏ュ叧閿瘝鎼滅储"
                 style="border-left: 0.06rem solid #e2e2e2"
               />
@@ -255,21 +296,24 @@
               type="primary"
               size="small"
               style="height: 2rem; margin-left: 0.98rem"
-              @click="clicksearch"
+              @click="handleQuery"
               >鏌ヨ</el-button
             >
             <el-button
               size="small"
-              @click="clickreset"
+              @click="resetQuery"
               style="height: 2rem; font-size: 0.88rem"
               >閲嶇疆</el-button
             >
           </div>
-          <el-button style="width: 5rem; height: 2rem; margin-top: 1.13rem"
+          <el-button
+            style="width: 5rem; height: 2rem; margin-top: 1.13rem"
+            @click="printExcel"
             >鎵归噺瀵煎嚭</el-button
           >
         </div>
         <el-table
+          empty-text="鏆傛棤鏁版嵁"
           style="margin-top: 1.13rem"
           :data="gridData"
           height="430"
@@ -290,16 +334,28 @@
             border: '0.01rem solid #eee',
           }"
         >
-          <el-table-column prop="date" label="搴忓彿" min-width="2%" />
-          <el-table-column prop="date" label="宸ヨ壓椤剁偣/姝ラ" min-width="3%" />
-          <el-table-column prop="date" label="宸ヨ壓鍐呭" min-width="5%" />
-          <el-table-column prop="date" label="宸ュ叿" min-width="2%" />
-          <el-table-column prop="date" label="鐗╂枡" min-width="1%" />
-          <el-table-column prop="date" label="鍥剧墖瑙嗛" min-width="2%" />
-          <el-table-column prop="date" label="鏄惁娑夊強" min-width="2%" />
-          <el-table-column prop="date" label="鎺掑簭" min-width="1%" />
-          <el-table-column prop="date" label="鍒涘缓浜�" min-width="1%" />
-          <el-table-column prop="date" label="鍒涘缓鏃ユ湡" min-width="2%" />
+          <el-table-column prop="nodal" label="搴忓彿" min-width="2%" />
+          <el-table-column
+            prop="craftsStep"
+            label="宸ヨ壓椤剁偣/姝ラ"
+            min-width="3%"
+          />
+          <el-table-column
+            prop="craftContent"
+            label="宸ヨ壓鍐呭"
+            min-width="5%"
+          />
+          <el-table-column prop="tools" label="宸ュ叿" min-width="2%" />
+          <el-table-column prop="material" label="鐗╂枡" min-width="1%" />
+          <!-- <el-table-column prop="date" label="鍥剧墖瑙嗛" min-width="2%" /> -->
+          <el-table-column prop="" label="鏄惁娑夊強" min-width="2%" />
+          <el-table-column prop="setpNum" label="鎺掑簭" min-width="1%" />
+          <el-table-column prop="date" label="鍒涘缓浜�" min-width="2%">
+            <template #default="">
+              {{ user }}
+            </template>
+          </el-table-column>
+          <el-table-column prop="createTime" label="鍒涘缓鏃ユ湡" min-width="2%" />
           <el-table-column label="鎿嶄綔" min-width="3%">
             <template #default="scope">
               <el-button
@@ -308,7 +364,9 @@
                 @click="Editcraft(scope.row, '缂栬緫')"
                 >缂栬緫</el-button
               >
-              <el-button type="text" size="small">鍒犻櫎</el-button>
+              <el-button type="text" size="small" @click="delProcess(scope.row)"
+                >鍒犻櫎</el-button
+              >
             </template>
           </el-table-column>
         </el-table>
@@ -321,8 +379,8 @@
       v-model="craftdialogVisible"
       title="宸ヨ壓淇℃伅"
       width="50%"
-      :before-close="handleClose"
       :show-close="false"
+      @close="resetForm(ruleFormRef)"
     >
       <template #header="{ titleId, titleClass }">
         <div class="my-craftheader">
@@ -335,100 +393,189 @@
           </h4>
         </div>
       </template>
-      <el-form
-        :model="form"
-        label-width="auto"
-        label-position="top"
-        :rules="rules"
-      >
-        <el-row :gutter="10">
-          <el-col :span="16"
-            ><el-form-item prop="DeviceName">
-              <template #label>
-                <span style="font-size: 0.88rem; color: black"
-                  >宸ヨ壓椤剁偣/姝ラ</span
-                >
-              </template>
-              <el-input
-                size="small"
-                v-model="form.DeviceName"
-                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-select
-                v-model="value"
-                placeholder="璇烽�夋嫨"
-                size="small"
-                style="width: 240px"
-              >
-                <el-option
-                  v-for="item in options"
-                  :key="item.value"
-                  :label="item.label"
-                  :value="item.value"
-                />
-              </el-select> </el-form-item
-          ></el-col>
-        </el-row>
-        <el-row :gutter="10">
-          <el-col :span="8"
-            ><el-form-item prop="Unit">
+      <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-row :gutter="10">
+            <!-- <el-col :span="8"
+            ><el-form-item prop="isinvolved">
               <template #label>
                 <span style="font-size: 0.88rem; color: black">鏄惁娑夊強</span>
               </template>
               <el-select
-                v-model="value"
+                v-model="form.isinvolved"
                 placeholder="璇烽�夋嫨"
                 size="small"
                 style="width: 240px"
               >
                 <el-option
-                  v-for="item in options"
+                  v-for="item in isoptions"
                   :key="item.value"
                   :label="item.label"
                   :value="item.value"
                 />
               </el-select> </el-form-item
-          ></el-col>
-          <el-col :span="8"
-            ><el-form-item prop="Description">
-              <template #label>
-                <span style="font-size: 0.88rem; color: black">鎺掑簭</span>
-              </template>
-              <el-select
-                v-model="value"
-                placeholder="璇烽�夋嫨"
-                size="small"
-                style="width: 240px"
-              >
-                <el-option
-                  v-for="item in options"
-                  :key="item.value"
-                  :label="item.label"
-                  :value="item.value"
-                />
-              </el-select> </el-form-item
-          ></el-col>
-          <el-col :span="8"
-            ><el-form-item prop="Description">
-              <template #label>
-                <span style="font-size: 0.88rem; color: black">宸ュ叿</span>
-              </template>
-              <el-cascader
-                size="small"
-                style="width: 240px"
-                :options="options"
-                :props="props"
-                clearable /></el-form-item
-          ></el-col>
-        </el-row>
-        <!-- <el-row>
+          ></el-col> -->
+            <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"
@@ -477,102 +624,154 @@
             </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="Unit">
-              <template #label>
-                <span style="font-size: 0.88rem; color: black">鍐呭鎻忚堪</span>
-              </template>
-              <el-input v-model="input" placeholder="璇疯緭鍏�" />
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-form-item prop="Unit">
-            <template #label>
-              <span style="font-size: 0.88rem; color: black">鍐呭鎻忚堪</span>
-            </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
-                    placeholder="璇疯緭鍏ュ唴瀹�"
-                    style="height: 2rem"
-                  ></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="height: 1.25rem; display: flex; align-items: center"
+                    style="
+                      padding: 0.88rem 0.88rem 0 0.88rem;
+                      box-sizing: border-box;
+                    "
                   >
-                    <span
-                      style="color: rgba(28, 31, 35, 0.8); font-size: 0.75rem"
-                      >鍏�0椤�</span
-                    ><span
+                    <!-- <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
+                      >
+                      <!-- <span
+                      @click="handleCheckAllChange"
                       style="
                         color: rgba(28, 31, 35, 0.8);
                         font-size: 0.75rem;
                         margin-left: 0.38rem;
+                        cursor: pointer;
                       "
                       >鍏ㄩ��</span
+                    > -->
+                    </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>
-                </div>
-                <el-scrollbar height="20rem" style="padding-left: 0.88rem">
-                  <p v-for="item in 0" :key="item" class="scrollbar-demo-item">
-                    {{ item }}
-                  </p>
-                </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"
-                    >宸查��0椤�</span
+                  <el-scrollbar
+                    height="calc(25rem - 44.15px)"
+                    style="padding-left: 0.88rem"
                   >
-                  <span
-                    style="
-                      color: rgb(65, 70, 76);
-                      font-size: 0.88rem;
-                      margin-left: 1rem;
-                    "
-                    >娓呯┖</span
-                  >
+                    <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>
-                <el-scrollbar
-                  height="calc(25rem - 44.15px)"
-                  style="padding-left: 0.88rem"
-                >
-                  <p v-for="item in 0" :key="item" class="scrollbar-demo-item">
-                    {{ item }}
-                  </p>
-                </el-scrollbar>
               </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"
@@ -580,7 +779,7 @@
           >
           <el-button
             type="primary"
-            @click="craftdialogVisible = false"
+            @click="addprocess(ruleFormRef)"
             style="height: 2rem"
           >
             淇濆瓨
@@ -591,76 +790,502 @@
   </div>
 </template>
 <script setup>
-import { ref, reactive, onMounted } from "vue";
-import { GetSleeveandStep } from "@/api/newapi/Process";
-//宸ヨ壓鏄庣粏寮瑰嚭妗�
-const detailsDialogVisible = ref(false);
-//
-const gridData = ref([]);
-//鐢垫皵鏁伴噺
-const electric = ref({});
-//鎼滅储
-const queryForm = reactive({
+import { ref, reactive, onMounted, toRef, computed } from "vue";
+import { Search } from "@element-plus/icons-vue";
+import {
+  GetSleeveandStep,
+  GetProcess,
+  AddProcess,
+  GetPageData,
+  ArticleInfom,
+  GetTool,
+  ExportApi,
+  DelProcess,
+  AddOrUpdateProcess,
+} from "@/api/newapi/Process";
+import { ElMessage } from "element-plus";
+import { formatTime } from "@/utils/index.js";
+
+// 鍒濆鍖栨暟鎹�
+const obj = {
   selectName: "",
   selectTime: [], // 鏃堕棿鑼冨洿
-});
-const title = ref("鐢垫皵");
-const showdetails = (val) => {
-  detailsDialogVisible.value = true;
-  title.value = val;
+  selectType: "", //閫夋嫨鐨勭被鍨�
+  selectInput: "", //杈撳叆鐨勬暟鎹�
 };
+//宸ヨ壓鏄庣粏鏁版嵁
+const gridData = ref([]);
+//濂楃瓛鏁版嵁
+const sleeveData = ref([]);
+//閫夋嫨鐨勫绛掓暟鎹�
+const checkList = ref([]);
+//鐢垫皵鏁伴噺
+const electric = ref([]);
+//鏈烘鏁伴噺
+const mechanical = ref([]);
+//鍦版矡
+const trench = ref([]);
 //鏂板宸ヨ壓/缂栬緫宸ヨ壓
-const craftdialogVisible = ref(false);
 const type = ref("鏂板");
-const form = reactive({
-  DeviceName: "",
-  DeviceCode: "",
-  Spec: "",
-  Unit: "",
-  Description: "",
+//鑾峰彇鏁版嵁
+const title = ref("鐢垫皵");
+//琛ㄥ崟ref鍊�
+const ruleFormRef = ref();
+//鐢ㄦ埛鏁版嵁
+const user = ref(null);
+
+const tools = ref([]);
+//鎼滅储
+const queryForm = toRef({ ...obj });
+const isIndeterminate = ref(true);
+//宸ヨ壓鏄庣粏寮瑰嚭妗�
+const detailsDialogVisible = ref(false);
+//鏂板宸ヨ壓寮瑰嚭妗�
+const craftdialogVisible = ref(false);
+//鎼滅储瀛楁閫夋嫨
+const selectoptions = ref([
+  {
+    value: "setpNum",
+    label: "鎺掑簭",
+  },
+  {
+    value: "tools",
+    label: "宸ュ叿",
+  },
+]);
+//鏄惁娑夊強
+const isoptions = reactive([
+  { label: "鏄�", value: "鏄�" },
+  { label: "鍚�", value: "鍚�" },
+]);
+
+//琛ㄥ崟瑙勫垯
+const rules = reactive({
+  craftstype: [
+    { required: true, message: "璇烽�夋嫨宸ヨ壓绫诲瀷", trigger: "change" },
+  ],
+  craftsStep: [{ required: true, message: "璇疯緭鍏ュ伐鑹烘楠�", trigger: "blur" }],
+  craftContent: [
+    { required: true, message: "璇疯緭鍏ュ伐鑹哄唴瀹�", trigger: "blur" },
+  ],
+  nodal: [{ required: true, message: "璇疯緭鍏ュ簭鍙�", trigger: "blur" }],
+  setpNum: [{ required: true, message: "璇疯緭鍏ユ帓搴忓彿", trigger: "blur" }],
 });
+
+// isinvolved: "", //鏄惁娑夊強
+//鏂板宸ヨ壓/缂栬緫宸ヨ壓琛ㄥ崟鏁版嵁
+const form = ref({
+  id: 0,
+  craftstype: "", //宸ヨ壓绫诲瀷锛堢粍锛�
+  nodal: null, //鑺傜偣
+  craftsStep: "", //宸ヨ壓姝ラ
+  craftContent: "", //宸ヨ壓鍐呭
+  sleeveNum: "", //濂楃瓛鏁伴噺
+  tools: "", //宸ュ叿
+  setpNum: null,
+  torqueOne: 0,
+  torqueOneQuantity: 0,
+  articleone: "",
+  aritcleoneid: "",
+  aritcletowid: "",
+  articletwo: "",
+  torqueSum: 0,
+  torqueTwo: 0,
+  torqueTwoQuantity: 0,
+  material: "",
+  creater: localStorage.getItem("user")
+    ? JSON.parse(localStorage.getItem("user")).userName
+    : "",
+  createDate: formatTime(new Date()),
+});
+
 const props = { multiple: true };
+const userName = ref("");
 
 //鏂板宸ヨ壓
 const addcraft = (row) => {
   type.value = "鏂板";
+  title.value = row;
   craftdialogVisible.value = true;
-  console.log(row, type);
+  ArticleInfom({
+    page: 1,
+    rows: 100,
+    total: 0,
+    tableName: "",
+    sort: "",
+    order: "",
+    wheres: "",
+    export: true,
+    value: "",
+    filter: [
+      {
+        name: "",
+        value: "",
+        displayType: "",
+      },
+    ],
+  }).then((res) => {
+    sleeveData.value = res.rows;
+  });
+  GetTool({
+    page: 1,
+    rows: 100,
+    total: 0,
+    tableName: "",
+    sort: "",
+    order: "",
+    wheres: "",
+    export: true,
+    value: "",
+    filter: [
+      {
+        name: "",
+        value: "",
+        displayType: "",
+      },
+    ],
+  }).then((res) => {
+    GJoptions.value = res.rows;
+  });
 };
+
 //缂栬緫宸ヨ壓
 const Editcraft = (row) => {
+  let data = Object.assign({}, row);
   type.value = "缂栬緫";
   detailsDialogVisible.value = false;
   craftdialogVisible.value = true;
-  console.log(row, type);
-};
-//鍥剧墖涓婁紶
-const dialogImageUrl = ref("");
-const dialogVisible = ref(false);
-const disabled = ref(false);
+  form.value = data;
+  tools.value = data.tools ? data.tools.split(",") : "";
+  console.log("tools", tools.value);
 
-const handleRemove = (file) => {
-  console.log(file);
+  checkboxId.value = [Number(row.articleOneid), Number(row.articleTowid)];
+  ArticleInfom({
+    page: 1,
+    rows: 100,
+    total: 0,
+    tableName: "",
+    sort: "",
+    order: "",
+    wheres: "",
+    export: true,
+    value: "",
+    filter: [
+      {
+        name: "",
+        value: "",
+        displayType: "",
+      },
+    ],
+  }).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,
+    total: 0,
+    tableName: "",
+    sort: "",
+    order: "",
+    wheres: "",
+    export: true,
+    value: "",
+    filter: [
+      {
+        name: "",
+        value: "",
+        displayType: "",
+      },
+    ],
+  }).then((res) => {
+    GJoptions.value = res.rows;
+  });
 };
 
-const handlePictureCardPreview = (file) => {
-  dialogImageUrl.value = file.url;
-  dialogVisible.value = true;
+const showdetails = (val) => {
+  detailsDialogVisible.value = true;
+  title.value = val;
+  initData(title.value);
+  // GetProcess(val).then((res) => {
+  //   gridData.value = res.data;
+  // });
+};
+//淇濆瓨
+const addprocess = async (formEl) => {
+  console.log(checkboxId.value);
+  userName.value = JSON.parse(localStorage.getItem("user")).userName;
+  let string = "";
+  if (tools.value.length > 0) {
+    string = tools.value
+      .map((item) => {
+        return typeof item == "string" ? item : item.toolName;
+      })
+      .join(",");
+  }
+  if (form.value.nodal == 0) {
+    ElMessage({
+      message: "搴忓彿鏈�灏忎负1",
+      type: "warning",
+    });
+    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.length > 1
+      ? checkList.value[1].id
+      : "";
+  form.value.articletwo =
+    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.id = form.value.craftID ? form.value.craftID : 0;
+  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) {
+      AddOrUpdateProcess(form.value).then((res) => {
+        ElMessage({
+          message: form.value.craftID ? "淇敼鎴愬姛" : "鍒涘缓鎴愬姛",
+          type: "success",
+        });
+        craftdialogVisible.value = false;
+      });
+    } else {
+      console.log("error submit!", fields);
+    }
+  });
+};
+//鐗╂枡妯$硦鏌ヨ
+const WLvalue = ref(null);
+const loading = ref(false);
+const WLoptions = ref([]);
+const remoteMethod = (query) => {
+  if (query) {
+    loading.value = true;
+    setTimeout(() => {
+      loading.value = false;
+      WLoptions.value = list.value.filter((item) => {
+        return item.label.toLowerCase().includes(query.toLowerCase());
+      });
+    }, 200);
+  } else {
+    WLoptions.value = [];
+  }
+};
+//宸ュ叿妯$硦鏌ヨ
+const GJvalue = ref(null);
+const GJloading = ref(false);
+const GJoptions = ref([]);
+const GJremoteMethod = (query) => {
+  if (query) {
+    GJloading.value = true;
+    setTimeout(() => {
+      GJloading.value = false;
+      GJoptions.value = list.value.filter((item) => {
+        return item.label.toLowerCase().includes(query.toLowerCase());
+      });
+    }, 200);
+  } else {
+    GJoptions.value = [];
+  }
 };
 
-const handleDownload = (file) => {
-  console.log(file);
+//鍒嗛〉璇锋眰鍙傛暟
+const pageQuery = ref({
+  page: 1, //褰撳墠椤甸潰
+  rows: 100, //姣忛〉鏄剧ず鏉℃暟
+  order: "desc", //鎺掑簭鏂瑰紡
+  sort: "", //鎺掑簭瀛楁
+  wheres: "", //鏉′欢鏌ヨ
+});
+//椤甸潰鍒濆鍖栨暟鎹�
+const initData = (val) => {
+  // 鏌ヨ鏉′欢
+  const startTime = formatTime(queryForm.value.selectTime[0]);
+  const endTime = formatTime(queryForm.value.selectTime[1]);
+  const filter = [
+    {
+      name: "CraftType",
+      value: val,
+      displayType: "String",
+    },
+    {
+      name: queryForm.value.selectType,
+      value: queryForm.value.selectInput,
+      displayType: "like",
+    },
+    {
+      name: "pustatus",
+      value: queryForm.value.selectName,
+      displayType: "Contains",
+    },
+    { name: "createTime", value: startTime, displayType: "ThanOrEqual" },
+    { name: "createTime", value: endTime, displayType: "LessOrEqual" },
+  ];
+  GetPageData({
+    ...pageQuery.value,
+    filter,
+  }).then((res) => {
+    gridData.value = res.rows;
+  });
 };
+//鏁版嵁妫�绱簨浠�
+const handleQuery = () => {
+  pageQuery.value.page = 1;
+  initData(title.value);
+};
+// 閲嶇疆鏂规硶
+const resetQuery = () => {
+  queryForm.value = Object.assign({}, obj);
+  pageQuery.value.page = 1;
+  initData(title.value);
+};
+//閲嶇疆琛ㄥ崟
+const resetForm = (formEl) => {
+  if (!formEl) return;
+  formEl.resetFields();
+  form.value = Object.assign(
+    {},
+    {
+      craftstype: "", //宸ヨ壓绫诲瀷锛堢粍锛�
+      nodal: "", //鑺傜偣
+      craftsStep: "", //宸ヨ壓姝ラ
+      craftContent: "", //宸ヨ壓鍐呭
+      sleeveNum: "", //濂楃瓛鏁伴噺
+      tools: "", //宸ュ叿
+      isinvolved: "", //鏄惁娑夊強
+      setpNum: "",
+      torqueOne: 0,
+      torqueOneQuantity: 0,
+      articleone: "",
+      articleoneid: "",
+      articletowid: "",
+      articletwo: "",
+      torqueSum: 0,
+      torqueTwo: 0,
+      torqueTwoQuantity: 0,
+      creater: "",
+      createDate: formatTime(new Date()),
+    }
+  );
+  tools.value = [];
+  checkList.value = [];
+  checkboxId.value = [];
+};
+//瀵煎嚭鏂规硶
+const printExcel = () => {
+  // 鏌ヨ鏉′欢
+  const startTime = formatTime(queryForm.value.selectTime[0]);
+  const endTime = formatTime(queryForm.value.selectTime[1]);
+  const filter = [
+    {
+      name: "gruop",
+      value: title.value,
+      displayType: "String",
+    },
+    {
+      name: queryForm.value.selectType,
+      value: queryForm.value.selectInput,
+      displayType: "String",
+    },
+    {
+      name: "pustatus",
+      value: queryForm.value.selectName,
+      displayType: "String",
+    },
+    { name: "createTime", value: startTime, displayType: "ThanOrEqual" },
+    { name: "createTime", value: endTime, displayType: "LessOrEqual" },
+  ];
+  ExportApi({
+    ...pageQuery.value,
+    filter,
+  });
+};
+//娓呯┖
+const clear = () => {
+  checkList.value = [];
+};
+const checkboxId = ref([]); //澶嶉�夋閫変腑浜嬩欢
+const checkChange = (e) => {
+  checkList.value = [];
+  sleeveData.value.forEach((item, index) => {
+    if (checkboxId.value.includes(item.id)) {
+      checkList.value.push({
+        ...item,
+        num: 1,
+      });
+    }
+  });
+};
+const handleChange = () => {
+  console.log(checkList.value);
+};
+const handleCheckAllChange = (val) => {
+  checkList.value = val ? sleeveData.value : [];
+  isIndeterminate.value = false;
+};
+// 鍒犻櫎宸ヨ壓
+const delProcess = (val) => {
+  console.log(val);
+
+  DelProcess([val.craftID]).then((res) => {
+    ElMessage({
+      message: "鍒犻櫎鎴愬姛",
+      type: "success",
+    });
+    initData(title.value);
+  });
+};
+
 onMounted(() => {
-  GetSleeveandStep("鐢垫皵").then((res) => {
-    console.log("123", res);
+  GetSleeveandStep().then((res) => {
+    electric.value = res.data.filter((item) => {
+      return item.craftType == "鐢垫皵";
+    });
+    mechanical.value = res.data.filter((item) => {
+      return item.craftType == "鏈烘";
+    });
+    trench.value = res.data.filter((item) => {
+      return item.craftType == "鍦版矡";
+    });
+    console.log(electric.value);
   });
-  GetSleeveandStep("鏈烘").then((res) => {
-    console.log("123", res);
-  });
-  GetSleeveandStep("鍦版矡").then((res) => {
-    console.log("123", res);
-  });
+  user.value = JSON.parse(localStorage.getItem("user")).userName;
 });
 </script>
 <style lang="scss" scoped>
@@ -668,12 +1293,14 @@
   display: flex;
   justify-content: center;
   background-color: rgba(0, 0, 0, 0.3);
+
   .content {
     display: flex;
     justify-content: space-between;
 
     margin-top: 5.88rem;
     width: 75rem;
+
     .content-list {
       display: flex;
       flex-direction: column;
@@ -681,14 +1308,17 @@
       width: 22.69rem;
       height: 11.44rem;
       background-color: #fff;
+
       .list_top {
         display: flex;
         padding: 1.38rem 1.38rem;
         box-sizing: border-box;
+
         .list_top_left {
           margin-right: 0.94rem;
         }
       }
+
       .list_bottom {
         height: 3.06rem;
         display: flex;
@@ -700,6 +1330,7 @@
       }
     }
   }
+
   .my-header {
     height: 3.94rem;
     display: flex;
@@ -709,9 +1340,11 @@
     padding-left: 2.06rem;
     border-bottom: 0.06rem solid rgba(233, 233, 233, 1);
   }
+
   .serch {
     display: flex;
     align-items: center;
+
     .time_box {
       display: flex;
       align-items: center;
@@ -730,24 +1363,26 @@
         justify-content: center;
       }
     }
+
     .serch_box {
       display: flex;
       align-items: center;
       text-align: center;
       margin-left: 0.98rem;
       border-radius: 0.38rem;
+
       .serchb {
         box-sizing: border-box;
         width: 6.88rem;
         height: 2rem;
         text-align: center;
-        border: 0.06rem solid rgba(222, 222, 222, 1);
-        border-radius: 0.25rem 0 0 0.25rem;
+
         font-size: 0.75rem;
         display: flex;
         align-items: center;
         justify-content: center;
       }
+
       input {
         box-sizing: border-box;
         outline: none;
@@ -760,6 +1395,7 @@
       }
     }
   }
+
   .my-craftheader {
     height: 3.94rem;
     display: flex;
@@ -769,11 +1405,13 @@
     border-bottom: 0.06rem solid rgba(233, 233, 233, 1);
   }
 }
+
 .avatar-uploader .avatar {
   width: 7rem;
   height: 7rem;
   display: block;
 }
+
 :deep(.avatar-uploader .el-upload) {
   width: 7rem;
   height: 7rem;
@@ -784,10 +1422,12 @@
   overflow: hidden;
   transition: var(--el-transition-duration-fast);
 }
+
 :deep(.el-upload-list__item) {
   width: 7rem;
   height: 7rem;
 }
+
 .avatar-uploader .el-upload:hover {
   border-color: var(--el-color-primary);
 }

--
Gitblit v1.9.3