Forráskód Böngészése

Merge branch 'develop' of http://code.dashoo.cn/chengjian/opms_frontend into develop

liuyaqi 2 éve
szülő
commit
0179988553

+ 1 - 1
.env.development

@@ -4,7 +4,7 @@ VUE_APP_TENANT=default
 ## websocket地址
 #VUE_APP_WEBSOCKET_URL=ws://192.168.0.252:8899/ws
 ## GateWay地址
-#VUE_APP_MicroSrvProxy_API=http://192.168.0.252:8100/
+#VUE_APP_MicroSrvProxy_API=http://192.168.0.252:8200/
 ## 登录验证微服务名称
 #VUE_APP_AdminPath=dashoo.labsop.lims_latest_opms_admin
 ## 业务接口微服务名称

+ 1 - 0
package.json

@@ -5,6 +5,7 @@
   "author": "chuzhixin",
   "scripts": {
     "serve": "vue-cli-service serve --mode development",
+    "build:dev": "vue-cli-service build --mode development",
     "build": "vue-cli-service build -mode production",
     "lint": "vue-cli-service lint",
     "lint:eslint": "eslint {src,mock}/**/*.{vue,js} --fix",

+ 33 - 8
src/views/proj/business/components/BusinessGradation.vue

@@ -1,12 +1,14 @@
 <template>
   <div style="display: inline-block; margin: 0 10px">
+    <!--未在审批中 且级别为 B、C、储备 可升级-->
     <el-button
       v-permissions="['proj:business:upgrade']"
-      :disabled="!['20', '30'].includes(businessInfo.nboType) || businessInfo.approStatus === '20'"
+      :disabled="!['20', '30', '50'].includes(businessInfo.nboType) || businessInfo.approStatus === '20'"
       type="primary"
       @click="handleClick('up')">
       升级
     </el-button>
+    <!--未在审批中 且级别为 A、B 可J降级-->
     <el-button
       v-permissions="['proj:business:downgrade']"
       :disabled="!['10', '20'].includes(businessInfo.nboType) || businessInfo.approStatus === '20'"
@@ -55,7 +57,7 @@
             </el-form-item>
           </el-col>
         </el-row>
-        <el-row :gutter="20">
+        <el-row v-if="!(type === 'up' && form.nboType === '30')" :gutter="20">
           <el-col :span="8">
             <el-form-item label="技术支持人员" prop="technicalSupportName" :required="type === 'up'">
               <el-input v-model="form.technicalSupportName" />
@@ -96,14 +98,14 @@
         <!--    B-A    采购方式	采购时间	是否采纳大数技术参数(上传附件)	决策部门	决策人员	经销商与客户历史成交信息	经销商销售人员	维护部门及人员-->
         <el-row v-if="type === 'up' && form.nboType === '10'" :gutter="20">
           <el-col :span="8">
-            <el-form-item label="采购方式" prop="purchasingWay">
+            <el-form-item label="采购方式" prop="purchasingWay" :required="type === 'up' && form.nboType === '10'">
               <el-select v-model="form.purchasingWay" placeholder="请选择" style="width: 100%">
                 <el-option v-for="item in purchasingWayOptions" :key="item.key" :label="item.value" :value="item.key" />
               </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="采购时间" prop="purchasingTime">
+            <el-form-item label="采购时间" prop="purchasingTime" :required="type === 'up' && form.nboType === '10'">
               <el-date-picker
                 v-model="form.purchasingTime"
                 placeholder="选择日期"
@@ -137,7 +139,10 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="是否采纳大数技术参数   " prop="isAdoptDashoo">
+            <el-form-item
+              label="是否采纳大数技术参数   "
+              prop="isAdoptDashoo"
+              :required="type === 'up' && form.nboType === '10'">
               <el-radio-group v-model="form.isAdoptDashoo" style="width: 100%">
                 <el-radio label="10">是</el-radio>
                 <el-radio label="20">否</el-radio>
@@ -146,7 +151,16 @@
           </el-col>
         </el-row>
 
-        <el-form-item :label="title + '原因'" prop="remark">
+        <el-form-item v-if="type === 'up' && form.nboType === '30'" label="转化原因" prop="projConversionReason">
+          <el-input
+            v-model="form.projConversionReason"
+            maxlength="300"
+            placeholder="请输入转化原因"
+            rows="3"
+            show-word-limit
+            type="textarea" />
+        </el-form-item>
+        <el-form-item v-else :label="title + '原因'" prop="remark">
           <el-input
             v-model="form.remark"
             maxlength="300"
@@ -203,6 +217,10 @@
         if (!value && this.type === 'up') callback(new Error('不能为空'))
         else callback()
       }
