Procházet zdrojové kódy

修改报价管理

damon227 před 1 rokem
rodič
revize
3b5570e854

+ 9 - 0
src/api/quoted.js

@@ -25,3 +25,12 @@ export function revoke (data) {
     data: data
   })
 }
+
+// 报价完成
+export function updateFinish (data) {
+  return request({
+    url: request.adornUrl(`/biz-service/quoted/updateFinish`),
+    method: 'post',
+    data: data
+  })
+}

+ 8 - 7
src/utils/enums.js

@@ -50,13 +50,14 @@ export const approveStateOption = [
 // 项目状态
 export const projectStateOption = [
     {label: '待报价', value: '1'},
-    {label: '报价中', value: '2'},
-    {label: '初次报价完成', value: '3'},
-    {label: '精确报价完成', value: '4'},
-    {label: '报价取消', value: '5'},
-    {label: '报价成功', value: '6'},
-    {label: '初次重新报价', value: '7'},
-    {label: '精准重新报价', value: '8'}
+    {label: '初次报价中', value: '2'},
+    {label: '初次报价待授权', value: '3'},
+    {label: '初次报价完成', value: '4'},
+    {label: '精确报价中', value: '5'},
+    {label: '精确报价待授权', value: '6'},
+    {label: '精确报价完成', value: '7'},
+    {label: '报价取消', value: '8'},
+    {label: '报价成功', value: '9'}
 ]
 
 // 处理状态

+ 76 - 10
src/views/modules/cus/quoted-detail.vue

@@ -75,6 +75,7 @@
               header-align="center"
               align="center"
               :show-tooltip-when-overflow="true"
+              min-width="160px"
               label="物料名称"
             >
             </el-table-column>
@@ -147,16 +148,17 @@
               header-align="center"
               align="center"
               :show-tooltip-when-overflow="true"
+              min-width="200px"
               label="备注"
             >
             </el-table-column>
             <!-- 初次报价 -->
-            <div>
+            <template>
               <el-table-column
                 prop="materialPrice"
                 header-align="center"
                 align="center"
-                min-width="160px"
+                min-width="120px"
                 label="原材料费"
               >
               </el-table-column>
@@ -164,7 +166,7 @@
                 prop="processPrice"
                 header-align="center"
                 align="center"
-                min-width="160px"
+                min-width="120px"
                 label="生产加工费"
               >
               </el-table-column>
@@ -172,18 +174,50 @@
                 prop="handlePrice"
                 header-align="center"
                 align="center"
-                min-width="160px"
+                min-width="120px"
                 label="热表处理费"
               >
               </el-table-column>
-            </div>
+              <el-table-column
+                prop="detectionPrice"
+                header-align="center"
+                align="center"
+                min-width="120px"
+                label="检测费"
+              >
+              </el-table-column>
+              <el-table-column
+                prop="reviewPrice"
+                header-align="center"
+                align="center"
+                min-width="120px"
+                label="复验费"
+              >
+              </el-table-column>
+              <el-table-column
+                prop="unitPrice"
+                header-align="center"
+                align="center"
+                min-width="120px"
+                label="单价费"
+              >
+              </el-table-column>
+              <el-table-column
+                prop="elsePrice"
+                header-align="center"
+                align="center"
+                min-width="120px"
+                label="其他费"
+              >
+              </el-table-column>
+            </template>
             <!-- 精准报价 -->
-            <div>
+            <template>
               <el-table-column
                 prop="precisionMaterialPrice"
                 header-align="center"
                 align="center"
-                min-width="160px"
+                min-width="120px"
                 label="精准原材料费"
               >
               </el-table-column>
@@ -191,7 +225,7 @@
                 prop="precisionProcessPrice"
                 header-align="center"
                 align="center"
-                min-width="160px"
+                min-width="120px"
                 label="精准生产加工费"
               >
               </el-table-column>
@@ -199,11 +233,43 @@
                 prop="precisionHandlePrice"
                 header-align="center"
                 align="center"
-                min-width="160px"
+                min-width="120px"
                 label="精准热表处理费"
               >
               </el-table-column>
-            </div>
+               <el-table-column
+                prop="precisionDetectionPrice"
+                header-align="center"
+                align="center"
+                min-width="120px"
+                label="精准检测费"
+              >
+              </el-table-column>
+               <el-table-column
+                prop="precisionReviewPrice"
+                header-align="center"
+                align="center"
+                min-width="120px"
+                label="精确复验费"
+              >
+              </el-table-column>
+               <el-table-column
+                prop="precisionUnitPrice"
+                header-align="center"
+                align="center"
+                min-width="120px"
+                label="精准单价费"
+              >
+              </el-table-column>
+               <el-table-column
+                prop="precisionElsePrice"
+                header-align="center"
+                align="center"
+                min-width="120px"
+                label="精确其他费"
+              >
+              </el-table-column>
+            </template>
           </el-table>
         </el-row>
       </div>

+ 277 - 99
src/views/modules/cus/quoted-price.vue

@@ -94,7 +94,7 @@
       </el-row>
       <div>
         <div class="title">BOM物料明细报价</div>
-        <el-row>
+        <el-row class = "price_row">
           <el-table
             :data="dataForm.quotedPriceProductList"
             border
@@ -105,6 +105,7 @@
               type="index"
               width="50"
               align="center"
+              fixed="left"
             >
             </el-table-column>
             <el-table-column
@@ -112,89 +113,149 @@
               header-align="center"
               align="center"
               :show-tooltip-when-overflow="true"
+              min-width="200px"
               label="物料名称"
+              fixed="left"
             >
             </el-table-column>
-            <el-table-column
-              prop="productSpec"
-              header-align="center"
-              align="center"
-              :show-tooltip-when-overflow="true"
-              label="物料规格"
-            >
-            </el-table-column>
-            <el-table-column
-              prop="mapNumber"
-              header-align="center"
-              align="center"
-              :show-tooltip-when-overflow="true"
-              label="主图号"
-            >
-            </el-table-column>
-            <el-table-column
-              prop="materials"
-              header-align="center"
-              align="center"
-              :show-tooltip-when-overflow="true"
-              label="材料"
-            >
-            </el-table-column>
-            <el-table-column
-              prop="cnt"
-              header-align="center"
-              align="center"
-              :show-tooltip-when-overflow="true"
-              label="单套数量"
-            >
-            </el-table-column>
-            <el-table-column
-              prop="unit"
-              header-align="center"
-              align="center"
-              :show-tooltip-when-overflow="true"
-              label="单位"
-            >
-            </el-table-column>
-            <el-table-column
-              prop="size"
-              header-align="center"
-              align="center"
-              :show-tooltip-when-overflow="true"
-              label="物料尺寸"
-            >
-            </el-table-column>
-            <el-table-column
-              prop="developedSize"
-              header-align="center"
-              align="center"
-              :show-tooltip-when-overflow="true"
-              label="展开尺寸"
-            >
-            </el-table-column>
-            <el-table-column
-              prop="surfaceTreatment"
-              header-align="center"
-              align="center"
-              :show-tooltip-when-overflow="true"
-              label="表面处理"
-            >
-            </el-table-column>
-            <el-table-column
-              prop="notes"
-              header-align="center"
-              align="center"
-              :show-tooltip-when-overflow="true"
-              label="备注"
-            >
-            </el-table-column>
+
+            <!-- 精准报价 -->
+            <template v-if="type === 'second' || type === 'restart'">
+              <el-table-column
+                prop=""
+                header-align="center"
+                align="center"
+                min-width="140px"
+                label="精准原材料费"
+              >
+                <template slot-scope="scope">
+                  <el-input-number
+                    size="mini"
+                    :precision="2"
+                    :controls="false"
+                    placeholder="请输入"
+                    v-model="scope.row.precisionMaterialPrice"
+                    @change="inputNumChangeHandleSecond"
+                  ></el-input-number>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop=""
+                header-align="center"
+                align="center"
+                min-width="140px"
+                label="精准生产加工费"
+              >
+                <template slot-scope="scope">
+                  <el-input-number
+                    size="mini"
+                    :precision="2"
+                    :controls="false"
+                    placeholder="请输入"
+                    v-model="scope.row.precisionProcessPrice"
+                    @change="inputNumChangeHandleSecond"
+                  ></el-input-number>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop=""
+                header-align="center"
+                align="center"
+                min-width="140px"
+                label="精准热表处理费"
+              >
+                <template slot-scope="scope">
+                  <el-input-number
+                    size="mini"
+                    :precision="2"
+                    :controls="false"
+                    placeholder="请输入"
+                    v-model="scope.row.precisionHandlePrice"
+                    @change="inputNumChangeHandleSecond"
+                  ></el-input-number>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop=""
+                header-align="center"
+                align="center"
+                min-width="140px"
+                label="精准检测费"
+              >
+                <template slot-scope="scope">
+                  <el-input-number
+                    size="mini"
+                    :precision="2"
+                    :controls="false"
+                    placeholder="请输入"
+                    v-model="scope.row.precisionDetectionPrice"
+                    @change="inputNumChangeHandleSecond"
+                  ></el-input-number>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop=""
+                header-align="center"
+                align="center"
+                min-width="140px"
+                label="精确复验费"
+              >
+                <template slot-scope="scope">
+                  <el-input-number
+                    size="mini"
+                    :precision="2"
+                    :controls="false"
+                    placeholder="请输入"
+                    v-model="scope.row.precisionReviewPrice"
+                    @change="inputNumChangeHandleSecond"
+                  ></el-input-number>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop=""
+                header-align="center"
+                align="center"
+                min-width="140px"
+                label="精准单价费"
+              >
+                <template slot-scope="scope">
+                  <el-input-number
+                    size="mini"
+                    :precision="2"
+                    :controls="false"
+                    placeholder="请输入"
+                    v-model="scope.row.precisionUnitPrice"
+                    @change="inputNumChangeHandleSecond"
+                  ></el-input-number>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop=""
+                header-align="center"
+                align="center"
+                min-width="140px"
+                label="精确其他费"
+              >
+                <template slot-scope="scope">
+                  <el-input-number
+                    size="mini"
+                    :precision="2"
+                    :controls="false"
+                    placeholder="请输入"
+                    v-model="scope.row.precisionElsePrice"
+                    @change="inputNumChangeHandleSecond"
+                  ></el-input-number>
+                </template>
+              </el-table-column>
+            </template>
+            
             <!-- 初次报价 -->
-            <div>
+            <template>
               <el-table-column
                 prop=""
                 header-align="center"
                 align="center"
-                min-width="160px"
-                fixed="right"
+                min-width="140px"
                 label="原材料费"
               >
                 <template slot-scope="scope">
@@ -213,8 +274,7 @@
                 prop=""
                 header-align="center"
                 align="center"
-                min-width="160px"
-                fixed="right"
+                min-width="140px"
                 label="生产加工费"
               >
                 <template slot-scope="scope">
@@ -233,8 +293,7 @@
                 prop=""
                 header-align="center"
                 align="center"
-                min-width="160px"
-                fixed="right"
+                min-width="140px"
                 label="热表处理费"
               >
                 <template slot-scope="scope">
@@ -249,25 +308,41 @@
                   ></el-input-number>
                 </template>
               </el-table-column>
-            </div>
-            <!-- 精准报价 -->
-            <div v-if="type === 'second' || type === 'restart'">
               <el-table-column
                 prop=""
                 header-align="center"
                 align="center"
-                min-width="160px"
-                fixed="right"
-                label="精准原材料费"
+                min-width="140px"
+                label="检测费"
+              >
+                <template slot-scope="scope">
+                  <el-input-number
+                    :disabled="type === 'second'"
+                    size="mini"
+                    :precision="2"
+                    :controls="false"
+                    placeholder="请输入"
+                    v-model="scope.row.detectionPrice"
+                    @change="inputNumChangeHandle"
+                  ></el-input-number>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop=""
+                header-align="center"
+                align="center"
+                min-width="140px"
+                label="复验费"
               >
                 <template slot-scope="scope">
                   <el-input-number
+                    :disabled="type === 'second'"
                     size="mini"
                     :precision="2"
                     :controls="false"
                     placeholder="请输入"
-                    v-model="scope.row.precisionMaterialPrice"
-                    @change="inputNumChangeHandleSecond"
+                    v-model="scope.row.reviewPrice"
+                    @change="inputNumChangeHandle"
                   ></el-input-number>
                 </template>
               </el-table-column>
@@ -275,18 +350,18 @@
                 prop=""
                 header-align="center"
                 align="center"
-                min-width="160px"
-                fixed="right"
-                label="精准生产加工费"
+                min-width="140px"
+                label="单价费"
               >
                 <template slot-scope="scope">
                   <el-input-number
+                    :disabled="type === 'second'"
                     size="mini"
                     :precision="2"
                     :controls="false"
                     placeholder="请输入"
-                    v-model="scope.row.precisionProcessPrice"
-                    @change="inputNumChangeHandleSecond"
+                    v-model="scope.row.unitPrice"
+                    @change="inputNumChangeHandle"
                   ></el-input-number>
                 </template>
               </el-table-column>
@@ -294,22 +369,97 @@
                 prop=""
                 header-align="center"
                 align="center"
-                min-width="160px"
-                fixed="right"
-                label="精准热表处理费"
+                min-width="140px"
+                label="其他费"
               >
                 <template slot-scope="scope">
                   <el-input-number
+                    :disabled="type === 'second'"
                     size="mini"
                     :precision="2"
                     :controls="false"
                     placeholder="请输入"
-                    v-model="scope.row.precisionHandlePrice"
-                    @change="inputNumChangeHandleSecond"
+                    v-model="scope.row.elsePrice"
+                    @change="inputNumChangeHandle"
                   ></el-input-number>
                 </template>
               </el-table-column>
-            </div>
+            </template>
+
+            <el-table-column
+              prop="productSpec"
+              header-align="center"
+              align="center"
+              :show-tooltip-when-overflow="true"
+              label="物料规格"
+            >
+            </el-table-column>
+            <el-table-column
+              prop="mapNumber"
+              header-align="center"
+              align="center"
+              :show-tooltip-when-overflow="true"
+              label="主图号"
+            >
+            </el-table-column>
+            <el-table-column
+              prop="materials"
+              header-align="center"
+              align="center"
+              :show-tooltip-when-overflow="true"
+              label="材料"
+            >
+            </el-table-column>
+            <el-table-column
+              prop="cnt"
+              header-align="center"
+              align="center"
+              :show-tooltip-when-overflow="true"
+              label="单套数量"
+            >
+            </el-table-column>
+            <el-table-column
+              prop="unit"
+              header-align="center"
+              align="center"
+              :show-tooltip-when-overflow="true"
+              label="单位"
+            >
+            </el-table-column>
+            <el-table-column
+              prop="size"
+              header-align="center"
+              align="center"
+              :show-tooltip-when-overflow="true"
+              label="物料尺寸"
+            >
+            </el-table-column>
+            <el-table-column
+              prop="developedSize"
+              header-align="center"
+              align="center"
+              :show-tooltip-when-overflow="true"
+              label="展开尺寸"
+            >
+            </el-table-column>
+            <el-table-column
+              prop="surfaceTreatment"
+              header-align="center"
+              align="center"
+              :show-tooltip-when-overflow="true"
+              label="表面处理"
+            >
+            </el-table-column>
+            <el-table-column
+              prop="notes"
+              header-align="center"
+              align="center"
+              :show-tooltip-when-overflow="true"
+              label="备注"
+            >
+            </el-table-column>
+
+            
           </el-table>
         </el-row>
 
@@ -764,6 +914,18 @@ export default {
         if (item.processPrice) {
           tempMaterialCost += item.processPrice
         }
+        if (item.detectionPrice) {
+          tempMaterialCost += item.detectionPrice
+        }
+        if (item.reviewPrice) {
+          tempMaterialCost += item.reviewPrice
+        }
+        if (item.unitPrice) {
+          tempMaterialCost += item.unitPrice
+        }
+        if (item.elsePrice) {
+          tempMaterialCost += item.elsePrice
+        }
       })
       this.dataForm.materialCost = tempMaterialCost
 
