From 1985fe8e217b28f89eb9501e6dd6635aaa4ec741 Mon Sep 17 00:00:00 2001
From: 张诺 <zhang_12370@163.com>
Date: 星期一, 27 四月 2026 16:08:06 +0800
Subject: [PATCH] 阳光印刷Web: 调整文字

---
 src/views/productionManagement/productionOrder/BindRouteDialog.vue |  980 +++++++++++++++++++++++++++++----------------------------
 1 files changed, 503 insertions(+), 477 deletions(-)

diff --git a/src/views/productionManagement/productionOrder/BindRouteDialog.vue b/src/views/productionManagement/productionOrder/BindRouteDialog.vue
index e2b6337..672c2a8 100644
--- a/src/views/productionManagement/productionOrder/BindRouteDialog.vue
+++ b/src/views/productionManagement/productionOrder/BindRouteDialog.vue
@@ -1,222 +1,225 @@
 <template>
   <FormDialog
-    v-model="visible"
-    :title="type === 'add' ? '缁戝畾宸ヨ壓璺嚎' : type === 'detail' ? '鏌ョ湅宸ヨ壓璺嚎' : '缂栬緫宸ヨ壓璺嚎'"
-    width="1400px"
-    :operation-type="type"
-    :column="8"
-    @close="handleClose"
-    @confirm="handleConfirm"
-    @cancel="handleClose"
+      v-model="visible"
+      :title="type === 'add' ? '缁戝畾宸ヨ壓璺嚎' : type === 'detail' ? '鏌ョ湅宸ヨ壓璺嚎' : '缂栬緫宸ヨ壓璺嚎'"
+      width="1400px"
+      :operation-type="type"
+      :column="8"
+      @close="handleClose"
+      @confirm="handleConfirm"
+      @cancel="handleClose"
   >
     <div :class="{ 'is-detail': isDetail }">
-    <!-- ================= 鍩烘湰淇℃伅 ================= -->
-    <el-descriptions :column="3">
-      <el-descriptions-item label="缂栧彿" align="center" v-if="formData.productOrderList">
-        {{ formData.productOrderList.salesContractNo || "鏆傛棤鏁版嵁" }}
-      </el-descriptions-item>
+      <!-- ================= 鍩烘湰淇℃伅 ================= -->
+      <el-descriptions :column="3">
+        <el-descriptions-item label="缂栧彿" align="center" v-if="formData.productOrderList">
+          {{ formData.productOrderList.salesContractNo || "鏆傛棤鏁版嵁" }}
+        </el-descriptions-item>
 
-      <el-descriptions-item label="鍒跺崟鏃ユ湡" align="center" v-if="formData.productOrderList">
-        {{ formData.productOrderList.entryDate || "鏆傛棤鏁版嵁" }}
-      </el-descriptions-item>
+        <el-descriptions-item label="鍒跺崟鏃ユ湡" align="center" v-if="formData.productOrderList">
+          {{ formData.productOrderList.entryDate || "鏆傛棤鏁版嵁" }}
+        </el-descriptions-item>
 
-      <el-descriptions-item label="浜や粯鏃ユ湡" align="center" v-if="formData.productOrderList">
-        {{ formData.productOrderList.deliveryDate || "鏆傛棤鏁版嵁" }}
-      </el-descriptions-item>
-    </el-descriptions>
+        <el-descriptions-item label="浜や粯鏃ユ湡" align="center" v-if="formData.productOrderList">
+          {{ formData.productOrderList.deliveryDate || "鏆傛棤鏁版嵁" }}
+        </el-descriptions-item>
+      </el-descriptions>
 
-    <el-descriptions border :column="4">
-      <el-descriptions-item label="濮旀墭鍗曚綅" :span="2" align="center">
-        {{formData.clientName || "--"}}
-      </el-descriptions-item>
+      <el-descriptions border :column="4">
+        <el-descriptions-item label="濮旀墭鍗曚綅" :span="2" align="center">
+          {{ formData.clientName || "--" }}
+        </el-descriptions-item>
 
-      <el-descriptions-item label="鏁伴噺" :span="1" align="center">
-        {{formData.orderQty || "--"}}
-      </el-descriptions-item>
+        <el-descriptions-item label="鏁伴噺" :span="1" align="center">
+          {{ formData.orderQty || "--" }}
+        </el-descriptions-item>
 
-      <el-descriptions-item label="鎴愬搧灏哄" :span="1" align="center">
-        {{formData.finishedSize || "--"}}
-      </el-descriptions-item>
+        <el-descriptions-item label="鎴愬搧灏哄" :span="1" align="center">
+          <el-input v-model="formData.finishedSize" placeholder="鎴愬搧灏哄" :disabled="isDetail">
+          </el-input>
+        </el-descriptions-item>
 
-      <el-descriptions-item label="浜у搧鍚嶇О" :span="2" align="center">
-        {{formData.productName || "--"}}
-      </el-descriptions-item>
+        <el-descriptions-item label="浜у搧鍚嶇О" :span="2" align="center">
+          {{ formData.productName || "--" }}
+        </el-descriptions-item>
 
-      <el-descriptions-item label="鍗曟嵁绫诲瀷" :span="2" align="center">
-        <el-checkbox-group v-model="introductionLetterList" :disabled="isDetail">
-          <el-checkbox label="浠嬬粛淇�" value="浠嬬粛淇�" />
-          <el-checkbox label="鍟嗘爣娉ㄥ唽" value="鍟嗘爣娉ㄥ唽" />
-          <el-checkbox label="濮斿嵃鍗�" value="濮斿嵃鍗�" />
-          <el-checkbox label="涔﹀彿" value="涔﹀彿" />
-        </el-checkbox-group>
-      </el-descriptions-item>
-    </el-descriptions>
+        <el-descriptions-item label="鍗曟嵁绫诲瀷" :span="2" align="center">
+          <el-checkbox-group v-model="introductionLetterList" :disabled="isDetail">
+            <el-checkbox label="浠嬬粛淇�" value="浠嬬粛淇�"/>
+            <el-checkbox label="鍟嗘爣娉ㄥ唽" value="鍟嗘爣娉ㄥ唽"/>
+            <el-checkbox label="濮斿嵃鍗�" value="濮斿嵃鍗�"/>
+            <el-checkbox label="涔﹀彿" value="涔﹀彿"/>
+          </el-checkbox-group>
+        </el-descriptions-item>
+      </el-descriptions>
 
