dueDiligenceList.vue 34 KB

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