Sfoglia il codice sorgente

部分需求更新

cz 1 anno fa
parent
commit
df24526f15

+ 1 - 1
src/components/process/EHSD/Contract.vue

@@ -157,7 +157,7 @@
                 </div>
               </template>
             </el-table-column>
-            <el-table-column label="生产文件" width="100">
+            <el-table-column label="生产plt文件" width="100">
               <template #default="{ row, $index }">
                 <span class="el-click">点击上传</span>
               </template>

+ 1 - 1
src/components/process/EHSD/ContractChange.vue

@@ -321,7 +321,7 @@
                           <div>
                             <div>
                               <img src="@/assets/images/money1.png" alt="" class="img" /> <span
-                                    style="font-size:14px;font-weight:700;color:#000">销售指导价:</span>
+                                    style="font-size:14px;font-weight:700;color:#000">销售业务成本单价:</span>
                               <div style="padding:5px 0px 0px 20px">
                                 {{row.currency}} {{moneyFormat(row.salePrice,2)}}
                               </div>

+ 3 - 3
src/components/process/SF/Contract.vue

@@ -247,7 +247,7 @@
               </template>
             </el-table-column>
             <el-table-column prop="productColor" label="颜色" width="140" />
-            <el-table-column label="设计图稿" width="80">
+            <!-- <el-table-column label="设计图稿" width="80">
               <template #default="{ row, $index }">
                 <div style="width: 100%">
                   <el-upload :action="uploadUrl" accept=".gif, .jpeg, .jpg, .png" :show-file-list="false" :data="uploadData"
@@ -261,8 +261,8 @@
                   </el-upload>
                 </div>
               </template>
-            </el-table-column>
-            <el-table-column label="生产文件" width="210">
+            </el-table-column> -->
+            <el-table-column label="生产plt文件" width="210">
               <template #default="{ row, $index }">
                 <div style="width:100%">
                   <div style="display:flex">

+ 3 - 3
src/components/process/SF/ContractChange.vue

@@ -245,7 +245,7 @@
               </template>
             </el-table-column>
             <el-table-column prop="productColor" label="颜色" width="140" />
-            <el-table-column label="设计图稿" width="80">
+            <!-- <el-table-column label="设计图稿" width="80">
               <template #default="{ row, $index }">
                 <div style="width: 100%">
                   <el-upload :action="uploadUrl" accept=".gif, .jpeg, .jpg, .png" :show-file-list="false" :data="uploadData"
@@ -259,8 +259,8 @@
                   </el-upload>
                 </div>
               </template>
-            </el-table-column>
-            <el-table-column label="生产文件" width="210">
+            </el-table-column> -->
+            <el-table-column label="生产plt文件" width="210">
               <template #default="{ row, $index }">
                 <div style="width:100%">
                   <div style="display:flex">

+ 1 - 1
src/components/product/SelectCompanyProduct.vue