+      const validateUpgradeA = (rule, value, callback) => {
+        if (!value && this.type === 'up' && this.form.nboType === '10') callback(new Error('不能为空'))
+        else callback()
+      }
       return {
         title: '项目',
         type: '',
@@ -238,7 +256,7 @@
         rules: {
           nboType: [{ required: true, trigger: ['blur', 'change'], message: '请选择项目级别' }],
           nboBudget: [{ required: true, trigger: ['blur', 'change'], message: '请输入项目预算' }],
-          distributorName: [{ required: true, trigger: ['blur', 'change'], message: '请选择经销商/代理商' }],
+          // distributorName: [{ required: true, trigger: ['blur', 'change'], message: '请选择经销商/代理商' }],
           technicalSupportName: [
             { validator: validateTechnicalSupport, trigger: ['blur', 'change'], message: '请输入技术支持人员' },
           ],
@@ -248,7 +266,13 @@
           technicalSupportTime: [
             { validator: validateTechnicalSupport, trigger: ['blur', 'change'], message: '请选择技术支持时间' },
           ],
-          remark: [{ required: true, trigger: ['blur', 'change'], message: '请输入原因' }],
+
+          purchasingTime: [{ validator: validateUpgradeA, trigger: ['blur', 'change'], message: '请选择采购时间' }],
+          purchasingWay: [{ validator: validateUpgradeA, trigger: ['blur', 'change'], message: '请选择采购方式' }],
+          isAdoptDashoo: [{ validator: validateUpgradeA, trigger: ['blur', 'change'], message: '请选择是或否' }],
+
+          // remark: [{ required: true, trigger: ['blur', 'change'], message: '请输入原因' }],
+          projConversionReason: [{ required: true, trigger: ['blur', 'change'], message: '请输入转化原因' }],
         },
         dialogFormVisible: false,
         yesOrNoOptions: [],
@@ -305,6 +329,7 @@
         this.form.technicalSupportContent = undefined
         this.form.technicalSupportTime = undefined
         this.form.remark = undefined
+        this.form.isAdoptDashoo = '20'
         this.customerInfo = { custId: this.form.custId, custName: this.form.custName }
         this.queryContact = { custId: this.form.custId, isDecision: '10' }
         this.dialogFormVisible = true

+ 2 - 2
src/views/proj/business/components/DetailsContract.vue

@@ -119,14 +119,14 @@
           },
           {
             label: '合同签订时间',
-            width: '120px',
+            width: '180px',
             prop: 'createdTime',
             sortable: false,
             disableCheck: false,
           },
           {
             label: '合同有效时间',
-            width: '200px',
+            width: '180px',
             prop: 'contractStartTime',
             sortable: false,
             disableCheck: false,

+ 1 - 6
src/views/proj/business/components/ProductTable.vue

@@ -25,12 +25,7 @@
               @change="handleChange(row)" />
           </span>
           <span v-else-if="item.prop == 'prodNum'">
-            <el-input
-              v-model.trim="row.prodNum"
-              :min="1"
-              onkeyup="value=value.replace(/[^\d]/g,'')"
-              size="mini"
-              @change="handleChange(row)" />
+            <el-input v-model.number.trim="row.prodNum" :min="1" size="mini" @change="handleChange(row)" />
           </span>
           <span v-else-if="item.label == '合计'">
             {{ calculatedDiscount(row.prodPrice, row.prodNum) }}

+ 17 - 6
src/views/proj/business/index.vue

@@ -74,7 +74,7 @@
         :key="index"
         align="center"
         :label="item.label"
-        :min-width="item.width"
+        :min-width="item.minWidth"
         :prop="item.prop"
         show-overflow-tooltip
         :sortable="item.sortable"
@@ -117,6 +117,9 @@
           <span v-else-if="item.prop === 'nboBudget'">
             {{ formatPrice(row.nboBudget) }}
           </span>
+          <span v-else-if="item.prop === 'contractAmount'">
+            {{ formatPrice(row.contractAmount) }}
+          </span>
           <span v-else-if="item.prop === 'filingTime'">
             {{ parseTime(row.filingTime, '{y}-{m}-{d} {h}:{i}') }}
           </span>
@@ -126,6 +129,12 @@
           <span v-else-if="item.prop === 'nextFollowTime'">
             {{ parseTime(row.nextFollowTime, '{y}-{m}-{d} {h}:{i}') }}
           </span>
+          <span v-else-if="item.prop === 'projClosingTime'">
+            {{ parseTime(row.projClosingTime, '{y}-{m}-{d} {h}:{i}') }}
+          </span>
+          <span v-else-if="item.prop === 'projConversionTime'">
+            {{ parseTime(row.projConversionTime, '{y}-{m}-{d} {h}:{i}') }}
+          </span>
           <span v-else>{{ row[item.prop] }}</span>
         </template>
       </el-table-column>
@@ -181,8 +190,8 @@
           {
             label: '项目名称',
             prop: 'nboName',
-            width: '160px',
-            minWidth: '160px',
+            width: '180px',
+            minWidth: '180px',
             sortable: false,
             disableCheck: true,
           },
@@ -204,7 +213,7 @@
           {
             label: '客户名称',
             prop: 'custName',
-            width: '200px',
+            width: 'auto',
             minWidth: '180px',
           },
           {
@@ -225,7 +234,8 @@
           {
             label: '经销商/代理商',
             prop: 'distributorName',
-            width: '160px',
+            minWidth: '160px',
+            width: 'auto',
           },
           {
             label: '产品线',
@@ -421,6 +431,7 @@
           .catch((err) => console.log(err))
       },
       handleTabClick() {
+        this.queryForm.pageNum = 1
         console.log(this.activeName)
         if (this.activeName !== 'all') {
           this.queryForm.nboType = this.activeName
@@ -501,7 +512,7 @@
       /** 重置按钮操作 */
       resetQuery() {
         this.resetForm('queryForm')
-        this.fetchData()
+        this.handleTabClick()
       },
       setSelectRows(val) {
         this.selectRows = val