-    <!-- ================= 鏉愭枡琛� ================= -->
-    <div class="process-table-header">
-     <div class="section-title">鏉愭枡淇℃伅</div>
-      <el-button v-if="!isDetail" type="primary" size="small" @click="addMaterialRow">鏂板涓�琛�</el-button>
-    </div>
-    <el-table border :data="formData.materialInfo" style="width: 100%">
-      <el-table-column label="鏉愭枡鍚嶇О">
-        <template #default="{ row, $index }" >
-          <el-tree-select
-          v-if="!isDetail"
-            v-model="row.productById"
-            placeholder="璇烽�夋嫨"
-            clearable
-            check-strictly
-            @change="(val) => getModels(val, row, $index)"
-            :data="productOptions"
-            :render-after-expand="false"
-            :disabled="isDetail"
-            style="width: 100%"
-          />
-            <span v-else>{{ row.name }}</span>  
-        </template> 
-      </el-table-column>
-      <el-table-column>
-        <template #header>
-          <span class="required">*</span>瑙勬牸
-        </template>
-        <template #default="{ row }">
-          <el-select
-          v-if="!isDetail"
-            v-model="row.productModelId"
-            placeholder="璇烽�夋嫨瑙勬牸"
-            filterable
-            clearable
-            @change="(val) => handleMaterialModelChange(val, row)"
-            :disabled="isDetail"
-          >
-            <el-option
-              v-for="item in row.modelOptions"
-              :key="item.id"
-              :label="item.model"
-              :value="item.id"
+      <!-- ================= 鏉愭枡琛� ================= -->
+      <div class="process-table-header">
+        <div class="section-title">鏉愭枡淇℃伅</div>
+        <el-button v-if="!isDetail" type="primary" size="small" @click="addMaterialRow">鏂板涓�琛�</el-button>
+      </div>
+      <el-table border :data="formData.materialInfo" style="width: 100%">
+        <el-table-column label="鏉愭枡鍚嶇О">
+          <template #default="{ row, $index }">
+            <el-tree-select
+                v-if="!isDetail"
+                v-model="row.productById"
+                placeholder="璇烽�夋嫨"
+                clearable
+                check-strictly
+                @change="(val) => getModels(val, row, $index)"
+                :data="productOptions"
+                :render-after-expand="false"
+                :disabled="isDetail"
+                style="width: 100%"
             />
