dueDiligenceList.vue 35 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108
  1. <template>
  2. <div class="app-container">
  3. <div>
  4. <el-table v-if="false" border :data="dueList" class="tableWrapper">
  5. <!-- <el-table-column type="selection" width="55" align="center" /> -->
  6. <el-table-column label="尽调名称" align="center" prop="investigateName">
  7. <template slot-scope="scope">
  8. <div :title="scope.row.investigateName">
  9. {{ scope.row.investigateName }}
  10. </div>
  11. </template>
  12. </el-table-column>
  13. <el-table-column
  14. label="尽调人员"
  15. align="center"
  16. prop="investigatePerson"
  17. >
  18. <template slot-scope="scope">
  19. <div :title="scope.row.investigatePerson">
  20. {{ scope.row.investigatePerson }}
  21. </div>
  22. </template>
  23. </el-table-column>
  24. <el-table-column
  25. label="尽调费用(元)"
  26. align="center"
  27. prop="investigateCost"
  28. >
  29. <template slot-scope="scope">
  30. <div :title="scope.row.investigateCost">
  31. {{ scope.row.investigateCost }}
  32. </div>
  33. </template>
  34. </el-table-column>
  35. <el-table-column label="描述" align="center" prop="describe">
  36. <template slot-scope="scope">
  37. <div :title="scope.row.describe">
  38. {{ scope.row.describe }}
  39. </div>
  40. </template>
  41. </el-table-column>
  42. <el-table-column label="备注" align="center" prop="remark">
  43. <template slot-scope="scope">
  44. <div :title="scope.row.remark">
  45. {{ scope.row.remark }}
  46. </div>
  47. </template>
  48. </el-table-column>
  49. <el-table-column label="创建时间" align="center" prop="createTime">
  50. <template slot-scope="scope">
  51. <div :title="scope.row.createTime">
  52. {{ scope.row.createTime }}
  53. </div>
  54. </template>
  55. </el-table-column>
  56. <el-table-column
  57. label="操作"
  58. align="center"
  59. class-name="small-padding fixed-width"
  60. width="360"
  61. >
  62. <template slot-scope="scope">
  63. <!--
  64. v-show="scope.row.investigatePersonId.indexOf(user.userId) > -1" -->
  65. <!-- <el-button
  66. class="custom-blue-color"
  67. size="mini"
  68. type="text"
  69. icon="el-icon-search"
  70. @click="handleLook(scope.row)"
  71. >查看报告</el-button
  72. > -->
  73. <el-button
  74. v-show="scope.row.investigatePersonId.indexOf(user.userId) > -1"
  75. size="mini"
  76. type="text"
  77. icon="el-icon-upload2"
  78. @click="handleShowApplyPop(scope.row)"
  79. >上传报告</el-button
  80. >
  81. <!-- status 0=进行中 1=完成 -->
  82. <!-- <el-button
  83. v-if="scope.row.status === '0'"
  84. size="mini"
  85. type="text"
  86. icon="el-icon-circle-check"
  87. @click="handleDuePlan(scope.row)"
  88. >完成尽调</el-button
  89. > -->
  90. <el-button
  91. size="mini"
  92. type="text"
  93. icon="el-icon-edit"
  94. @click="handleUpdate(scope.row)"
  95. >修改</el-button
  96. >
  97. <el-button
  98. class="custom-red-color"
  99. size="mini"
  100. type="text"
  101. icon="el-icon-delete"
  102. @click="handleDelete(scope.row)"
  103. >删除</el-button
  104. >
  105. </template>
  106. </el-table-column>
  107. </el-table>
  108. </div>
  109. <!-- 添加或修改尽调申请 -->
  110. <el-dialog
  111. :title="dueDiligenceTit"
  112. :visible.sync="dueDiligenceOpen"
  113. width="1100px"
  114. append-to-body
  115. >
  116. <el-form
  117. ref="dueForm"
  118. class="special-el-form"
  119. :model="dueForm"
  120. :rules="dueRules"
  121. label-width="170px"
  122. >
  123. <el-form-item
  124. label="项目名称"
  125. prop="projectName"
  126. class="special-el-form-item public-input-height-2"
  127. :rules="[
  128. { required: true, trigger: 'blur', message: '请选择' },
  129. ]"
  130. >
  131. <div
  132. class="el-input__inner inputSimulation"
  133. @click="handleProjectItem"
  134. :class="{ show_disabled: pageType === '1' }"
  135. :title="dueForm.projectName"
  136. >
  137. {{ dueForm.projectName ? dueForm.projectName : "请选择 " }}
  138. </div>
  139. <projectItem
  140. ref="projectItem"
  141. @getProjectInfo="getProjectInfo"
  142. ></projectItem>
  143. </el-form-item>
  144. <el-form-item
  145. label="尽调名称"
  146. prop="investigateName"
  147. class="special-el-form-item"
  148. >
  149. <el-input
  150. maxlength="100"
  151. v-model="dueForm.investigateName"
  152. placeholder="请输入尽调名称"
  153. />
  154. </el-form-item>
  155. <el-form-item
  156. label="尽调地点"
  157. prop="investigatePlace"
  158. class="special-el-form-item"
  159. >
  160. <el-input
  161. maxlength="100"
  162. v-model="dueForm.investigatePlace"
  163. placeholder="请输入尽调地点"
  164. />
  165. </el-form-item>
  166. <el-form-item label="期望尽调开始时间" prop="startTime">
  167. <el-date-picker
  168. clearable
  169. v-model="dueForm.startTime"
  170. type="date"
  171. value-format="yyyy-MM-dd"
  172. placeholder="请选择期望尽调开始时间"
  173. >
  174. </el-date-picker>
  175. </el-form-item>
  176. <el-form-item label="期望尽调结束时间" prop="endTime">
  177. <el-date-picker
  178. clearable
  179. v-model="dueForm.endTime"
  180. type="date"
  181. value-format="yyyy-MM-dd"
  182. placeholder="请选择期望尽调结束时间"
  183. >
  184. </el-date-picker>
  185. </el-form-item>
  186. <el-form-item label="尽调资料是否齐全" prop="readiness">
  187. <el-radio-group v-model="dueForm.readiness">
  188. <el-radio label="1">是</el-radio>
  189. <el-radio label="0">否</el-radio>
  190. </el-radio-group>
  191. </el-form-item>
  192. <el-form-item label="是否有第三方投资机构" prop="thirdParty">
  193. <el-radio-group v-model="dueForm.thirdParty">
  194. <el-radio label="1">是</el-radio>
  195. <el-radio label="0">否</el-radio>
  196. </el-radio-group>
  197. </el-form-item>
  198. <el-form-item label="尽调费用(元)" prop="investigateCost">
  199. <el-input
  200. maxlength="20"
  201. v-model="dueForm.investigateCost"
  202. placeholder="请输入尽调费用"
  203. @input="
  204. (value) =>
  205. (dueForm.investigateCost = value
  206. .replace(/[^0-9.]/g, '')
  207. .replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3')
  208. .replace(/-/g, ''))
  209. "
  210. />
  211. </el-form-item>
  212. <el-form-item label="尽调财务数据截止日期" prop="deadDate">
  213. <el-date-picker
  214. clearable
  215. v-model="dueForm.deadDate"
  216. type="date"
  217. value-format="yyyy-MM-dd"
  218. placeholder="请选择尽调财务数据截止日期"
  219. >
  220. </el-date-picker>
  221. </el-form-item>
  222. <el-form-item
  223. label="尽调人员"
  224. prop="investigatePerson"
  225. class="special-el-form-item public-input-height-2"
  226. >
  227. <div
  228. class="el-input__inner inputSimulation"
  229. @click="handleSelectPeople"
  230. >
  231. {{
  232. dueForm.investigatePerson
  233. ? dueForm.investigatePerson
  234. : "请选择尽调人员"
  235. }}
  236. </div>
  237. </el-form-item>
  238. <el-form-item
  239. label="尽调背调资料"
  240. prop="file"
  241. class="special-el-form-item"
  242. >
  243. <fileItem
  244. ref="fileItems"
  245. :id="dueForm.id"
  246. @getFileList="getFileList"
  247. ></fileItem>
  248. </el-form-item>
  249. <el-form-item label="描述" prop="describe" class="special-el-form-item">
  250. <el-input
  251. rows="4"
  252. maxlength="200"
  253. v-model="dueForm.describe"
  254. type="textarea"
  255. placeholder="请输入内容"
  256. />
  257. </el-form-item>
  258. <el-form-item label="备注" prop="remark" class="special-el-form-item">
  259. <el-input
  260. rows="4"
  261. maxlength="200"
  262. type="textarea"
  263. v-model="dueForm.remark"
  264. placeholder="请输入备注"
  265. />
  266. </el-form-item>
  267. </el-form>
  268. <div slot="footer" class="dialog-footer">
  269. <el-button @click="cancelDueForm">取 消</el-button>
  270. <el-button type="warning" @click="submitDueForm(false)" v-preventReClick>暂 存</el-button>
  271. <el-button type="primary" @click="submitDueForm(true)" v-preventReClick>提 交</el-button>
  272. </div>
  273. </el-dialog>
  274. <!-- 添加或修改尽调报告 -->
  275. <el-dialog
  276. :title="dueDiligenceTit1"
  277. :visible.sync="dueDiligenceOpen1"
  278. width="1100px"
  279. append-to-body
  280. >
  281. <h3>尽调申请详情</h3>
  282. <el-divider></el-divider>
  283. <el-form
  284. ref="duePeportForm"
  285. class="special-el-form"
  286. :model="duePeportForm"
  287. :rules="dueRules1"
  288. label-width="170px"
  289. >
  290. <el-form-item label="项目名称" class="special-el-form-item">
  291. <el-input
  292. type="textarea"
  293. rows="2"
  294. disabled
  295. v-model="dueForm.projectName"
  296. />
  297. </el-form-item>
  298. <el-form-item label="尽调名称" class="special-el-form-item">
  299. <el-input
  300. disabled
  301. v-model="dueForm.investigateName"
  302. placeholder="请输入尽调名称"
  303. />
  304. </el-form-item>
  305. <el-form-item
  306. label="尽调地点"
  307. prop="investigatePlace"
  308. class="special-el-form-item"
  309. >
  310. <el-input
  311. disabled
  312. maxlength="100"
  313. v-model="dueForm.investigatePlace"
  314. />
  315. </el-form-item>
  316. <el-form-item label="期望尽调开始时间" prop="startTime">
  317. <el-date-picker
  318. disabled
  319. clearable
  320. v-model="dueForm.startTime"
  321. type="date"
  322. value-format="yyyy-MM-dd"
  323. >
  324. </el-date-picker>
  325. </el-form-item>
  326. <el-form-item label="期望尽调结束时间" prop="endTime">
  327. <el-date-picker
  328. disabled
  329. clearable
  330. v-model="dueForm.endTime"
  331. type="date"
  332. value-format="yyyy-MM-dd"
  333. >
  334. </el-date-picker>
  335. </el-form-item>
  336. <el-form-item label="尽调资料是否齐全" prop="readiness">
  337. <el-radio-group v-model="dueForm.readiness" disabled>
  338. <el-radio label="1">是</el-radio>
  339. <el-radio label="0">否</el-radio>
  340. </el-radio-group>
  341. </el-form-item>
  342. <el-form-item label="是否有第三方投资机构" prop="thirdParty">
  343. <el-radio-group v-model="dueForm.thirdParty" disabled>
  344. <el-radio label="1">是</el-radio>
  345. <el-radio label="0">否</el-radio>
  346. </el-radio-group>
  347. </el-form-item>
  348. <el-form-item label="尽调费用(元)">
  349. <el-input disabled v-model="dueForm.investigateCost" />
  350. </el-form-item>
  351. <el-form-item label="尽调财务数据截止日期" prop="deadDate">
  352. <el-date-picker
  353. disabled
  354. clearable
  355. v-model="dueForm.deadDate"
  356. type="date"
  357. value-format="yyyy-MM-dd"
  358. >
  359. </el-date-picker>
  360. </el-form-item>
  361. <el-form-item label="尽调人员" class="special-el-form-item">
  362. <el-input
  363. type="textarea"
  364. rows="2"
  365. disabled
  366. v-model="dueForm.investigatePerson"
  367. />
  368. </el-form-item>
  369. <el-form-item label="尽调资料" class="special-el-form-item">
  370. <fileItem
  371. ref="fileItems1"
  372. :id="dueForm.id"
  373. @getFileList="getFileList"
  374. ></fileItem>
  375. </el-form-item>
  376. <el-form-item label="描述" class="special-el-form-item">
  377. <el-input
  378. disabled
  379. rows="4"
  380. v-model="dueForm.describe"
  381. type="textarea"
  382. />
  383. </el-form-item>
  384. <el-form-item label="备注" class="special-el-form-item">
  385. <el-input
  386. disabled
  387. rows="4"
  388. type="textarea"
  389. v-model="dueForm.remark"
  390. />
  391. </el-form-item>
  392. <h3>尽调报告</h3>
  393. <el-divider></el-divider>
  394. <el-form-item label="报告" prop="listFile" class="special-el-form-item">
  395. <fileItem
  396. ref="reportFileItems"
  397. :id="duePeportForm.id"
  398. @getFileList="getreportFileList"
  399. ></fileItem>
  400. </el-form-item>
  401. <el-form-item label="备注" prop="remark" class="special-el-form-item">
  402. <el-input
  403. rows="4"
  404. type="textarea"
  405. v-model="duePeportForm.remark"
  406. placeholder="请输入备注"
  407. />
  408. </el-form-item>
  409. </el-form>
  410. <div slot="footer" class="dialog-footer">
  411. <el-button type="primary" @click="submitduePeportForm" v-preventReClick
  412. >确 定</el-button
  413. >
  414. <el-button @click="cancelduePeportForm">取 消</el-button>
  415. </div>
  416. </el-dialog>
  417. <!-- 查看该申请下的所有尽调报告 -->
  418. <!-- <el-dialog
  419. v-if="false"
  420. title="尽调报告"
  421. :visible.sync="dueDiligenceOpen2"
  422. width="1100px"
  423. append-to-body
  424. class="examineDialog"
  425. >
  426. <div v-if="dueAllPeportList.length > 0">
  427. <el-form
  428. v-for="(item, index) in dueAllPeportList"
  429. :key="index"
  430. class="special-el-form"
  431. :model="item"
  432. label-width="100px"
  433. >
  434. <el-form-item label="尽调人员" class="special-el-form-item">
  435. <el-input disabled v-model="item.investigatePerson" />
  436. </el-form-item>
  437. <el-form-item label="报告" class="special-el-form-item">
  438. <fileItem
  439. ref="dueAllreportFileItems"
  440. :id="item.id"
  441. @getFileList="getreportFileList"
  442. ></fileItem>
  443. </el-form-item>
  444. <el-form-item label="备注" class="special-el-form-item">
  445. <el-input
  446. disabled
  447. rows="4"
  448. type="textarea"
  449. v-model="item.remark"
  450. placeholder="请输入备注"
  451. />
  452. </el-form-item>
  453. <el-divider></el-divider>
  454. </el-form>
  455. </div>
  456. <div
  457. v-else
  458. class="public-flex-center public-padded-t-20"
  459. style="color: #909399"
  460. >
  461. 暂无数据
  462. </div>
  463. <div slot="footer" class="dialog-footer">
  464. <el-button type="primary" @click="dueDiligenceOpen2 = false"
  465. >确 定</el-button
  466. >
  467. <el-button @click="dueDiligenceOpen2 = false">取 消</el-button>
  468. </div>
  469. </el-dialog> -->
  470. <!-- 尽调申请及下面报告 -->
  471. <el-tabs type="border-card" v-if="showDetail">
  472. <el-tab-pane label="尽职背调申请表">
  473. <el-form
  474. v-if="dueForm.id"
  475. ref="dueForm"
  476. class="special-el-form public-padded-t-20"
  477. :model="dueForm"
  478. label-width="170px"
  479. >
  480. <el-form-item label="尽调名称" class="special-el-form-item">
  481. <el-input
  482. disabled
  483. v-model="dueForm.investigateName"
  484. placeholder="请输入尽调名称"
  485. />
  486. </el-form-item>
  487. <el-form-item
  488. label="尽调地点"
  489. prop="investigatePlace"
  490. class="special-el-form-item"
  491. >
  492. <el-input
  493. disabled
  494. maxlength="100"
  495. v-model="dueForm.investigatePlace"
  496. />
  497. </el-form-item>
  498. <el-form-item label="期望尽调开始时间" prop="startTime">
  499. <el-date-picker
  500. disabled
  501. clearable
  502. v-model="dueForm.startTime"
  503. type="date"
  504. value-format="yyyy-MM-dd"
  505. >
  506. </el-date-picker>
  507. </el-form-item>
  508. <el-form-item label="期望尽调结束时间" prop="endTime">
  509. <el-date-picker
  510. disabled
  511. clearable
  512. v-model="dueForm.endTime"
  513. type="date"
  514. value-format="yyyy-MM-dd"
  515. >
  516. </el-date-picker>
  517. </el-form-item>
  518. <el-form-item label="尽调资料是否齐全" prop="readiness">
  519. <el-radio-group v-model="dueForm.readiness" disabled>
  520. <el-radio label="1">是</el-radio>
  521. <el-radio label="0">否</el-radio>
  522. </el-radio-group>
  523. </el-form-item>
  524. <el-form-item label="是否有第三方投资机构" prop="thirdParty">
  525. <el-radio-group v-model="dueForm.thirdParty" disabled>
  526. <el-radio label="1">是</el-radio>
  527. <el-radio label="0">否</el-radio>
  528. </el-radio-group>
  529. </el-form-item>
  530. <el-form-item label="尽调费用(元)">
  531. <el-input disabled v-model="dueForm.investigateCost" />
  532. </el-form-item>
  533. <el-form-item label="尽调财务数据截止日期" prop="deadDate">
  534. <el-date-picker
  535. disabled
  536. clearable
  537. v-model="dueForm.deadDate"
  538. type="date"
  539. value-format="yyyy-MM-dd"
  540. >
  541. </el-date-picker>
  542. </el-form-item>
  543. <el-form-item label="尽调人员" class="special-el-form-item">
  544. <el-input
  545. type="textarea"
  546. rows="2"
  547. disabled
  548. v-model="dueForm.investigatePerson"
  549. />
  550. </el-form-item>
  551. <el-form-item label="尽调资料" class="special-el-form-item">
  552. <fileItem
  553. ref="fileItems1"
  554. :id="dueForm.id"
  555. @getFileList="getFileList"
  556. ></fileItem>
  557. </el-form-item>
  558. <el-form-item label="描述" class="special-el-form-item">
  559. <el-input
  560. disabled
  561. rows="4"
  562. v-model="dueForm.describe"
  563. type="textarea"
  564. />
  565. </el-form-item>
  566. <el-form-item label="备注" class="special-el-form-item">
  567. <el-input
  568. disabled
  569. rows="4"
  570. type="textarea"
  571. v-model="dueForm.remark"
  572. />
  573. </el-form-item>
  574. <el-form-item label="财务评估报告" class="special-el-form-item">
  575. <fileItem ref="financeFileItem" :id="dueForm.id" :is-detail="true"></fileItem>
  576. </el-form-item>
  577. <el-form-item label="法务评估报告" class="special-el-form-item">
  578. <fileItem ref="legalFileItem" :id="dueForm.id" :is-detail="true"></fileItem>
  579. </el-form-item>
  580. <el-form-item label="其他" class="special-el-form-item">
  581. <fileItem ref="otherFileItem" :id="dueForm.id" :is-detail="true"></fileItem>
  582. </el-form-item>
  583. </el-form>
  584. <div
  585. v-else
  586. class="public-flex-center public-padded-20"
  587. style="color: #909399"
  588. >
  589. 暂无数据
  590. </div>
  591. </el-tab-pane>
  592. <!-- <el-tab-pane label="尽职背调报告汇总表">
  593. <div v-if="dueAllPeportList.length > 0">
  594. <el-form
  595. v-for="(item, index) in dueAllPeportList"
  596. :key="index"
  597. class="special-el-form public-padded-t-20"
  598. :model="item"
  599. label-width="100px"
  600. >
  601. <el-form-item label="尽调人员" class="special-el-form-item">
  602. <el-input disabled v-model="item.investigatePerson" />
  603. </el-form-item>
  604. <el-form-item label="报告" class="special-el-form-item">
  605. <fileItem
  606. ref="dueAllreportFileItems"
  607. :id="item.id"
  608. @getFileList="getreportFileList"
  609. ></fileItem>
  610. </el-form-item>
  611. <el-form-item label="备注" class="special-el-form-item">
  612. <el-input
  613. disabled
  614. rows="4"
  615. type="textarea"
  616. v-model="item.remark"
  617. placeholder="请输入备注"
  618. />
  619. </el-form-item>
  620. <el-divider></el-divider>
  621. </el-form>
  622. </div>
  623. <div
  624. v-else
  625. class="public-flex-center public-padded-20"
  626. style="color: #909399"
  627. >
  628. 暂无数据
  629. </div>
  630. </el-tab-pane>-->
  631. </el-tabs>
  632. <!--选择人员-->
  633. <selecUser
  634. ref="flowUser"
  635. :checkType="checkType"
  636. :selectValues="selectValues"
  637. :selectNameValues="selectNameValues"
  638. @handleUserSelect="handleUserSelect"
  639. ></selecUser>
  640. </div>
  641. </template>
  642. <script>
  643. import {
  644. getInvestigateById,
  645. delInvestigate,
  646. updateInvestigate,
  647. updateStatus,
  648. addInvestigate,
  649. addInvestigatePerson,
  650. investigateListProjectPoolIdNew,
  651. getProjectInvestigateId,
  652. getDueAllPeportList,
  653. } from "@/api/invest/pool";
  654. import {investigateStart} from "@/api/project/investigate/pool";
  655. import projectItem from "./projectItem";
  656. import fileItem from "../../invest/components/fileItem";
  657. import selecDept from "../../invest/components/selecDept";
  658. import selecUser from "../../invest/components/selecUser";
  659. import { mapGetters } from "vuex";
  660. export default {
  661. props: {
  662. projectId: {
  663. type: String,
  664. },
  665. projectName: {
  666. type: String,
  667. default: null,
  668. required: false,
  669. },
  670. },
  671. dicts: ["up_way", "project_stage"],
  672. components: { projectItem, fileItem, selecDept, selecUser },
  673. data() {
  674. const validateLogo = (rule, value, callback) => {
  675. if (this.reportFileList.length <= 0) {
  676. callback(new Error("请上传文件"));
  677. } else {
  678. callback();
  679. }
  680. };
  681. return {
  682. pageType: null,
  683. // 人员选择器
  684. checkType: "multiple",
  685. // 数据回显
  686. selectValues: null,
  687. selectNameValues: null,
  688. userVisible: false,
  689. dueList: [],
  690. total: null,
  691. dueDiligenceTit: "",
  692. dueDiligenceOpen: false,
  693. dueDiligenceTit1: "",
  694. dueDiligenceOpen1: false,
  695. dueDiligenceOpen2: false,
  696. duePeportForm: {
  697. createBy: null,
  698. createTime: null,
  699. deptId: null,
  700. deptName: null,
  701. id: null,
  702. investigatePerson: null,
  703. investigatePersonId: null,
  704. listFile: null,
  705. projectInvestigateId: null,
  706. remark: null,
  707. updateBy: null,
  708. updateTime: null,
  709. },
  710. dueForm: {
  711. id: null,
  712. investigateName: null,
  713. investigateCode: null,
  714. projectPoolId: null,
  715. investigatePerson: null,
  716. investigatePersonId: null,
  717. investigateCost: null,
  718. //
  719. startTime: null,
  720. endTime: null,
  721. investigatePlace: null,
  722. readiness: null,
  723. thirdParty: null,
  724. deadDate: null,
  725. //
  726. describe: null,
  727. remark: null,
  728. delFlag: null,
  729. createBy: null,
  730. createTime: null,
  731. updateBy: null,
  732. updateTime: null,
  733. projectName: null,
  734. flag:null,
  735. },
  736. dueAllPeportList: [],
  737. dueRules1: {
  738. listFile: [{ required: true, validator: validateLogo }],
  739. remark: [{ required: true, trigger: "blur", message: "请输入" }],
  740. },
  741. dueRules: {
  742. investigateName: [
  743. { required: true, trigger: "blur", message: "请输入" },
  744. ],
  745. projectName: [{ required: true, trigger: "blur", message: "请输入" }],
  746. investigatePerson: [
  747. { required: true, trigger: "blur", message: "请选择" },
  748. ],
  749. investigateCost: [
  750. { required: true, trigger: "blur", message: "请输入" },
  751. ],
  752. describe: [{ required: true, trigger: "blur", message: "请输入" }],
  753. startTime: { required: true, trigger: "blur", message: "请选择" },
  754. endTime: { required: true, trigger: "blur", message: "请选择" },
  755. investigatePlace: [
  756. { required: true, trigger: "blur", message: "请输入" },
  757. ],
  758. readiness: [{ required: true, trigger: "change", message: "请选择" }],
  759. thirdParty: [{ required: true, trigger: "change", message: "请选择" }],
  760. deadDate: { required: true, trigger: "blur", message: "请选择" },
  761. },
  762. fileList: [],
  763. showProjectItem: false,
  764. reportFileList: [],
  765. dueDiligenceType: "0",
  766. showDetail: false,
  767. isWatch:false,
  768. };
  769. },
  770. computed: {
  771. ...mapGetters(["user"]),
  772. },
  773. watch: {
  774. dueDiligenceOpen: function (newValue, oldValue) {
  775. if (newValue === false) {
  776. this.selectValues = null;
  777. this.selectNameValues = null;
  778. }
  779. },
  780. },
  781. mounted() {
  782. // this.getList();
  783. },
  784. methods: {
  785. //展示人员
  786. handleProjectItem() {
  787. this.$refs.projectItem.showProjectItem = true;
  788. // 2. 调用子组件的刷新方法,重新加载项目列表
  789. // 确保子组件已加载且存在刷新方法
  790. if (this.$refs.projectItem && typeof this.$refs.projectItem.refreshProjectList === 'function') {
  791. this.$refs.projectItem.refreshProjectList(this.isWatch);
  792. }
  793. },
  794. // 获取公司信息
  795. getProjectInfo(info) {
  796. if (info.length > 0) {
  797. this.dueForm.projectPoolId = info[0].id;
  798. this.dueForm.projectName = info[0].projectName;
  799. }
  800. },
  801. // 展示最新的尽调申请及下面的尽调报告
  802. handleShowDetail(id) {
  803. this.showDetail = true;
  804. this.getInvestigateListProjectPoolIdNew(id);
  805. },
  806. handleSelectPeople() {
  807. this.$refs.flowUser.handleUserVisible(true);
  808. },
  809. // 根据尽调申请id查下面所有的报告
  810. handleLook(row) {
  811. let that = this;
  812. getDueAllPeportList(row.id).then((response) => {
  813. let rows = response.rows;
  814. this.dueAllPeportList = rows;
  815. this.dueDiligenceOpen2 = true;
  816. if (rows && rows.length > 0) {
  817. setTimeout(() => {
  818. for (let i in rows) {
  819. this.$refs.dueAllreportFileItems[i].handleButton();
  820. this.$refs.dueAllreportFileItems[i].getListFileBusinessId(
  821. rows[i].id
  822. );
  823. }
  824. }, 300);
  825. }
  826. });
  827. },
  828. // 根据项目ID获取最新尽调申请
  829. getInvestigateListProjectPoolIdNew(id) {
  830. let that = this;
  831. investigateListProjectPoolIdNew(id).then((response) => {
  832. if (response.data) {
  833. this.dueForm = response.data;
  834. setTimeout(() => {
  835. this.$refs.fileItems1.handleButton();
  836. this.$refs.fileItems1.listFile = [];
  837. this.$refs.fileItems1.getListFileBusinessId(that.dueForm.id,"11");
  838. //项目行研报告
  839. this.$refs.financeFileItem.handleButton();
  840. this.$refs.financeFileItem.fileList = [];
  841. this.$refs.financeFileItem.getListFileBusinessId(that.dueForm.id, "14");
  842. //项目技术报告
  843. this.$refs.legalFileItem.handleButton();
  844. this.$refs.legalFileItem.fileList = [];
  845. this.$refs.legalFileItem.getListFileBusinessId(that.dueForm.id, "15");
  846. //其他
  847. this.$refs.otherFileItem.handleButton();
  848. this.$refs.otherFileItem.fileList = [];
  849. this.$refs.otherFileItem.getListFileBusinessId(that.dueForm.id, "0");
  850. }, 300);
  851. this.handleLook(response.data);
  852. }
  853. });
  854. },
  855. // 修改尽调申请
  856. handleUpdate(row) {
  857. let that = this;
  858. this.resetDueForm();
  859. const id = row.id;
  860. getInvestigateById(id).then((response) => {
  861. if (response.data) {
  862. this.dueForm = response.data;
  863. // this.dueForm.projectName = this.projectName;
  864. this.selectValues = response.data.investigatePersonId;
  865. this.selectNameValues = response.data.investigatePerson;
  866. this.dueDiligenceTit = "修改尽调申请";
  867. this.dueDiligenceOpen = true;
  868. setTimeout(() => {
  869. that.$refs.fileItems.fileList = [];
  870. that.$refs.fileItems.getListFileBusinessId(this.dueForm.id);
  871. }, 300);
  872. }
  873. });
  874. },
  875. /*用户选中赋值*/
  876. checkUserComplete() {
  877. this.userVisible = false;
  878. // this.checkType = "";
  879. },
  880. // 获取fileList
  881. getFileList(fileList) {
  882. if (fileList && fileList.length > 0) {
  883. this.fileList = fileList;
  884. } else {
  885. this.fileList = [];
  886. }
  887. },
  888. getreportFileList(fileList) {
  889. if (fileList && fileList.length > 0) {
  890. this.reportFileList = fileList;
  891. } else {
  892. this.reportFileList = [];
  893. }
  894. },
  895. // 用户选中数据
  896. handleUserSelect(selection) {
  897. const that = this;
  898. if (selection) {
  899. if (selection instanceof Array) {
  900. const userIds = selection.map((item) => item.userId);
  901. const nickName = selection.map((item) => item.nickName);
  902. this.dueForm.investigatePerson = nickName.join(",");
  903. this.dueForm.investigatePersonId = userIds.join(",");
  904. this.selectNameValues = nickName.join(",");
  905. this.selectValues = userIds.join(",");
  906. } else {
  907. this.dueForm.investigatePerson = selection.nickName;
  908. this.dueForm.investigatePersonId = selection.userId;
  909. this.selectNameValues = selection.nickName;
  910. this.selectValues = selection.userId;
  911. }
  912. this.$refs.dueForm.clearValidate(["investigatePerson"]);
  913. }
  914. },
  915. // 发起尽调申请
  916. handleShowApplyPop(row) {
  917. let that = this;
  918. this.fileList = [];
  919. this.resetDueForm();
  920. setTimeout(() => {
  921. that.$refs.fileItems.fileList = [];
  922. }, 300);
  923. this.dueDiligenceTit = "发起尽调申请";
  924. this.dueDiligenceOpen = true;
  925. // this.dueForm.projectName = row.projectName;
  926. // this.dueForm.projectPoolId = row.id;
  927. if(row==1){
  928. this.isWatch=true;
  929. }
  930. },
  931. // 上传尽调报告-按钮
  932. handleShowReportPop(row) {
  933. console.log("row=", row);
  934. let that = this;
  935. this.dueForm = row.tProjectInvestigate;
  936. this.dueForm.projectName = row.projectName;
  937. this.duePeportForm.projectInvestigateId = this.dueForm.id;
  938. setTimeout(() => {
  939. that.$refs.fileItems1.handleButton();
  940. that.$refs.fileItems1.listFile = [];
  941. that.$refs.fileItems1.getListFileBusinessId(this.dueForm.id);
  942. }, 300);
  943. this.dueDiligenceTit1 = "上传尽调报告";
  944. this.dueDiligenceOpen1 = true;
  945. },
  946. // 尽调报告-上传
  947. submitduePeportForm() {
  948. this.$refs["duePeportForm"].validate((valid) => {
  949. if (valid) {
  950. this.duePeportForm.projectPoolId = this.dueForm.projectPoolId;
  951. this.duePeportForm.listFile = this.reportFileList;
  952. addInvestigatePerson(this.duePeportForm).then((response) => {
  953. this.$modal.msgSuccess("操作成功");
  954. this.$store.dispatch("getInvestigateNumber"); //初始化尽职背调代办数量
  955. this.dueDiligenceOpen1 = false;
  956. this.$emit("getList");
  957. });
  958. }
  959. });
  960. },
  961. cancelduePeportForm() {
  962. this.dueDiligenceOpen1 = false;
  963. this.resetduePeportForm();
  964. },
  965. resetduePeportForm() {
  966. this.duePeportForm = {
  967. createBy: null,
  968. createTime: null,
  969. deptId: null,
  970. deptName: null,
  971. id: null,
  972. investigatePerson: null,
  973. investigatePersonId: null,
  974. listFile: null,
  975. remark: null,
  976. updateBy: null,
  977. updateTime: null,
  978. projectInvestigateId: this.dueForm.id,
  979. };
  980. },
  981. // 尽调申请-提交
  982. submitDueForm(flag) {
  983. this.$refs["dueForm"].validate((valid) => {
  984. if (valid) {
  985. this.dueForm.flag = flag;
  986. this.dueForm.listFile = this.fileList;
  987. this.dueForm.investigateCost = this.dueForm.investigateCost
  988. .replace(/[^0-9.]/g, "")
  989. .replace(/^(\-)*(\d+)\.(\d\d).*$/, "$1$2.$3")
  990. .replace(/-/g, "");
  991. if (
  992. new Date(this.dueForm.endTime).getTime() <
  993. new Date(this.dueForm.startTime).getTime()
  994. ) {
  995. this.$confirm(
  996. "期望尽调结束时间不能小于期望尽调开始时间,请重新选择!",
  997. "提示",
  998. {
  999. confirmButtonText: "确定",
  1000. cancelButtonText: "取消",
  1001. type: "warning",
  1002. }
  1003. )
  1004. .then(() => {})
  1005. .catch(() => {});
  1006. return false;
  1007. }
  1008. /*if (this.dueForm.id != null) {
  1009. updateInvestigate(this.dueForm).then((response) => {
  1010. this.$modal.msgSuccess("修改成功");
  1011. this.dueDiligenceOpen = false;
  1012. this.$emit("getList");
  1013. });
  1014. } else {
  1015. addInvestigate(this.dueForm).then((response) => {
  1016. this.$modal.msgSuccess("新增成功");
  1017. this.dueDiligenceOpen = false;
  1018. // this.$emit("changeShowDueApply", "0");
  1019. this.$emit("getList");
  1020. });
  1021. }*/
  1022. try {
  1023. investigateStart(this.dueForm).then((response) => {
  1024. this.$modal.msgSuccess("新增成功");
  1025. this.dueDiligenceOpen = false;
  1026. this.$emit("getList");
  1027. this.$store.dispatch("getMyTaskInvestigateNumber"); //更新代办数量
  1028. });
  1029. } catch (err) {
  1030. // 捕获重复提交错误
  1031. this.$message.error(err.message);
  1032. }
  1033. //this.getList();
  1034. }
  1035. });
  1036. },
  1037. cancelDueForm() {
  1038. this.dueDiligenceOpen = false;
  1039. this.resetDueForm();
  1040. },
  1041. // 表单重置
  1042. resetDueForm() {
  1043. this.dueForm = {
  1044. id: null,
  1045. investigateName: null,
  1046. investigateCode: null,
  1047. investigatePerson: null,
  1048. investigatePersonId: null,
  1049. investigateCost: null,
  1050. //
  1051. startTime: null,
  1052. endTime: null,
  1053. investigatePlace: null,
  1054. readiness: null,
  1055. thirdParty: null,
  1056. deadDate: null,
  1057. //
  1058. describe: null,
  1059. remark: null,
  1060. delFlag: null,
  1061. createBy: null,
  1062. createTime: null,
  1063. updateBy: null,
  1064. updateTime: null,
  1065. projectPoolId: null,
  1066. projectName: null,
  1067. };
  1068. this.resetForm("dueForm");
  1069. },
  1070. /** 删除按钮操作 */
  1071. handleDelete(row) {
  1072. const ids = row.id || this.ids;
  1073. const investigateName = row.investigateName
  1074. ? row.investigateName
  1075. : "此项";
  1076. this.$modal
  1077. .confirm('是否确认删除"' + investigateName + '"?')
  1078. .then(function () {
  1079. return delInvestigate(ids);
  1080. })
  1081. .then(() => {
  1082. this.getList();
  1083. this.$modal.msgSuccess("删除成功");
  1084. })
  1085. .catch(() => {});
  1086. },
  1087. },
  1088. };
  1089. </script>
  1090. <style lang="scss">
  1091. .examineDialog {
  1092. .el-input.is-disabled .el-input__inner,
  1093. .el-textarea.is-disabled .el-textarea__inner {
  1094. background-color: #fff;
  1095. color: #333;
  1096. }
  1097. }
  1098. </style>