details.vue 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851
  1. <!-- 商机-详情 -->
  2. <template>
  3. <div class="md-content">
  4. <el-row type="flex" justify="space-between">
  5. <el-col :span="6">
  6. <el-button size="small" @click="handleBack">返回</el-button>
  7. </el-col>
  8. <el-form ref="form" :model="form.basic">
  9. <el-col :span="10">
  10. <el-input v-model="form.basic.boName" placeholder="商机名称" :disabled="true"/>
  11. </el-col>
  12. <el-col :span="6">
  13. <el-select v-model="form.basic.boState" placeholder="商机状态" :disabled="true">
  14. <el-option
  15. v-for="dict in dict.type.mk_bo_type"
  16. :key="dict.value"
  17. :label="dict.label"
  18. :value="dict.value"
  19. ></el-option>
  20. </el-select>
  21. </el-col>
  22. <el-col :span="6">
  23. <el-select v-model="form.basic.winningState" placeholder="赢丢单状态" :disabled="true">
  24. <el-option
  25. v-for="dict in dict.type.mk_bo_winstate"
  26. :key="dict.value"
  27. :label="dict.label"
  28. :value="dict.value"
  29. ></el-option>
  30. </el-select>
  31. </el-col>
  32. </el-form>
  33. <el-button-group>
  34. <el-col :span="6">
  35. <el-button size="small" icon="el-icon-d-arrow-left" ></el-button>
  36. </el-col>
  37. <el-col :span="6">
  38. <el-button size="small" icon="el-icon-arrow-left" ></el-button>
  39. </el-col>
  40. <el-col :span="6">
  41. <el-button size="small" icon="el-icon-arrow-right" ></el-button>
  42. </el-col>
  43. <el-col :span="6">
  44. <el-button size="small" icon="el-icon-d-arrow-right" ></el-button>
  45. </el-col>
  46. </el-button-group>
  47. </el-row>
  48. <el-tabs v-model="masterTabs" @tab-click="masterTabsSwitch">
  49. <el-tab-pane label="基本信息" name="first">
  50. 项目流程
  51. <el-steps :active="form.basic.boStage" finish-status="success">
  52. <el-step title="审核"></el-step>
  53. <el-step title="立项"></el-step>
  54. <el-step title="考察"></el-step>
  55. <el-step title="开院务会"></el-step>
  56. <el-step title="院内立项"></el-step>
  57. <el-step title="调研"></el-step>
  58. <el-step title="解决方案"></el-step>
  59. <el-step title="签合同"></el-step>
  60. <el-step title="进场实施"></el-step>
  61. <el-step title="落地方案"></el-step>
  62. <el-step title="实施交付"></el-step>
  63. <el-step title="上线仪式"></el-step>
  64. </el-steps>
  65. <el-button style="margin-top: 12px;" @click="next">下一步</el-button>
  66. <el-row>
  67. 基本信息
  68. </el-row>
  69. <el-form ref="form" :model="form.basic" label-width="80px">
  70. <el-row>
  71. <el-col :span="8">
  72. <el-form-item label="商机来源" prop="boSource">
  73. <el-select v-model="form.basic.boSource" placeholder="商机来源" :disabled="true">
  74. <el-option
  75. v-for="dict in dict.type.mk_bo_source"
  76. :key="dict.value"
  77. :label="dict.label"
  78. :value="dict.value"
  79. ></el-option>
  80. </el-select>
  81. </el-form-item>
  82. </el-col>
  83. <el-col :span="8">
  84. <el-form-item label="商机类型" prop="boType">
  85. <el-select v-model="form.basic.boType" placeholder="商机类型" :disabled="true">
  86. <el-option
  87. v-for="dict in dict.type.mk_bo_type"
  88. :key="dict.value"
  89. :label="dict.label"
  90. :value="dict.value"
  91. ></el-option>
  92. </el-select>
  93. </el-form-item>
  94. </el-col>
  95. <el-col :span="8">
  96. <el-form-item label="客户名称" prop="customerName">
  97. <el-input v-model="form.basic.customerName" placeholder="请输入客户名称" :disabled="true"/>
  98. </el-form-item>
  99. </el-col>
  100. </el-row>
  101. <el-row>
  102. <el-col :span="8">
  103. <el-form-item label="医院营收总额" prop="totalHosRevenue">
  104. <el-input v-model="form.basic.totalHosRevenue" placeholder="请输入医院营收总额" :disabled="true"/>
  105. </el-form-item>
  106. </el-col>
  107. <el-col :span="8">
  108. <el-form-item label="医院耗材预估值" prop="hosDiscreetValue">
  109. <el-input v-model="form.basic.hosDiscreetValue" placeholder="请输入医院耗材预估值" :disabled="true"/>
  110. </el-form-item>
  111. </el-col>
  112. <el-col :span="8">
  113. <el-form-item label="赢单率" prop="abc">
  114. <el-input v-model="form.basic.abc" placeholder="赢单率" :disabled="true"/>
  115. </el-form-item>
  116. </el-col>
  117. </el-row>
  118. <el-row>
  119. <el-form-item label="商机内容" prop="boContent">
  120. <el-input v-model="form.basic.boContent" placeholder="商机内容" :disabled="true"/>
  121. </el-form-item>
  122. </el-row>
  123. </el-form>
  124. <el-row>
  125. 流程信息
  126. </el-row>
  127. <el-tabs v-model="secondTabs" @tab-click="secondTabsSwitch">
  128. <el-tab-pane label="阶段动作" name="jd1" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 0">
  129. <el-form ref="form" :model="form.basic" :rules="rules">
  130. <el-row>
  131. <el-col :span="10">
  132. <el-form-item label="医院应收总额" prop="totalHosRevenue">
  133. <el-input v-model="form.basic.totalHosRevenue" placeholder="医院应收总额" :disabled="true"/>
  134. </el-form-item>
  135. </el-col>
  136. </el-row>
  137. <el-row>
  138. <el-col :span="10">
  139. <el-form-item label="医院耗材预估额" prop="hosDiscreetValue">
  140. <el-input v-model="form.basic.hosDiscreetValue" placeholder="医院耗材预估额" :disabled="true"/>
  141. </el-form-item>
  142. </el-col>
  143. </el-row>
  144. </el-form>
  145. </el-tab-pane>
  146. <el-tab-pane label="阶段动作" name="jd2" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 1">
  147. <el-form ref="form" :model="form.basic.boFlow" :rules="rules">
  148. <el-row>
  149. 项目立项是否通过
  150. <el-radio v-model = form.basic.boFlow.projectApproval label="1">是</el-radio>
  151. <el-radio v-model = form.basic.boFlow.projectApproval label="0">否</el-radio>
  152. </el-row>
  153. <el-row v-if="form.basic.boFlow.projectApproval == 1">
  154. <el-col :span="1.5">
  155. <el-input v-model="form.basic.boFlow.businessCouncilAccessoryName" placeholder="请上传商机审议会" :disabled="true"/>
  156. </el-col>
  157. <el-col :span="1.5">
  158. <el-button
  159. type="info"
  160. plain
  161. icon="el-icon-upload2"
  162. size="mini"
  163. @click="uploadAccessory(`business_council_accessory`)"
  164. v-hasPermi="['system:user:import']"
  165. >上传</el-button>
  166. <el-button
  167. size="mini"
  168. type="text"
  169. icon="el-icon-delete"
  170. @click="deleteAccessory(`business_council_accessory`,1)"
  171. v-hasPermi="['system:basic:remove']"
  172. >删除</el-button>
  173. </el-col>
  174. </el-row>
  175. <el-row v-if="form.basic.boFlow.projectApproval == 1">
  176. <el-col :span="1.5">
  177. <el-input v-model="form.basic.boFlow.projectProposalAccessoryName" placeholder="请上传立项书" :disabled="true"/>
  178. </el-col>
  179. <el-col :span="1.5">
  180. <el-button
  181. type="info"
  182. plain
  183. icon="el-icon-upload2"
  184. size="mini"
  185. @click="uploadAccessory(`project_proposal_accessory`)"
  186. v-hasPermi="['system:user:import']"
  187. >上传</el-button>
  188. </el-col>
  189. </el-row>
  190. <el-row>
  191. <el-col :span="10" v-if="form.basic.boFlow.projectApproval == 0">
  192. 项目未通过原因:<el-input v-model="form.basic.boFlow.noPassCause" />
  193. </el-col>
  194. </el-row>
  195. </el-form>
  196. </el-tab-pane>
  197. <el-tab-pane label="立项模板" name="lx" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 1">
  198. <el-row>
  199. <el-button @click="pojproDownload">标准立项书</el-button>
  200. </el-row>
  201. <el-row>
  202. <el-button @click="pojproDownload">商机审会决议书</el-button>
  203. </el-row>
  204. </el-tab-pane>
  205. <el-tab-pane label="项目人员组成" name="xmry" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 1">
  206. <el-row :gutter="10" class="mb8">
  207. <el-col :span="1.5">
  208. <el-button
  209. type="primary"
  210. plain
  211. icon="el-icon-plus"
  212. size="mini"
  213. @click="handleAdd"
  214. v-hasPermi="['drp-business:task:add']"
  215. >新增</el-button>
  216. </el-col>
  217. </el-row>
  218. <el-table v-loading="loading" :data="form.pojpsn">
  219. <el-table-column type="selection" width="55" align="center" />
  220. <el-table-column label="名称" align="center" prop="staffName" />
  221. <el-table-column label="岗位名称" align="center" prop="pojpost" />
  222. <el-table-column label="负责事项" align="center" prop="duty" />
  223. </el-table>
  224. </el-tab-pane>
  225. <el-tab-pane label="方案模板" name="fa" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 6">
  226. <el-row>
  227. <el-button @click="pojproDownload">售前提案文件模板</el-button>
  228. </el-row>
  229. <el-row>
  230. <el-button @click="pojproDownload">考察报告模板</el-button>
  231. </el-row>
  232. <el-row>
  233. <el-button @click="pojproDownload">调研相关文件模板</el-button>
  234. </el-row>
  235. <el-row>
  236. <el-button @click="pojproDownload">投标模板</el-button>
  237. </el-row>
  238. <el-row>
  239. <el-button @click="pojproDownload">其他文件</el-button>
  240. </el-row>
  241. </el-tab-pane>
  242. <el-tab-pane label="售前提案" name="sq" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 6">
  243. <el-form ref="form" :model="form.basic.boFlow" :rules="rules">
  244. <el-row>
  245. <el-col :span="1.5">
  246. <el-input v-model="form.basic.boFlow.preSaleProposalAccessoryName" placeholder="请上传售前提案文件" :disabled="true"/>
  247. </el-col>
  248. <el-col :span="1.5">
  249. <el-button
  250. type="info"
  251. plain
  252. icon="el-icon-upload2"
  253. size="mini"
  254. @click="uploadAccessory(`pre_sale_proposal_accessory`)"
  255. v-hasPermi="['system:user:import']"
  256. >上传</el-button>
  257. </el-col>
  258. </el-row>
  259. </el-form>
  260. </el-tab-pane>
  261. <el-tab-pane label="邀请考察" name="kc" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 6">
  262. <el-form ref="form" :model="form.basic.boFlow" :rules="rules">
  263. <el-row>
  264. <el-col :span="5">
  265. <el-form-item label="考察开始时间" prop="inspectStartTime">
  266. <el-date-picker
  267. v-model="form.basic.boFlow.inspectStartTime"
  268. type="datetime"
  269. placeholder="选择日期时间">
  270. </el-date-picker>
  271. </el-form-item>
  272. </el-col>
  273. <el-col :span="5">
  274. <el-form-item label="考察结束时间" prop="inspectStartTime">
  275. <el-date-picker
  276. v-model="form.basic.boFlow.inspectEndTime"
  277. type="datetime"
  278. placeholder="选择日期时间">
  279. </el-date-picker>
  280. </el-form-item>
  281. </el-col>
  282. </el-row>
  283. <el-row>
  284. <el-col :span="1.5">
  285. <el-input v-model="form.basic.boFlow.investigationReportAccessoryName" placeholder="请上传考察报告" :disabled="true"/>
  286. </el-col>
  287. <el-col :span="1.5">
  288. <el-button
  289. type="info"
  290. plain
  291. icon="el-icon-upload2"
  292. size="mini"
  293. @click="uploadAccessory(`investigation_report_accessory`)"
  294. v-hasPermi="['system:user:import']"
  295. >上传</el-button>
  296. </el-col>
  297. </el-row>
  298. </el-form>
  299. </el-tab-pane>
  300. <el-tab-pane label="开院务会" name="kh" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 6">
  301. <el-form ref="form" :model="form.basic.boFlow" :rules="rules">
  302. <el-row>
  303. <el-col :span="5">
  304. <el-form-item label="开院务会时间" prop="conferenceTime">
  305. <el-date-picker
  306. v-model="form.basic.boFlow.conferenceTime"
  307. type="datetime"
  308. placeholder="选择日期时间">
  309. </el-date-picker>
  310. </el-form-item>
  311. </el-col>
  312. </el-row>
  313. </el-form>
  314. </el-tab-pane>
  315. <el-tab-pane label="院内立项" name="yn" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 6">
  316. <el-form ref="form" :model="form.basic.boFlow" :rules="rules">
  317. <el-row>
  318. <el-col :span="5">
  319. <el-form-item label="院内立项时间" prop="hospitalApprovalTime">
  320. <el-date-picker
  321. v-model="form.basic.boFlow.conferenceTime"
  322. type="datetime"
  323. placeholder="选择日期时间">
  324. </el-date-picker>
  325. </el-form-item>
  326. </el-col>
  327. <el-col :span="5">
  328. <el-form-item label="院内立项牵头人" prop="hospitalApprovalInitiator">
  329. <el-input v-model="form.basic.boFlow.hospitalApprovalInitiator" placeholder="院内立项牵头人" />
  330. </el-form-item>
  331. </el-col>
  332. </el-row>
  333. </el-form>
  334. </el-tab-pane>
  335. <el-tab-pane label="进场调研" name="jc" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 6">
  336. <el-form ref="form" :model="form.basic.boFlow" :rules="rules">
  337. <el-row>
  338. <el-col :span="5">
  339. <el-form-item label="调研时间" prop="researchTime">
  340. <el-date-picker
  341. v-model="form.basic.boFlow.researchTime"
  342. type="datetime"
  343. placeholder="选择日期时间">
  344. </el-date-picker>
  345. </el-form-item>
  346. </el-col>
  347. </el-row>
  348. <el-row>
  349. <el-col :span="1.5">
  350. <el-input v-model="form.basic.boFlow.investigateReportAccessoryName" placeholder="调研报告" :disabled="true"/>
  351. </el-col>
  352. <el-col :span="1.5">
  353. <el-button
  354. type="info"
  355. plain
  356. icon="el-icon-upload2"
  357. size="mini"
  358. @click="uploadAccessory(`investigation_report_accessory`)"
  359. v-hasPermi="['system:user:import']"
  360. >上传</el-button>
  361. </el-col>
  362. </el-row>
  363. </el-form>
  364. </el-tab-pane>
  365. <el-tab-pane label="挂网投标" name="gw" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 7">
  366. <el-form ref="form" :model="form.basic.boFlow" :rules="rules">
  367. <el-row>
  368. <el-col :span="5">
  369. <el-form-item label="挂网时间" prop="researchTime">
  370. <el-date-picker
  371. v-model="form.basic.boFlow.hangingTime"
  372. type="datetime"
  373. placeholder="选择日期时间">
  374. </el-date-picker>
  375. </el-form-item>
  376. </el-col>
  377. <el-col :span="5">
  378. <el-form-item label="投标书" prop="researchTime">
  379. <el-input v-model="form.basic.boFlow.biddingDocumentsAccessoryName" placeholder="请上传投标书" :disabled="true"/>
  380. </el-form-item>
  381. </el-col>
  382. <el-col :span="5">
  383. <el-button
  384. type="info"
  385. plain
  386. icon="el-icon-upload2"
  387. size="mini"
  388. @click="uploadAccessory(`bidding_documents_accessory`)"
  389. v-hasPermi="['system:user:import']"
  390. >上传</el-button>
  391. </el-col>
  392. <el-col :span="5">
  393. <el-form-item label="我方优势" prop="researchTime">
  394. <el-input v-model="form.ourAdvantage" placeholder="我方优势" />
  395. </el-form-item>
  396. </el-col>
  397. </el-row>
  398. <el-row>
  399. <el-col :span="5">
  400. 投标是否通过
  401. <el-radio v-model = form.basic.boFlow.biddingDocumentsPass label="1">是</el-radio>
  402. <el-radio v-model = form.basic.boFlow.biddingDocumentsPass label="0">否</el-radio>
  403. </el-col>
  404. </el-row>
  405. <el-row v-if="form.basic.boFlow.biddingDocumentsPass == 1">
  406. <el-col :span="1.5">
  407. <el-input v-model="form.basic.boFlow.letterAcceptanceAccessoryName" placeholder="中标通知书" :disabled="true"/>
  408. </el-col>
  409. <el-col :span="1.5">
  410. <el-button
  411. type="info"
  412. plain
  413. icon="el-icon-upload2"
  414. size="mini"
  415. @click="uploadAccessory(`letter_acceptance_accessory`)"
  416. v-hasPermi="['system:user:import']"
  417. >上传</el-button>
  418. </el-col>
  419. </el-row>
  420. </el-form>
  421. </el-tab-pane>
  422. <el-tab-pane label="合同签订" name="ht" style="height: 150px;overflow-y: scroll;" v-if="form.basic.boStage == 7">
  423. <el-form ref="form" :model="form.basic.boFlow" :rules="rules">
  424. <el-row>
  425. <el-col :span="5">
  426. <el-form-item label="合同签订时间" prop="contractSigningTime">
  427. <el-date-picker
  428. v-model="form.basic.boFlow.contractSigningTime"
  429. type="datetime"
  430. placeholder="选择日期时间">
  431. </el-date-picker>
  432. </el-form-item>
  433. </el-col>
  434. </el-row>
  435. <el-row>
  436. <el-col :span="5">
  437. <el-input v-model="form.basic.boFlow.contractDocumentAccessoryName" placeholder="合同文件" :disabled="true"/>
  438. </el-col>
  439. <el-col :span="5">
  440. <el-button
  441. type="info"
  442. plain
  443. icon="el-icon-upload2"
  444. size="mini"
  445. @click="uploadAccessory(`contract_document_accessory`)"
  446. v-hasPermi="['system:user:import']"
  447. >上传</el-button>
  448. </el-col>
  449. </el-row>
  450. </el-form>
  451. </el-tab-pane>
  452. <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">
  453. <el-row :gutter="10" class="mb8">
  454. <el-col :span="1.5">
  455. <el-button
  456. type="primary"
  457. plain
  458. icon="el-icon-plus"
  459. size="mini"
  460. @click="handleAdd"
  461. v-hasPermi="['drp-business:task:add']"
  462. >新增</el-button>
  463. </el-col>
  464. </el-row>
  465. <el-table v-loading="loading" :data="form.behavior">
  466. <el-table-column type="selection" width="55" align="center" />
  467. <el-table-column label="跟进人" align="center" prop="code" />
  468. <el-table-column label="跟进日期" align="center" prop="name" />
  469. <el-table-column label="是否跟进" align="center" prop="type" />
  470. <el-table-column label="联系人" align="center" prop="type" />
  471. <el-table-column label="拜访效果" align="center" prop="type" />
  472. <el-table-column label="是否需要上级协助" align="center" prop="type" />
  473. <el-table-column label="协助事项" align="center" prop="type" />
  474. <el-table-column label="跟进内容" align="center" prop="type" />
  475. </el-table>
  476. </el-tab-pane>
  477. </el-tabs>
  478. <el-row>
  479. 其它信息
  480. </el-row>
  481. <el-form ref="form" :model="form.basic" label-width="80px">
  482. <el-row>
  483. <el-col :span="8">
  484. <el-form-item label="销售组织" prop="marketingOrganizing">
  485. <el-input v-model="form.basic.marketingOrganizing" placeholder="销售组织" :disabled="true"/>
  486. </el-form-item>
  487. </el-col>
  488. <el-col :span="8">
  489. <el-form-item label="销售区域" prop="marketingArea">
  490. <el-input v-model="form.basic.marketingArea" placeholder="销售区域" :disabled="true"/>
  491. </el-form-item>
  492. </el-col>
  493. <el-col :span="8">
  494. <el-form-item label="部门" prop="deptName">
  495. <el-input v-model="form.basic.deptName" placeholder="部门" :disabled="true"/>
  496. </el-form-item>
  497. </el-col>
  498. </el-row>
  499. <el-row>
  500. <el-col :span="8">
  501. <el-form-item label="负责人" prop="principal">
  502. <el-input v-model="form.basic.principal" placeholder="负责人" :disabled="true"/>
  503. </el-form-item>
  504. </el-col>
  505. <el-col :span="8">
  506. <el-form-item label="创建人" prop="createBy">
  507. <el-input v-model="form.basic.createBy" placeholder="创建人" :disabled="true"/>
  508. </el-form-item>
  509. </el-col>
  510. <el-col :span="8">
  511. <el-form-item label="创建时间" prop="createTime">
  512. <el-input v-model="form.basic.createTime" placeholder="创建时间" :disabled="true"/>
  513. </el-form-item>
  514. </el-col>
  515. </el-row>
  516. </el-form>
  517. </el-tab-pane>
  518. <el-tab-pane label="商机任务" name="second">
  519. <el-row :gutter="10" class="mb8">
  520. <el-col :span="1.5">
  521. <el-button
  522. type="primary"
  523. plain
  524. icon="el-icon-plus"
  525. size="mini"
  526. @click="handleAdd"
  527. v-hasPermi="['drp-business:task:add']"
  528. >新增</el-button>
  529. </el-col>
  530. </el-row>
  531. <el-table v-loading="loading" :data="form.task">
  532. <el-table-column type="selection" width="55" align="center" />
  533. <el-table-column label="任务编码" align="center" prop="code" />
  534. <el-table-column label="任务名称" align="center" prop="name" />
  535. <el-table-column label="任务类型" align="center" prop="type" />
  536. <el-table-column label="任务状态" align="center" prop="state" />
  537. <el-table-column label="客户名称" align="center" prop="customerName" />
  538. <el-table-column label="联系人名称" align="center" prop="linkmanName" />
  539. <el-table-column label="销售组织名称" align="center" prop="salesOrgName" />
  540. <el-table-column label="部门名称" align="center" prop="deptName" />
  541. <el-table-column label="负责人名称" align="center" prop="staffName" />
  542. <el-table-column label="截止时间" align="center" prop="deadlineDate" width="180">
  543. <template slot-scope="scope">
  544. <span>{{ parseTime(scope.row.deadlineDate, '{y}-{m}-{d}') }}</span>
  545. </template>
  546. </el-table-column>
  547. <el-table-column label="任务内容" align="center" prop="content" />
  548. </el-table>
  549. </el-tab-pane>
  550. <el-tab-pane label="商机联系人" name="third">
  551. <el-row :gutter="10" class="mb8">
  552. <el-col :span="1.5">
  553. <el-button
  554. type="primary"
  555. plain
  556. icon="el-icon-plus"
  557. size="mini"
  558. @click="handleAdd"
  559. v-hasPermi="['drp-business:task:add']"
  560. >新增</el-button>
  561. </el-col>
  562. </el-row>
  563. <el-table v-loading="loading" :data="form.contact">
  564. <el-table-column type="selection" width="55" align="center" />
  565. <el-table-column label="名称" align="center" prop="code" />
  566. <el-table-column label="性别" align="center" prop="name" />
  567. <el-table-column label="联系电话" align="center" prop="type" />
  568. <el-table-column label="部门" align="center" prop="state" />
  569. <el-table-column label="职务" align="center" prop="customerName" />
  570. <el-table-column label="决策力" align="center" prop="linkmanName" />
  571. <el-table-column label="态度" align="center" prop="salesOrgName" />
  572. <el-table-column label="地址" align="center" prop="deptName" />
  573. </el-table>
  574. </el-tab-pane>
  575. <el-tab-pane label="附件信息" name="fourth">
  576. <el-row :gutter="10" class="mb8">
  577. <el-col :span="1.5">
  578. <el-button
  579. type="info"
  580. plain
  581. icon="el-icon-upload2"
  582. size="mini"
  583. @click="uploadAccessory(`list`)"
  584. v-hasPermi="['system:user:import']"
  585. >上传</el-button>
  586. </el-col>
  587. </el-row>
  588. <el-table v-loading="loading" :data="form.accessory">
  589. <el-table-column type="selection" width="55" align="center" />
  590. <el-table-column type="index" label="序号" width="55" align="center" />
  591. <el-table-column label="名称" align="center" prop="fileName" />
  592. <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  593. <template slot-scope="scope">
  594. <el-button
  595. size="mini"
  596. type="text"
  597. icon="el-icon-delete"
  598. @click="deleteAccessory(`list`,scope.row)"
  599. v-hasPermi="['system:basic:remove']"
  600. >删除</el-button>
  601. </template>
  602. </el-table-column>
  603. </el-table>
  604. </el-tab-pane>
  605. </el-tabs>
  606. <!-- 上传对话框 -->
  607. <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
  608. <el-upload
  609. ref="upload"
  610. :limit="1"
  611. accept=".xlsx, .xls,.doc,docx"
  612. :headers="upload.headers"
  613. :action="upload.url + '?boId=' + form.basic.id + '&flag=' + upload.flag"
  614. :disabled="upload.isUploading"
  615. :on-progress="handleFileUploadProgress"
  616. :on-success="handleFileSuccess"
  617. :auto-upload="false"
  618. drag
  619. >
  620. <i class="el-icon-upload"></i>
  621. <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
  622. </el-upload>
  623. <div slot="footer" class="dialog-footer">
  624. <el-button type="primary" @click="submitFileForm">确 定</el-button>
  625. <el-button @click="upload.open = false">取 消</el-button>
  626. </div>
  627. </el-dialog>
  628. </div>
  629. </template>
  630. <script>
  631. import {getBasic,getBehaviorList,delAccessory} from "@/api/business/spd/bo/basic";
  632. import { listTask, getTask, delTask, addTask, updateTask } from "@/api/business/spd/bo/task";
  633. import { listAccessory, } from "@/api/business/spd/bo/accessory";
  634. import {listPojpsn} from "@/api/business/spd/bo/pojpsn";
  635. import { getToken } from "@/utils/auth";
  636. export default {
  637. name: 'bo-details',
  638. dicts: ['mk_bo_type','mk_bo_state','mk_bo_winstate','mk_bo_source'],
  639. data() {
  640. return {
  641. masterTabs: 'first',
  642. secondTabs: 'jd1',
  643. // 基本信息
  644. form: {
  645. basic:{
  646. boFlow:{}
  647. },
  648. task:[],
  649. contact:[],
  650. accessory:[],
  651. pojpsn:[],
  652. behavior:[],
  653. pojpsn:[],
  654. },
  655. // 上传参数
  656. upload: {
  657. // 是否显示弹出层
  658. open: false,
  659. // 弹出层标题
  660. title: "",
  661. // 是否禁用上传
  662. isUploading: false,
  663. // 上传类型
  664. flag: "",
  665. // 设置上传的请求头部
  666. headers: { Authorization: "Bearer " + getToken() },
  667. // 上传的地址
  668. url: process.env.VUE_APP_BASE_API + "/mk/bo/basic/upload"
  669. },
  670. }
  671. },
  672. methods: {
  673. // 返回
  674. handleBack() {
  675. this.$router.push('/business/spd/bo/basic');
  676. },
  677. //主多页签切换
  678. masterTabsSwitch(e) {
  679. console.log('主标签页切换',e);
  680. switch(e.name) {
  681. case 'second':
  682. //获取商机任务
  683. const p = {"bo": this.form.basic.id};
  684. listTask(p).then(response => {
  685. this.form.task = response.rows;
  686. });
  687. break;
  688. case 'third':
  689. //获取联系人
  690. break;
  691. case 'fourth':
  692. //获取附件列表
  693. listAccessory(this.form.basic.id).then(response => {
  694. this.form.accessory = response.rows;
  695. });
  696. break;
  697. default:
  698. break;
  699. }
  700. },
  701. //次多页签切换
  702. secondTabsSwitch(e) {
  703. console.log('次标签页切换',e);
  704. switch(e.name) {
  705. case 'gj':
  706. //获取跟进记录
  707. getBehaviorList(this.form.basic.id).then(response => {
  708. this.form.behavior = response.rows;
  709. });
  710. break;
  711. case 'xmry':
  712. //获取成员
  713. const p = {"bo": this.form.basic.id};
  714. listPojpsn(p).then(response => {
  715. this.form.pojpsn = response.rows;
  716. });
  717. break;
  718. default:
  719. break;
  720. }
  721. },
  722. //下一步
  723. next() {
  724. if(this.form.basic.boStage == 1){
  725. this.form.basic.boStage += 5;
  726. }else if(this.form.basic.boStage == 7){
  727. this.form.basic.boStage += 5;
  728. }else{
  729. this.form.basic.boStage++;
  730. }
  731. },
  732. //测试
  733. handleAdd(){
  734. },
  735. //上传附件公共方法
  736. uploadAccessory(f) {
  737. // this.upload.title = "上传附件";
  738. this.upload.open = true;
  739. this.upload.flag = f;
  740. },
  741. // 提交上传文件
  742. submitFileForm() {
  743. this.$refs.upload.submit();
  744. },
  745. // 文件上传中处理
  746. handleFileUploadProgress(event, file, fileList) {
  747. this.upload.isUploading = true;
  748. },
  749. // 文件上传成功处理
  750. handleFileSuccess(response, file, fileList) {
  751. this.upload.open = false;
  752. this.upload.isUploading = false;
  753. this.$refs.upload.clearFiles();
  754. this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "导入结果", { dangerouslyUseHTMLString: true });
  755. this.getList();
  756. },
  757. //删除附件
  758. deleteAccessory(f,row){
  759. // console.log("flag",f);
  760. // console.log("row",row);
  761. // delAccessory(this.form.basic.id,f,row.id);
  762. this.$modal.confirm('是否确认删除?').then(function() {
  763. return delAccessory(this.form.basic.id,f,row.id);
  764. }).then(() => {
  765. this.getList();
  766. this.$modal.msgSuccess("删除成功");
  767. }).catch(() => {});
  768. },
  769. //立项书下载
  770. //标准立项书
  771. pojproDownload(){
  772. },
  773. //商机审会决议书
  774. pojproDownload1(){
  775. },
  776. },
  777. created() {
  778. console.log("详情id:",this.$route.params.id);
  779. getBasic(this.$route.params.id).then(response => {
  780. this.form.basic = response.data;
  781. });
  782. },
  783. }
  784. </script>
  785. <style scoped>
  786. .md-content>>>.el-form-item {
  787. margin-bottom: 10px;
  788. }
  789. .md-content>>>.el-tabs--border-card>.el-tabs__content {
  790. padding-bottom: 8px;
  791. }
  792. .md-content .md-auditInfo>>>.el-form-item {
  793. margin-bottom: 0px;
  794. }
  795. .md-main>>>.el-form-item,
  796. .md-vice>>>.el-form-item {
  797. width: 100%;
  798. box-sizing: border-box;
  799. }
  800. .md-main>>>.el-form-item__label,
  801. .md-vice>>>.el-form-item__label {
  802. width: 40%;
  803. }
  804. .md-main>>>.el-form-item__content,
  805. .md-md-vice>>>.el-form-item__content {
  806. width: 60%;
  807. }
  808. .md-content>>>.el-form-item__label {
  809. font-weight: normal;
  810. /* text-align: left;
  811. width: 28%; */
  812. white-space: nowrap;
  813. /* IE6 需要定义宽度 */
  814. overflow: hidden;
  815. -o-text-overflow: ellipsis;
  816. /* Opera */
  817. text-overflow: ellipsis;
  818. /* IE, Safari (WebKit) */
  819. /* -moz-binding: url('ellipsis.xml#ellipsis'); */
  820. /* Firefox */
  821. }
  822. .md-main>>>.material-table {
  823. height: 100%;
  824. }
  825. .md-vice>>>.material-table {
  826. height: 140px;
  827. overflow-y: auto;
  828. overflow-x: auto;
  829. }
  830. </style>