-          </el-select>
-          <span v-else>{{ row.model }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="鏁伴噺">
-        <template #default="{ row }">
-          <el-input v-model="row.num" placeholder="鏁伴噺" :disabled="isDetail">
-          </el-input>
-        </template>
-      </el-table-column>
-      <el-table-column label="璁¢噺鍗曚綅">
-        <template #default="{ row }">
-          <el-input v-model="row.unit" placeholder="璁¢噺鍗曚綅" :disabled="isDetail" />
-        </template>
-      </el-table-column>
-      <el-table-column label="鍗曚环">
-        <template #default="{ row }">
-          <el-input v-model="row.price" placeholder="鍗曚环" :disabled="isDetail">
-          </el-input>
-        </template>
-      </el-table-column>
-      <el-table-column label="閲戦">
-        <template #default="{ row }">
-          <el-input v-model="row.totalAmount" placeholder="閲戦" :disabled="isDetail" />
-        </template>
-      </el-table-column>
-      <el-table-column v-if="!isDetail" label="鎿嶄綔" width="80">
-        <template #default="{ $index }">
-          <el-button type="danger" size="small" @click="removeMaterialRow($index)">鍒犻櫎</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-    <el-descriptions border :column="2" :span="2">
-      <el-descriptions-item
-          label="鍒囨枡鍥剧ず閫夋嫨"
-          :span="1"
-          align="center"
-          style="white-space: pre-line; word-break: break-all; min-height: 60px;"
+            <span v-else>{{ row.name }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column>
+          <template #header>
+            <span class="required">*</span>瑙勬牸
+          </template>
+          <template #default="{ row }">
+            <el-select
+                v-if="!isDetail"
+                v-model="row.productModelId"
+                placeholder="璇烽�夋嫨瑙勬牸"
+                filterable
+                clearable
+                @change="(val) => handleMaterialModelChange(val, row)"
+                :disabled="isDetail"
+            >
+              <el-option
+                  v-for="item in row.modelOptions"
+                  :key="item.id"
+                  :label="item.model"
+                  :value="item.id"
+              />
+            </el-select>
+            <span v-else>{{ row.model }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="鏁伴噺">
+          <template #default="{ row }">
+            <el-input v-model="row.num" placeholder="鏁伴噺" :disabled="isDetail">
+            </el-input>
+          </template>
+        </el-table-column>
+        <el-table-column label="璁¢噺鍗曚綅">
+          <template #default="{ row }">
+            <el-input v-model="row.unit" placeholder="璁¢噺鍗曚綅" :disabled="isDetail"/>
+          </template>
+        </el-table-column>
+        <el-table-column label="鍗曚环">
+          <template #default="{ row }">
+            <el-input v-model="row.price" placeholder="鍗曚环" :disabled="isDetail">
+            </el-input>
+          </template>
+        </el-table-column>
+        <el-table-column label="閲戦">
+          <template #default="{ row }">
+            <el-input v-model="row.totalAmount" placeholder="閲戦" :disabled="isDetail"/>
+          </template>
+        </el-table-column>
+        <el-table-column v-if="!isDetail" label="鎿嶄綔" width="80">
+          <template #default="{ $index }">
+            <el-button type="danger" size="small" @click="removeMaterialRow($index)">鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <el-descriptions border :column="2" :span="2">
+        <el-descriptions-item
+            label="鍒囨枡鍥剧ず閫夋嫨"
+            :span="1"
+            align="center"
+            style="white-space: pre-line; word-break: break-all; min-height: 60px;"
+        >
+          <el-radio-group v-model="formData.cuttingDiagramCheckout">
+            <el-radio value="骞冲紶">骞冲紶</el-radio>
+            <el-radio value="鍗风瓛">鍗风瓛</el-radio>
+          </el-radio-group>
+        </el-descriptions-item>
+        <el-descriptions-item
+            label="鍒囨枡娉ㄦ剰浜嬮」"
+            :span="1"
+            align="center"
+            style="white-space: pre-line; word-break: break-all; min-height: 60px;"
+        >
+          <el-input
+              v-model="formData.productDescription"
+              :autosize="{ minRows: 2, maxRows: 4 }"
+              type="textarea"
+              placeholder="璇疯緭鍏ユ敞鎰忎簨椤�"
+              :disabled="isDetail"
+          />
+        </el-descriptions-item>
+      </el-descriptions>
+      <!-- ================= 鍒囨枡鍥剧ず ================= -->
+      <div class="section-title" v-if="type === 'add' || (type === 'detail' && formData.cuttingFileVo.length > 0)">
+        鍒囨枡鍥剧ず
+      </div>
+      <ActionFileUpload
+          v-if="type === 'add' || (type === 'detail' && formData.cuttingFileVo.length > 0)"
+          style="width: 50%;float: left;"
+          v-model:file-list="formData.cuttingFileVo"
+          :action="upload.url"
+          :headers="upload.headers"
+          :multiple="false"
+          :limit="1"
+          :replaceOnExceed="true"
+          :disabled="isDetail"
+          :name="'files'"
+          :onSuccess="onSuccess"
+          :onDownload="onDownload"
+          :onRemove="onRemove"
+          :onPreview="onPreview"
+          :onView="type!=='detail'"
+          :tip-text="type === 'detail' ? '' : '鏀寔鍥剧墖锛坖pg, jpeg, png锛夋牸寮�'"
+      />
+      <el-image
+          v-if="formData.cuttingFileVo.length > 0"
+          style="width: 100px; height: 100px"
+          :src="resolveFileUrl(getUploadFileUrl(formData.cuttingFileVo[0]))"
+          fit="cover"
+      />
+      <!-- ================= 鍒囨枡淇℃伅 ================= -->
+      <el-descriptions
+          border
+          :column="6"
+          direction="vertical"
+          style="width: 100%"
+          class="fixed-desc"
       >
-        <el-radio-group v-model="formData.cuttingDiagramCheckout">
-          <el-radio value="骞冲紶">骞冲紶</el-radio>
-          <el-radio value="鍗风瓛">鍗风瓛</el-radio>
-        </el-radio-group>
-      </el-descriptions-item>
-      <el-descriptions-item
-          label="鍒囨枡娉ㄦ剰浜嬮」"
-          :span="1"
-          align="center"
-          style="white-space: pre-line; word-break: break-all; min-height: 60px;"
-      >
-        <el-input
-            v-model="formData.productDescription"
-            :autosize="{ minRows: 2, maxRows: 4 }"
-            type="textarea"
-            placeholder="璇疯緭鍏ユ敞鎰忎簨椤�"
-            :disabled="isDetail"
-        />
-      </el-descriptions-item>
-    </el-descriptions>
-    <!-- ================= 鍒囨枡鍥剧ず ================= -->
-    <div class="section-title" v-if="formData.cuttingFileVo.length > 0">鍒囨枡鍥剧ず</div>
-    <ActionFileUpload
-    v-if="formData.cuttingFileVo.length > 0"
-        style="width: 50%;float: left;"
-        v-model:file-list="formData.cuttingFileVo"
-        :action="upload.url"
-        :headers="upload.headers"
-        :multiple="false"
-        :limit="1"
-        :replaceOnExceed="true"
-        :disabled="isDetail"
-        :name="'files'"
-        :onSuccess="onSuccess"
-        :onDownload="onDownload"
-        :onRemove="onRemove"
-        :onPreview="onPreview"
-        :onView="type === 'detail' ? false : true"
-        :tip-text="type === 'detail' ? '' : '鏀寔鍥剧墖锛坖pg, jpeg, png锛夋牸寮�'"
-    />
-    <el-image
-      v-if="formData.cuttingFileVo.length > 0"
-      style="width: 100px; height: 100px"
-      :src="resolveFileUrl(getUploadFileUrl(formData.cuttingFileVo[0]))"
-      fit="cover"
-    />
-    <!-- ================= 鍒囨枡淇℃伅 ================= -->
-    <el-descriptions
-      border
-      :column="6"
-      direction="vertical"
-      style="width: 100%"
-      class="fixed-desc"
-    >
-      <el-descriptions-item label="鍒囨枡灏哄" align="center">
-        <el-input v-model="formData.cutNum" placeholder="鍒囨枡灏哄" :disabled="isDetail" />
-      </el-descriptions-item>
-      <el-descriptions-item label="鍒囨枡鏁伴噺" align="center">
-        <el-input v-model="formData.cutSize" placeholder="鍒囨枡灏哄" :disabled="isDetail" />
-      </el-descriptions-item>
-      <el-descriptions-item label="涓洅鏁伴噺" align="center">
-        <el-input v-model="formData.mediumBoxQty" placeholder="涓洅鏁伴噺" :disabled="isDetail" />
-      </el-descriptions-item>
-      <el-descriptions-item label="灏忕洅鏁伴噺" align="center">
-        <el-input v-model="formData.smallBoxQty" placeholder="灏忕洅鏁伴噺" :disabled="isDetail" />
-      </el-descriptions-item>
-      <el-descriptions-item label="姝f暟" align="center">
-        <el-input v-model="formData.positiveQty" placeholder="姝f暟" :disabled="isDetail" />
-      </el-descriptions-item>
-      <el-descriptions-item label="鍔犳斁鏁�" align="center">
-        <el-input v-model="formData.allowanceQty" placeholder="鍔犳斁鏁�" :disabled="isDetail" />
-      </el-descriptions-item>
-    </el-descriptions>
+        <el-descriptions-item label="鍒囨枡灏哄" align="center">
+          <el-input v-model="formData.cutNum" placeholder="鍒囨枡灏哄" :disabled="isDetail"/>
+        </el-descriptions-item>
+        <el-descriptions-item label="鍒囨枡鏁伴噺" align="center">
+          <el-input v-model="formData.cutSize" placeholder="鍒囨枡鏁伴噺" :disabled="isDetail"/>
+        </el-descriptions-item>
+        <el-descriptions-item label="涓洅鏁伴噺" align="center">
+          <el-input v-model="formData.mediumBoxQty" placeholder="涓洅鏁伴噺" :disabled="isDetail"/>
+        </el-descriptions-item>
+        <el-descriptions-item label="灏忕洅鏁伴噺" align="center">
+          <el-input v-model="formData.smallBoxQty" placeholder="灏忕洅鏁伴噺" :disabled="isDetail"/>
+        </el-descriptions-item>
+        <el-descriptions-item label="姝f暟" align="center">
+          <el-input v-model="formData.positiveQty" placeholder="姝f暟" :disabled="isDetail"/>
+        </el-descriptions-item>
+        <el-descriptions-item label="鍔犳斁鏁�" align="center">
+          <el-input v-model="formData.allowanceQty" placeholder="鍔犳斁鏁�" :disabled="isDetail"/>
+        </el-descriptions-item>
+      </el-descriptions>
 
-    <div class="middle-sheet-table">
-      <table class="middle-sheet-table__inner">
-        <tbody>
+      <div class="middle-sheet-table">
+        <table class="middle-sheet-table__inner">
+          <tbody>
           <tr>
             <th>杞墖鐗�:</th>
             <th colspan="2">寮�寮犺壊</th>
             <th>鏅掓澘</th>
             <th colspan="2">寮�鎷�</th>
-            <th>鍒垁鐗�</th>
+            <th>鍒栧垁鐗�</th>
             <th>鑱旇壊鍧�</th>
           </tr>
           <tr>
@@ -225,178 +228,178 @@
             <th>鎷肩増璐�</th>
             <th>鍑虹墖璐�</th>
             <th>鎵撴牱璐�</th>
-            <th>鍒垁鐗堣垂</th>
+            <th>鍒栧垁鐗堣垂</th>
             <th>鐑�/鍑哥増璐�</th>
             <th>灏忚</th>
           </tr>
           <tr v-for="(plate, index) in formData.plateMaking" :key="index">
             <td>
-              <el-input v-model="plate.designProductionFee" placeholder="璇疯緭鍏ヨ璁″埗浣滆垂" :disabled="isDetail" />
+              <el-input v-model="plate.designProductionFee" placeholder="璇疯緭鍏ヨ璁″埗浣滆垂" :disabled="isDetail"/>
             </td>
             <td>
-              <el-input v-model="plate.impositionFee" placeholder="璇疯緭鍏ユ嫾鐗堣垂" :disabled="isDetail" />
+              <el-input v-model="plate.impositionFee" placeholder="璇疯緭鍏ユ嫾鐗堣垂" :disabled="isDetail"/>
             </td>
             <td>
-              <el-input v-model="plate.filmOutputFee" placeholder="璇疯緭鍏ュ嚭鐗囪垂" :disabled="isDetail" />
+              <el-input v-model="plate.filmOutputFee" placeholder="璇疯緭鍏ュ嚭鐗囪垂" :disabled="isDetail"/>
             </td>
             <td>
-              <el-input v-model="plate.proofingFee" placeholder="璇疯緭鍏ユ墦鏍疯垂" :disabled="isDetail" />
+              <el-input v-model="plate.proofingFee" placeholder="璇疯緭鍏ユ墦鏍疯垂" :disabled="isDetail"/>
             </td>
             <td>
-              <el-input v-model="plate.doctorBladePlateFee" placeholder="璇疯緭鍏ュ埆鍒�鐗堣垂" :disabled="isDetail" />
+              <el-input v-model="plate.doctorBladePlateFee" placeholder="璇疯緭鍏ュ垨鍒�鐗堣垂" :disabled="isDetail"/>
             </td>
             <td>
-              <el-input v-model="plate.hotEmbossingPlateFee" placeholder="璇疯緭鍏ョ儷/鍑哥増璐�" :disabled="isDetail" />
+              <el-input v-model="plate.hotEmbossingPlateFee" placeholder="璇疯緭鍏ョ儷/鍑哥増璐�" :disabled="isDetail"/>
             </td>
             <td>
-              <el-input v-model="plate.subtotalFee" placeholder="璇疯緭鍏ュ皬璁�" :disabled="isDetail" />
+              <el-input v-model="plate.subtotalFee" placeholder="璇疯緭鍏ュ皬璁�" :disabled="isDetail"/>
             </td>
           </tr>
-        </tbody>
-      </table>
-    </div>
-<!--  class="section-title" -->
-    <!-- ================= 宸ヨ壓鍔犲伐 ================= -->
-    <div class="process-table-header">
-     <div class="section-title">宸ヨ壓鍔犲伐</div>
-      <el-button v-if="!isDetail" type="primary" size="small" @click="addProcessRow">鏂板涓�琛�</el-button>
-    </div>
-    <el-table border :data="formData.processContent" style="width: 100%" :span-method="objectSpanMethod">
-          <el-table-column label="宸ュ簭" width="140">
-            <template #default="{ row }">
-              <el-select
-                  v-model="row.processId"
-                  placeholder="璇烽�夋嫨宸ュ簭"
-                  @change="(val) => onProcessChange(val, row)"
-                  :disabled="isDetail"
-              >
-                <el-option
-                    v-for="item in processOptions"
-                    :key="item.id"
-                    :label="item.name"
-                    :value="item.id"
-                />
-              </el-select>
-            </template>
-          </el-table-column>
-      <el-table-column label="寮�鏁�">
-        <template #default="{ row }">
-          <el-input v-model="row.openCount" placeholder="璇疯緭鍏ュ紑鏁�" :disabled="isDetail" />
-        </template>
-      </el-table-column>
-      <el-table-column label="宸ヨ壓姝f暟">
-        <template #default="{ row }">
-          <el-input v-model="row.processPositive" placeholder="璇疯緭鍏ュ伐鑹烘鏁�" :disabled="isDetail" />
-        </template>
-      </el-table-column>
-      <el-table-column label="鍔犳斁鏁�">
-        <template #default="{ row }">
-          <el-input v-model="row.allowanceQty" placeholder="璇疯緭鍏ュ姞鏀炬暟" :disabled="isDetail" />
-        </template>
-      </el-table-column>
-      <el-table-column width="180">
-        <template #header>
-          <span class="required">*</span>鏈哄彴
-        </template>
-        <template #default="{ row }">
-          <el-select
-            v-model="row.deviceId"
-            placeholder="璇烽�夋嫨鏈哄彴"
-            filterable
-            clearable
-            @change="(val) => handleDeviceChange(val, row)"
-            :disabled="isDetail"
-          >
-            <el-option
-              v-for="item in deviceOptions"
-              :key="item.id"
-              :label="item.deviceName"
-              :value="item.id"
+          </tbody>
+        </table>
+      </div>
+      <!--  class="section-title" -->
+      <!-- ================= 宸ヨ壓鍔犲伐 ================= -->
+      <div class="process-table-header">
+        <div class="section-title">宸ヨ壓鍔犲伐</div>
+        <el-button v-if="!isDetail" type="primary" size="small" @click="addProcessRow">鏂板涓�琛�</el-button>
+      </div>
+      <el-table border :data="formData.processContent" style="width: 100%" :span-method="objectSpanMethod">
+        <el-table-column label="宸ュ簭" width="140">
+          <template #default="{ row }">
+            <el-select
+                v-model="row.processId"
+                placeholder="璇烽�夋嫨宸ュ簭"
+                @change="(val) => onProcessChange(val, row)"
+                :disabled="isDetail"
+            >
+              <el-option
+                  v-for="item in processOptions"
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.id"
+              />
+            </el-select>
+          </template>
+        </el-table-column>
+        <el-table-column label="寮�鏁�">
+          <template #default="{ row }">
+            <el-input v-model="row.openCount" placeholder="璇疯緭鍏ュ紑鏁�" :disabled="isDetail"/>
+          </template>
+        </el-table-column>
+        <el-table-column label="宸ヨ壓姝f暟">
+          <template #default="{ row }">
+            <el-input v-model="row.processPositive" placeholder="璇疯緭鍏ュ伐鑹烘鏁�" :disabled="isDetail"/>
+          </template>
+        </el-table-column>
+        <el-table-column label="鍔犳斁鏁�">
+          <template #default="{ row }">
+            <el-input v-model="row.allowanceQty" placeholder="璇疯緭鍏ュ姞鏀炬暟" :disabled="isDetail"/>
+          </template>
+        </el-table-column>
+        <!--      <el-table-column width="180">-->
+        <!--        <template #header>-->
+        <!--          <span class="required">*</span>鏈哄彴-->
+        <!--        </template>-->
+        <!--        <template #default="{ row }">-->
+        <!--          <el-select-->
+        <!--            v-model="row.deviceId"-->
+        <!--            placeholder="璇烽�夋嫨鏈哄彴"-->
+        <!--            filterable-->
+        <!--            clearable-->
+        <!--            @change="(val) => handleDeviceChange(val, row)"-->
+        <!--            :disabled="isDetail"-->
+        <!--          >-->
+        <!--            <el-option-->
+        <!--              v-for="item in deviceOptions"-->
+        <!--              :key="item.id"-->
+        <!--              :label="item.deviceName"-->
+        <!--              :value="item.id"-->
+        <!--            />-->
+        <!--          </el-select>-->
+        <!--        </template>-->
+        <!--      </el-table-column>-->
+        <!--      <el-table-column width="220">-->
+        <!--        <template #header>-->
+        <!--          <span class="required">*</span>鎶ュ伐浜�-->
+        <!--        </template>-->
+        <!--        <template #default="{ row }">-->
+        <!--          <el-select-->
+        <!--          v-if="!isDetail"-->
+        <!--            v-model="row.reportUserIds"-->
+        <!--            placeholder="璇烽�夋嫨鎶ュ伐浜�"-->
+        <!--            filterable-->
+        <!--            clearable-->
+        <!--            multiple-->
+        <!--            collapse-tags-->
+        <!--            collapse-tags-tooltip-->
+        <!--            @change="(val) => handleReportUsersChange(val, row)"-->
+        <!--            :disabled="isDetail"-->
+        <!--          >-->
+        <!--            <el-option-->
+        <!--              v-for="item in userOptions"-->
+        <!--              :key="item.userId"-->
+        <!--              :label="item.nickName"-->
+        <!--              :value="item.userId"-->
+        <!--            />-->
+        <!--          </el-select>-->
+        <!--  <el-tag-->
+        <!--  v-else-->
+        <!--    v-for="item in row.reportWorkerList"-->
+        <!--    -->
+        <!--    :key="item.id"-->
+        <!--  >-->
+        <!--    {{ item.userName }}-->
+        <!--  </el-tag>-->
+        <!--        </template>-->
+        <!--      </el-table-column>-->
+        <el-table-column label="宸ヨ壓瑕佹眰">
+          <template #default="{ rowIndex }">
+            <el-input
+                v-model="formData.processRequirement"
+                type="textarea"
+                :rows="6"
+                placeholder="璇疯緭鍏ュ伐鑹鸿姹�"
+                :disabled="isDetail"
             />
-          </el-select>
-        </template>
-      </el-table-column>
-      <el-table-column width="220">
-        <template #header>
-          <span class="required">*</span>鎶ュ伐浜�
-        </template>
-        <template #default="{ row }">
-          <el-select
-          v-if="!isDetail"
-            v-model="row.reportUserIds"
-            placeholder="璇烽�夋嫨鎶ュ伐浜�"
-            filterable
-            clearable
-            multiple
-            collapse-tags
-            collapse-tags-tooltip
-            @change="(val) => handleReportUsersChange(val, row)"
-            :disabled="isDetail"
-          >
-            <el-option
-              v-for="item in userOptions"
-              :key="item.userId"
-              :label="item.nickName"
-              :value="item.userId"
-            />
-          </el-select>
-  <el-tag
-  v-else
-    v-for="item in row.reportWorkerList"
-    
-    :key="item.id"
-  >
-    {{ item.userName }}
-  </el-tag>
-        </template>
-      </el-table-column>
-      <el-table-column label="宸ヨ壓瑕佹眰">
-        <template #default="{ rowIndex }">
-          <el-input
-            v-model="formData.processRequirement"
-            type="textarea"
-            :rows="6"
-            placeholder="璇疯緭鍏ュ伐鑹鸿姹�"
-            :disabled="isDetail"
-          />
-        </template>
-      </el-table-column>
-      <el-table-column v-if="!isDetail" label="鎿嶄綔" width="80">
-        <template #default="{ $index }">
-          <el-button type="danger" size="small" @click="removeProcessRow($index)">鍒犻櫎</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
+          </template>
+        </el-table-column>
+        <el-table-column v-if="!isDetail" label="鎿嶄綔" width="80">
+          <template #default="{ $index }">
+            <el-button type="danger" size="small" @click="removeProcessRow($index)">鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
 
-    <!-- ================= 鍖呰淇℃伅 ================= -->
-    <el-descriptions border :column="3" class="mt">
-      <el-descriptions-item label="閫佽揣鍦扮偣" align="center">
-        <el-input v-model="formData.deliveryAddress" placeholder="閫佽揣鍦扮偣" :disabled="isDetail" />
-      </el-descriptions-item>
+      <!-- ================= 鍖呰淇℃伅 ================= -->
+      <el-descriptions border :column="3" class="mt">
+        <el-descriptions-item label="閫佽揣鍦扮偣" align="center">
+          <el-input v-model="formData.deliveryAddress" placeholder="閫佽揣鍦扮偣" :disabled="isDetail"/>
+        </el-descriptions-item>
 
-      <el-descriptions-item label="鑱旂郴浜�" align="center">
-        <el-input v-model="formData.contactName" placeholder="鑱旂郴浜�" :disabled="isDetail" />
-      </el-descriptions-item>
+        <el-descriptions-item label="鑱旂郴浜�" align="center">
+          <el-input v-model="formData.contactName" placeholder="鑱旂郴浜�" :disabled="isDetail"/>
+        </el-descriptions-item>
 
-      <el-descriptions-item label="鍖呰瑕佹眰" align="center">
-        <el-input v-model="formData.packagingRequirement" placeholder="鍖呰瑕佹眰" :disabled="isDetail" />
-      </el-descriptions-item>
+        <el-descriptions-item label="鍖呰瑕佹眰" align="center">
+          <el-input v-model="formData.packagingRequirement" placeholder="鍖呰瑕佹眰" :disabled="isDetail"/>
+        </el-descriptions-item>
 
-      <el-descriptions-item label="灏哄" align="center">
-        <el-input v-model="formData.postProcessSize" placeholder="灏哄" :disabled="isDetail" />
-      </el-descriptions-item>
+        <el-descriptions-item label="灏哄" align="center">
+          <el-input v-model="formData.postProcessSize" placeholder="灏哄" :disabled="isDetail"/>
+        </el-descriptions-item>
 
-      <el-descriptions-item label="瀹氳揣鏁伴噺" align="center">
-        {{formData.orderQty || "--"}}
-      </el-descriptions-item>
+        <el-descriptions-item label="瀹氳揣鏁伴噺" align="center">
+          {{ formData.orderQty || "--" }}
+        </el-descriptions-item>
 
-      <el-descriptions-item label="瀹炰氦鏁伴噺" :span="3" align="center">
-        <el-input v-model="formData.actualDeliveryQty" placeholder="瀹炰氦鏁伴噺" :disabled="isDetail" />
-      </el-descriptions-item>
-    </el-descriptions>
+        <el-descriptions-item label="瀹炰氦鏁伴噺" :span="3" align="center">
+          <el-input v-model="formData.actualDeliveryQty" placeholder="瀹炰氦鏁伴噺" :disabled="isDetail"/>
+        </el-descriptions-item>
+      </el-descriptions>
     </div>
   </FormDialog>
-  <filePreview ref="filePreviewRef" />
+  <filePreview ref="filePreviewRef"/>
 </template>
 
 <script setup>
@@ -433,7 +436,7 @@
 })
 
 const emit = defineEmits(['update:modelValue', 'confirm'])
-const { proxy } = getCurrentInstance()
+const {proxy} = getCurrentInstance()
 
 const visible = computed({
   get: () => props.modelValue,
@@ -448,107 +451,15 @@
 const introductionLetterList = ref([])
 const upload = reactive({
   url: import.meta.env.VITE_APP_BASE_API + '/basic/customer-follow/upload',
-  headers: { Authorization: 'Bearer ' + getToken() }
+  headers: {Authorization: 'Bearer ' + getToken()}
+})
+
+const showCuttingFile = computed(() => {
+  return props.type === 'detail' && Array.isArray(formData.cuttingFileVo) && formData.cuttingFileVo.length > 0
 })
 
 const filePreviewRef = ref()
 const formData = reactive({
-  productOrderList:null,
-  salesLedgerId: null,
-  productOrderId: null,
-  printOrderTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
-  cuttingFileVo:[],
-  finishTime: "",
-  no: "",
-  productName: "",
-  productDescription: "",
-  clientName: "",
-  finishedSize: "",
-  cutNum: "",
-  cutSize:"",
-  mediumBoxQty: "",
-  smallBoxQty: "",
-  positiveQty: "",
-  allowanceQty: "",
-  introductionLetter: "",
-  plateMaking: [
-    {
-      designProductionFee: "",
-      impositionFee: "",
-      filmOutputFee: "",
-      proofingFee: "",
-      doctorBladePlateFee: "",
-      hotEmbossingPlateFee: "",
-      subtotalFee: ""
-    }
-  ],
-  processContent: [
-    {
-      id: "1",
-      processId: "",
-      processName: "",
-      mediumBoxQty: "",
-      smallBoxQty: "",
-      openCount: "",
-      processPositive: "",
-      allowanceQty: "",
-      deviceId: "",
-      deviceName: "",
-      reportUserIds: [],
-      reportWorkerList: []
-    }
-  ],
-  materialInfo: [
-    {
-      id: "1",
-      productId: "",
-      name: "",
-      productModelId: "",
-      model: "",
-      modelOptions: [],
-      num: "",
-      numSuffix: "寮�",
-      unitSuffix: "鍏�/kg",
-      unit: "",
-      price: "",
-      totalAmount: ""
-    }
-  ],
-  processRequirement: "",
-  deliveryAddress: "",
-  contactName: "",
-  packagingRequirement: "",
-  postProcessSize: "",
-  orderQty: "",
-  actualDeliveryQty: "",
-  productionDept: "",
-  technicalDept: "",
-  warehouseDept: "",
-  productModelId: "",
-  specificationModel:"",
-})
-
-const getUploadFileUrl = (file) => {
-  const response = file?.response
-  const data = response?.data
-  if (Array.isArray(data) && data.length) {
-    return data[0]?.fileUrl || data[0]?.url || data[0]?.tempPath || ""
-  }
-  
-  return file?.url || file?.fileUrl || data?.tempPath || data?.url || data?.fileUrl || ""
-}
-
-// 鐩戝惉 checkbox group 鍙樺寲骞跺悓姝ュ埌 introductionLetter 瀛楃涓�
-watch(introductionLetterList, (val) => {
-  formData.introductionLetter = val.join(',')
-})
-const onProcessChange = (processId, row) => {
-  const selected = processOptions.value.find(item => item.id === processId)
-  row.processName = selected?.name || ''
-}
-const cloneDeep = (val) => JSON.parse(JSON.stringify(val))
-
-const createDefaultFormData = () => ({
   productOrderList: null,
   salesLedgerId: null,
   productOrderId: null,
@@ -558,6 +469,7 @@
   no: "",
   productName: "",
   productDescription: "",
+  cuttingDiagramCheckout: "",
   clientName: "",
   finishedSize: "",
   cutNum: "",
@@ -580,7 +492,6 @@
   ],
   processContent: [
     {
-      id: "1",
       processId: "",
       processName: "",
       mediumBoxQty: "",
@@ -588,15 +499,20 @@
       openCount: "",
       processPositive: "",
       allowanceQty: "",
-      deviceId: "",
-      deviceName: "",
-      reportUserIds: [],
-      reportWorkerList: []
+      deviceId: "0",
+      deviceName: "0",
+      reportUserIds: [{
+        userId: "0",
+        userName: "0"
+      }],
+      reportWorkerList: [{
+        userId: "0",
+        userName: "0"
+      }],
     }
   ],
   materialInfo: [
     {
-      id: "1",
       productId: "",
       name: "",
       productModelId: "",
@@ -622,7 +538,108 @@
   warehouseDept: "",
   productModelId: "",
   specificationModel: "",
-  cuttingFileId:""
+})
+
+const getUploadFileUrl = (file) => {
+  const response = file?.response
+  const data = response?.data
+  if (Array.isArray(data) && data.length) {
+    return data[0]?.fileUrl || data[0]?.url || data[0]?.tempPath || ""
+  }
+
+  return file?.url || file?.fileUrl || data?.tempPath || data?.url || data?.fileUrl || ""
+}
+
+// 鐩戝惉 checkbox group 鍙樺寲骞跺悓姝ュ埌 introductionLetter 瀛楃涓�
+watch(introductionLetterList, (val) => {
+  formData.introductionLetter = val.join(',')
+})
+const onProcessChange = (processId, row) => {
+  const selected = processOptions.value.find(item => item.id === processId)
+  row.processName = selected?.name || ''
+}
+const cloneDeep = (val) => JSON.parse(JSON.stringify(val))
+
+const createDefaultFormData = () => ({
+  productOrderList: null,
+  salesLedgerId: null,
+  productOrderId: null,
+  printOrderTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
+  cuttingFileVo: [],
+  finishTime: "",
+  no: "",
+  productName: "",
+  productDescription: "",
+  cuttingDiagramCheckout: "骞冲紶",
+  clientName: "",
+  finishedSize: "",
+  cutNum: "",
+  cutSize: "",
+  mediumBoxQty: "",
+  smallBoxQty: "",
+  positiveQty: "",
+  allowanceQty: "",
+  introductionLetter: "",
+  plateMaking: [
+    {
+      designProductionFee: "",
+      impositionFee: "",
+      filmOutputFee: "",
+      proofingFee: "",
+      doctorBladePlateFee: "",
+      hotEmbossingPlateFee: "",
+      subtotalFee: ""
+    }
+  ],
+  processContent: [
+    {
+      processId: "",
+      processName: "",
+      mediumBoxQty: "",
+      smallBoxQty: "",
+      openCount: "",
+      processPositive: "",
+      allowanceQty: "",
+      deviceId: "0",
+      deviceName: "0",
+      reportUserIds: [{
+        userId: "0",
+        userName: "0"
+      }],
+      reportWorkerList: [{
+        userId: "0",
+        userName: "0"
+      }],
+    }
+  ],
+  materialInfo: [
+    {
+      productId: "",
+      name: "",
+      productModelId: "",
+      model: "",
+      modelOptions: [],
+      num: "",
+      numSuffix: "寮�",
+      unitSuffix: "鍏�/kg",
+      unit: "",
+      price: "",
+      totalAmount: ""
+    }
+  ],
+  processRequirement: "",
+  deliveryAddress: "",
+  contactName: "",
+  packagingRequirement: "",
+  postProcessSize: "",
+  orderQty: "",
+  actualDeliveryQty: "",
+  productionDept: "",
+  technicalDept: "",
+  warehouseDept: "",
+  productModelId: "",
+  specificationModel: "",
+  cuttingFileId: ""
 })
 
 const resetForm = () => {
@@ -634,7 +651,7 @@
 }
 
 const onSuccess = (response, uploadFile, uploadFiles) => {
-    const data = response?.data
+  const data = response?.data
 
   if (uploadFile && !uploadFile.url) {
     uploadFile.url = (Array.isArray(data) ? data?.[0]?.fileUrl : data?.fileUrl) || data?.tempPath || data?.url || response?.url || ""
@@ -695,12 +712,12 @@
   }
   if (Array.isArray(formData.cuttingFileVo)) {
     formData.cuttingFileVo = formData.cuttingFileVo
-      .filter(Boolean)
-      .map((f) => ({
-        ...f,
-        name: f?.name || f?.fileName || "",
-        url: f?.url || f?.fileUrl || "",
-      }))
+        .filter(Boolean)
+        .map((f) => ({
+          ...f,
+          name: f?.name || f?.fileName || "",
+          url: f?.url || f?.fileUrl || "",
+        }))
   }
 
   // 鍏煎 index.vue 閲屽父鐢ㄥ瓧娈靛悕涓庡脊绐楀瓧娈靛悕涓嶄竴鑷寸殑鎯呭喌
@@ -721,19 +738,19 @@
   }
 
   introductionLetterList.value = String(formData.introductionLetter || "")
-    .split(",")
-    .map(s => s.trim())
-    .filter(Boolean)
+      .split(",")
+      .map(s => s.trim())
+      .filter(Boolean)
 }
 
 // 鑾峰彇閿�鍞鍗�
 const getProductOrder = () => {
-  if(!formData.salesLedgerId) return
+  if (!formData.salesLedgerId) return
   getSalesLedgerWithProducts({
     type: "1",
     id: formData.salesLedgerId
   }).then(res => {
-    if(res){
+    if (res) {
       formData.productOrderList = res
     }
   })
@@ -742,15 +759,15 @@
 
 watch(() => props.orderData, (val) => {
   mergeRowDataToForm(val)
-}, { immediate: true, deep: true })
+}, {immediate: true, deep: true})
 
 watch(
-  () => props.rowData,
-  (val) => {
-    mergeRowDataToForm(val)
-    getProductOrder()
-  },
-  { immediate: true, deep: true }
+    () => props.rowData,
+    (val) => {
+      mergeRowDataToForm(val)
+      getProductOrder()
+    },
+    {immediate: true, deep: true}
 )
 
 const getProcessList = () => {
@@ -758,7 +775,6 @@
     processOptions.value = res.data
   })
 }
-
 
 
 const getDeviceList = () => {
@@ -843,7 +859,7 @@
 
   if (!val) return
 
-  const res = await modelList({ id: val })
+  const res = await modelList({id: val})
   formData.materialInfo[index] = {
     ...targetRow,
     modelOptions: Array.isArray(res) ? res :
@@ -892,16 +908,21 @@
 
 const addProcessRow = () => {
   formData.processContent.push({
-    id: Date.now().toString(),
     processId: "",
     processName: "",
     openCount: "",
     processPositive: "",
     allowanceQty: "",
-    deviceId: "",
-    deviceName: "",
-    reportUserIds: [],
-    reportWorkerList: []
+    deviceId: "0",
+    deviceName: "0",
+    reportUserIds: [{
+      userId: "0",
+      userName: "0"
+    }],
+    reportWorkerList: [{
+      userId: "0",
+      userName: "0"
+    }],
   })
 }
 
@@ -909,7 +930,7 @@
   formData.processContent.splice(index, 1)
 }
 
-const objectSpanMethod = ({ column, rowIndex }) => {
+const objectSpanMethod = ({column, rowIndex}) => {
   if (column.label === "宸ヨ壓瑕佹眰") {
     if (rowIndex === 0) {
       return {
@@ -957,7 +978,7 @@
   delete payload.productOrderList
   if (Array.isArray(payload.materialInfo)) {
     payload.materialInfo = payload.materialInfo.map((item) => {
-      const { modelOptions, ...rest } = item || {}
+      const {modelOptions, ...rest} = item || {}
       return rest
     })
   }
@@ -987,10 +1008,12 @@
 
 .fixed-desc {
   margin-top: 20px;
+
   :deep(.el-descriptions__table) {
     table-layout: fixed;
     width: 100%;
   }
+
   :deep(.el-descriptions__cell) {
     width: 25%;
     word-break: break-word;
@@ -1033,6 +1056,7 @@
   display: flex;
   justify-content: space-between;
   align-items: center;
+
   span {
     font-size: 16px;
     font-weight: bold;
@@ -1042,10 +1066,12 @@
 .mt {
   margin-top: 20px;
 }
+
 :deep(.required) {
   color: #f56c6c;
 }
-:deep(.el-textarea__inner){
+
+:deep(.el-textarea__inner) {
   box-shadow: none;
 }
 

--
Gitblit v1.9.3