@@ -336,7 +336,7 @@ const formConfig = computed(() => {
       type: "selectInput",
       prop: "price",
       selectProp: "currency",
-      label: "销售指导价",
+      label: "销售业务成本单价",
       itemWidth: 50,
       style: {
         width: "100%",

+ 2 - 2
src/components/product/SelectCustomerProduct.vue

@@ -221,7 +221,7 @@ const config = computed(() => {
     },
     {
       attrs: {
-        label: "销售指导价",
+        label: "销售业务成本单价",
         slot: "price",
         width: 150,
       },
@@ -339,7 +339,7 @@ const formConfig = computed(() => {
       type: "selectInput",
       prop: "price",
       selectProp: "currency",
-      label: "销售指导价",
+      label: "销售业务成本单价",
       itemWidth: 50,
       style: {
         width: "100%",

+ 1 - 1
src/components/product/SelectProduct.vue

@@ -371,7 +371,7 @@ const formConfig = computed(() => {
       type: "selectInput",
       prop: "price",
       selectProp: "currency",
-      label: "销售指导价",
+      label: "销售业务成本单价",
       itemWidth: 50,
       style: {
         width: "100%",

+ 4 - 4
src/views/EHSD/productLibrary/companyProduct/index.vue

@@ -117,8 +117,8 @@
             <div style="width: 100%;padding-left:15px">
               <el-button type="primary" @click="clickOpenSelectMaterial(1)" plain>选择包材/配件/辅材</el-button>
               <el-table :data="formData.data.productBomDetailList" style="width: 100%; margin-top: 16px">
-                <el-table-column prop="materialName" label="物料名称" min-width="130" />
-                <el-table-column prop="materialCode" label="物料编码" width="150" />
+                <el-table-column prop="materialName" label="物料名称" />
+                <el-table-column prop="materialCode" label="物料编码" />
                 <el-table-column label="数量" width="150">
                   <template #default="{ row, $index }">
                     <div style="width: 100%">
@@ -146,7 +146,7 @@
               </div>
               <el-row style="width:100%">
                 <el-col :span="12">
-                  <el-form-item prop="technologyId" label="工艺产线" class="wid100">
+                  <el-form-item prop="technologyId" label="生产工艺" class="wid100">
                     <el-select v-model="formData.data.technologyId" placeholder="请选择" style="width:100%">
                       <el-option v-for="item in technologyData" :key="item.id" :label="item.name" :value="item.id" />
                     </el-select>
@@ -159,7 +159,7 @@
               <el-row style="width:100%">
                 <el-col :span="12">
                   <el-form-item label="LOGO尺寸" class="wid100">
-                    <el-row>
+                    <el-row style="width:100%">
                       <el-col :span="12">
                         <el-form-item prop="logoLength" label-width="0px" class="margin-b-0 wid100">
                           <el-input-number v-model="formData.data.logoLength" placeholder="长 (cm)" style="width: 100%" :precision="2"

+ 2 - 2
src/views/EHSD/productLibrary/customerProduct/index.vue

@@ -222,7 +222,7 @@ const config = computed(() => {
     },
     {
       attrs: {
-        label: "销售指导价",
+        label: "销售业务成本单价",
         slot: "price",
         width: 150,
       },
@@ -386,7 +386,7 @@ const formConfig = computed(() => {
       type: "selectInput",
       prop: "price",
       selectProp: "currency",
-      label: "销售指导价",
+      label: "销售业务成本单价",
       itemWidth: 50,
       style: {
         width: "100%",

+ 4 - 4
src/views/EHSD/productLibrary/waitCreateProduct/index.vue

@@ -96,8 +96,8 @@
             <div style="width: 100%;padding-left:15px">
               <el-button type="primary" @click="clickOpenSelectMaterial(1)" plain>选择包材/配件/辅材</el-button>
               <el-table :data="formData.data.productBomDetailList" style="width: 100%; margin-top: 16px">
-                <el-table-column prop="productName" label="物料名称" min-width="130" />
-                <el-table-column prop="productCode" label="物料编码" width="150" />
+                <el-table-column prop="productName" label="物料名称" />
+                <el-table-column prop="productCode" label="物料编码" />
                 <el-table-column label="数量" width="150">
                   <template #default="{ row, $index }">
                     <div style="width: 100%">
@@ -125,7 +125,7 @@
               </div>
               <el-row style="width:100%">
                 <el-col :span="12">
-                  <el-form-item prop="technologyId" label="工艺产线" class="wid100">
+                  <el-form-item prop="technologyId" label="生产工艺" class="wid100">
                     <el-select v-model="formData.data.technologyId" placeholder="请选择" style="width:100%">
                       <el-option v-for="item in technologyData" :key="item.id" :label="item.name" :value="item.id" />
                     </el-select>
@@ -138,7 +138,7 @@
               <el-row style="width:100%">
                 <el-col :span="12">
                   <el-form-item label="LOGO尺寸" class="wid100">
-                    <el-row>
+                    <el-row style="width:100%">
                       <el-col :span="12">
                         <el-form-item prop="logoLength" label-width="0px" class="margin-b-0 wid100">
                           <el-input-number v-model="formData.data.logoLength" placeholder="长 (cm)" style="width: 100%" :precision="2"

+ 237 - 218
src/views/EHSD/saleContract/PriceSheetDetail.vue

@@ -149,244 +149,263 @@
           </el-table> -->
 
           <el-collapse v-model="activeNames">
-            <el-collapse-item :name="index" v-for="(product,index) in formData.data.quotationProductList" :key="index">
-              <template #title>
-                <!-- <TitleInfo :content="'主材'"></TitleInfo> -->
-                <div style="font-size:14px;font-weight:700;padding-left:25px;width:300px">
-                  产品编码:{{product.productCode || '定制产品'}}
-                </div>
-                <el-form-item label="数量" class="margin-b-0" style="width:300px !important;" :prop="'quotationProductList.' +index + '.quantity'"
-                              :rules="rules.quantity" :inline-message="true" @click.stop>
-                  <el-input-number v-model="product.quantity" placeholder="请输入" style="width: 100%" :precision="0" :controls="false" :min="1"
-                                   onmousewheel="return false;" />
-                </el-form-item>
-
-              </template>
-              <div style="width:100%">
-                <div style="margin:10px 0">
-                  <TitleInfo :content="'主材'"></TitleInfo>
-                </div>
-                <div style="width: 100%;padding-left:15px">
-                  <el-row>
-                    <el-col :span="12">
-                      <el-form-item :prop="'quotationProductList.' +index + '.rawMaterialId'" :rules="rules.rawMaterialId" :inline-message="true"
-                                    label="原材料" class="wid100">
-                        <el-select v-model="product.rawMaterialId" placeholder="请选择" style="width:100%">
-                          <el-option v-for="item in rawMaterialData" :key="item.value" :label="item.label" :value="item.value" />
-                        </el-select>
-                      </el-form-item>
+            <el-card style="margin-bottom:15px" v-for="(product,index) in formData.data.quotationProductList" :key="index">
+              <el-collapse-item :name="index">
+                <template #title>
+                  <el-row style="width:100%">
+                    <el-col :span="8">
+                      <div style="font-size:14px;font-weight:700;padding-left:25px;">
+                        产品编码:{{product.productCode || '定制产品'}}
+                      </div>
                     </el-col>
-                    <el-col :span="12">
-                      <el-form-item label="颜色" class="margin-b-0 wid100">
-                        <el-row style="width: 100%">
-                          <el-col :span="12">
-                            <el-form-item prop="productColor" label-width="0px" class="margin-b-0 wid100">
-                              <el-input v-model="product.productColor" placeholder="颜色" />
-                            </el-form-item>
-                          </el-col>
-                          <el-col :span="12">
-                            <el-form-item prop="colorCardCode" label-width="0px" class="margin-b-0 wid100">
-                              <el-input v-model="product.colorCardCode" placeholder="色卡号" />
-                            </el-form-item>
-                          </el-col>
-                        </el-row>
+                    <el-col :span="4">
+                      <el-form-item label="数量" class="margin-b-0" :prop="'quotationProductList.' +index + '.quantity'" :rules="rules.quantity"
+                                    :inline-message="true" @click.stop>
+                        <el-input-number v-model="product.quantity" placeholder="请输入" style="width: 100%" :precision="0" :controls="false" :min="1"
+                                         onmousewheel="return false;" />
                       </el-form-item>
                     </el-col>
-                  </el-row>
-                  <el-row>
-                    <el-col :span="12">
-                      <el-form-item label="尺寸" class="margin-b-0 wid100" required>
-                        <el-row style="width:100%">
-                          <el-col :span="8">
-                            <el-form-item :prop="'quotationProductList.' +index + '.productLength'" :rules="rules.productLength"
-                                          :inline-message="true" label-width="0px" class="margin-b-0 wid100">
-                              <el-input-number v-model="product.productLength" placeholder="长 (cm)" style="width: 100%" :precision="2"
-                                               :controls="false" :min="0" onmousewheel="return false;" />
-                            </el-form-item>
-                          </el-col>
-                          <el-col :span="8">
-                            <el-form-item :prop="'quotationProductList.' +index + '.productWidth'" :rules="rules.productWidth" :inline-message="true"
-                                          label-width="0px" class="margin-b-0 wid100">
-                              <el-input-number v-model="product.productWidth" placeholder="宽 (cm)" style="width: 100%" :precision="2"
-                                               :controls="false" :min="0" onmousewheel="return false;" />
-                            </el-form-item>
-                          </el-col>
-                          <el-col :span="8">
-                            <el-form-item :prop="'quotationProductList.' +index + '.productHeight'" :rules="rules.productHeight"
-                                          :inline-message="true" label-width="0px" class="margin-b-0 wid100">
-                              <el-input-number v-model="product.productHeight" placeholder="高 (cm)" style="width: 100%" :precision="2"
-                                               :controls="false" :min="0" onmousewheel="return false;" />
-                            </el-form-item>
-                          </el-col>
-                        </el-row>
+                    <el-col :span="4">
+                      <el-form-item label="单价" class="margin-b-0" @click.stop>
+                        <el-input-number v-model="product.price" placeholder="" style="width: 100%" :precision="2" :controls="false" :min="1"
+                                         onmousewheel="return false;" disabled />
                       </el-form-item>
                     </el-col>
-                    <el-col :span="12">
-                      <el-form-item label="净重(kg)" prop="netWeight" class="margin-b-0 wid100">
-                        <el-input-number v-model="product.netWeight" placeholder="请输入" style="width: 100%" :precision="2" :controls="false" :min="0"
-                                         onmousewheel="return false;" />
+                    <el-col :span="4">
+                      <el-form-item label="总价" class="margin-b-0" @click.stop>
+                        <el-input-number v-model="product.amount" placeholder="" style="width: 100%" :precision="2" :controls="false" :min="1"
+                                         onmousewheel="return false;" disabled />
                       </el-form-item>
                     </el-col>
 
                   </el-row>
-                </div>
-
-                <div style="margin:10px 0">
-                  <TitleInfo :content="'辅材'"></TitleInfo>
-                </div>
-                <div style="width: 100%;padding-left:15px">
-                  <el-table :data="product.quotationProductBomList" style="width: 100%; margin-top: 16px">
-                    <el-table-column prop="productName" label="物料名称" min-width="130" />
-                    <el-table-column prop="productCode" label="物料编码" width="200" />
-                    <el-table-column label="数量" width="150">
-                      <template #default="{ row, $index }">
-                        <div style="width: 100%">
-                          <el-form-item :prop="'quotationProductList.' + index + '.quotationProductBomList.' + $index + '.quantity'"
-                                        :rules="rules.quantity" :inline-message="true" class="margin-b-0 wid100">
-                            <el-input-number onmousewheel="return false;" v-model="row.quantity" placeholder=" " style="width: 100%" :precision="0"
-                                             :controls="false" :min="1" />
-                          </el-form-item>
-                        </div>
-                      </template>
-                    </el-table-column>
-                  </el-table>
-                </div>
 
-                <div style="margin:10px 0">
-                  <TitleInfo :content="'附加工艺要求'"></TitleInfo>
-                </div>
+                </template>
+                <div style="width:100%">
+                  <div style="margin:10px 0">
+                    <TitleInfo :content="'主材'"></TitleInfo>
+                  </div>
+                  <div style="width: 100%;padding-left:15px">
+                    <el-row>
+                      <el-col :span="12">
+                        <el-form-item :prop="'quotationProductList.' +index + '.rawMaterialId'" :rules="rules.rawMaterialId" :inline-message="true"
+                                      label="原材料" class="wid100">
+                          <el-select v-model="product.rawMaterialId" placeholder="请选择" style="width:100%">
+                            <el-option v-for="item in rawMaterialData" :key="item.value" :label="item.label" :value="item.value" />
+                          </el-select>
+                        </el-form-item>
+                      </el-col>
+                      <el-col :span="12">
+                        <el-form-item label="颜色" class="margin-b-0 wid100">
+                          <el-row style="width: 100%">
+                            <el-col :span="12">
+                              <el-form-item prop="productColor" label-width="0px" class="margin-b-0 wid100">
+                                <el-input v-model="product.productColor" placeholder="颜色" />
+                              </el-form-item>
+                            </el-col>
+                            <el-col :span="12">
+                              <el-form-item prop="colorCardCode" label-width="0px" class="margin-b-0 wid100">
+                                <el-input v-model="product.colorCardCode" placeholder="色卡号" />
+                              </el-form-item>
+                            </el-col>
+                          </el-row>
+                        </el-form-item>
+                      </el-col>
+                    </el-row>
+                    <el-row>
+                      <el-col :span="12">
+                        <el-form-item label="尺寸" class="margin-b-0 wid100" required>
+                          <el-row style="width:100%">
+                            <el-col :span="8">
+                              <el-form-item :prop="'quotationProductList.' +index + '.productLength'" :rules="rules.productLength"
+                                            :inline-message="true" label-width="0px" class="margin-b-0 wid100">
+                                <el-input-number v-model="product.productLength" placeholder="长 (cm)" style="width: 100%" :precision="2"
+                                                 :controls="false" :min="0" onmousewheel="return false;" />
+                              </el-form-item>
+                            </el-col>
+                            <el-col :span="8">
+                              <el-form-item :prop="'quotationProductList.' +index + '.productWidth'" :rules="rules.productWidth"
+                                            :inline-message="true" label-width="0px" class="margin-b-0 wid100">
+                                <el-input-number v-model="product.productWidth" placeholder="宽 (cm)" style="width: 100%" :precision="2"
+                                                 :controls="false" :min="0" onmousewheel="return false;" />
+                              </el-form-item>
+                            </el-col>
+                            <el-col :span="8">
+                              <el-form-item :prop="'quotationProductList.' +index + '.productHeight'" :rules="rules.productHeight"
+                                            :inline-message="true" label-width="0px" class="margin-b-0 wid100">
+                                <el-input-number v-model="product.productHeight" placeholder="高 (cm)" style="width: 100%" :precision="2"
+                                                 :controls="false" :min="0" onmousewheel="return false;" />
+                              </el-form-item>
+                            </el-col>
+                          </el-row>
+                        </el-form-item>
+                      </el-col>
+                      <el-col :span="12">
+                        <el-form-item label="净重(kg)" prop="netWeight" class="margin-b-0 wid100">
+                          <el-input-number v-model="product.netWeight" placeholder="请输入" style="width: 100%" :precision="2" :controls="false" :min="0"
+                                           onmousewheel="return false;" />
+                        </el-form-item>
+                      </el-col>
 
-                <div style="width:100%;padding-left:15px">
-                  <div class="small-title">
-                    ① 工艺线路
+                    </el-row>
                   </div>
-                  <el-row style="width:100%">
-                    <el-col :span="12">
-                      <el-form-item label="工艺产线" class="wid100" :prop="'quotationProductList.' + index + '.technologyId'" :rules="rules.technologyId"
-                                    :inline-message="true">
-                        <el-select v-model="product.technologyId" placeholder="请选择" style="width:100%">
-                          <el-option v-for="item in technologyData" :key="item.id" :label="item.name" :value="item.id" />
-                        </el-select>
-                      </el-form-item>
-                    </el-col>
-                  </el-row>
-                  <div class="small-title">
-                    ② LOGO
+
+                  <div style="margin:10px 0">
+                    <TitleInfo :content="'辅材'"></TitleInfo>
                   </div>
-                  <el-row style="width:100%">
-                    <el-col :span="12">
-                      <el-form-item label="LOGO尺寸" class="wid100">
-                        <el-row>
-                          <el-col :span="12">
-                            <el-form-item label-width="0px" class="margin-b-0 wid100" :prop="'quotationProductList.' +index + '.logoLength'"
-                                          :rules="rules.logoLength" :inline-message="true">
-                              <el-input-number v-model="product.logoLength" placeholder="长 (cm)" style="width: 100%" :precision="2" :controls="false"
-                                               :min="0" onmousewheel="return false;" />
+                  <div style="width: 100%;padding-left:15px">
+                    <el-table :data="product.quotationProductBomList" style="width: 100%; margin-top: 16px">
+                      <el-table-column prop="productName" label="物料名称" />
+                      <el-table-column prop="productCode" label="物料编码" />
+                      <el-table-column label="数量" width="150">
+                        <template #default="{ row, $index }">
+                          <div style="width: 100%">
+                            <el-form-item :prop="'quotationProductList.' + index + '.quotationProductBomList.' + $index + '.quantity'"
+                                          :rules="rules.quantity" :inline-message="true" class="margin-b-0 wid100">
+                              <el-input-number onmousewheel="return false;" v-model="row.quantity" placeholder=" " style="width: 100%" :precision="0"
+                                               :controls="false" :min="1" />
                             </el-form-item>
-                          </el-col>
-                          <el-col :span="12">
-                            <el-form-item label-width="0px" class="margin-b-0 wid100" :prop="'quotationProductList.' +index + '.logoWidth'"
-                                          :rules="rules.logoWidth" :inline-message="true">
-                              <el-input-number v-model="product.logoWidth" placeholder="宽 (cm)" style="width: 100%" :precision="2" :controls="false"
-                                               :min="0" onmousewheel="return false;" />
-                            </el-form-item>
-                          </el-col>
-                          <!-- <el-col :span="8">
+                          </div>
+                        </template>
+                      </el-table-column>
+                    </el-table>
+                  </div>
+
+                  <div style="margin:10px 0">
+                    <TitleInfo :content="'附加工艺要求'"></TitleInfo>
+                  </div>
+
+                  <div style="width:100%;padding-left:15px">
+                    <div class="small-title">
+                      ① 工艺线路
+                    </div>
+                    <el-row style="width:100%">
+                      <el-col :span="12">
+                        <el-form-item label="生产工艺" class="wid100" :prop="'quotationProductList.' + index + '.technologyId'"
+                                      :rules="rules.technologyId" :inline-message="true">
+                          <el-select v-model="product.technologyId" placeholder="请选择" style="width:100%">
+                            <el-option v-for="item in technologyData" :key="item.id" :label="item.name" :value="item.id" />
+                          </el-select>
+                        </el-form-item>
+                      </el-col>
+                    </el-row>
+                    <div class="small-title">
+                      ② LOGO
+                    </div>
+                    <el-row style="width:100%">
+                      <el-col :span="12">
+                        <el-form-item label="LOGO尺寸" class="wid100">
+                          <el-row style="width:100%">
+                            <el-col :span="12">
+                              <el-form-item label-width="0px" class="margin-b-0 wid100" :prop="'quotationProductList.' +index + '.logoLength'"
+                                            :rules="rules.logoLength" :inline-message="true">
+                                <el-input-number v-model="product.logoLength" placeholder="长 (cm)" style="width: 100%" :precision="2"
+                                                 :controls="false" :min="0" onmousewheel="return false;" />
+                              </el-form-item>
+                            </el-col>
+                            <el-col :span="12">
+                              <el-form-item label-width="0px" class="margin-b-0 wid100" :prop="'quotationProductList.' +index + '.logoWidth'"
+                                            :rules="rules.logoWidth" :inline-message="true">
+                                <el-input-number v-model="product.logoWidth" placeholder="宽 (cm)" style="width: 100%" :precision="2" :controls="false"
+                                                 :min="0" onmousewheel="return false;" />
+                              </el-form-item>
+                            </el-col>
+                            <!-- <el-col :span="8">
                             <el-form-item label-width="0px" class="margin-b-0 wid100" :prop="'quotationProductList.' +index + '.logoHeight'"
                                           :rules="rules.logoHeight" :inline-message="true">
                               <el-input-number v-model="product.logoHeight" placeholder="高 (cm)" style="width: 100%" :precision="2" :controls="false"
                                                :min="0" onmousewheel="return false;" />
                             </el-form-item>
                           </el-col> -->
-                        </el-row>
-                      </el-form-item>
-                    </el-col>
-                    <el-col :span="12">
-                      <el-form-item label="几色印刷" class="wid100">
-                        <el-input-number v-model="product.colorCount" style="width: 100%" :precision="0" :controls="false" :min="1"
-                                         onmousewheel="return false;" />
-                      </el-form-item>
-                    </el-col>
-                  </el-row>
-                  <div class="small-title">
-                    ③ 折叠
-                  </div>
-                  <el-row style="width:100%">
-                    <el-col :span="12">
-                      <el-form-item label="是否折叠" class="wid100">
-                        <el-select v-model="product.isFold" style="width:100%">
-                          <el-option :label="'否'" :value="0" />
-                          <el-option :label="'是'" :value="1" />
-                        </el-select>
-                      </el-form-item>
-                    </el-col>
-                    <el-col :span="12">
-                      <el-form-item label="折叠数" class="wid100" :prop="'quotationProductList.' +index + '.foldWay'" v-if="product.isFold==1"
-                                    :rules="product.isFold==1?rules.foldWay:''">
-                        <el-select v-model="product.foldWay" style="width:100%">
-                          <el-option v-for="item in foldWayData" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey" />
-                        </el-select>
-                      </el-form-item>
-                    </el-col>
-                  </el-row>
-                  <div class="small-title">
-                    ④ 包装要求
-                  </div>
-                  <el-row style="width:100%">
-                    <el-col :span="12">
-                      <el-form-item label="包装要求" class="wid100">
-                        <el-select v-model="product.packAsk" style="width:100%" multiple placeholder=" ">
-                          <el-option v-for="item in packAskData" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey" />
-                        </el-select>
+                          </el-row>
+                        </el-form-item>
+                      </el-col>
+                      <el-col :span="12">
+                        <el-form-item label="几色印刷" class="wid100">
+                          <el-input-number v-model="product.colorCount" style="width: 100%" :precision="0" :controls="false" :min="1"
+                                           onmousewheel="return false;" />
+                        </el-form-item>
+                      </el-col>
+                    </el-row>
+                    <div class="small-title">
+                      ③ 折叠
+                    </div>
+                    <el-row style="width:100%">
+                      <el-col :span="12">
+                        <el-form-item label="是否折叠" class="wid100">
+                          <el-select v-model="product.isFold" style="width:100%">
+                            <el-option :label="'否'" :value="0" />
+                            <el-option :label="'是'" :value="1" />
+                          </el-select>
+                        </el-form-item>
+                      </el-col>
+                      <el-col :span="12">
+                        <el-form-item label="折叠数" class="wid100" :prop="'quotationProductList.' +index + '.foldWay'" v-if="product.isFold==1"
+                                      :rules="product.isFold==1?rules.foldWay:''">
+                          <el-select v-model="product.foldWay" style="width:100%">
+                            <el-option v-for="item in foldWayData" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey" />
+                          </el-select>
+                        </el-form-item>
+                      </el-col>
+                    </el-row>
+                    <div class="small-title">
+                      ④ 包装要求
+                    </div>
+                    <el-row style="width:100%">
+                      <el-col :span="12">
+                        <el-form-item label="包装要求" class="wid100">
+                          <el-select v-model="product.packAsk" style="width:100%" multiple placeholder=" ">
+                            <el-option v-for="item in packAskData" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey" />
+                          </el-select>
+                        </el-form-item>
+                      </el-col>
+                    </el-row>
+                    <div class="small-title">
+                      ⑤ 是否定制
+                    </div>
+                    <el-row style="width:100%">
+                      <el-col :span="12">
+                        <el-form-item prop="isCustomized" label="是否定制" class="wid100">
+                          <el-select v-model="product.isCustomized" style="width:100%">
+                            <el-option :label="'否'" :value="0" />
+                            <el-option :label="'是'" :value="1" />
+                          </el-select>
+                        </el-form-item>
+                      </el-col>
+                    </el-row>
+                    <el-row style="width:100%">
+                      <el-form-item label="定制内容" class="wid100" v-if="product.isCustomized==1">
+                        <table style="width:100%" border class="table">
+                          <tr>
+                            <td style="width:20%">
+                            </td>
+                            <td style="width:40%">附件</td>
+                            <td style="width:40%">备注</td>
+                          </tr>
+                          <tr v-for="(row,sonIndex) in product.quotationProductCustomInfoList" :key="sonIndex">
+                            <td>
+                              <el-checkbox v-model="row.isCheckBox" label="" /> <span style="position:relative;top:-2px">
+                                {{getLabelOne(row.type)}}</span>
+                            </td>
+                            <td>
+                              <div v-for="file in row.fileList" :key="file.id" class="el-click" @click="openImg(file.fileUrl)">
+                                {{file.fileName}}
+                              </div>
+                            </td>
+                            <td>
+                              <el-form-item :prop="'quotationProductList.' + index + '.quotationProductCustomInfoList.' + sonIndex + '.remark'"
+                                            :rules="row.isCheckBox?rules.remark:''" :inline-message="true" class="margin-b-0 wid100">
+                                <el-input v-model="row.remark" />
+                              </el-form-item>
+                            </td>
+                          </tr>
+                        </table>
                       </el-form-item>
-                    </el-col>
-                  </el-row>
-                  <div class="small-title">
-                    ⑤ 是否定制
+                    </el-row>
                   </div>
-                  <el-row style="width:100%">
-                    <el-col :span="12">
-                      <el-form-item prop="isCustomized" label="是否定制" class="wid100">
-                        <el-select v-model="product.isCustomized" style="width:100%">
-                          <el-option :label="'否'" :value="0" />
-                          <el-option :label="'是'" :value="1" />
-                        </el-select>
-                      </el-form-item>
-                    </el-col>
-                  </el-row>
-                  <el-row style="width:100%">
-                    <el-form-item label="定制内容" class="wid100" v-if="product.isCustomized==1">
-                      <table style="width:100%" border class="table">
-                        <tr>
-                          <td style="width:20%">
-                          </td>
-                          <td style="width:40%">附件</td>
-                          <td style="width:40%">备注</td>
-                        </tr>
-                        <tr v-for="(row,sonIndex) in product.quotationProductCustomInfoList" :key="sonIndex">
-                          <td>
-                            <el-checkbox v-model="row.isCheckBox" label="" /> <span style="position:relative;top:-2px">
-                              {{getLabelOne(row.type)}}</span>
-                          </td>
-                          <td>
-                            <div v-for="file in row.fileList" :key="file.id" class="el-click" @click="openImg(file.fileUrl)">
-                              {{file.fileName}}
-                            </div>
-                          </td>
-                          <td>
-                            <el-form-item :prop="'quotationProductList.' + index + '.quotationProductCustomInfoList.' + sonIndex + '.remark'"
-                                          :rules="row.isCheckBox?rules.remark:''" :inline-message="true" class="margin-b-0 wid100">
-                              <el-input v-model="row.remark" />
-                            </el-form-item>
-                          </td>
-                        </tr>
-                      </table>
-                    </el-form-item>
-                  </el-row>
                 </div>
-              </div>
-            </el-collapse-item>
-
+              </el-collapse-item>
+            </el-card>
           </el-collapse>
         </div>
       </template>
@@ -916,9 +935,9 @@ watch(
 :deep(.el-checkbox) {
   margin-right: 0px;
 }
-:deep(.el-collapse-item) {
-  margin-bottom: 10px;
-}
+// :deep(.el-collapse-item) {
+//   margin-bottom: 10px;
+// }
 :deep(.el-collapse-item__header) {
   background-color: #eee;
 }

+ 362 - 279
src/views/EHSD/saleContract/priceSheetEHSD/index.vue

@@ -180,252 +180,274 @@
             <el-button type="primary" @click="openProductCompany = true" plain style="margin-bottom: 16px" v-if="!isDetail"
                        :disabled="!formData.data.companyId">选择产品库</el-button>
             <el-collapse v-model="activeNames">
-              <el-collapse-item :name="index" v-for="(product,index) in formData.data.quotationProductList" :key="index">
-                <template #title>
-                  <div style="font-size:14px;font-weight:700;padding-left:25px;width:300px">
-                    产品编码:{{product.productCode || '定制产品'}}
-                  </div>
-                  <el-form-item label="数量" class="margin-b-0" style="width:300px !important;" :prop="'quotationProductList.' +index + '.quantity'"
-                                :rules="rules.quantity" :inline-message="true" @click.stop>
-                    <el-input-number v-model="product.quantity" placeholder="请输入" style="width: 100%" :precision="0" :controls="false" :min="1"
-                                     onmousewheel="return false;" />
-                  </el-form-item>
-                  <el-button text type="primary" style="margin-left:10px" @click="handleRemove(index)">删除</el-button>
-                </template>
-                <div style="width:100%">
-                  <div style="margin:10px 0">
-                    <TitleInfo :content="'主材'"></TitleInfo>
-                  </div>
-                  <div style="width: 100%;padding-left:15px">
-                    <el-row>
-                      <el-col :span="12">
-                        <el-form-item :prop="'quotationProductList.' +index + '.rawMaterialId'" :rules="rules.rawMaterialId" :inline-message="true"
-                                      label="原材料" class="wid100">
-                          <el-select v-model="product.rawMaterialId" placeholder="请选择" style="width:100%" filterable>
-                            <el-option v-for="item in rawMaterialData" :key="item.value" :label="item.label" :value="item.value" />
-                          </el-select>
-                        </el-form-item>
+              <el-card style="margin-bottom:15px" v-for="(product,index) in formData.data.quotationProductList" :key="index">
+                <el-collapse-item :name="index">
+                  <template #title>
+                    <el-row style="width:100%">
+                      <el-col :span="5">
+                        <div style="font-size:14px;font-weight:700;padding-left:25px;">
+                          产品编码:{{product.productCode || '定制产品'}}
+                        </div>
                       </el-col>
-                      <el-col :span="12">
-                        <el-form-item label="颜色" class="margin-b-0 wid100">
-                          <el-row style="width: 100%">
-                            <el-col :span="12">
-                              <el-form-item prop="productColor" label-width="0px" class="margin-b-0 wid100">
-                                <el-input v-model="product.productColor" placeholder="颜色" />
-                              </el-form-item>
-                            </el-col>
-                            <el-col :span="12">
-                              <el-form-item prop="colorCardCode" label-width="0px" class="margin-b-0 wid100">
-                                <el-input v-model="product.colorCardCode" placeholder="色卡号" />
-                              </el-form-item>
-                            </el-col>
-                          </el-row>
+                      <el-col :span="5">
+                        <el-form-item label="数量" class="margin-b-0" :prop="'quotationProductList.' +index + '.quantity'" :rules="rules.quantity"
+                                      :inline-message="true" @click.stop>
+                          <el-input-number v-model="product.quantity" placeholder="请输入" style="width: 100%" :precision="0" :controls="false" :min="1"
+                                           onmousewheel="return false;" />
                         </el-form-item>
                       </el-col>
-                    </el-row>
-                    <el-row>
-                      <el-col :span="12">
-                        <el-form-item label="尺寸" class="margin-b-0 wid100" required>
-                          <el-row style="width:100%">
-                            <el-col :span="8">
-                              <el-form-item :prop="'quotationProductList.' +index + '.productLength'" :rules="rules.productLength"
-                                            :inline-message="true" label-width="0px" class="margin-b-0 wid100">
-                                <el-input-number v-model="product.productLength" placeholder="长 (cm)" style="width: 100%" :precision="2"
-                                                 :controls="false" :min="0" onmousewheel="return false;" />
-                              </el-form-item>
-                            </el-col>
-                            <el-col :span="8">
-                              <el-form-item :prop="'quotationProductList.' +index + '.productWidth'" :rules="rules.productWidth"
-                                            :inline-message="true" label-width="0px" class="margin-b-0 wid100">
-                                <el-input-number v-model="product.productWidth" placeholder="宽 (cm)" style="width: 100%" :precision="2"
-                                                 :controls="false" :min="0" onmousewheel="return false;" />
-                              </el-form-item>
-                            </el-col>
-                            <el-col :span="8">
-                              <el-form-item :prop="'quotationProductList.' +index + '.productHeight'" :rules="rules.productHeight"
-                                            :inline-message="true" label-width="0px" class="margin-b-0 wid100">
-                                <el-input-number v-model="product.productHeight" placeholder="高 (cm)" style="width: 100%" :precision="2"
-                                                 :controls="false" :min="0" onmousewheel="return false;" />
-                              </el-form-item>
-                            </el-col>
-                          </el-row>
+                      <el-col :span="5">
+                        <el-form-item label="单价" class="margin-b-0" @click.stop>
+                          <el-input-number v-model="product.price" placeholder="" style="width: 100%" :precision="2" :controls="false" :min="0"
+                                           onmousewheel="return false;" disabled />
                         </el-form-item>
                       </el-col>
-                      <el-col :span="12">
-                        <el-form-item label="净重(kg)" prop="netWeight" class="margin-b-0 wid100">
-                          <el-input-number v-model="product.netWeight" placeholder="请输入" style="width: 100%" :precision="2" :controls="false" :min="0"
-                                           onmousewheel="return false;" />
+                      <el-col :span="5">
+                        <el-form-item label="总价" class="margin-b-0" @click.stop>
+                          <el-input-number v-model="product.amount" placeholder="" style="width: 100%" :precision="2" :controls="false" :min="0"
+                                           onmousewheel="return false;" disabled />
                         </el-form-item>
                       </el-col>
-
-                    </el-row>
-                  </div>
-
-                  <div style="margin:10px 0">
-                    <TitleInfo :content="'辅材'"></TitleInfo>
-                  </div>
-                  <div style="width: 100%;padding-left:15px">
-                    <el-button type="primary" @click="handleClickSelectMaterial(index)" plain>选择包材/配件/辅材</el-button>
-                    <el-table :data="product.quotationProductBomList" style="width: 100%; margin-top: 16px">
-                      <el-table-column prop="materialName" label="物料名称" min-width="130" />
-                      <el-table-column prop="materialCode" label="物料编码" width="150" />
-                      <el-table-column label="数量" width="150">
-                        <template #default="{ row, $index }">
-                          <div style="width: 100%">
-                            <el-form-item :prop="'quotationProductList.' + index + '.quotationProductBomList.' + $index + '.quantity'"
-                                          :rules="rules.quantity" :inline-message="true" class="margin-b-0 wid100">
-                              <el-input-number onmousewheel="return false;" v-model="row.quantity" placeholder="请输入" style="width: 100%"
-                                               :precision="0" :controls="false" :min="1" />
-                            </el-form-item>
-                          </div>
-                        </template>
-                      </el-table-column>
-                      <el-table-column label="操作" width="60" align="center" fixed="right">
-                        <template #default="{ $index }">
-                          <el-button type="primary" link @click="handleRemoveBom(index,$index)">删除</el-button>
-                        </template>
-                      </el-table-column>
-                    </el-table>
-                  </div>
-
-                  <div style="margin:10px 0">
-                    <TitleInfo :content="'附加工艺要求'"></TitleInfo>
-                  </div>
-
-                  <div style="width:100%;padding-left:15px">
-                    <div class="small-title">
-                      ① 工艺线路
-                    </div>
-                    <el-row style="width:100%">
-                      <el-col :span="12">
-                        <el-form-item label="工艺产线" class="wid100" :prop="'quotationProductList.' + index + '.technologyId'"
-                                      :rules="rules.technologyId" :inline-message="true">
-                          <el-select v-model="product.technologyId" placeholder="请选择" style="width:100%">
-                            <el-option v-for="item in technologyData" :key="item.id" :label="item.name" :value="item.id" />
-                          </el-select>
-                        </el-form-item>
+                      <el-col :span="4" style="text-align:right">
+                        <el-button text type="primary" style="margin-left:10px" @click="handleRemove(index)">删除</el-button>
                       </el-col>
                     </el-row>
-                    <div class="small-title">
-                      ② LOGO
+                  </template>
+                  <div style="width:100%">
+                    <div style="margin:10px 0">
+                      <TitleInfo :content="'主材'"></TitleInfo>
                     </div>
-                    <el-row style="width:100%">
-                      <el-col :span="12">
-                        <el-form-item label="LOGO尺寸" class="wid100">
-                          <el-row>
-                            <el-col :span="12">
-                              <el-form-item label-width="0px" class="margin-b-0 wid100" :prop="'quotationProductList.' +index + '.logoLength'"
-                                            :rules="rules.logoLength" :inline-message="true">
-                                <el-input-number v-model="product.logoLength" placeholder="长 (cm)" style="width: 100%" :precision="2"
-                                                 :controls="false" :min="0" onmousewheel="return false;" />
-                              </el-form-item>
-                            </el-col>
-                            <el-col :span="12">
-                              <el-form-item label-width="0px" class="margin-b-0 wid100" :prop="'quotationProductList.' +index + '.logoWidth'"
-                                            :rules="rules.logoWidth" :inline-message="true">
-                                <el-input-number v-model="product.logoWidth" placeholder="宽 (cm)" style="width: 100%" :precision="2" :controls="false"
-                                                 :min="0" onmousewheel="return false;" />
+                    <div style="width: 100%;padding-left:15px">
+                      <el-row>
+                        <el-col :span="12">
+                          <el-form-item :prop="'quotationProductList.' +index + '.rawMaterialId'" :rules="rules.rawMaterialId" :inline-message="true"
+                                        label="原材料" class="wid100">
+                            <el-select v-model="product.rawMaterialId" placeholder="请选择" style="width:100%" filterable>
+                              <el-option v-for="item in rawMaterialData" :key="item.value" :label="item.label" :value="item.value" />
+                            </el-select>
+                          </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                          <el-form-item label="颜色" class="margin-b-0 wid100">
+                            <el-row style="width: 100%">
+                              <el-col :span="12">
+                                <el-form-item prop="productColor" label-width="0px" class="margin-b-0 wid100">
+                                  <el-input v-model="product.productColor" placeholder="颜色" />
+                                </el-form-item>
+                              </el-col>
+                              <el-col :span="12">
+                                <el-form-item prop="colorCardCode" label-width="0px" class="margin-b-0 wid100">
+                                  <el-input v-model="product.colorCardCode" placeholder="色卡号" />
+                                </el-form-item>
+                              </el-col>
+                            </el-row>
+                          </el-form-item>
+                        </el-col>
+                      </el-row>
+                      <el-row>
+                        <el-col :span="12">
+                          <el-form-item label="尺寸" class="margin-b-0 wid100" required>
+                            <el-row style="width:100%">
+                              <el-col :span="8">
+                                <el-form-item :prop="'quotationProductList.' +index + '.productLength'" :rules="rules.productLength"
+                                              :inline-message="true" label-width="0px" class="margin-b-0 wid100">
+                                  <el-input-number v-model="product.productLength" placeholder="长 (cm)" style="width: 100%" :precision="2"
+                                                   :controls="false" :min="0" onmousewheel="return false;" />
+                                </el-form-item>
+                              </el-col>
+                              <el-col :span="8">
+                                <el-form-item :prop="'quotationProductList.' +index + '.productWidth'" :rules="rules.productWidth"
+                                              :inline-message="true" label-width="0px" class="margin-b-0 wid100">
+                                  <el-input-number v-model="product.productWidth" placeholder="宽 (cm)" style="width: 100%" :precision="2"
+                                                   :controls="false" :min="0" onmousewheel="return false;" />
+                                </el-form-item>
+                              </el-col>
+                              <el-col :span="8">
+                                <el-form-item :prop="'quotationProductList.' +index + '.productHeight'" :rules="rules.productHeight"
+                                              :inline-message="true" label-width="0px" class="margin-b-0 wid100">
+                                  <el-input-number v-model="product.productHeight" placeholder="高 (cm)" style="width: 100%" :precision="2"
+                                                   :controls="false" :min="0" onmousewheel="return false;" />
+                                </el-form-item>
+                              </el-col>
+                            </el-row>
+                          </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                          <el-form-item label="净重(kg)" prop="netWeight" class="margin-b-0 wid100">
+                            <el-input-number v-model="product.netWeight" placeholder="请输入" style="width: 100%" :precision="2" :controls="false"
+                                             :min="0" onmousewheel="return false;" />
+                          </el-form-item>
+                        </el-col>
+
+                      </el-row>
+                    </div>
+
+                    <div style="margin:10px 0">
+                      <TitleInfo :content="'辅材'"></TitleInfo>
+                    </div>
+                    <div style="width: 100%;padding-left:15px">
+                      <el-button type="primary" @click="handleClickSelectMaterial(index)" plain>选择包材/配件/辅材</el-button>
+                      <el-table :data="product.quotationProductBomList" style="width: 100%; margin-top: 16px">
+                        <el-table-column prop="materialName" label="物料名称" />
+                        <el-table-column prop="materialCode" label="物料编码" />
+                        <el-table-column label="数量" width="150">
+                          <template #default="{ row, $index }">
+                            <div style="width: 100%">
+                              <el-form-item :prop="'quotationProductList.' + index + '.quotationProductBomList.' + $index + '.quantity'"
+                                            :rules="rules.quantity" :inline-message="true" class="margin-b-0 wid100">
+                                <el-input-number onmousewheel="return false;" v-model="row.quantity" placeholder="请输入" style="width: 100%"
+                                                 :precision="0" :controls="false" :min="1" />
                               </el-form-item>
-                            </el-col>
-                            <!-- <el-col :span="8">
+                            </div>
+                          </template>
+                        </el-table-column>
+                        <el-table-column label="操作" width="60" align="center" fixed="right">
+                          <template #default="{ $index }">
+                            <el-button type="primary" link @click="handleRemoveBom(index,$index)">删除</el-button>
+                          </template>
+                        </el-table-column>
+                      </el-table>
+                    </div>
+
+                    <div style="margin:10px 0">
+                      <TitleInfo :content="'附加工艺要求'"></TitleInfo>
+                    </div>
+
+                    <div style="width:100%;padding-left:15px">
+                      <div class="small-title">
+                        ① 工艺线路
+                      </div>
+                      <el-row style="width:100%">
+                        <el-col :span="12">
+                          <el-form-item label="生产工艺" class="wid100" :prop="'quotationProductList.' + index + '.technologyId'"
+                                        :rules="rules.technologyId" :inline-message="true">
+                            <el-select v-model="product.technologyId" placeholder="请选择" style="width:100%">
+                              <el-option v-for="item in technologyData" :key="item.id" :label="item.name" :value="item.id" />
+                            </el-select>
+                          </el-form-item>
+                        </el-col>
+                      </el-row>
+                      <div class="small-title">
+                        ② LOGO
+                      </div>
+                      <el-row style="width:100%">
+                        <el-col :span="12">
+                          <el-form-item label="LOGO尺寸" class="wid100">
+                            <el-row style="width:100%">
+                              <el-col :span="12">
+                                <el-form-item label-width="0px" class="margin-b-0 wid100" :prop="'quotationProductList.' +index + '.logoLength'"
+                                              :rules="rules.logoLength" :inline-message="true">
+                                  <el-input-number v-model="product.logoLength" placeholder="长 (cm)" style="width: 100%" :precision="2"
+                                                   :controls="false" :min="0" onmousewheel="return false;" />
+                                </el-form-item>
+                              </el-col>
+                              <el-col :span="12">
+                                <el-form-item label-width="0px" class="margin-b-0 wid100" :prop="'quotationProductList.' +index + '.logoWidth'"
+                                              :rules="rules.logoWidth" :inline-message="true">
+                                  <el-input-number v-model="product.logoWidth" placeholder="宽 (cm)" style="width: 100%" :precision="2"
+                                                   :controls="false" :min="0" onmousewheel="return false;" />
+                                </el-form-item>
+                              </el-col>
+                              <!-- <el-col :span="8">
                               <el-form-item label-width="0px" class="margin-b-0 wid100" :prop="'quotationProductList.' +index + '.logoHeight'"
                                             :rules="rules.logoHeight" :inline-message="true">
                                 <el-input-number v-model="product.logoHeight" placeholder="高 (cm)" style="width: 100%" :precision="2"
                                                  :controls="false" :min="0" onmousewheel="return false;" />
                               </el-form-item>
                             </el-col> -->
-                          </el-row>
-                        </el-form-item>
-                      </el-col>
-                      <el-col :span="12">
-                        <el-form-item label="几色印刷" class="wid100">
-                          <el-input-number v-model="product.colorCount" placeholder="请输入" style="width: 100%" :precision="0" :controls="false"
-                                           :min="1" onmousewheel="return false;" />
+                            </el-row>
+                          </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                          <el-form-item label="几色印刷" class="wid100">
+                            <el-input-number v-model="product.colorCount" placeholder="请输入" style="width: 100%" :precision="0" :controls="false"
+                                             :min="1" onmousewheel="return false;" />
+                          </el-form-item>
+                        </el-col>
+                      </el-row>
+                      <div class="small-title">
+                        ③ 折叠
+                      </div>
+                      <el-row style="width:100%">
+                        <el-col :span="12">
+                          <el-form-item label="是否折叠" class="wid100">
+                            <el-select v-model="product.isFold" placeholder="请选择" style="width:100%">
+                              <el-option :label="'否'" :value="0" />
+                              <el-option :label="'是'" :value="1" />
+                            </el-select>
+                          </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                          <el-form-item label="折叠数" class="wid100" :prop="'quotationProductList.' +index + '.foldWay'" v-if="product.isFold==1"
+                                        :rules="product.isFold==1?rules.foldWay:''">
+                            <el-select v-model="product.foldWay" placeholder="请选择" style="width:100%">
+                              <el-option v-for="item in foldWayData" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey" />
+                            </el-select>
+                          </el-form-item>
+                        </el-col>
+                      </el-row>
+                      <div class="small-title">
+                        ④ 包装要求
+                      </div>
+                      <el-row style="width:100%">
+                        <el-col :span="12">
+                          <el-form-item label="包装要求" class="wid100">
+                            <el-select v-model="product.packAsk" placeholder="请选择" style="width:100%" multiple>
+                              <el-option v-for="item in packAskData" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey" />
+                            </el-select>
+                          </el-form-item>
+                        </el-col>
+                      </el-row>
+                      <div class="small-title">
+                        ⑤ 是否定制
+                      </div>
+                      <el-row style="width:100%">
+                        <el-col :span="12">
+                          <el-form-item prop="isCustomized" label="是否定制" class="wid100">
+                            <el-select v-model="product.isCustomized" placeholder="请选择" style="width:100%">
+                              <el-option :label="'否'" :value="0" />
+                              <el-option :label="'是'" :value="1" />
+                            </el-select>
+                          </el-form-item>
+                        </el-col>
+                      </el-row>
+                      <el-row style="width:100%">
+                        <el-form-item label="定制内容" class="wid100" v-if="product.isCustomized==1">
+                          <table style="width:100%" border class="table">
+                            <tr>
+                              <td style="width:20%">
+                              </td>
+                              <td style="width:40%">附件</td>
+                              <td style="width:40%">备注</td>
+                            </tr>
+                            <tr v-for="(row,sonIndex) in product.quotationProductCustomInfoList" :key="sonIndex">
+                              <td>
+                                <el-checkbox v-model="row.isCheckBox" label="" /> <span style="position:relative;top:-2px">
+                                  {{getLabelOne(row.type)}}</span>
+                              </td>
+                              <td>
+                                <el-upload :file-list="row.fileList" :action="uploadUrl" :data="uploadData" :limit="1" :list-type="'text'"
+                                           :before-upload="(file)=>handleBeforeUploadOne(file,index,sonIndex)"
+                                           :on-success="()=>handleSuccessOne(index,sonIndex)"
+                                           :on-remove="(file)=>handleRemoveFile(file,index,sonIndex)" :on-preview="onPreviewFile"
+                                           :on-exceed="()=>msgTip(`上传文件数量不可大于1`, 2)">
+                                  <el-button text type="primary">上传附件</el-button>
+                                </el-upload>
+                              </td>
+                              <td>
+                                <el-form-item :prop="'quotationProductList.' + index + '.quotationProductCustomInfoList.' + sonIndex + '.remark'"
+                                              :rules="row.isCheckBox?rules.remark:''" :inline-message="true" class="margin-b-0 wid100">
+                                  <el-input v-model="row.remark" placeholder="请输入备注" />
+                                </el-form-item>
+                              </td>
+                            </tr>
+                          </table>
                         </el-form-item>
-                      </el-col>
-                    </el-row>
-                    <div class="small-title">
-                      ③ 折叠
-                    </div>
-                    <el-row style="width:100%">
-                      <el-col :span="12">
-                        <el-form-item label="是否折叠" class="wid100">
-                          <el-select v-model="product.isFold" placeholder="请选择" style="width:100%">
-                            <el-option :label="'否'" :value="0" />
-                            <el-option :label="'是'" :value="1" />
-                          </el-select>
-                        </el-form-item>
-                      </el-col>
-                      <el-col :span="12">
-                        <el-form-item label="折叠数" class="wid100" :prop="'quotationProductList.' +index + '.foldWay'" v-if="product.isFold==1"
-                                      :rules="product.isFold==1?rules.foldWay:''">
-                          <el-select v-model="product.foldWay" placeholder="请选择" style="width:100%">
-                            <el-option v-for="item in foldWayData" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey" />
-                          </el-select>
-                        </el-form-item>
-                      </el-col>
-                    </el-row>
-                    <div class="small-title">
-                      ④ 包装要求
-                    </div>
-                    <el-row style="width:100%">
-                      <el-col :span="12">
-                        <el-form-item label="包装要求" class="wid100">
-                          <el-select v-model="product.packAsk" placeholder="请选择" style="width:100%" multiple>
-                            <el-option v-for="item in packAskData" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey" />
-                          </el-select>
-                        </el-form-item>
-                      </el-col>
-                    </el-row>
-                    <div class="small-title">
-                      ⑤ 是否定制
+                      </el-row>
                     </div>
-                    <el-row style="width:100%">
-                      <el-col :span="12">
-                        <el-form-item prop="isCustomized" label="是否定制" class="wid100">
-                          <el-select v-model="product.isCustomized" placeholder="请选择" style="width:100%">
-                            <el-option :label="'否'" :value="0" />
-                            <el-option :label="'是'" :value="1" />
-                          </el-select>
-                        </el-form-item>
-                      </el-col>
-                    </el-row>
-                    <el-row style="width:100%">
-                      <el-form-item label="定制内容" class="wid100" v-if="product.isCustomized==1">
-                        <table style="width:100%" border class="table">
-                          <tr>
-                            <td style="width:20%">
-                            </td>
-                            <td style="width:40%">附件</td>
-                            <td style="width:40%">备注</td>
-                          </tr>
-                          <tr v-for="(row,sonIndex) in product.quotationProductCustomInfoList" :key="sonIndex">
-                            <td>
-                              <el-checkbox v-model="row.isCheckBox" label="" /> <span style="position:relative;top:-2px">
-                                {{getLabelOne(row.type)}}</span>
-                            </td>
-                            <td>
-                              <el-upload :file-list="row.fileList" :action="uploadUrl" :data="uploadData" :limit="1" :list-type="'text'"
-                                         :before-upload="(file)=>handleBeforeUploadOne(file,index,sonIndex)"
-                                         :on-success="()=>handleSuccessOne(index,sonIndex)" :on-remove="(file)=>handleRemoveFile(file,index,sonIndex)"
-                                         :on-preview="onPreviewFile" :on-exceed="()=>msgTip(`上传文件数量不可大于1`, 2)">
-                                <el-button text type="primary">上传附件</el-button>
-                              </el-upload>
-                            </td>
-                            <td>
-                              <el-form-item :prop="'quotationProductList.' + index + '.quotationProductCustomInfoList.' + sonIndex + '.remark'"
-                                            :rules="row.isCheckBox?rules.remark:''" :inline-message="true" class="margin-b-0 wid100">
-                                <el-input v-model="row.remark" placeholder="请输入备注" />
-                              </el-form-item>
-                            </td>
-                          </tr>
-                        </table>
-                      </el-form-item>
-                    </el-row>
                   </div>
-                </div>
-              </el-collapse-item>
-
+                </el-collapse-item>
+              </el-card>
             </el-collapse>
           </div>
         </template>
@@ -494,7 +516,7 @@
               <el-table-column prop="productColor" label="颜色" width="100" />
               <el-table-column label="数量" width="110" prop="quantity">
               </el-table-column>
-              <el-table-column label="指导价" width="100" prop="guidePrice">
+              <el-table-column label="业务成本单价" width="100" prop="guidePrice">
                 <template #default="{ row, $index }">
                   <div style="width: 100%">
                     <span class="tag-active">{{row.guidePrice}}</span>
@@ -598,9 +620,9 @@
               <el-table-column prop="productColor" label="颜色" width="100" />
               <el-table-column label="数量" width="80" prop="quantity">
               </el-table-column>
-              <el-table-column label="工厂单价" width="100" prop="prodPrice">
+              <el-table-column label="工厂出厂单价" width="110" prop="prodPrice">
               </el-table-column>
-              <el-table-column label="指导价" width="120" prop="price">
+              <el-table-column label="业务成本单价" width="120" prop="price">
                 <template #default="{ row, $index }">
                   <div style="width: 100%">
                     <el-form-item :prop="'quotationProductList.' + $index + '.price'" :rules="rulesTwo.price" :inline-message="true"
@@ -1049,54 +1071,100 @@ const getDtl = (row, flag, change = false) => {
   openAddDialog.value = true;
   proxy.post("/saleQuotation/detail", { id: row.id }).then((res) => {
     formData.data = res;
-    // 城市数据回显
-    if (formData.data.buyCountryId) {
-      getCityData(formData.data.buyCountryId, "20");
-    }
-    if (formData.data.buyProvinceId) {
-      getCityData(formData.data.buyProvinceId, "30");
+    if (res && res.ofCompanyId) {
+      handleOfCompanyIdChange(res.ofCompanyId);
     }
-    // 文件数据回显
-    getFileData();
-    let productIds = formData.data.quotationProductList.map((x) => x.productId);
-    proxy.getFileData({
-      businessIdList: productIds,
-      data: formData.data.quotationProductList,
-      att: "productId",
-      businessType: "0",
-      fileAtt: "productFile",
-      filePathAtt: "fileUrl",
-    });
-    // 价格计算
-    changeQuantity();
-
-    //折线图
-    if (flag && res.quotationTrendList && res.quotationTrendList.length >= 2) {
-      nextTick(() => {
-        myChart = echarts.init(chartDom.value);
-        window.addEventListener("resize", () => {
-          myChart.resize();
-        });
-        chartData.value = res.quotationTrendList;
-        chartOption.data.xAxis.data = chartData.value.map((item) => {
-          return item.createTime.slice(0, 10);
-        });
-        chartOption.data.series[0].data = chartData.value.map((item, index) => {
-          if (item.code == row.code) {
-            return {
-              value: item.amount || 0,
-              itemStyle: { color: "red" },
-            };
-          } else {
-            return item.amount || 0;
+    if (
+      formData.data.quotationProductList &&
+      formData.data.quotationProductList.length > 0
+    ) {
+      for (let i = 0; i < formData.data.quotationProductList.length; i++) {
+        const iele = formData.data.quotationProductList[i];
+        if (iele.packAsk) {
+          iele.packAsk = iele.packAsk.split(",");
+        } else {
+          iele.packAsk = [];
+        }
+        if (
+          iele.quotationProductBomList &&
+          iele.quotationProductBomList.length > 0
+        ) {
+          iele.quotationProductBomList = iele.quotationProductBomList
+            .filter((x) => x.type == 2)
+            .map((x) => ({
+              ...x,
+              materialName: x.productName,
+              materialCode: x.productCode,
+            }));
+        }
+        if (
+          iele.quotationProductCustomInfoList &&
+          iele.quotationProductCustomInfoList.length > 0
+        ) {
+          for (let j = 0; j < iele.quotationProductCustomInfoList.length; j++) {
+            const jele = iele.quotationProductCustomInfoList[j];
+            if (jele.fileList) {
+              jele.fileList = jele.fileList.map((x) => ({
+                ...x,
+                url: x.fileUrl,
+                name: x.fileName,
+              }));
+            } else {
+              jele.fileList = [];
+            }
+            jele.isCheckBox = jele.isCheck == 1;
           }
-        });
-        myChart.setOption(chartOption.data);
-        myChart.resize();
-      });
-    } else {
-      isShowChart.value = false;
+        }
+      }
     }
+    // 城市数据回显
+    // if (formData.data.buyCountryId) {
+    //   getCityData(formData.data.buyCountryId, "20");
+    // }
+    // if (formData.data.buyProvinceId) {
+    //   getCityData(formData.data.buyProvinceId, "30");
+    // }
+    // // 文件数据回显
+    // getFileData();
+    // let productIds = formData.data.quotationProductList.map((x) => x.productId);
+    // proxy.getFileData({
+    //   businessIdList: productIds,
+    //   data: formData.data.quotationProductList,
+    //   att: "productId",
+    //   businessType: "0",
+    //   fileAtt: "productFile",
+    //   filePathAtt: "fileUrl",
+    // });
+    // // 价格计算
+    // changeQuantity();
+
+    // //折线图
+    // if (flag && res.quotationTrendList && res.quotationTrendList.length >= 2) {
+    //   nextTick(() => {
+    //     myChart = echarts.init(chartDom.value);
+    //     window.addEventListener("resize", () => {
+    //       myChart.resize();
+    //     });
+    //     chartData.value = res.quotationTrendList;
+    //     chartOption.data.xAxis.data = chartData.value.map((item) => {
+    //       return item.createTime.slice(0, 10);
+    //     });
+    //     chartOption.data.series[0].data = chartData.value.map((item, index) => {
+    //       if (item.code == row.code) {
+    //         return {
+    //           value: item.amount || 0,
+    //           itemStyle: { color: "red" },
+    //         };
+    //       } else {
+    //         return item.amount || 0;
+    //       }
+    //     });
+    //     myChart.setOption(chartOption.data);
+    //     myChart.resize();
+    //   });
+    // } else {
+    //   isShowChart.value = false;
+    // }
   });
 };
 
@@ -1471,7 +1539,7 @@ const selectProduct = (row) => {
           netWeight: goods.netWeight,
           quantity: null,
           price: null,
-          amount: "",
+          amount: null,
           fileList: [],
           rawMaterialId: goods.rawMaterialId,
           technologyId: goods.technologyId,
@@ -1535,7 +1603,7 @@ const clickPushProduct = () => {
     netWeight: null,
     quantity: null,
     price: null,
-    amount: "",
+    amount: null,
     fileList: [],
     rawMaterialId: "",
     technologyId: "",
@@ -2207,6 +2275,21 @@ const getConfirmDtl = (row, flag) => {
     changeQuantityOne();
     changeQuantityTwo();
     changeMinPrice();
+    if (!flag) {
+      if (
+        formData.dataTwo.quotationProductList &&
+        formData.dataTwo.quotationProductList.length > 0
+      ) {
+        // 单个产品的价格
+        for (let i = 0; i < formData.dataTwo.quotationProductList.length; i++) {
+          let iele = formData.dataTwo.quotationProductList[i];
+          iele.price = Number(
+            parseFloat(Number(iele.prodPrice) * 1.1).toFixed(2)
+          );
+          iele.amplifyRatio = 10;
+        }
+      }
+    }
   });
 };
 
@@ -2424,9 +2507,9 @@ const handleOfCompanyIdChange = (val) => {
 :deep(.el-checkbox) {
   margin-right: 0px;
 }
-:deep(.el-collapse-item) {
-  margin-bottom: 10px;
-}
+// :deep(.el-collapse-item) {
+//   margin-bottom: 10px;
+// }
 :deep(.el-collapse-item__header) {
   background-color: #eee;
 }

+ 327 - 46
src/views/EHSD/saleContract/priceSheetEstimate/index.vue

@@ -55,45 +55,15 @@
 
     </byTable>
 
-    <el-dialog v-if="openAddDialog" v-model="openAddDialog" title="报价评估" width="95%" append-to-body>
+    <el-dialog v-if="openAddDialog" v-model="openAddDialog" title="报价评估" width="98%" append-to-body>
       <div style="height:calc(100vh - 215px)" class="box">
         <div class="left">
-          <el-card style="width:100%;margin-bottom:15px" v-for="(item,index) in quotationProductList" :key="index">
+          <!-- <el-card style="width:100%;margin-bottom:15px" v-for="(item,index) in quotationProductList" :key="index">
             <div style="text-align:right">
               <el-button plain type="primary" @click="handleLookDetail(item,index)">查看</el-button>
               <el-button plain type="primary" @click="handleReportPrice(item,index)">报价</el-button>
             </div>
             <el-table :data="[item]" style="width: 100%;">
-              <!-- <el-table-column type="expand" width="50" align="center">
-                <template #default="scope">
-                  <div>
-                    <div style="margin-bottom:10px;">
-                      <TitleInfo content='BOM单:'></TitleInfo>
-                    </div>
-                    <el-table :data="scope.row.quotationProductBomList" style="width: 100%;" border class="bom-table">
-                      <el-table-column label="图片" width="80">
-                        <template #default="{ row }">
-                          <div v-if="row.fileUrl">
-                            <img :src="row.fileUrl" class="pic" @click="onPicture(row.fileUrl)" />
-                          </div>
-                          <div v-else></div>
-                        </template>
-                      </el-table-column>
-                      <el-table-column prop="productCode" label="物料编码" width="190" />
-                      <el-table-column prop="productName" label="物料名称" min-width="200" />
-                      <el-table-column label="尺寸 (cm)" width="150">
-                        <template #default="{ row, $index }">
-                          <div style="width: 100%">
-                            {{row.productLength}} * {{row.productWidth}} * {{row.productHeight}}
-                          </div>
-                        </template>
-                      </el-table-column>
-                      <el-table-column label="备注" width="180" prop="remark">
-                      </el-table-column>
-                    </el-table>
-                  </div>
-                </template>
-              </el-table-column> -->
               <el-table-column label="图片" width="80">
                 <template #default="{ row }">
                   <div v-if="row.fileUrl">
@@ -133,7 +103,275 @@
                 </template>
               </el-table-column>
             </el-table>
-          </el-card>
+          </el-card> -->
+          <el-form disabled label-width="80px">
+            <el-collapse v-model="activeNames">
+              <el-card style="margin-bottom:15px" v-for="(product,index) in quotationProductList" :key="index">
+                <el-collapse-item :name="index">
+                  <template #title>
+                    <el-row style="width:100%">
+                      <el-col :span="8">
+                        <div style="font-size:14px;font-weight:700;padding-left:10px">
+                          产品编码:{{product.productCode || '定制产品'}}
+                        </div>
+                      </el-col>
+                      <el-col :span="4">
+                        <!-- <el-form-item label="数量" class="margin-b-0" :prop="'quotationProductList.' +index + '.quantity'" :rules="rules.quantity"
+                                      :inline-message="true" @click.stop>
+                          <el-input-number v-model="product.quantity" placeholder="请输入" style="width: 100%" :precision="0" :controls="false" :min="1"
+                                           onmousewheel="return false;" />
+                        </el-form-item> -->
+                        <span>数量:{{product.quantity}}</span>
+                      </el-col>
+                      <el-col :span="4">
+                        <!-- <el-form-item label="单价" class="margin-b-0" @click.stop>
+                          <el-input-number v-model="product.price" placeholder="" style="width: 100%" :precision="2" :controls="false" :min="1"
+                                           onmousewheel="return false;" disabled />
+                        </el-form-item> -->
+                        单价:<span :style="{color:product.prodPrice?'red':''}">{{product.prodPrice}}</span>
+                      </el-col>
+                      <el-col :span="4">
+                        <!-- <el-form-item label="总价" class="margin-b-0" @click.stop>
+                          <el-input-number v-model="product.amount" placeholder="" style="width: 100%" :precision="2" :controls="false" :min="1"
+                                           onmousewheel="return false;" disabled />
+                        </el-form-item> -->
+                        总价:<span :style="{color:product.prodPrice?'red':''}">{{product.amount}}</span>
+                      </el-col>
+                      <el-col :span="4" style="padding-left:10px">
+                        <!-- <el-button plain type="primary" @click="handleReportPrice(product,index)">报价</el-button> -->
+                        <span class="el-click" @click.stop="handleReportPrice(product,index)">报价</span>
+                      </el-col>
+                    </el-row>
+                  </template>
+
+                  <div style="width:100%">
+                    <div style="margin:10px 0">
+                      <TitleInfo :content="'主材'"></TitleInfo>
+                    </div>
+                    <div style="width: 100%;padding-left:15px">
+                      <el-row>
+                        <el-col :span="12">
+                          <el-form-item :prop="'quotationProductList.' +index + '.rawMaterialId'" :rules="rules.rawMaterialId" :inline-message="true"
+                                        label="原材料" class="wid100">
+                            <el-select v-model="product.rawMaterialId" placeholder="请选择" style="width:100%">
+                              <el-option v-for="item in rawMaterialData" :key="item.value" :label="item.label" :value="item.value" />
+                            </el-select>
+                          </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                          <el-form-item label="颜色" class="margin-b-0 wid100">
+                            <el-row style="width: 100%">
+                              <el-col :span="12">
+                                <el-form-item prop="productColor" label-width="0px" class="margin-b-0 wid100">
+                                  <el-input v-model="product.productColor" placeholder="颜色" />
+                                </el-form-item>
+                              </el-col>
+                              <el-col :span="12">
+                                <el-form-item prop="colorCardCode" label-width="0px" class="margin-b-0 wid100">
+                                  <el-input v-model="product.colorCardCode" placeholder="色卡号" />
+                                </el-form-item>
+                              </el-col>
+                            </el-row>
+                          </el-form-item>
+                        </el-col>
+                      </el-row>
+                      <el-row>
+                        <el-col :span="12">
+                          <el-form-item label="尺寸" class="margin-b-0 wid100" required>
+                            <el-row style="width:100%">
+                              <el-col :span="8">
+                                <el-form-item :prop="'quotationProductList.' +index + '.productLength'" :rules="rules.productLength"
+                                              :inline-message="true" label-width="0px" class="margin-b-0 wid100">
+                                  <el-input-number v-model="product.productLength" placeholder="长 (cm)" style="width: 100%" :precision="2"
+                                                   :controls="false" :min="0" onmousewheel="return false;" />
+                                </el-form-item>
+                              </el-col>
+                              <el-col :span="8">
+                                <el-form-item :prop="'quotationProductList.' +index + '.productWidth'" :rules="rules.productWidth"
+                                              :inline-message="true" label-width="0px" class="margin-b-0 wid100">
+                                  <el-input-number v-model="product.productWidth" placeholder="宽 (cm)" style="width: 100%" :precision="2"
+                                                   :controls="false" :min="0" onmousewheel="return false;" />
+                                </el-form-item>
+                              </el-col>
+                              <el-col :span="8">
+                                <el-form-item :prop="'quotationProductList.' +index + '.productHeight'" :rules="rules.productHeight"
+                                              :inline-message="true" label-width="0px" class="margin-b-0 wid100">
+                                  <el-input-number v-model="product.productHeight" placeholder="高 (cm)" style="width: 100%" :precision="2"
+                                                   :controls="false" :min="0" onmousewheel="return false;" />
+                                </el-form-item>
+                              </el-col>
+                            </el-row>
+                          </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                          <el-form-item label="净重(kg)" prop="netWeight" class="margin-b-0 wid100">
+                            <el-input-number v-model="product.netWeight" placeholder="请输入" style="width: 100%" :precision="2" :controls="false"
+                                             :min="0" onmousewheel="return false;" />
+                          </el-form-item>
+                        </el-col>
+
+                      </el-row>
+                    </div>
+
+                    <div style="margin:10px 0">
+                      <TitleInfo :content="'辅材'"></TitleInfo>
+                    </div>
+                    <div style="width: 100%;padding-left:15px">
+                      <el-table :data="product.quotationProductBomList" style="width: 100%; margin-top: 16px">
+                        <el-table-column prop="productName" label="物料名称" />
+                        <el-table-column prop="productCode" label="物料编码" />
+                        <el-table-column label="数量" width="150">
+                          <template #default="{ row, $index }">
+                            <div style="width: 100%">
+                              <el-form-item :prop="'quotationProductList.' + index + '.quotationProductBomList.' + $index + '.quantity'"
+                                            :rules="rules.quantity" :inline-message="true" class="margin-b-0 wid100" label-width="0px">
+                                <el-input-number onmousewheel="return false;" v-model="row.quantity" placeholder=" " style="width: 100%"
+                                                 :precision="0" :controls="false" :min="1" />
+                              </el-form-item>
+                            </div>
+                          </template>
+                        </el-table-column>
+                      </el-table>
+                    </div>
+
+                    <div style="margin:10px 0">
+                      <TitleInfo :content="'附加工艺要求'"></TitleInfo>
+                    </div>
+
+                    <div style="width:100%;padding-left:15px">
+                      <div class="small-title">
+                        ① 工艺线路
+                      </div>
+                      <el-row style="width:100%">
+                        <el-col :span="12">
+                          <el-form-item label="生产工艺" class="wid100" :prop="'quotationProductList.' + index + '.technologyId'"
+                                        :rules="rules.technologyId" :inline-message="true">
+                            <el-select v-model="product.technologyId" placeholder="请选择" style="width:100%">
+                              <el-option v-for="item in technologyData" :key="item.id" :label="item.name" :value="item.id" />
+                            </el-select>
+                          </el-form-item>
+                        </el-col>
+                      </el-row>
+                      <div class="small-title">
+                        ② LOGO
+                      </div>
+                      <el-row style="width:100%">
+                        <el-col :span="12">
+                          <el-form-item label="LOGO尺寸" class="wid100">
+                            <el-row style="width:100%">
+                              <el-col :span="12">
+                                <el-form-item label-width="0px" class="margin-b-0 wid100" :prop="'quotationProductList.' +index + '.logoLength'"
+                                              :rules="rules.logoLength" :inline-message="true">
+                                  <el-input-number v-model="product.logoLength" placeholder="长 (cm)" style="width: 100%" :precision="2"
+                                                   :controls="false" :min="0" onmousewheel="return false;" />
+                                </el-form-item>
+                              </el-col>
+                              <el-col :span="12">
+                                <el-form-item label-width="0px" class="margin-b-0 wid100" :prop="'quotationProductList.' +index + '.logoWidth'"
+                                              :rules="rules.logoWidth" :inline-message="true">
+                                  <el-input-number v-model="product.logoWidth" placeholder="宽 (cm)" style="width: 100%" :precision="2"
+                                                   :controls="false" :min="0" onmousewheel="return false;" />
+                                </el-form-item>
+                              </el-col>
+                              <!-- <el-col :span="8">
+                            <el-form-item label-width="0px" class="margin-b-0 wid100" :prop="'quotationProductList.' +index + '.logoHeight'"
+                                          :rules="rules.logoHeight" :inline-message="true">
+                              <el-input-number v-model="product.logoHeight" placeholder="高 (cm)" style="width: 100%" :precision="2" :controls="false"
+                                               :min="0" onmousewheel="return false;" />
+                            </el-form-item>
+                          </el-col> -->
+                            </el-row>
+                          </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                          <el-form-item label="几色印刷" class="wid100">
+                            <el-input-number v-model="product.colorCount" style="width: 100%" :precision="0" :controls="false" :min="1"
+                                             onmousewheel="return false;" />
+                          </el-form-item>
+                        </el-col>
+                      </el-row>
+                      <div class="small-title">
+                        ③ 折叠
+                      </div>
+                      <el-row style="width:100%">
+                        <el-col :span="12">
+                          <el-form-item label="是否折叠" class="wid100">
+                            <el-select v-model="product.isFold" style="width:100%">
+                              <el-option :label="'否'" :value="0" />
+                              <el-option :label="'是'" :value="1" />
+                            </el-select>
+                          </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                          <el-form-item label="折叠数" class="wid100" :prop="'quotationProductList.' +index + '.foldWay'" v-if="product.isFold==1"
+                                        :rules="product.isFold==1?rules.foldWay:''">
+                            <el-select v-model="product.foldWay" style="width:100%">
+                              <el-option v-for="item in foldWayData" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey" />
+                            </el-select>
+                          </el-form-item>
+                        </el-col>
+                      </el-row>
+                      <div class="small-title">
+                        ④ 包装要求
+                      </div>
+                      <el-row style="width:100%">
+                        <el-col :span="12">
+                          <el-form-item label="包装要求" class="wid100">
+                            <el-select v-model="product.packAsk" style="width:100%" multiple placeholder=" ">
+                              <el-option v-for="item in packAskData" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey" />
+                            </el-select>
+                          </el-form-item>
+                        </el-col>
+                      </el-row>
+                      <div class="small-title">
+                        ⑤ 是否定制
+                      </div>
+                      <el-row style="width:100%">
+                        <el-col :span="12">
+                          <el-form-item prop="isCustomized" label="是否定制" class="wid100">
+                            <el-select v-model="product.isCustomized" style="width:100%">
+                              <el-option :label="'否'" :value="0" />
+                              <el-option :label="'是'" :value="1" />
+                            </el-select>
+                          </el-form-item>
+                        </el-col>
+                      </el-row>
+                      <el-row style="width:100%">
+                        <el-form-item label="定制内容" class="wid100" v-if="product.isCustomized==1">
+                          <table style="width:100%" border class="table">
+                            <tr>
+                              <td style="width:20%">
+                              </td>
+                              <td style="width:40%">附件</td>
+                              <td style="width:40%">备注</td>
+                            </tr>
+                            <tr v-for="(row,sonIndex) in product.quotationProductCustomInfoList" :key="sonIndex">
+                              <td>
+                                <el-checkbox v-model="row.isCheckBox" label="" /> <span style="position:relative;top:-2px">
+                                  {{getLabelOne(row.type)}}</span>
+                              </td>
+                              <td>
+                                <div v-for="file in row.fileList" :key="file.id" class="el-click" @click="openImg(file.fileUrl)">
+                                  {{file.fileName}}
+                                </div>
+                              </td>
+                              <td>
+                                <el-form-item :prop="'quotationProductList.' + index + '.quotationProductCustomInfoList.' + sonIndex + '.remark'"
+                                              :rules="row.isCheckBox?rules.remark:''" :inline-message="true" class="margin-b-0 wid100">
+                                  <el-input v-model="row.remark" />
+                                </el-form-item>
+                              </td>
+                            </tr>
+                          </table>
+                        </el-form-item>
+                      </el-row>
+                    </div>
+                  </div>
+                </el-collapse-item>
+              </el-card>
+            </el-collapse>
+          </el-form>
+
         </div>
         <div class="right">
           <byForm :formConfig="formConfig" :formOption="formOption" v-model="formData.data" :rules="rules" ref="formDom"
@@ -531,7 +769,7 @@
               </div>
               <el-row style="width:100%">
                 <el-col :span="12">
-                  <el-form-item label="工艺产线" class="wid100" :prop="'quotationProductList.' +index + '.technologyId'" :rules="rules.technologyId"
+                  <el-form-item label="生产工艺" class="wid100" :prop="'quotationProductList.' +index + '.technologyId'" :rules="rules.technologyId"
                                 :inline-message="true">
                     <el-select v-model="formData.detailsData.technologyId" placeholder="请选择" style="width:100%">
                       <el-option v-for="item in technologyData" :key="item.id" :label="item.name" :value="item.id" />
@@ -1165,6 +1403,42 @@ const getDtlOne = (row, flag = false, index = 0) => {
     formData.data = {
       quotationProductId: "",
     };
+    if (res.quotationProductList && res.quotationProductList.length > 0) {
+      for (let i = 0; i < res.quotationProductList.length; i++) {
+        const iele = res.quotationProductList[i];
+        if (iele.packAsk) {
+          iele.packAsk = iele.packAsk.split(",");
+        } else {
+          iele.packAsk = [];
+        }
+        if (
+          iele.quotationProductBomList &&
+          iele.quotationProductBomList.length > 0
+        ) {
+          iele.quotationProductBomList = iele.quotationProductBomList.filter(
+            (x) => x.type == 2
+          );
+        }
+        if (
+          iele.quotationProductCustomInfoList &&
+          iele.quotationProductCustomInfoList.length > 0
+        ) {
+          for (let j = 0; j < iele.quotationProductCustomInfoList.length; j++) {
+            const jele = iele.quotationProductCustomInfoList[j];
+            if (jele.fileList) {
+              jele.fileList = jele.fileList.map((x) => ({
+                ...x,
+                url: x.fileUrl,
+                name: x.fileName,
+              }));
+            } else {
+              jele.fileList = [];
+            }
+            jele.isCheckBox = jele.isCheck == 1;
+          }
+        }
+      }
+    }
     quotationProductList.value = res.quotationProductList.map((x) => ({
       ...x,
       amount: parseFloat(x.quantity * x.prodPrice).toFixed(2),
@@ -1172,16 +1446,16 @@ const getDtlOne = (row, flag = false, index = 0) => {
     if (quotationProductList.value && quotationProductList.value.length > 0) {
       handleReportPrice(quotationProductList.value[index], index);
     }
-    getFileDataOne();
-    let productIds = quotationProductList.value.map((x) => x.productId);
-    proxy.getFileData({
-      businessIdList: productIds,
-      data: quotationProductList.value,
-      att: "productId",
-      businessType: "0",
-      fileAtt: "productFile",
-      filePathAtt: "fileUrl",
-    });
+    // getFileDataOne();
+    // let productIds = quotationProductList.value.map((x) => x.productId);
+    // proxy.getFileData({
+    //   businessIdList: productIds,
+    //   data: quotationProductList.value,
+    //   att: "productId",
+    //   businessType: "0",
+    //   fileAtt: "productFile",
+    //   filePathAtt: "fileUrl",
+    // });
   });
 };
 
@@ -1486,6 +1760,7 @@ const changeMoldId = (val, index) => {
       if (mold.area >= areaOne || mold.area >= areaTwo) {
       } else {
         proxy.msgTip(`该模具不能一出${cavityNum}`, 2);
+        formData.data.quotationEstimateList[index].moldId = "";
       }
     }
     changeTotalAmount();
@@ -1557,14 +1832,14 @@ const getLabelOne = (type) => {
   width: 100%;
   display: flex;
   .left {
-    width: 40%;
+    width: 45%;
     height: 100%;
     overflow: auto;
     border-right: 1px solid #eee;
     padding: 4px 15px 4px 4px;
   }
   .right {
-    width: 60%;
+    width: 55%;
     height: 100%;
     overflow: auto;
     position: relative;
@@ -1623,4 +1898,10 @@ const getLabelOne = (type) => {
 :deep(.el-checkbox) {
   margin-right: 0px;
 }
+// :deep(.el-collapse-item) {
+//   margin-bottom: 10px;
+// }
+:deep(.el-collapse-item__header) {
+  background-color: #eee;
+}
 </style>

+ 78 - 37
src/views/MES/productionOrder/index.vue

@@ -201,22 +201,19 @@
                 </template>
               </el-table-column>
               <el-table-column prop="productColor" label="颜色" width="100" />
-              <el-table-column label="设计图稿" width="80">
+              <!-- <el-table-column label="设计图稿" width="80">
                 <template #default="{ row, $index }">
                   <div style="width: 100%">
                     <el-upload :action="uploadUrl" accept=".gif, .jpeg, .jpg, .png" :show-file-list="false" :data="uploadData"
                                :before-upload="(file)=>handleBeforeUpload(file,$index)" :on-success="()=>handleSuccess($index)">
                       <div v-loading="row.imgLoading">
                         <img v-if="row.imageUrl" :src="row.imageUrl" class="pic" />
-                        <!-- <el-icon v-else class="avatar-uploader-icon">
-                          <Plus />
-                        </el-icon> -->
                       </div>
                     </el-upload>
                   </div>
                 </template>
-              </el-table-column>
-              <el-table-column label="生产文件" width="140">
+              </el-table-column> -->
+              <el-table-column label="生产plt文件" width="140">
                 <template #default="{ row, $index }">
                   <div style="width:100%">
                     <div v-if="row.isShowProductFile &&row.fileListOne && row.fileListOne.length > 0">
@@ -251,6 +248,7 @@ import byForm from "@/components/byForm/index";
 import moment from "moment";
 import * as date from "@/utils/date.js";
 import { ArrowLeftBold, ArrowRightBold } from "@element-plus/icons-vue";
+import { async } from "@antv/x6/lib/registry/marker/main";
 
 const { proxy } = getCurrentInstance();
 const contractTag = computed(
@@ -915,7 +913,7 @@ const getFileData = () => {
 };
 
 const lookDetails = (item) => {
-  proxy.post("/contract/detail", { id: item.contractId }).then((res) => {
+  proxy.post("/contract/detail", { id: item.contractId }).then(async (res) => {
     formData.orderData = res;
     dialogVisible.value = true;
     if (
@@ -927,14 +925,29 @@ const lookDetails = (item) => {
       let productIds = formData.orderData.contractProductList.map(
         (x) => x.productId
       );
-      proxy.getFileData({
+
+      const productAllFile = await proxy.getFileData({
         businessIdList: productIds,
-        data: formData.orderData.contractProductList,
-        att: "productId",
-        businessType: "0",
-        fileAtt: "productFile",
-        filePathAtt: "fileUrl",
+        getAll: true,
       });
+      for (let i = 0; i < formData.orderData.contractProductList.length; i++) {
+        const ele = formData.orderData.contractProductList[i];
+        for (const key in productAllFile) {
+          if (
+            ele.productId == key &&
+            productAllFile[ele.productId] &&
+            productAllFile[ele.productId].length > 0
+          ) {
+            ele.productFile = productAllFile[ele.productId].filter(
+              (x) => x.businessType == "0"
+            );
+            if (ele.productFile && ele.productFile.length > 0) {
+              ele.fileUrl = ele.productFile[0].fileUrl;
+            }
+            break;
+          }
+        }
+      }
 
       proxy
         .getFileData({
@@ -942,31 +955,59 @@ const lookDetails = (item) => {
           getAll: true,
         })
         .then((fileObj) => {
-          for (
-            let i = 0;
-            i < formData.orderData.contractProductList.length;
-            i++
-          ) {
-            const ele = formData.orderData.contractProductList[i];
-            for (const key in fileObj) {
-              if (
-                ele.id == key &&
-                fileObj[ele.id] &&
-                fileObj[ele.id].length > 0
-              ) {
-                ele.fileListOne = fileObj[ele.id].filter(
-                  (x) => x.businessType == "0"
-                );
-                if (ele.fileListOne && ele.fileListOne.length > 0) {
-                  ele.imageUrl = ele.fileListOne[0].fileUrl;
+          if (fileObj && Object.keys(fileObj).length > 0) {
+            for (
+              let i = 0;
+              i < formData.orderData.contractProductList.length;
+              i++
+            ) {
+              const ele = formData.orderData.contractProductList[i];
+              for (const key in fileObj) {
+                if (
+                  ele.id == key &&
+                  fileObj[ele.id] &&
+                  fileObj[ele.id].length > 0
+                ) {
+                  let imageUrlList = fileObj[ele.id].filter(
+                    (x) => x.businessType == "0"
+                  );
+                  if (imageUrlList && imageUrlList.length > 0) {
+                    ele.imageUrl = imageUrlList[0].fileUrl;
+                  }
+                  ele.prodFileList = fileObj[ele.id]
+                    .filter((x) => x.businessType == "1")
+                    .map((x) => ({ ...x, name: x.fileName, url: x.fileUrl }));
+                  if (ele.prodFileList && ele.prodFileList.length > 0) {
+                    ele.isShowProductFile = false;
+                  } else {
+                    ele.isShowProductFile = true;
+                    if (productAllFile[ele.productId]) {
+                      ele.fileListOne = productAllFile[ele.productId].filter(
+                        (x) => x.businessType == "2"
+                      );
+                    }
+                  }
                 }
-                ele.prodFileList = fileObj[ele.id]
-                  .filter((x) => x.businessType == "1")
-                  .map((x) => ({ ...x, name: x.fileName, url: x.fileUrl }));
-                if (ele.prodFileList && ele.prodFileList.length > 0) {
-                  ele.isShowProductFile = false;
-                } else {
-                  ele.isShowProductFile = true;
+              }
+            }
+          } else {
+            for (
+              let i = 0;
+              i < formData.orderData.contractProductList.length;
+              i++
+            ) {
+              const ele = formData.orderData.contractProductList[i];
+              ele.isShowProductFile = true;
+              for (const key in productAllFile) {
+                if (
+                  ele.productId == key &&
+                  productAllFile[ele.productId] &&
+                  productAllFile[ele.productId].length > 0
+                ) {
+                  ele.fileListOne = productAllFile[ele.productId].filter(
+                    (x) => x.businessType == "2"
+                  );
+                  break;
                 }
               }
             }

+ 9 - 9
src/views/MES/productionTask/index.vue

@@ -187,10 +187,10 @@
                     <div style="font-weight:700">产品图</div>
                     <img v-if="item.fileList &&item.fileList.length > 0" class="bigImg" :src="item.fileList[0].fileUrl" alt="">
                   </div>
-                  <div style="margin-top:20px">
+                  <!-- <div style="margin-top:20px">
                     <div style="font-weight:700">设计图</div>
                     <img v-if="item.fileListOne &&item.fileListOne.length > 0" class="bigImg" :src="item.fileListOne[0].fileUrl" alt="">
-                  </div>
+                  </div> -->
                 </td>
                 <td style="height:60px;vertical-align:top">
                   <div>
@@ -573,13 +573,13 @@ const config = ref([
       width: 80,
     },
   },
-  {
-    attrs: {
-      label: "设计图",
-      slot: "picOne",
-      width: 80,
-    },
-  },
+  // {
+  //   attrs: {
+  //     label: "设计图",
+  //     slot: "picOne",
+  //     width: 80,
+  //   },
+  // },
   {
     attrs: {
       label: "产品编码",

+ 9 - 9
src/views/MES/productionTask/selectProductionTask.vue

@@ -161,10 +161,10 @@
                     <div style="font-weight:700">产品图</div>
                     <img v-if="item.fileList &&item.fileList.length > 0" class="bigImg" :src="item.fileList[0].fileUrl" alt="">
                   </div>
-                  <div style="margin-top:20px">
+                  <!-- <div style="margin-top:20px">
                     <div style="font-weight:700">设计图</div>
                     <img v-if="item.fileListOne &&item.fileListOne.length > 0" class="bigImg" :src="item.fileListOne[0].fileUrl" alt="">
-                  </div>
+                  </div> -->
                 </td>
                 <td style="height:60px;vertical-align:top">
                   <div>
@@ -541,13 +541,13 @@ const config = ref([
       width: 80,
     },
   },
-  {
-    attrs: {
-      label: "设计图",
-      slot: "picOne",
-      width: 80,
-    },
-  },
+  // {
+  //   attrs: {
+  //     label: "设计图",
+  //     slot: "picOne",
+  //     width: 80,
+  //   },
+  // },
   {
     attrs: {
       label: "产品编码",

+ 6 - 6
src/views/MES/productionWorkOrder/index.vue

@@ -136,12 +136,12 @@ const config = ref([
       prop: "code",
     },
   },
-  {
-    attrs: {
-      label: "设计图",
-      prop: "code",
-    },
-  },
+  // {
+  //   attrs: {
+  //     label: "设计图",
+  //     prop: "code",
+  //   },
+  // },
   {
     attrs: {
       label: "产品图片",

+ 1 - 1
src/views/dataBoard/main/productAnalysis.vue

@@ -17,7 +17,7 @@
         <el-table-column label="产品" fixed align="center">
           <el-table-column label="产品名称" prop="productName" min-width="150">
           </el-table-column>
-          <!-- <el-table-column label="销售指导价" prop="expenditureAmount" width="120">
+          <!-- <el-table-column label="销售业务成本单价" prop="expenditureAmount" width="120">
             <template #default="{ row }">
               <div>   {{ moneyFormat(row.expenditureAmount ,2) }}</div>
             </template>

+ 4 - 6
src/views/index.vue

@@ -237,22 +237,20 @@
                 </template>
               </el-table-column>
               <el-table-column prop="productColor" label="颜色" width="100" />
-              <el-table-column label="设计图稿" width="80">
+              <!-- <el-table-column label="设计图稿" width="80">
                 <template #default="{ row, $index }">
                   <div style="width: 100%">
                     <el-upload :action="uploadUrl" accept=".gif, .jpeg, .jpg, .png" :show-file-list="false" :data="uploadData"
                                :before-upload="(file)=>handleBeforeUpload(file,$index)" :on-success="()=>handleSuccess($index)">
                       <div v-loading="row.imgLoading">
                         <img v-if="row.imageUrl" :src="row.imageUrl" class="pic" />
-                        <!-- <el-icon v-else class="avatar-uploader-icon">
-                          <Plus />
-                        </el-icon> -->
+                       
                       </div>
                     </el-upload>
                   </div>
                 </template>
-              </el-table-column>
-              <el-table-column label="生产文件" width="140">
+              </el-table-column> -->
+              <el-table-column label="生产plt文件" width="140">
                 <template #default="{ row, $index }">
                   <div style="width:100%">
                     <div v-if="row.isShowProductFile &&row.fileListOne && row.fileListOne.length > 0">

+ 29 - 29
src/views/production/project/technology/index.vue

@@ -301,35 +301,35 @@ const formConfig = computed(() => {
       prop: "name",
       label: "产线名称",
     },
-    {
-      type: "radio",
-      prop: "isBatchMode",
-      label: "批量模式",
-      data: [
-        {
-          dictKey: "0",
-          dictValue: "关闭批量模式",
-        },
-        {
-          dictKey: "1",
-          dictValue: "开启批量模式",
-        },
-      ],
-      fn: (val) => {
-        if (val == "0") {
-          formData.data.productionTaskId = "";
-        }
-      },
-    },
-    {
-      type: "select",
-      prop: "productionTaskId",
-      label: "生产任务",
-      data: taskData.value,
-      itemWidth: 100,
-      multiple: false,
-      isShow: formData.data.isBatchMode == "1",
-    },
+    // {
+    //   type: "radio",
+    //   prop: "isBatchMode",
+    //   label: "批量模式",
+    //   data: [
+    //     {
+    //       dictKey: "0",
+    //       dictValue: "关闭批量模式",
+    //     },
+    //     {
+    //       dictKey: "1",
+    //       dictValue: "开启批量模式",
+    //     },
+    //   ],
+    //   fn: (val) => {
+    //     if (val == "0") {
+    //       formData.data.productionTaskId = "";
+    //     }
+    //   },
+    // },
+    // {
+    //   type: "select",
+    //   prop: "productionTaskId",
+    //   label: "生产任务",
+    //   data: taskData.value,
+    //   itemWidth: 100,
+    //   multiple: false,
+    //   isShow: formData.data.isBatchMode == "1",
+    // },
     // {
     //   type: "slot",
     //   slotName: "lineSlot",

+ 1 - 1
src/views/salesMange/afterSales/SelectContractProduct.vue

@@ -327,7 +327,7 @@ const formConfig = computed(() => {
       type: "selectInput",
       prop: "price",
       selectProp: "currency",
-      label: "销售指导价",
+      label: "销售业务成本单价",
       itemWidth: 50,
       style: {
         width: "100%",