001295 2 жил өмнө
parent
commit
4f7589b546

+ 17 - 8
src/api/business/spd/bo/basic.js

@@ -41,6 +41,15 @@ export function updateBasic(data) {
   })
 }
 
+// 修改商机流程信息
+export function updateBasicFlow(data) {
+  return request({
+    url: '/mk/bo/flow',
+    method: 'put',
+    data: data
+  })
+}
+
 
 // 删除商机基础信息
 export function delBasic(id) {
@@ -50,14 +59,6 @@ export function delBasic(id) {
   })
 }
 
-//查询固定商机的行动列表
-export function getBehaviorList(id) {
-  return request({
-    url: '/mk/bo/basic/getBehaviorList/' + id,
-    method: 'get'
-  })
-}
-
 // 删除商机附件
 export function delAccessory(boId,f,id) {
   return request({
@@ -65,3 +66,11 @@ export function delAccessory(boId,f,id) {
     method: 'delete'
   })
 }
+
+//流程下一步
+export function nextFlow(boId,boStage) {
+  return request({
+    url: '/mk/bo/basic/flow?boId=' + boId + '&boStage=' + boStage,
+    method: 'put'
+  })
+}

+ 429 - 152
src/views/business/spd/bo/basic/details.vue

@@ -1,6 +1,7 @@
 <!-- 商机-详情 -->
 <template>
   <div class="md-content">
+    <!-- 头部信息 -->
     <el-row type="flex" justify="space-between">
       <el-col :span="6">
         <el-button size="small" @click="handleBack">返回</el-button>
@@ -45,8 +46,9 @@
         </el-col>
       </el-button-group>
     </el-row>
-
+    <!-- 主多页签 -->
     <el-tabs v-model="masterTabs" @tab-click="masterTabsSwitch">
+      <!-- 基本信息页签 -->
       <el-tab-pane label="基本信息" name="first">
         项目流程
         <el-steps :active="form.basic.boStage" finish-status="success">
@@ -63,12 +65,18 @@
           <el-step title="实施交付"></el-step>
           <el-step title="上线仪式"></el-step>
         </el-steps>
-        <el-button style="margin-top: 12px;" @click="next">下一步</el-button>
-        <el-row>
-          基本信息
-        </el-row>
+        <!-- 流程按钮组 -->
+        <div style = "text-align:right">
+          <el-button type="primary" style="margin-top: 12px;" v-hasPermi="['mk:bo:basic:identify']" @click="next" v-if="form.basic.boStage == 0"> 审核 </el-button>
+          <!-- <el-button style="margin-top: 12px;" @click="before" v-if="form.basic.boStage > 1">上一步</el-button> -->
+          <el-button style="margin-top: 12px;" v-hasPermi="['mk:bo:basic:next']" @click="next" v-if="!(form.basic.boStage == 0 || form.basic.boFlow.projectApproval == 0) && !isUpdate">下一步</el-button>
+        </div>
+        <!-- 基本信息 -->
         <el-form ref="form" :model="form.basic" label-width="80px">
           <el-row>
+            基本信息
+          </el-row>
+          <el-row>
             <el-col :span="8">
               <el-form-item label="商机来源" prop="boSource">
                 <el-select v-model="form.basic.boSource" placeholder="商机来源" :disabled="true">
@@ -102,7 +110,7 @@
           <el-row>
             <el-col :span="8">
               <el-form-item label="医院营收总额" prop="totalHosRevenue">
-                <el-select v-model="form.totalHosRevenue" placeholder="请输入医院营收总额" :disabled="true">
+                <el-select v-model="form.basic.totalHosRevenue" placeholder="请输入医院营收总额" :disabled="true">
                   <el-option
                     v-for="dict in dict.type.mk_bo_total_revenue"
                     :key="dict.value"
@@ -126,20 +134,47 @@
           </el-row>
           <el-row>
             <el-form-item label="商机内容" prop="boContent">
-                <el-input v-model="form.basic.boContent" placeholder="商机内容" :disabled="true"/>
-              </el-form-item>
+              <el-input v-model="form.basic.boContent" placeholder="商机内容" :disabled="true"/>
+            </el-form-item>
           </el-row>
         </el-form>
-        <el-row>
-          流程信息
+        <!-- 编辑按钮组 -->
+        <el-row type="flex" class="row-bg" justify="end">
+          <el-col :span="24">
+            <dev>流程信息</dev>
+          </el-col>
+          <el-col :span="2" v-show="!isUpdate">
+            <div class="grid-content bg-purple">
+              <el-button v-hasPermi="['mk:bo:basic:detail:edit']" @click="modifyButton">修改</el-button>
+            </div>
+          </el-col>
+          <el-col :span="2" v-show="isUpdate">
+            <div class="grid-content bg-purple-light">
+              <el-button v-hasPermi="['mk:bo:basic:detail:edit']" @click="cancelButton">取消</el-button>
+            </div>
+          </el-col>
+          <el-col :span="2" v-show="isUpdate">
+            <div class="grid-content bg-purple">
+              <el-button v-hasPermi="['mk:bo:basic:detail:edit']" @click="saveButton">保存</el-button>
+            </div>
+          </el-col>
         </el-row>
+        <!-- 次多页签 -->
         <el-tabs v-model="secondTabs" @tab-click="secondTabsSwitch">
+          <!-- 阶段动作1 -->
           <el-tab-pane label="阶段动作" name="jd1" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 0">
-            <el-form ref="form" :model="form.basic" :rules="rules">
+            <el-form ref="form" :model="form.basic" :rules="rules" label-width="120px">
               <el-row>
                 <el-col :span="10">
                   <el-form-item label="医院应收总额" prop="totalHosRevenue">
-                    <el-input v-model="form.basic.totalHosRevenue" placeholder="医院应收总额" :disabled="true"/>
+                    <el-select v-model="form.basic.totalHosRevenue" placeholder="请输入医院营收总额" :disabled="true">
+                      <el-option
+                        v-for="dict in dict.type.mk_bo_total_revenue"
+                        :key="dict.value"
+                        :label="dict.label"
+                        :value="dict.value"
+                      ></el-option>
+                    </el-select>
                   </el-form-item>
                 </el-col>
               </el-row>
@@ -152,18 +187,19 @@
               </el-row>
             </el-form>
           </el-tab-pane>
+          <!-- 阶段动作2 -->
           <el-tab-pane label="阶段动作" name="jd2" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 1">
-            <el-form ref="form" :model="form.basic.boFlow" :rules="rules">
+            <el-form ref="form" :model="form.basic.boFlow" :rules="rules" >
               <el-row>
                 项目立项是否通过
-                <el-radio v-model = form.basic.boFlow.projectApproval label="1">是</el-radio>
-                <el-radio v-model = form.basic.boFlow.projectApproval label="0">否</el-radio>
+                <el-radio v-model = form.basic.boFlow.projectApproval label="1" :disabled="!isUpdate">是</el-radio>
+                <el-radio v-model = form.basic.boFlow.projectApproval label="0" :disabled="!isUpdate">否</el-radio>
               </el-row>
               <el-row v-if="form.basic.boFlow.projectApproval == 1">
                 <el-col :span="1.5">
                   <el-input v-model="form.basic.boFlow.businessCouncilAccessoryName" placeholder="请上传商机审议会" :disabled="true"/>
                 </el-col>
-                <el-col :span="1.5">
+                <el-col :span="1.5" v-show='!form.basic.boFlow.businessCouncilAccessoryUrlId'>
                   <el-button
                     type="info"
                     plain
@@ -172,6 +208,18 @@
                     @click="uploadAccessory(`business_council_accessory`)"
                     v-hasPermi="['system:user:import']"
                   >上传</el-button>
+                </el-col>
+                <el-col :span="1.5" v-show='form.basic.boFlow.businessCouncilAccessoryUrlId'>
+                  <el-button
+                    type="warning"
+                    plain
+                    icon="el-icon-download"
+                    size="mini"
+                    @click="exportAccessory(form.basic.boFlow.businessCouncilAccessoryUrlId)"
+                    v-hasPermi="['system:user:export']"
+                  >下载</el-button>
+                </el-col>
+                <el-col :span="1.5" v-show='form.basic.boFlow.businessCouncilAccessoryUrlId'>
                   <el-button
                     size="mini"
                     type="text"
@@ -185,7 +233,7 @@
                 <el-col :span="1.5">
                   <el-input v-model="form.basic.boFlow.projectProposalAccessoryName" placeholder="请上传立项书" :disabled="true"/>
                 </el-col>
-                <el-col :span="1.5">
+                <el-col :span="1.5" v-show='!form.basic.boFlow.projectProposalAccessoryUrlId'>
                   <el-button
                     type="info"
                     plain
@@ -195,14 +243,34 @@
                     v-hasPermi="['system:user:import']"
                   >上传</el-button>
                 </el-col>
+                <el-col :span="1.5" v-show='form.basic.boFlow.projectProposalAccessoryUrlId'>
+                  <el-button
+                    type="warning"
+                    plain
+                    icon="el-icon-download"
+                    size="mini"
+                    @click="exportAccessory(form.basic.boFlow.projectProposalAccessoryUrlId)"
+                    v-hasPermi="['system:user:export']"
+                  >下载</el-button>
+                </el-col>
+                <el-col :span="1.5" v-show='form.basic.boFlow.projectProposalAccessoryUrlId'>
+                  <el-button
+                    size="mini"
+                    type="text"
+                    icon="el-icon-delete"
+                    @click="deleteAccessory(`project_proposal_accessory`,1)"
+                    v-hasPermi="['system:basic:remove']"
+                  >删除</el-button>
+                </el-col>
               </el-row>
               <el-row>
                 <el-col :span="10" v-if="form.basic.boFlow.projectApproval == 0">
-                    项目未通过原因:<el-input v-model="form.basic.boFlow.noPassCause" />
+                    项目未通过原因:<el-input v-model="form.basic.boFlow.noPassCause" :disabled="!isUpdate"/>
                 </el-col>
               </el-row>
             </el-form>
           </el-tab-pane>
+          <!-- 立项模板 -->
           <el-tab-pane label="立项模板" name="lx" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 1">
             <el-row>
               <el-button @click="pojproDownload">标准立项书</el-button>
@@ -211,10 +279,11 @@
               <el-button @click="pojproDownload">商机审会决议书</el-button>
             </el-row>
           </el-tab-pane>
+          <!-- 项目人员组成 -->
           <el-tab-pane label="项目人员组成" name="xmry" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 1">
-            <!-- <PojpsnList :boId="this.$route.params.id"/> -->
-            <PojpsnList :source = "'BoDetails'" :bo="pojpsnParame" v-if="secondTabs == 'xmry'"/>
+            <PojpsnList :source = "'BoDetails'" :bo="this.form.basic" v-if="secondTabs == 'xmry'"/>
           </el-tab-pane>
+          <!-- 方案模板 -->
           <el-tab-pane label="方案模板" name="fa" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 6">
             <el-row>
               <el-button @click="pojproDownload">售前提案文件模板</el-button>
@@ -232,13 +301,14 @@
               <el-button @click="pojproDownload">其他文件</el-button>
             </el-row>
           </el-tab-pane>
+          <!-- 售前提案 -->
           <el-tab-pane label="售前提案" name="sq" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 6">
             <el-form ref="form" :model="form.basic.boFlow" :rules="rules">
               <el-row>
                 <el-col :span="1.5">
                   <el-input v-model="form.basic.boFlow.preSaleProposalAccessoryName" placeholder="请上传售前提案文件" :disabled="true"/>
                 </el-col>
-                <el-col :span="1.5">
+                <el-col :span="1.5" v-show='!form.basic.boFlow.preSaleProposalAccessoryUrlId'>
                   <el-button
                     type="info"
                     plain
@@ -248,9 +318,29 @@
                     v-hasPermi="['system:user:import']"
                   >上传</el-button>
                 </el-col>
+                <el-col :span="1.5" v-show='form.basic.boFlow.preSaleProposalAccessoryUrlId'>
+                  <el-button
+                    type="warning"
+                    plain
+                    icon="el-icon-download"
+                    size="mini"
+                    @click="exportAccessory(form.basic.boFlow.preSaleProposalAccessoryUrlId)"
+                    v-hasPermi="['system:user:export']"
+                  >下载</el-button>
+                </el-col>
+                <el-col :span="1.5" v-show='form.basic.boFlow.preSaleProposalAccessoryUrlId'>
+                  <el-button
+                    size="mini"
+                    type="text"
+                    icon="el-icon-delete"
+                    @click="deleteAccessory(`pre_sale_proposal_accessory`,1)"
+                    v-hasPermi="['system:basic:remove']"
+                  >删除</el-button>
+                </el-col>
               </el-row>
             </el-form>
           </el-tab-pane>
+          <!-- 邀请考察 -->
           <el-tab-pane label="邀请考察" name="kc" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 6">
             <el-form ref="form" :model="form.basic.boFlow" :rules="rules">
               <el-row>
@@ -259,7 +349,8 @@
                     <el-date-picker
                       v-model="form.basic.boFlow.inspectStartTime"
                       type="datetime"
-                      placeholder="选择日期时间">
+                      placeholder="选择日期时间" 
+                      :disabled="!isUpdate">
                     </el-date-picker>
                   </el-form-item>
                 </el-col>
@@ -268,7 +359,8 @@
                     <el-date-picker
                       v-model="form.basic.boFlow.inspectEndTime"
                       type="datetime"
-                      placeholder="选择日期时间">
+                      placeholder="选择日期时间" 
+                      :disabled="!isUpdate">
                     </el-date-picker>
                   </el-form-item>
                 </el-col>
@@ -277,7 +369,7 @@
                 <el-col :span="1.5">
                   <el-input v-model="form.basic.boFlow.investigationReportAccessoryName" placeholder="请上传考察报告" :disabled="true"/>
                 </el-col>
-                <el-col :span="1.5">
+                <el-col :span="1.5" v-show='!form.basic.boFlow.investigationReportAccessoryUrlId'>
                   <el-button
                     type="info"
                     plain
@@ -287,9 +379,29 @@
                     v-hasPermi="['system:user:import']"
                   >上传</el-button>
                 </el-col>
+                <el-col :span="1.5" v-show='form.basic.boFlow.investigationReportAccessoryUrlId'>
+                  <el-button
+                    type="warning"
+                    plain
+                    icon="el-icon-download"
+                    size="mini"
+                    @click="exportAccessory(form.basic.boFlow.investigationReportAccessoryUrlId)"
+                    v-hasPermi="['system:user:export']"
+                  >下载</el-button>
+                </el-col>
+                <el-col :span="1.5" v-show='form.basic.boFlow.investigationReportAccessoryUrlId'>
+                  <el-button
+                    size="mini"
+                    type="text"
+                    icon="el-icon-delete"
+                    @click="deleteAccessory(`investigation_report_accessory`,1)"
+                    v-hasPermi="['system:basic:remove']"
+                  >删除</el-button>
+                </el-col>
               </el-row>
             </el-form>
           </el-tab-pane>
+          <!-- 开院务会 -->
           <el-tab-pane label="开院务会" name="kh" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 6">
             <el-form ref="form" :model="form.basic.boFlow" :rules="rules">
               <el-row>
@@ -298,33 +410,37 @@
                     <el-date-picker
                       v-model="form.basic.boFlow.conferenceTime"
                       type="datetime"
-                      placeholder="选择日期时间">
+                      placeholder="选择日期时间"
+                      :disabled="!isUpdate">
                     </el-date-picker>
                   </el-form-item>
                 </el-col>
               </el-row>
             </el-form>
           </el-tab-pane>
+          <!-- 院内立项 -->
           <el-tab-pane label="院内立项" name="yn" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 6">
             <el-form ref="form" :model="form.basic.boFlow" :rules="rules">
               <el-row>
                 <el-col :span="5">
                   <el-form-item label="院内立项时间" prop="hospitalApprovalTime">
                     <el-date-picker
-                      v-model="form.basic.boFlow.conferenceTime"
+                      v-model="form.basic.boFlow.hospitalApprovalTime"
                       type="datetime"
-                      placeholder="选择日期时间">
+                      placeholder="选择日期时间"
+                      :disabled="!isUpdate">
                     </el-date-picker>
                   </el-form-item>
                 </el-col>
                 <el-col :span="5">
                   <el-form-item label="院内立项牵头人" prop="hospitalApprovalInitiator">
-                    <el-input v-model="form.basic.boFlow.hospitalApprovalInitiator" placeholder="院内立项牵头人" />
+                    <el-input v-model="form.basic.boFlow.hospitalApprovalInitiator" placeholder="院内立项牵头人" :disabled="!isUpdate"/>
                   </el-form-item>
                 </el-col>
               </el-row>
             </el-form>
           </el-tab-pane>
+          <!-- 进场调研 -->
           <el-tab-pane label="进场调研" name="jc" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 6">
             <el-form ref="form" :model="form.basic.boFlow" :rules="rules">
               <el-row>
@@ -333,16 +449,17 @@
                     <el-date-picker
                       v-model="form.basic.boFlow.researchTime"
                       type="datetime"
-                      placeholder="选择日期时间">
+                      placeholder="选择日期时间"
+                      :disabled="!isUpdate">
                     </el-date-picker>
                   </el-form-item>
                 </el-col>
               </el-row>
               <el-row>
                 <el-col :span="1.5">
-                  <el-input v-model="form.basic.boFlow.investigateReportAccessoryName" placeholder="调研报告" :disabled="true"/>
+                  <el-input v-model="form.basic.boFlow.investigateReportAccessoryName" placeholder="请上传调研报告" :disabled="true"/>
                 </el-col>
-                <el-col :span="1.5">
+                <el-col :span="1.5" v-show='!form.basic.boFlow.investigateReportAccessoryUrlId'>
                   <el-button
                     type="info"
                     plain
@@ -352,9 +469,29 @@
                     v-hasPermi="['system:user:import']"
                   >上传</el-button>
                 </el-col>
+                <el-col :span="1.5" v-show='form.basic.boFlow.investigateReportAccessoryUrlId'>
+                  <el-button
+                    type="warning"
+                    plain
+                    icon="el-icon-download"
+                    size="mini"
+                    @click="exportAccessory(form.basic.boFlow.investigateReportAccessoryUrlId)"
+                    v-hasPermi="['system:user:export']"
+                  >下载</el-button>
+                </el-col>
+                <el-col :span="1.5" v-show='form.basic.boFlow.investigateReportAccessoryUrlId'>
+                  <el-button
+                    size="mini"
+                    type="text"
+                    icon="el-icon-delete"
+                    @click="deleteAccessory(`investigation_report_accessory`,1)"
+                    v-hasPermi="['system:basic:remove']"
+                  >删除</el-button>
+                </el-col>
               </el-row>
             </el-form>
           </el-tab-pane>
+          <!-- 挂网投标 -->
           <el-tab-pane label="挂网投标" name="gw" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 7">
             <el-form ref="form" :model="form.basic.boFlow" :rules="rules">
               <el-row>
@@ -363,16 +500,17 @@
                     <el-date-picker
                       v-model="form.basic.boFlow.hangingTime"
                       type="datetime"
-                      placeholder="选择日期时间">
+                      placeholder="选择日期时间"
+                      :disabled="!isUpdate">
                     </el-date-picker>
                   </el-form-item>
                 </el-col>
-                <el-col :span="5">
-                  <el-form-item label="投标书" prop="researchTime">
-                    <el-input v-model="form.basic.boFlow.biddingDocumentsAccessoryName" placeholder="请上传投标书" :disabled="true"/>
-                  </el-form-item>
+              </el-row>
+              <el-row>
+                <el-col :span="1.5">
+                  <el-input v-model="form.basic.boFlow.biddingDocumentsAccessoryName" placeholder="请上传投标书" :disabled="true"/>
                 </el-col>
-                <el-col :span="5">
+                <el-col :span="1.5" v-show='!form.basic.boFlow.biddingDocumentsAccessoryUrlId'>
                   <el-button
                     type="info"
                     plain
@@ -382,24 +520,45 @@
                     v-hasPermi="['system:user:import']"
                   >上传</el-button>
                 </el-col>
+                <el-col :span="1.5" v-show='form.basic.boFlow.biddingDocumentsAccessoryUrlId'>
+                  <el-button
+                    type="warning"
+                    plain
+                    icon="el-icon-download"
+                    size="mini"
+                    @click="exportAccessory(form.basic.boFlow.biddingDocumentsAccessoryUrlId)"
+                    v-hasPermi="['system:user:export']"
+                  >下载</el-button>
+                </el-col>
+                <el-col :span="1.5" v-show='form.basic.boFlow.biddingDocumentsAccessoryUrlId'>
+                  <el-button
+                    size="mini"
+                    type="text"
+                    icon="el-icon-delete"
+                    @click="deleteAccessory(`bidding_documents_accessory`,1)"
+                    v-hasPermi="['system:basic:remove']"
+                  >删除</el-button>
+                </el-col>
+              </el-row>
+              <el-row>
                 <el-col :span="5">
                   <el-form-item label="我方优势" prop="researchTime">
-                    <el-input v-model="form.ourAdvantage" placeholder="我方优势" />
+                    <el-input v-model="form.ourAdvantage" placeholder="我方优势" :disabled="!isUpdate"/>
                   </el-form-item>
                 </el-col>
               </el-row>
               <el-row>
                 <el-col :span="5">
                   投标是否通过
-                  <el-radio v-model = form.basic.boFlow.biddingDocumentsPass label="1">是</el-radio>
-                  <el-radio v-model = form.basic.boFlow.biddingDocumentsPass label="0">否</el-radio>
+                  <el-radio v-model = form.basic.boFlow.biddingDocumentsPass label="1" :disabled="!isUpdate">是</el-radio>
+                  <el-radio v-model = form.basic.boFlow.biddingDocumentsPass label="0" :disabled="!isUpdate">否</el-radio>
                 </el-col>
               </el-row>
               <el-row v-if="form.basic.boFlow.biddingDocumentsPass == 1">
                 <el-col :span="1.5">
-                  <el-input v-model="form.basic.boFlow.letterAcceptanceAccessoryName" placeholder="中标通知书" :disabled="true"/>
+                  <el-input v-model="form.basic.boFlow.letterAcceptanceAccessoryName" placeholder="请上传中标通知书" :disabled="true"/>
                 </el-col>
-                <el-col :span="1.5">
+                <el-col :span="1.5" v-show='!form.basic.boFlow.letterAcceptanceAccessoryUrlId'>
                   <el-button
                     type="info"
                     plain
@@ -409,9 +568,29 @@
                     v-hasPermi="['system:user:import']"
                   >上传</el-button>
                 </el-col>
+                <el-col :span="1.5" v-show='form.basic.boFlow.letterAcceptanceAccessoryUrlId'>
+                  <el-button
+                    type="warning"
+                    plain
+                    icon="el-icon-download"
+                    size="mini"
+                    @click="exportAccessory(form.basic.boFlow.letterAcceptanceAccessoryUrlId)"
+                    v-hasPermi="['system:user:export']"
+                  >下载</el-button>
+                </el-col>
+                <el-col :span="1.5" v-show='form.basic.boFlow.letterAcceptanceAccessoryUrlId'>
+                  <el-button
+                    size="mini"
+                    type="text"
+                    icon="el-icon-delete"
+                    @click="deleteAccessory(`letter_acceptance_accessory`,1)"
+                    v-hasPermi="['system:basic:remove']"
+                  >删除</el-button>
+                </el-col>
               </el-row>
             </el-form>
           </el-tab-pane>
+          <!-- 合同签订 -->
           <el-tab-pane label="合同签订" name="ht" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 7">
             <el-form ref="form" :model="form.basic.boFlow" :rules="rules">
               <el-row>
@@ -420,16 +599,17 @@
                     <el-date-picker
                       v-model="form.basic.boFlow.contractSigningTime"
                       type="datetime"
-                      placeholder="选择日期时间">
+                      placeholder="选择日期时间"
+                      :disabled="!isUpdate">
                     </el-date-picker>
                   </el-form-item>
                 </el-col>
               </el-row>
               <el-row>
-                <el-col :span="5">
-                  <el-input v-model="form.basic.boFlow.contractDocumentAccessoryName" placeholder="合同文件" :disabled="true"/>
+                <el-col :span="1.5">
+                  <el-input v-model="form.basic.boFlow.contractDocumentAccessoryName" placeholder="请上传合同文件" :disabled="true"/>
                 </el-col>
-                <el-col :span="5">
+                <el-col :span="1.5" v-show='!form.basic.boFlow.contractDocumentAccessoryUrlId'>
                   <el-button
                     type="info"
                     plain
@@ -439,60 +619,83 @@
                     v-hasPermi="['system:user:import']"
                   >上传</el-button>
                 </el-col>
+                <el-col :span="1.5" v-show='form.basic.boFlow.contractDocumentAccessoryUrlId'>
+                  <el-button
+                    type="warning"
+                    plain
+                    icon="el-icon-download"
+                    size="mini"
+                    @click="exportAccessory(form.basic.boFlow.contractDocumentAccessoryUrlId)"
+                    v-hasPermi="['system:user:export']"
+                  >下载</el-button>
+                </el-col>
+                <el-col :span="1.5" v-show='form.basic.boFlow.contractDocumentAccessoryUrlId'>
+                  <el-button
+                    size="mini"
+                    type="text"
+                    icon="el-icon-delete"
+                    @click="deleteAccessory(`contract_document_accessory`,1)"
+                    v-hasPermi="['system:basic:remove']"
+                  >删除</el-button>
+                </el-col>
               </el-row>
             </el-form>
           </el-tab-pane>
+          <!-- 跟进记录 -->
           <el-tab-pane label="跟进记录" name="gj" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 0 || form.basic.boStage == 1 || form.basic.boStage == 6 || form.basic.boStage == 7">
-            <BehaviorList :source = "'BoDetails'" :bo="behaviorParame" v-if="secondTabs == 'gj'"/>
+            <BehaviorList :source = "'BoDetails'" :bo="this.form.basic" v-if="secondTabs == 'gj'"/>
           </el-tab-pane>
         </el-tabs>
-        <el-row>
-          其它信息
-        </el-row>
+        <!-- 其它信息 -->
         <el-form ref="form" :model="form.basic" label-width="80px">
           <el-row>
+            其它信息
+          </el-row>
+          <el-row>
             <el-col :span="8">
               <el-form-item label="销售组织" prop="marketingOrganizingName">
-                <el-input v-model="form.basic.marketingOrganizingName" placeholder="销售组织" :disabled="true"/>
+                <el-input v-model="form.basic.marketingOrganizingName" placeholder="" :disabled="true"/>
               </el-form-item>
             </el-col>
             <el-col :span="8">
               <el-form-item label="销售区域" prop="marketingArea">
-                <el-input v-model="form.basic.marketingArea" placeholder="销售区域" :disabled="true"/>
+                <el-input v-model="form.basic.marketingArea" placeholder="" :disabled="true"/>
               </el-form-item>
             </el-col>
             <el-col :span="8">
               <el-form-item label="部门" prop="deptName">
-                <el-input v-model="form.basic.deptName" placeholder="部门" :disabled="true"/>
+                <el-input v-model="form.basic.deptName" placeholder="" :disabled="true"/>
               </el-form-item>
             </el-col>
           </el-row>
           <el-row>
             <el-col :span="8">
               <el-form-item label="负责人" prop="principalName">
-                <el-input v-model="form.basic.principalName" placeholder="负责人" :disabled="true"/>
+                <el-input v-model="form.basic.principalName" placeholder="" :disabled="true"/>
               </el-form-item>
             </el-col>
             <el-col :span="8">
               <el-form-item label="创建人" prop="createBy">
-                <el-input v-model="form.basic.createBy" placeholder="创建人" :disabled="true"/>
+                <el-input v-model="form.basic.createBy" placeholder="" :disabled="true"/>
               </el-form-item>
             </el-col>
             <el-col :span="8">
               <el-form-item label="创建时间" prop="createTime">
-                <el-input v-model="form.basic.createTime" placeholder="创建时间" :disabled="true"/>
+                <el-input v-model="form.basic.createTime" placeholder="" :disabled="true"/>
               </el-form-item>
             </el-col>
           </el-row>
         </el-form>
-
       </el-tab-pane>
+      <!-- 商机任务页签 -->
       <el-tab-pane label="商机任务" name="second">
-        <TaskList :source = "'BoDetails'" :bo="taskParame" v-if="masterTabs == 'second'"/>
+        <TaskList :source = "'BoDetails'" :bo="this.form.basic" v-if="masterTabs == 'second'"/>
       </el-tab-pane>
+      <!-- 联系人页签 -->
       <el-tab-pane label="商机联系人" name="third">
-        <ContactList :boId="this.$route.params.id"/>
+        <ContactList :source = "'BoDetails'" :bo="this.form.basic" v-if="masterTabs == 'third'"/>
       </el-tab-pane>
+      <!-- 附件页签 -->
       <el-tab-pane label="附件信息" name="fourth">
         <el-row :gutter="10" class="mb8">
           <el-col :span="1.5">
@@ -512,19 +715,32 @@
           <el-table-column label="名称" align="center" prop="fileName" />
           <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
             <template slot-scope="scope">
-              <el-button
-                size="mini"
-                type="text"
-                icon="el-icon-delete"
-                @click="deleteAccessory(`list`,scope.row)"
-                v-hasPermi="['system:basic:remove']"
-              >删除</el-button>
+              <el-row>
+                <el-col :span="1.5">
+                  <el-button
+                    size="mini"
+                    type="text"
+                    icon="el-icon-delete"
+                    @click="deleteAccessory('list' , scope.row)"
+                    v-hasPermi="['system:basic:remove']"
+                  >删除</el-button>
+                </el-col>
+                <el-col :span="1.5">
+                  <el-button
+                    type="warning"
+                    plain
+                    icon="el-icon-download"
+                    size="mini"
+                    @click="exportAccessory(scope.row.urlId)"
+                    v-hasPermi="['system:user:export']"
+                  >下载</el-button>
+                </el-col>
+              </el-row>
             </template>
           </el-table-column>
         </el-table>
       </el-tab-pane>
     </el-tabs>
-
     <!-- 上传对话框 -->
     <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
       <el-upload
@@ -552,20 +768,23 @@
 </template>
 
 <script>
-import {getBasic,getBehaviorList,delAccessory} from "@/api/business/spd/bo/basic";
-import { listTask, getTask, delTask, addTask, updateTask } from "@/api/business/spd/bo/task";
+import {getBasic,nextFlow,updateBasicFlow,delAccessory} from "@/api/business/spd/bo/basic";
 import { listAccessory, } from "@/api/business/spd/bo/accessory";
-import {listPojpsn} from "@/api/business/spd/bo/pojpsn";
 import { getToken } from "@/utils/auth";
 import TaskList from '../task/taskList.vue'
 import ContactList from '../contact/contactList.vue'
 import PojpsnList from '../pojpsn/pojpsnList.vue'
 import BehaviorList from '../behavior/behaviorList.vue'
+import axios from 'axios';
 
 export default {
+  //名称
   name: 'BoDetails',
+  //注册引入的组件
   components: {TaskList,ContactList,PojpsnList,BehaviorList},
-  dicts: ['mk_bo_type','mk_bo_state','mk_bo_winstate','mk_bo_source'],
+  //平台枚举
+  dicts: ['mk_bo_type','mk_bo_state','mk_bo_winstate','mk_bo_source','mk_bo_total_revenue'],
+  //数据
   data() {
       return {
         masterTabs: 'first',
@@ -574,27 +793,8 @@ export default {
         rules:{},
         // 基本信息
         form: {
-          basic:{
-            boFlow:{}
-          },
-          task:[],
-          contact:[],
+          basic:{},
           accessory:[],
-          pojpsn:[],
-          behavior:[],
-          pojpsn:[],
-        },
-        //任务查询参数
-        taskParame:{
-          bo: null,
-        },
-        //项目成员查询参数
-        pojpsnParame:{
-          bo: null,
-        },
-        //行动查询参数
-        behaviorParame:{
-          bo: null,
         },
         // 上传参数
         upload: {
@@ -611,8 +811,35 @@ export default {
           // 上传的地址
           url: process.env.VUE_APP_BASE_API + "/mk/bo/basic/upload"
         },
+        //单据当前状态
+        isUpdate: false,
       }
   },
+  //监听属性
+  watch:{
+    //阶段
+    'form.basic.boStage':{
+      handler(newName, oldName) {
+        console.log(newName, oldName);
+        switch(newName) {
+          case 0:
+            this.secondTabs = 'jd1';
+            break;
+          case 1:
+            this.secondTabs = 'jd2';
+            break;
+          case 6:
+            this.secondTabs = 'fa';
+            break;
+          case 7:
+            this.secondTabs = 'gw';
+            break;
+        }
+      },
+      immediate: true
+    },
+  },
+  //方法
   methods: {
     // 返回
     handleBack() {
@@ -620,54 +847,62 @@ export default {
     },
     //主多页签切换
     masterTabsSwitch(e) {
-        console.log('主标签页切换',e);
-        switch(e.name) {
-          case 'second':
-              //跟进记录
-              this.taskParame.bo = this.form.basic.id;
-              break;
-          case 'third':
-              //获取联系人
-              break;
-          case 'fourth':
-              //获取附件列表
-              listAccessory(this.form.basic.id).then(response => {
-                this.form.accessory = response.rows;
-              });
-              break;
-          default:
-              break;
-        }
-    },
-    //次多页签切换
-    secondTabsSwitch(e) {
-        console.log('次标签页切换',e);
-        switch(e.name) {
-          case 'gj':
-              //跟进记录
-              this.behaviorParame.bo = this.form.basic.id;
-              break;
-          case 'xmry':
-              //项目成员
-              this.pojpsnParame.bo = this.form.basic.id;
-              break;
-          default:
-              break;
-        }
+      console.log('主标签页切换',e);
+      switch(e.name) {
+        case 'second':
+            //跟进记录
+            break;
+        case 'third':
+            //获取联系人
+            break;
+        case 'fourth':
+            //获取附件列表
+            listAccessory(this.form.basic.id).then(response => {
+              this.form.accessory = response.rows;
+            });
+            break;
+        default:
+            break;
+      }
     },
+    // //次多页签切换
+    // secondTabsSwitch(e) {
+    //     console.log('次标签页切换',e);
+    //     switch(e.name) {
+    //       case 'gj':
+    //           //跟进记录
+    //           this.behaviorParame.bo = this.form.basic.id;
+    //           break;
+    //       case 'xmry':
+    //           //项目成员
+    //           this.pojpsnParame.bo = this.form.basic.id;
+    //           break;
+    //       default:
+    //           break;
+    //     }
+    // },
     //下一步
     next() {
-        if(this.form.basic.boStage == 1){
-          this.form.basic.boStage += 5;
-        }else if(this.form.basic.boStage == 7){
-          this.form.basic.boStage += 5;
-        }else{
-          this.form.basic.boStage++;
-        }
-      },
-    //测试
-    handleAdd(){
-
+      //设置跳过部分步骤
+      var boStage = 0;
+      var boId = this.form.basic.id;
+      if(this.form.basic.boStage == 1){
+        boStage = this.form.basic.boStage + 5;
+      }else if(this.form.basic.boStage == 7){
+        boStage = this.form.basic.boStage + 5;
+      }else{
+        boStage = this.form.basic.boStage + 1;
+      }
+      nextFlow(boId,boStage).then(res => {
+        this.$modal.msgSuccess("流程扭转成功");
+        getBasic(this.$route.params.id).then(response => {
+          this.form.basic = response.data;
+        });
+      });
+    },
+    //上一步
+    before(){
+      this.form.basic.boStage--;
     },
     //上传附件公共方法
     uploadAccessory(f) {
@@ -678,6 +913,9 @@ export default {
     // 提交上传文件
     submitFileForm() {
       this.$refs.upload.submit();
+      getBasic(this.$route.params.id).then(response => {
+        this.form.basic = response.data;
+      });
     },
     // 文件上传中处理
     handleFileUploadProgress(event, file, fileList) {
@@ -688,32 +926,71 @@ export default {
       this.upload.open = false;
       this.upload.isUploading = false;
       this.$refs.upload.clearFiles();
-      this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "导入结果", { dangerouslyUseHTMLString: true });
-      this.getList();
+      this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "上传结果", { dangerouslyUseHTMLString: true });
+      this.getBasic();
+    },
+    //下载附件
+    exportAccessory(urlId){
+      console.log('urlId',urlId);
+      axios.get('https://test-sy.derom.com/document-center/fastdfs/download?id=' + urlId).then(response => {
+        let blob = new Blob([res.data], { type: "application/vnd.ms-excel;charset=utf-8", });
+        let fileName = decodeURI(res.headers["content-disposition"].split("=")[1]);
+         if ("download" in document.createElement("a")) {
+          let link = document.createElement("a");
+          link.download = fileName;
+          link.style.display = "none";
+          link.href = URL.createObjectURL(blob);
+          document.body.appendChild(link);
+          link.click();
+          URL.revokeObjectURL(link.href);
+          document.body.removeChild(link);
+         } else {
+          navigator.msSaveBlob(blob, fileName);
+         }
+      });
     },
     //删除附件
     deleteAccessory(f,row){
-      // console.log("flag",f);
-      // console.log("row",row);
-      // delAccessory(this.form.basic.id,f,row.id);
+      console.log("flag",f);
+      console.log("row",row);
       this.$modal.confirm('是否确认删除?').then(function() {
-        return delAccessory(this.form.basic.id,f,row.id);
       }).then(() => {
-        this.getList();
-        this.$modal.msgSuccess("删除成功");
+        delAccessory(this.form.basic.id,f,row.id).then(res => {
+          if(res.code == 200){
+            getBasic(this.$route.params.id).then(response => {
+              this.form.basic = response.data;
+            });
+            this.$modal.msgSuccess("删除成功");
+          }else{
+            this.$modal.msgSuccess("删除失败");
+          }
+        })
       }).catch(() => {});
     },
-
-    //立项书下载
-    //标准立项书
-    pojproDownload(){
-
+    //修改按钮
+    modifyButton(){
+      this.isUpdate = true;
     },
-    //商机审会决议书
-    pojproDownload1(){
-
+    //取消按钮
+    cancelButton(){
+      this.isUpdate = false;
+      getBasic(this.$route.params.id).then(response => {
+        this.form.basic = response.data;
+      });
+    },
+    //保存按钮
+    saveButton(){
+      console.log('this.form.basic.boFlow',this.form.basic.boFlow)
+      updateBasicFlow(this.form.basic.boFlow).then(response => {
+        this.$modal.msgSuccess("修改成功");
+        this.isUpdate = false;
+        getBasic(this.$route.params.id).then(response => {
+          this.form.basic = response.data;
+        });
+      });
     },
   },
+  //创建钩子
   created() {
     getBasic(this.$route.params.id).then(response => {
       this.form.basic = response.data;

+ 89 - 69
src/views/business/spd/bo/basic/index.vue

@@ -10,10 +10,10 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="商机来源" prop="boSource">
-        <el-select v-model="queryParams.boSource" placeholder="请输入商机来源">
+      <el-form-item label="商机类型" prop="boType">
+        <el-select v-model="form.boType" placeholder="请输入商机类型">
           <el-option
-            v-for="dict in dict.type.mk_bo_source"
+            v-for="dict in dict.type.mk_bo_type"
             :key="dict.value"
             :label="dict.label"
             :value="dict.value"
@@ -30,6 +30,16 @@
           ></el-option>
         </el-select>
       </el-form-item>
+      <el-form-item label="商机来源" prop="boSource">
+        <el-select v-model="queryParams.boSource" placeholder="请输入商机来源">
+          <el-option
+            v-for="dict in dict.type.mk_bo_source"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          ></el-option>
+        </el-select>
+      </el-form-item>
       <el-form-item label="商机阶段" prop="boStage">
         <el-select v-model="queryParams.boStage" placeholder="请输入商机阶段">
           <el-option
@@ -70,7 +80,7 @@
           icon="el-icon-plus"
           size="mini"
           @click="handleAdd"
-          v-hasPermi="['system:basic:add']"
+          v-hasPermi="['mk:bo:basic:add']"
         >新增</el-button>
       </el-col>
       <el-col :span="1.5">
@@ -81,7 +91,7 @@
           size="mini"
           :disabled="single"
           @click="handleUpdate"
-          v-hasPermi="['system:basic:edit']"
+          v-hasPermi="['mk:bo:basic:edit']"
         >修改</el-button>
       </el-col>
       <el-col :span="1.5">
@@ -92,19 +102,9 @@
           size="mini"
           :disabled="multiple"
           @click="handleDelete"
-          v-hasPermi="['system:basic:remove']"
+          v-hasPermi="['mk:bo:basic:remove']"
         >删除</el-button>
       </el-col>
-      <!-- <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['system:basic:export']"
-        >导出</el-button>
-      </el-col> -->
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
@@ -132,42 +132,36 @@
         </template>
       </el-table-column>
       <el-table-column label="客户名称" align="center" prop="customerName" />
-      <el-table-column label="推荐人" align="center" prop="referrer" />
-      <el-table-column label="医院营收总额" align="center" prop="totalHosRevenue" >
-        <template slot-scope="scope">
-          <dict-tag :options="dict.type.mk_bo_total_revenue" :value="scope.row.totalHosRevenue"/>
-        </template>
-      </el-table-column>
-      <el-table-column label="医院耗材预估值" align="center" prop="hosDiscreetValue" />
-      <el-table-column label="商机内容" align="center" prop="boContent" />
+      <el-table-column label="医院耗材预估值(万元)" align="center" prop="hosDiscreetValue" />
+      <el-table-column label="赢单率" align="center" prop="winningRate" />
       <el-table-column label="销售区域" align="center" prop="marketingArea" />
       <el-table-column label="销售组织" align="center" prop="marketingOrganizingName" />
       <el-table-column label="部门" align="center" prop="deptName" />
       <el-table-column label="商机负责人" align="center" prop="principalName" />
-      <el-table-column label="创建人" align="center" prop="createBy" />
+      <!-- <el-table-column label="创建人" align="center" prop="createBy" /> -->
       <el-table-column label="创建时间" align="center" prop="createTime" />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column label="操作" fixed="right" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
             size="mini"
             type="text"
             icon="el-icon-edit"
             @click="enterDetails(scope.row)"
-            v-hasPermi="['system:basic:edit']"
+            v-hasPermi="['mk:bo:basic:detail']"
           >进入详情</el-button>
           <el-button
             size="mini"
             type="text"
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
-            v-hasPermi="['system:basic:edit']"
+            v-hasPermi="['mk:bo:basic:edit']"
           >修改</el-button>
           <el-button
             size="mini"
             type="text"
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
-            v-hasPermi="['system:basic:remove']"
+            v-hasPermi="['mk:bo:basic:remove']"
           >删除</el-button>
         </template>
       </el-table-column>
@@ -243,32 +237,35 @@
         </el-row>
         <el-row>
           <el-col :span="8">
-            <el-form-item label="医院耗材预估值" prop="hosDiscreetValue">
+            <el-form-item label="医院耗材预估值(万元)" prop="hosDiscreetValue">
               <el-input v-model="form.hosDiscreetValue" placeholder="请输入医院耗材预估值" />
             </el-form-item>
           </el-col>
-          <el-col :span="8">
+        </el-row>
+        <el-form-item label="商机内容">
+          <editor v-model="form.boContent" :min-height="192"/>
+        </el-form-item>
+        <el-row>
+          <el-col :span="6">
             <el-form-item label="销售区域" prop="marketingArea">
               <el-input v-model="form.marketingArea" placeholder="请输入销售区域" />
             </el-form-item>
           </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="8">
+          <el-col :span="6">
             <el-form-item label="销售组织" prop="marketingOrganizingName">
               <el-input v-model="form.marketingOrganizingName">
                 <el-button slot="append" icon="el-icon-more" @click="refereOrg"></el-button>
               </el-input>
             </el-form-item>
           </el-col>
-          <el-col :span="8">
+          <el-col :span="6">
             <el-form-item label="部门" prop="deptName">
               <el-input v-model="form.deptName">
                 <el-button slot="append" icon="el-icon-more" @click="refereDept"></el-button>
               </el-input>
             </el-form-item>
           </el-col>
-          <el-col :span="8">
+          <el-col :span="6">
             <el-form-item label="商机负责人" prop="principalName">
               <el-input v-model="form.principalName">
                 <el-button slot="append" icon="el-icon-more" @click="refereStaff"></el-button>
@@ -276,9 +273,6 @@
             </el-form-item>
           </el-col>
         </el-row>
-        <el-form-item label="商机内容">
-          <editor v-model="form.boContent" :min-height="192"/>
-        </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
@@ -369,38 +363,64 @@ export default {
       },
       // 表单参数
       form: {},
-      // 表单校验
-      // rules: {
-      //   boSource: [
-      //     { required: true, message: "商机来源不能为空", trigger: "blur" }
-      //   ],
-      //   boName: [
-      //     { required: true, message: "商机名称不能为空", trigger: "blur" }
-      //   ],
-      //   customerName: [
-      //     { required: true, message: "客户名称不能为空", trigger: "blur" }
-      //   ],
-      //   totalHosRevenue: [
-      //     { required: true, message: "医院营收总额不能为空", trigger: "blur" }
-      //   ],
-      //   hosDiscreetValue: [
-      //     { required: true, message: "医院耗材预估值不能为空", trigger: "blur" }
-      //   ],
-      //   boContent: [
-      //     { required: true, message: "商机内容不能为空", trigger: "blur" }
-      //   ],
-      //   marketingOrganizing: [
-      //     { required: true, message: "销售组织不能为空", trigger: "blur" }
-      //   ],
-      //   marketingArea: [
-      //     { required: true, message: "销售区域不能为空", trigger: "blur" }
-      //   ],
-      //   deptName: [
-      //     { required: true, message: "部门不能为空", trigger: "blur" }
-      //   ],
-      // }
+      //表单校验
+      rules: {
+        boSource: [
+          { required: true, message: "商机来源不能为空", trigger: "blur" }
+        ],
+        boType: [
+          { required: true, message: "商机类型不能为空", trigger: "blur" }
+        ],
+        customerName: [
+          { required: true, message: "客户名称不能为空", trigger: "blur" }
+        ],
+        totalHosRevenue: [
+          { required: true, message: "医院营收总额不能为空", trigger: "blur" }
+        ],
+        hosDiscreetValue: [
+          { required: true, message: "医院耗材预估值不能为空", trigger: "blur" }
+        ],
+        boContent: [
+          { required: true, message: "商机内容不能为空", trigger: "blur" }
+        ],
+      }
     };
   },
+  //监听属性
+  watch:{
+    //阶段
+    'form.totalHosRevenue':{
+      handler(newName, oldName) {
+        switch(newName) {
+          //5000万以下
+          case '0':
+            this.form.hosDiscreetValue = 5000 * 0.02;
+            break;
+          //5000万-1亿
+          case '1':
+            this.form.hosDiscreetValue = 10000 * 0.02;
+            break;
+          //1亿-2亿
+          case '2':
+            this.form.hosDiscreetValue = 20000 * 0.02;
+            break;
+          //2亿-5亿
+          case '3':
+            this.form.hosDiscreetValue = 50000 * 0.02;
+            break;
+          //5亿-10亿
+          case '4':
+            this.form.hosDiscreetValue = 100000 * 0.02;
+            break;
+          //10亿以上
+          case '5':
+            this.form.hosDiscreetValue = 100000 * 0.02;
+            break;
+        }
+      },
+      immediate: true,
+    },
+  },
   created() {
     this.getList();
   },

+ 62 - 13
src/views/business/spd/bo/behavior/behaviorList.vue

@@ -76,7 +76,7 @@
       <el-table-column label="销售组织" align="center" prop="salesOrgName" v-if="source == 'Behavior'"/>
       <el-table-column label="部门" align="center" prop="deptName" v-if="source == 'Behavior'"/>
 
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column label="操作" fixed="right" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
             size="mini"
@@ -138,13 +138,15 @@
         </el-row>
         <el-row>
           <el-col :span="8">
-            <el-form-item label="客户名称" prop="customerName">
-              <el-input v-model="form.customerName" placeholder="请输入客户名称" />
+            <el-form-item label="客户" prop="customerName">
+              <el-input v-model="form.customerName" placeholder="请输入客户" />
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="联系人名称" prop="linkmanName">
-              <el-input v-model="form.linkmanName" placeholder="请输入联系人名称" />
+            <el-form-item label="联系人" prop="linkmanName">
+              <el-input v-model="form.linkmanName" placeholder="请输入联系人" >
+                <el-button slot="append" icon="el-icon-more" @click="refereContact"></el-button>
+              </el-input>
             </el-form-item>
           </el-col>
           <el-col :span="8">
@@ -193,18 +195,18 @@
         </el-row>
         <el-row>
           <el-col  :span="8">
-            <el-form-item label="销售组织名称" prop="salesOrgName">
-              <el-input v-model="form.salesOrgName" placeholder="请输入销售组织名称" />
+            <el-form-item label="销售组织" prop="salesOrgName">
+              <el-input v-model="form.salesOrgName" placeholder="请输入销售组织" />
             </el-form-item>
           </el-col>
           <el-col  :span="8">
-             <el-form-item label="部门名称" prop="deptName">
-              <el-input v-model="form.deptName" placeholder="请输入部门名称" />
+             <el-form-item label="部门" prop="deptName">
+              <el-input v-model="form.deptName" placeholder="请输入部门" />
             </el-form-item>
           </el-col>
           <el-col  :span="8">
-            <el-form-item label="负责人名称" prop="staffName">
-              <el-input v-model="form.staffName" placeholder="请输入负责人名称" />
+            <el-form-item label="负责人" prop="staffName">
+              <el-input v-model="form.staffName" placeholder="请输入负责人" />
             </el-form-item>
           </el-col>
         </el-row>
@@ -217,16 +219,24 @@
         <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
+    <!-- 联系人参照 -->
+    <ContactRef
+      ref="contactSelect"
+      @doSubmit="contactSelectionsToInput"
+      :single="true"
+    />
   </div>
 </template>
 
 <script>
 import { listBehavior, getBehavior, delBehavior, addBehavior, updateBehavior } from "@/api/business/spd/bo/behavior";
+import ContactRef from '@/views/business/spd/bo/refer/contact/index.vue';
 
 export default {
   name: "BehaviorList",
   props:["source","bo"],
   dicts: ['mk_bo_behavior_res','mk_bo_behavior_type','sys_yes_no','mk_bo_behavior_goal'],
+  components: {ContactRef},
   data() {
     return {
       // 遮罩层
@@ -258,12 +268,37 @@ export default {
       form: {},
       // 表单校验
       rules: {
+        type: [
+          { required: true, message: "行动类型不能为空", trigger: "blur" }
+        ],
+        time: [
+          { required: true, message: "行动日期不能为空", trigger: "blur" }
+        ],
+        customerName: [
+          { required: true, message: "客户不能为空", trigger: "blur" }
+        ],
+        linkmanName: [
+          { required: true, message: "联系人不能为空", trigger: "blur" }
+        ],
+        purpose: [
+          { required: true, message: "拜访目的不能为空", trigger: "blur" }
+        ],
+        assist: [
+          { required: true, message: "是否需要上级协助不能为空", trigger: "blur" }
+        ],
+        assist: [
+          { required: true, message: "是否需要上级协助不能为空", trigger: "blur" }
+        ],
+        content: [
+          { required: true, message: "洽谈内容不能为空", trigger: "blur" }
+        ],
       }
     };
   },
   created() {
     console.log("this.bo",this.bo);
-    this.queryParams.bo = this.bo.bo;
+    //设置查询条件
+    this.queryParams.bo = this.bo.id;
     this.queryParams.task = this.bo.task;
     this.queryParams.taskCode = this.bo.taskCode;
     this.getList();
@@ -334,6 +369,10 @@ export default {
     /** 新增按钮操作 */
     handleAdd() {
       this.reset();
+      if(this.bo.id){
+        this.form.bo = this.bo.id;
+        this.form.boName = this.bo.boName;
+      }
       this.open = true;
       this.title = "添加行动";
     },
@@ -382,7 +421,17 @@ export default {
       this.download('system/behavior/export', {
         ...this.queryParams
       }, `behavior_${new Date().getTime()}.xlsx`)
-    }
+    },
+    // 触发联系人参照列表
+    refereContact() {
+      this.$refs.contactSelect.init()
+    },
+    //联系人参照列表选择后
+    contactSelectionsToInput (selections) {
+      console.log('selections',selections);
+      this.form.linkman = selections[0].id;
+      this.form.linkmanName = selections[0].name;
+    },
   }
 };
 </script>

+ 259 - 158
src/views/business/spd/bo/contact/contactList.vue

@@ -89,7 +89,7 @@
       <el-table-column label="联系人分类" align="center" prop="contactClassification" />
       <el-table-column label="所属客户名称" align="center" prop="customerName" />
       <el-table-column label="所属客户编码" align="center" prop="customerCode" /> -->
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column label="操作" fixed="right" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
             size="mini"
@@ -118,110 +118,240 @@
     />
 
     <!-- 添加或修改联系人管理对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+    <el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="商机id" prop="boId">
-          <el-input v-model="form.boId" placeholder="请输入商机id" />
-        </el-form-item>
-        <el-form-item label="创建日期" prop="createDate">
-          <el-date-picker clearable
-            v-model="form.createDate"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="请选择创建日期">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="部门名称" prop="departmentName">
-          <el-input v-model="form.departmentName" placeholder="请输入部门名称" />
-        </el-form-item>
-        <el-form-item label="部门编码" prop="departmentCode">
-          <el-input v-model="form.departmentCode" placeholder="请输入部门编码" />
-        </el-form-item>
-        <el-form-item label="销售区域" prop="area">
-          <el-input v-model="form.area" placeholder="请输入销售区域" />
-        </el-form-item>
-        <el-form-item label="销售组织" prop="organization">
-          <el-input v-model="form.organization" placeholder="请输入销售组织" />
-        </el-form-item>
-        <el-form-item label="最佳拜访地点" prop="visitPlace">
-          <el-input v-model="form.visitPlace" placeholder="请输入最佳拜访地点" />
-        </el-form-item>
-        <el-form-item label="最佳拜访时间" prop="visitTime">
-          <el-date-picker clearable
-            v-model="form.visitTime"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="请选择最佳拜访时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="家庭地址" prop="address">
-          <el-input v-model="form.address" placeholder="请输入家庭地址" />
-        </el-form-item>
-        <el-form-item label="邮件" prop="mail">
-          <el-input v-model="form.mail" placeholder="请输入邮件" />
-        </el-form-item>
-        <el-form-item label="联系电话" prop="telephone">
-          <el-input v-model="form.telephone" placeholder="请输入联系电话" />
-        </el-form-item>
-        <el-form-item label="关键决策人" prop="decisionMaker">
-          <el-input v-model="form.decisionMaker" placeholder="请输入关键决策人" />
-        </el-form-item>
-        <el-form-item label="擅长领域" prop="fieldExpertise">
-          <el-input v-model="form.fieldExpertise" placeholder="请输入擅长领域" />
-        </el-form-item>
-        <el-form-item label="支持度" prop="support">
-          <el-input v-model="form.support" placeholder="请输入支持度" />
-        </el-form-item>
-        <el-form-item label="决策力" prop="power">
-          <el-input v-model="form.power" placeholder="请输入决策力" />
-        </el-form-item>
-        <el-form-item label="职称" prop="jobTitle">
-          <el-input v-model="form.jobTitle" placeholder="请输入职称" />
-        </el-form-item>
-        <el-form-item label="职务" prop="position">
-          <el-input v-model="form.position" placeholder="请输入职务" />
-        </el-form-item>
-        <el-form-item label="任职科室" prop="section">
-          <el-input v-model="form.section" placeholder="请输入任职科室" />
-        </el-form-item>
-        <el-form-item label="上级联系人" prop="superiorContact">
-          <el-input v-model="form.superiorContact" placeholder="请输入上级联系人" />
-        </el-form-item>
-        <el-form-item label="状态" prop="state">
-          <el-input v-model="form.state" placeholder="请输入状态" />
-        </el-form-item>
-        <el-form-item label="业务爱好" prop="hobby">
-          <el-input v-model="form.hobby" placeholder="请输入业务爱好" />
-        </el-form-item>
-        <el-form-item label="籍贯" prop="birthplace">
-          <el-input v-model="form.birthplace" placeholder="请输入籍贯" />
-        </el-form-item>
-        <el-form-item label="生日" prop="birthday">
-          <el-date-picker clearable
-            v-model="form.birthday"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="请选择生日">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="联系人分类" prop="contactClassification">
-          <el-input v-model="form.contactClassification" placeholder="请输入联系人分类" />
-        </el-form-item>
-        <el-form-item label="所属客户名称" prop="customerName">
-          <el-input v-model="form.customerName" placeholder="请输入所属客户名称" />
-        </el-form-item>
-        <el-form-item label="所属客户编码" prop="customerCode">
-          <el-input v-model="form.customerCode" placeholder="请输入所属客户编码" />
-        </el-form-item>
-        <el-form-item label="性别" prop="gander">
-          <el-input v-model="form.gander" placeholder="请输入性别" />
-        </el-form-item>
-        <el-form-item label="姓名" prop="name">
-          <el-input v-model="form.name" placeholder="请输入姓名" />
-        </el-form-item>
-        <el-form-item label="编号" prop="code">
-          <el-input v-model="form.code" placeholder="请输入编号" />
-        </el-form-item>
+        <el-row>
+          基本信息
+        </el-row>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item label="商机id" prop="boId">
+              <el-input v-model="form.boId" placeholder="请输入商机id" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="姓名" prop="name">
+              <el-input v-model="form.name" placeholder="请输入姓名" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="性别" prop="gander">
+              <el-select v-model="form.gander" placeholder="请输入性别">
+                <el-option
+                  v-for="dict in dict.type.sys_user_sex"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item label="所属客户名称" prop="customerName">
+              <el-input v-model="form.customerName" placeholder="请输入所属客户名称" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="联系人分类" prop="contactClassification">
+              <el-input v-model="form.contactClassification" placeholder="请输入联系人分类" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="生日" prop="birthday">
+              <el-date-picker clearable
+                v-model="form.birthday"
+                type="date"
+                value-format="yyyy-MM-dd"
+                placeholder="请选择生日">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item label="籍贯" prop="birthplace">
+              <el-input v-model="form.birthplace" placeholder="请输入籍贯" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="业务爱好" prop="hobby">
+              <el-input v-model="form.hobby" placeholder="请输入业务爱好" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="状态" prop="state">
+              <el-select v-model="form.state" placeholder="请输入状态">
+                <el-option
+                  v-for="dict in dict.type.mk_bo_contact_state"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          工作信息
+        </el-row>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item label="上级联系人" prop="superiorContact">
+              <el-input v-model="form.superiorContact" placeholder="请输入上级联系人" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="任职科室" prop="section">
+              <el-select v-model="form.section" placeholder="请输入任职科室">
+                <el-option
+                  v-for="dict in dict.type.mk_bo_section"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="职务" prop="position">
+              <el-select v-model="form.position" placeholder="请输入职务">
+                <el-option
+                  v-for="dict in dict.type.mk_bo_position"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item label="职称" prop="jobTitle">
+              <el-select v-model="form.jobTitle" placeholder="请输入职称">
+                <el-option
+                  v-for="dict in dict.type.mk_bo_job_title"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="决策力" prop="power">
+              <el-select v-model="form.power" placeholder="请输入决策力">
+                <el-option
+                  v-for="dict in dict.type.mk_bo_power"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="支持度" prop="support">
+              <el-select v-model="form.support" placeholder="请输入支持度">
+                <el-option
+                  v-for="dict in dict.type.mk_bo_support"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item label="擅长领域" prop="fieldExpertise">
+              <el-select v-model="form.fieldExpertise" placeholder="请输入擅长领域">
+                <el-option
+                  v-for="dict in dict.type.mk_bo_field_expertise"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="关键决策人" prop="decisionMaker">
+              <el-select v-model="form.decisionMaker" placeholder="请输入关键决策人">
+                <el-option
+                  v-for="dict in dict.type.sys_yes_no"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+          </el-col>
+        </el-row>
+        <el-row>
+          联系信息
+        </el-row>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item label="联系电话" prop="telephone">
+              <el-input v-model="form.telephone" placeholder="请输入联系电话" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="邮件" prop="mail">
+              <el-input v-model="form.mail" placeholder="请输入邮件" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="家庭地址" prop="address">
+              <el-input v-model="form.address" placeholder="请输入家庭地址" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item label="最佳拜访时间" prop="visitTime">
+              <el-date-picker clearable
+                v-model="form.visitTime"
+                type="date"
+                value-format="yyyy-MM-dd"
+                placeholder="请选择最佳拜访时间">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="最佳拜访地点" prop="visitPlace">
+              <el-input v-model="form.visitPlace" placeholder="请输入最佳拜访地点" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+          </el-col>
+        </el-row>
+        <el-row>
+          其它信息
+        </el-row>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item label="部门名称" prop="departmentName">
+              <el-input v-model="form.departmentName" placeholder="请输入部门名称" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="销售区域" prop="area">
+              <el-input v-model="form.area" placeholder="请输入销售区域" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="销售组织" prop="organization">
+              <el-input v-model="form.organization" placeholder="请输入销售组织" />
+            </el-form-item>
+          </el-col>
+        </el-row>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
@@ -236,7 +366,8 @@ import { listContact, getContact, delContact, addContact, updateContact } from "
 
 export default {
   name: "contactList",
-  props:["boId"],
+  props:["source","bo"],
+  dicts: ['sys_user_sex','mk_bo_contact_state','mk_bo_section','mk_bo_position','mk_bo_job_title','mk_bo_power','mk_bo_support','mk_bo_field_expertise','sys_yes_no'],
   data() {
     return {
       // 遮罩层
@@ -262,32 +393,6 @@ export default {
         pageNum: 1,
         pageSize: 10,
         boId: null,
-        createDate: null,
-        departmentName: null,
-        departmentCode: null,
-        area: null,
-        organization: null,
-        visitPlace: null,
-        visitTime: null,
-        address: null,
-        mail: null,
-        telephone: null,
-        decisionMaker: null,
-        fieldExpertise: null,
-        support: null,
-        power: null,
-        jobTitle: null,
-        position: null,
-        section: null,
-        superiorContact: null,
-        state: null,
-        hobby: null,
-        birthplace: null,
-        birthday: null,
-        contactClassification: null,
-        customerName: null,
-        customerCode: null,
-        gander: null,
         name: null,
         code: null,
       },
@@ -295,49 +400,42 @@ export default {
       form: {},
       // 表单校验
       rules: {
-        area: [
-          { required: true, message: "销售区域不能为空", trigger: "blur" }
-        ],
-        organization: [
-          { required: true, message: "销售组织不能为空", trigger: "blur" }
-        ],
-        address: [
-          { required: true, message: "家庭地址不能为空", trigger: "blur" }
+        name: [
+          { required: true, message: "姓名不能为空", trigger: "blur" }
         ],
-        telephone: [
-          { required: true, message: "联系电话不能为空", trigger: "blur" }
+        gander: [
+          { required: true, message: "性别不能为空", trigger: "blur" }
         ],
-        decisionMaker: [
-          { required: true, message: "关键决策人不能为空", trigger: "blur" }
+        customerName: [
+          { required: true, message: "所属客户名称不能为空", trigger: "blur" }
         ],
-        power: [
-          { required: true, message: "决策力不能为空", trigger: "blur" }
+        state: [
+          { required: true, message: "状态不能为空", trigger: "blur" }
         ],
-        jobTitle: [
-          { required: true, message: "职称不能为空", trigger: "blur" }
+        section: [
+          { required: true, message: "任职科室不能为空", trigger: "blur" }
         ],
         position: [
           { required: true, message: "职务不能为空", trigger: "blur" }
         ],
-        section: [
-          { required: true, message: "任职科室不能为空", trigger: "blur" }
-        ],
-        customerName: [
-          { required: true, message: "所属客户名称不能为空", trigger: "blur" }
+        jobTitle: [
+          { required: true, message: "职称不能为空", trigger: "blur" }
         ],
-        gander: [
-          { required: true, message: "性别不能为空", trigger: "blur" }
+        power: [
+          { required: true, message: "决策力不能为空", trigger: "blur" }
         ],
-        name: [
-          { required: true, message: "姓名不能为空", trigger: "blur" }
+        decisionMaker: [
+          { required: true, message: "关键决策人不能为空", trigger: "blur" }
         ],
-        code: [
-          { required: true, message: "编号不能为空", trigger: "blur" }
+        telephone: [
+          { required: true, message: "联系电话不能为空", trigger: "blur" },
+          // { pattern: /^1[3|5|7|8|9]\d{9}$/, message: '请输入正确的号码格式', trigger: 'change' }
         ],
       }
     };
   },
   created() {
+    this.queryParams.boId = this.bo.id;
     this.getList();
   },
   methods: {
@@ -414,6 +512,9 @@ export default {
     /** 新增按钮操作 */
     handleAdd() {
       this.reset();
+      if(this.bo.id){
+        this.form.boId = this.bo.id;
+      }
       this.open = true;
       this.title = "添加联系人管理";
     },

+ 10 - 233
src/views/business/spd/bo/contact/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="创建日期" prop="createDate">
+      <!-- <el-form-item label="创建日期" prop="createDate">
         <el-date-picker clearable
           v-model="queryParams.createDate"
           type="date"
@@ -208,7 +208,7 @@
           clearable
           @keyup.enter.native="handleQuery"
         />
-      </el-form-item>
+      </el-form-item> -->
       <el-form-item label="姓名" prop="name">
         <el-input
           v-model="queryParams.name"
@@ -230,243 +230,17 @@
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
-
-    <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button
-          type="primary"
-          plain
-          icon="el-icon-plus"
-          size="mini"
-          @click="handleAdd"
-          v-hasPermi="['system:contact:add']"
-        >新增</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['system:contact:edit']"
-        >修改</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="danger"
-          plain
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="multiple"
-          @click="handleDelete"
-          v-hasPermi="['system:contact:remove']"
-        >删除</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['system:contact:export']"
-        >导出</el-button>
-      </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
-    </el-row>
-
-    <el-table v-loading="loading" :data="contactList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="商机id" align="center" prop="boId" />
-      <el-table-column label="创建日期" align="center" prop="createDate" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.createDate, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="部门名称" align="center" prop="departmentName" />
-      <el-table-column label="部门编码" align="center" prop="departmentCode" />
-      <el-table-column label="销售区域" align="center" prop="area" />
-      <el-table-column label="销售组织" align="center" prop="organization" />
-      <el-table-column label="最佳拜访地点" align="center" prop="visitPlace" />
-      <el-table-column label="最佳拜访时间" align="center" prop="visitTime" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.visitTime, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="家庭地址" align="center" prop="address" />
-      <el-table-column label="邮件" align="center" prop="mail" />
-      <el-table-column label="联系电话" align="center" prop="telephone" />
-      <el-table-column label="关键决策人" align="center" prop="decisionMaker" />
-      <el-table-column label="擅长领域" align="center" prop="fieldExpertise" />
-      <el-table-column label="支持度" align="center" prop="support" />
-      <el-table-column label="决策力" align="center" prop="power" />
-      <el-table-column label="职称" align="center" prop="jobTitle" />
-      <el-table-column label="职务" align="center" prop="position" />
-      <el-table-column label="任职科室" align="center" prop="section" />
-      <el-table-column label="上级联系人" align="center" prop="superiorContact" />
-      <el-table-column label="状态" align="center" prop="state" />
-      <el-table-column label="业务爱好" align="center" prop="hobby" />
-      <el-table-column label="籍贯" align="center" prop="birthplace" />
-      <el-table-column label="生日" align="center" prop="birthday" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.birthday, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="联系人分类" align="center" prop="contactClassification" />
-      <el-table-column label="所属客户名称" align="center" prop="customerName" />
-      <el-table-column label="所属客户编码" align="center" prop="customerCode" />
-      <el-table-column label="性别" align="center" prop="gander" />
-      <el-table-column label="姓名" align="center" prop="name" />
-      <el-table-column label="编号" align="center" prop="code" />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-        <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['system:contact:edit']"
-          >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['system:contact:remove']"
-          >删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-    
-    <pagination
-      v-show="total>0"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
-      @pagination="getList"
-    />
-
-    <!-- 添加或修改联系人管理对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="商机id" prop="boId">
-          <el-input v-model="form.boId" placeholder="请输入商机id" />
-        </el-form-item>
-        <el-form-item label="创建日期" prop="createDate">
-          <el-date-picker clearable
-            v-model="form.createDate"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="请选择创建日期">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="部门名称" prop="departmentName">
-          <el-input v-model="form.departmentName" placeholder="请输入部门名称" />
-        </el-form-item>
-        <el-form-item label="部门编码" prop="departmentCode">
-          <el-input v-model="form.departmentCode" placeholder="请输入部门编码" />
-        </el-form-item>
-        <el-form-item label="销售区域" prop="area">
-          <el-input v-model="form.area" placeholder="请输入销售区域" />
-        </el-form-item>
-        <el-form-item label="销售组织" prop="organization">
-          <el-input v-model="form.organization" placeholder="请输入销售组织" />
-        </el-form-item>
-        <el-form-item label="最佳拜访地点" prop="visitPlace">
-          <el-input v-model="form.visitPlace" placeholder="请输入最佳拜访地点" />
-        </el-form-item>
-        <el-form-item label="最佳拜访时间" prop="visitTime">
-          <el-date-picker clearable
-            v-model="form.visitTime"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="请选择最佳拜访时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="家庭地址" prop="address">
-          <el-input v-model="form.address" placeholder="请输入家庭地址" />
-        </el-form-item>
-        <el-form-item label="邮件" prop="mail">
-          <el-input v-model="form.mail" placeholder="请输入邮件" />
-        </el-form-item>
-        <el-form-item label="联系电话" prop="telephone">
-          <el-input v-model="form.telephone" placeholder="请输入联系电话" />
-        </el-form-item>
-        <el-form-item label="关键决策人" prop="decisionMaker">
-          <el-input v-model="form.decisionMaker" placeholder="请输入关键决策人" />
-        </el-form-item>
-        <el-form-item label="擅长领域" prop="fieldExpertise">
-          <el-input v-model="form.fieldExpertise" placeholder="请输入擅长领域" />
-        </el-form-item>
-        <el-form-item label="支持度" prop="support">
-          <el-input v-model="form.support" placeholder="请输入支持度" />
-        </el-form-item>
-        <el-form-item label="决策力" prop="power">
-          <el-input v-model="form.power" placeholder="请输入决策力" />
-        </el-form-item>
-        <el-form-item label="职称" prop="jobTitle">
-          <el-input v-model="form.jobTitle" placeholder="请输入职称" />
-        </el-form-item>
-        <el-form-item label="职务" prop="position">
-          <el-input v-model="form.position" placeholder="请输入职务" />
-        </el-form-item>
-        <el-form-item label="任职科室" prop="section">
-          <el-input v-model="form.section" placeholder="请输入任职科室" />
-        </el-form-item>
-        <el-form-item label="上级联系人" prop="superiorContact">
-          <el-input v-model="form.superiorContact" placeholder="请输入上级联系人" />
-        </el-form-item>
-        <el-form-item label="状态" prop="state">
-          <el-input v-model="form.state" placeholder="请输入状态" />
-        </el-form-item>
-        <el-form-item label="业务爱好" prop="hobby">
-          <el-input v-model="form.hobby" placeholder="请输入业务爱好" />
-        </el-form-item>
-        <el-form-item label="籍贯" prop="birthplace">
-          <el-input v-model="form.birthplace" placeholder="请输入籍贯" />
-        </el-form-item>
-        <el-form-item label="生日" prop="birthday">
-          <el-date-picker clearable
-            v-model="form.birthday"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="请选择生日">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="联系人分类" prop="contactClassification">
-          <el-input v-model="form.contactClassification" placeholder="请输入联系人分类" />
-        </el-form-item>
-        <el-form-item label="所属客户名称" prop="customerName">
-          <el-input v-model="form.customerName" placeholder="请输入所属客户名称" />
-        </el-form-item>
-        <el-form-item label="所属客户编码" prop="customerCode">
-          <el-input v-model="form.customerCode" placeholder="请输入所属客户编码" />
-        </el-form-item>
-        <el-form-item label="性别" prop="gander">
-          <el-input v-model="form.gander" placeholder="请输入性别" />
-        </el-form-item>
-        <el-form-item label="姓名" prop="name">
-          <el-input v-model="form.name" placeholder="请输入姓名" />
-        </el-form-item>
-        <el-form-item label="编号" prop="code">
-          <el-input v-model="form.code" placeholder="请输入编号" />
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="submitForm">确 定</el-button>
-        <el-button @click="cancel">取 消</el-button>
-      </div>
-    </el-dialog>
+    <ContactList :key="timer" :source = "'Contact'" :bo="queryParams" />
   </div>
 </template>
 
 <script>
 import { listContact, getContact, delContact, addContact, updateContact } from "@/api/business/spd/bo/contact";
+import ContactList from '../contact/contactList.vue'
 
 export default {
   name: "Contact",
+  components: {ContactList},
   data() {
     return {
       // 遮罩层
@@ -564,7 +338,9 @@ export default {
         code: [
           { required: true, message: "编号不能为空", trigger: "blur" }
         ],
-      }
+      },
+      //重新加载子组件参数
+      timer: '',
     };
   },
   created() {
@@ -628,7 +404,8 @@ export default {
     /** 搜索按钮操作 */
     handleQuery() {
       this.queryParams.pageNum = 1;
-      this.getList();
+      this.timer = new Date().getTime();
+      // this.getList();
     },
     /** 重置按钮操作 */
     resetQuery() {

+ 7 - 4
src/views/business/spd/bo/pojpsn/pojpsnList.vue

@@ -51,7 +51,7 @@
           <dict-tag :options="dict.type.mk_bo_pojpsn_job" :value="scope.row.job"/>
         </template>
       </el-table-column>
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column label="操作" fixed="right" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
             size="mini"
@@ -172,7 +172,8 @@ export default {
     };
   },
   created() {
-    this.queryParams.bo = this.bo.bo;
+    //设置查询条件
+    this.queryParams.bo = this.bo.id;
     this.queryParams.boName = this.bo.boName;
     this.queryParams.staffName = this.bo.staffName;
     this.queryParams.post = this.bo.post;
@@ -233,9 +234,11 @@ export default {
     /** 新增按钮操作 */
     handleAdd() {
       this.reset();
+      if(this.bo.id){
+        this.form.bo = this.bo.id;
+        this.form.boName = this.bo.boName;
+      }
       this.open = true;
-      this.form.bo = this.queryParams.bo;
-      this.form.boName = this.queryParams.boName;
       this.title = "添加项目成员";
     },
     /** 修改按钮操作 */

+ 2 - 2
src/views/business/spd/bo/refer/customer/index.vue

@@ -23,7 +23,7 @@
               <el-form-item prop="code">
                 <el-input
                   size="small"
-                  v-model="queryParams.userName"
+                  v-model="queryParams.code"
                   placeholder="客户编码"
                   clearable
                 ></el-input>
@@ -31,7 +31,7 @@
               <el-form-item prop="name">
                 <el-input
                   size="small"
-                  v-model="queryParams.nickName"
+                  v-model="queryParams.name"
                   placeholder="客户名称"
                   clearable
                 ></el-input>

+ 50 - 13
src/views/business/spd/bo/task/taskList.vue

@@ -38,7 +38,6 @@
 
     <el-table v-loading="loading" :data="taskList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <!-- <el-table-column label="主键" align="center" prop="id" /> -->
       <el-table-column label="商机id" align="center" prop="bo" />
       <el-table-column label="商机阶段" align="center" prop="boStage" />
       <el-table-column label="任务编码" align="center" prop="code" />
@@ -64,7 +63,7 @@
         </template>
       </el-table-column>
       <el-table-column label="任务内容" align="center" prop="content" />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column label="操作" fixed="right" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
             size="mini"
@@ -103,7 +102,14 @@
           </el-col>
           <el-col :span="8">
             <el-form-item label="商机阶段" prop="boStage">
-              <el-input v-model="form.boStage" placeholder="请输入商机阶段" />
+              <el-select v-model="form.boStage" placeholder="请输入商机阶段">
+                <el-option
+                  v-for="dict in dict.type.mk_bo_stage"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="8">
@@ -141,8 +147,10 @@
         </el-row>
         <el-row>
           <el-col :span="8">
-            <el-form-item label="联系人" prop="linkman">
-              <el-input v-model="form.linkman" placeholder="请输入联系人" />
+            <el-form-item label="联系人" prop="linkmanName">
+              <el-input v-model="form.linkmanName" placeholder="请输入联系人" >
+                <el-button slot="append" icon="el-icon-more" @click="refereContact"></el-button>
+              </el-input>
             </el-form-item>
           </el-col>
           <el-col :span="8">
@@ -208,6 +216,12 @@
       @doSubmit="customerSelectionsToInput"
       :single="true"
     />
+    <!-- 联系人参照 -->
+    <ContactRef
+      ref="contactSelect"
+      @doSubmit="contactSelectionsToInput"
+      :single="true"
+    />
     <!-- 组织参照 -->
     <OrgRef
       ref="orgSelect"
@@ -233,6 +247,7 @@
 import { listTask, getTask, delTask, addTask, updateTask } from "@/api/business/spd/bo/task";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 import CustomerRef from '@/views/business/spd/bo/refer/customer/index.vue';
+import ContactRef from '@/views/business/spd/bo/refer/contact/index.vue';
 import OrgRef from '@/views/business/spd/bo/refer/org/index.vue';
 import DeptRef from '@/views/business/spd/bo/refer/dept/index.vue';
 import StaffRef from '@/views/business/spd/bo/refer/staff/index.vue';
@@ -241,8 +256,8 @@ import StaffRef from '@/views/business/spd/bo/refer/staff/index.vue';
 export default {
   name: "TaskList",
   props:["source","bo"],
-  dicts: ['mk_bo_taskstate','mk_bo_tasktype'],
-  components: {CustomerRef,OrgRef,DeptRef,StaffRef},
+  dicts: ['mk_bo_taskstate','mk_bo_tasktype','mk_bo_stage'],
+  components: {CustomerRef,ContactRef,OrgRef,DeptRef,StaffRef},
   data() {
     return {
       // 遮罩层
@@ -291,17 +306,24 @@ export default {
       form: {},
       // 表单校验
       rules: {
+        customerName: [
+          { required: true, message: "客户名称不能为空", trigger: "blur" }
+        ],
+        name: [
+          { required: true, message: "任务名称不能为空", trigger: "blur" }
+        ],
+        linkmanName: [
+          { required: true, message: "联系人不能为空", trigger: "blur" }
+        ],
+        deadlineDate: [
+          { required: true, message: "截止日期不能为空", trigger: "blur" }
+        ],
       }
     };
   },
   created() {
     //两种方式都可以用
-    console.log("this.props.boId",this.$props.boId,'this.boId',this.boId);
-    this.queryParams.bo = this.bo.bo;
-    // this.queryParams.boName = this.bo.boName;
-    // this.queryParams.staffName = this.bo.staffName;
-    // this.queryParams.post = this.bo.post;
-    // this.queryParams.job = this.bo.job;
+    this.queryParams.bo = this.bo.id;
     this.getList();
   },
   methods: {
@@ -369,6 +391,11 @@ export default {
     /** 新增按钮操作 */
     handleAdd() {
       this.reset();
+      if(this.bo.id){
+        this.form.bo = this.bo.id;
+        this.form.boName = this.bo.boName;
+        this.form.boStage = this.bo.boStage;
+      }
       this.open = true;
       this.title = "添加任务";
     },
@@ -427,6 +454,16 @@ export default {
       this.form.customer = selections[0].id;
       this.form.customerName = selections[0].name;
     },
+    // 触发联系人参照列表
+    refereContact() {
+      this.$refs.contactSelect.init()
+    },
+    //联系人参照列表选择后
+    contactSelectionsToInput (selections) {
+      console.log('selections',selections);
+      this.form.linkman = selections[0].id;
+      this.form.linkmanName = selections[0].name;
+    },
     // 触发组织参照列表
     refereOrg() {
       this.$refs.orgSelect.init()