@@ -786,6 +948,18 @@ export default {
         if (item.precisionProcessPrice) {
           tempMaterialCost += item.precisionProcessPrice
         }
+        if (item.precisionDetectionPrice) {
+          tempMaterialCost += item.precisionDetectionPrice
+        }
+        if (item.precisionReviewPrice) {
+          tempMaterialCost += item.precisionReviewPrice
+        }
+        if (item.precisionUnitPrice) {
+          tempMaterialCost += item.precisionUnitPrice
+        }
+        if (item.precisionElsePrice) {
+          tempMaterialCost += item.precisionElsePrice
+        }
       })
       this.dataForm.materialCostSecond = tempMaterialCost
 
@@ -981,6 +1155,10 @@ export default {
   text-align: center;
 }
 
+/deep/ .price_row .el-input-number--mini {
+ width: 100px;
+}
+
 .template_price {
   padding: 10px 0 0 0;
   border: 1px solid #ebeef5;

+ 42 - 9
src/views/modules/cus/quoted.vue

@@ -253,56 +253,63 @@
               >查看</el-button
             >
             <el-button
-              v-if="isAuth('quoted:price:update') && Number(scope.row.approveState) === 0"
+              v-if="isAuth('quoted:price:update') && Number(scope.row.approveState) === 0 && Number(scope.row.state) === 1"
               type="text"
               size="small"
               @click="addOrUpdateHandle(scope.row.priceId)"
               >编辑</el-button
             >
             <el-button
-              v-if="isAuth('quoted:price:revoke') && Number(scope.row.approveState) === 1"
+              v-if="isAuth('quoted:price:revoke') && Number(scope.row.approveState) === 1 && Number(scope.row.state) === 1"
               type="text"
               size="small"
               @click="revokeHandle(scope.row.priceId)"
               >撤回</el-button
             >
             <el-button
-              v-if="isAuth('quoted:price:updateFirst') && Number(scope.row.approveState) === 3 && Number(scope.row.state) < 3"
+              v-if="isAuth('quoted:price:updateFirst') && Number(scope.row.approveState) === 3 && (Number(scope.row.state) === 1 || Number(scope.row.state) === 2)"
               type="text"
               size="small"
               @click="priceHandle(scope.row.priceId,'first')"
               >报价</el-button
             >
             <el-button
-              v-if="isAuth('quoted:price:updateTwo') && Number(scope.row.approveState) === 3 && Number(scope.row.state) < 3"
+              v-if="isAuth('quoted:price:updateTwo') && Number(scope.row.approveState) === 3 && (Number(scope.row.state) === 4 || Number(scope.row.state) === 5)"
               type="text"
               size="small"
               @click="priceHandle(scope.row.priceId,'second')"
               >精准报价</el-button
             >
             <el-button
-              v-if="isAuth('work:clt:insertBatch') && Number(scope.row.approveState) === 3 && Number(scope.row.state) > 6"
+              v-if="isAuth('work:clt:insertBatch') && Number(scope.row.approveState) === 3 && (Number(scope.row.state) === 2 || Number(scope.row.state) === 5)"
               type="text"
               size="small"
               @click="notifyHandle(scope.row.priceId)"
               >通知报价</el-button
             >
-            <el-button
+            <!-- <el-button
               v-if="isAuth('quoted:price:updateRestart') && Number(scope.row.approveState) === 3 && Number(scope.row.state) > 6"
               type="text"
               size="small"
               @click="priceHandle(scope.row.priceId, 'restart')"
               >重新报价</el-button
+            > -->
+            <el-button
+              v-if="isAuth('quoted:price:updateFinish') && Number(scope.row.approveState) === 3 && (Number(scope.row.state) === 2 || Number(scope.row.state === 5))"
+              type="text"
+              size="small"
+              @click="finishHandle(scope.row.priceId)"
+              >报价完成</el-button
             >
             <el-button
-              v-if="isAuth('quoted:price:updateAccredit') && Number(scope.row.approveState) === 3 && (Number(scope.row.state) === 3 || Number(scope.row.state) === 4)"
+              v-if="isAuth('quoted:price:updateAccredit') && Number(scope.row.approveState) === 3 && (Number(scope.row.state) === 3 || Number(scope.row.state) === 6)"
               type="text"
               size="small"
               @click="accreditHandle(scope.row.priceId)"
               >授权</el-button
             >
             <el-button
-              v-if="isAuth('quoted:price:updateResult') && Number(scope.row.approveState) === 3 && (Number(scope.row.state) === 3 || Number(scope.row.state) === 4)"
+              v-if="isAuth('quoted:price:updateResult') && Number(scope.row.approveState) === 3 && (Number(scope.row.state) === 4 || Number(scope.row.state) === 7)"
               type="text"
               size="small"
               @click="resultHandle(scope.row.priceId)"
@@ -341,7 +348,7 @@
 
 <script>
 import OrgComponent from '../common/org-component'
-import {getList, revoke} from '@/api/quoted'
+import {getList, revoke, updateFinish} from '@/api/quoted'
 import QuotedAddOrUpdate from './quoted-add-or-update'
 import {productTypeOption, approveStateOption, projectStateOption, writeStateOption} from '@/utils/enums'
 import QuotedPrice from './quoted-price'
@@ -480,6 +487,32 @@ export default {
         this.$refs.result.init(priceId)
       })
     },
+    finishHandle (priceId) {
+      this.$confirm('是否确认完成报价?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        updateFinish({id: priceId}).then(({data}) => {
+          if (data && data.code === '200') {
+            this.$message({
+              type: 'success',
+              message: '操作成功!'
+            })
+          } else {
+            this.$message({
+              type: 'error',
+              message: data.msg
+            })
+          }
+        })
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '已取消撤回'
+        })
+      })
+    },
     attachDetails (attachList) {
       this.$refs.attachDetail.init(attachList)
     },