apply.vue 32 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031
  1. <template>
  2. <div :class="type === '2' ? 'poolAdd poolDetail' : 'poolAdd'">
  3. <el-form
  4. ref="form"
  5. :model="form"
  6. :rules="type === '2' ? rules1 : rules"
  7. label-width="160px"
  8. class="special-el-form"
  9. >
  10. <h3>项目基础信息</h3>
  11. <el-divider></el-divider>
  12. <el-form-item label="项目名称" prop="projectName">
  13. <el-input
  14. maxlength="100"
  15. v-model="form.projectName"
  16. placeholder="请输入项目名称"
  17. :disabled="type === '2'"
  18. />
  19. </el-form-item>
  20. <el-form-item label="渠道" prop="tProjectChannel.channelName">
  21. <el-select
  22. :disabled="type === '2'"
  23. v-model="form.tProjectChannel.channelName"
  24. placeholder="请选择"
  25. clearable
  26. @change="handleChannel"
  27. >
  28. <el-option
  29. v-for="item in channelList"
  30. :key="item.id"
  31. :label="item.channelName"
  32. :value="item.id"
  33. />
  34. <el-option label="无" value="-1" />
  35. </el-select>
  36. <!-- <channelItem
  37. ref="channelItem"
  38. @getChannelInfo="getChannelInfo"
  39. ></channelItem> -->
  40. <!-- <el-input v-model="form.channel" placeholder="请输入渠道" /> -->
  41. </el-form-item>
  42. <el-form-item label="初次接触日期" prop="contactDate">
  43. <el-date-picker
  44. :disabled="type === '2'"
  45. clearable
  46. v-model="form.contactDate"
  47. type="date"
  48. value-format="yyyy-MM-dd"
  49. placeholder="请选择初次接触日期"
  50. >
  51. </el-date-picker>
  52. </el-form-item>
  53. <el-form-item label="所属组别">
  54. <el-select
  55. v-model="form.tProjectChannel.channelGroup"
  56. disabled
  57. placeholder="请选择所属组别"
  58. >
  59. <el-option
  60. v-for="dict in dict.type.project_group"
  61. :key="dict.value"
  62. :label="dict.label"
  63. :value="dict.value"
  64. ></el-option>
  65. </el-select>
  66. </el-form-item>
  67. <el-form-item label="所属行业" prop="industry">
  68. <el-select
  69. v-model="form.industry"
  70. placeholder="请选择所属行业"
  71. :disabled="type === '2'"
  72. >
  73. <el-option
  74. v-for="dict in dict.type.CUSTOMER_TRADE"
  75. :key="dict.value"
  76. :label="dict.label"
  77. :value="dict.value"
  78. ></el-option>
  79. </el-select>
  80. </el-form-item>
  81. <el-form-item label="项目负责人" prop="investHead">
  82. <el-input
  83. v-if="type === '2'"
  84. maxlength="30"
  85. v-model="form.investHead"
  86. :disabled="type === '2'"
  87. />
  88. <div
  89. class="el-input__inner inputSimulation"
  90. @click="openSelectDept"
  91. v-else
  92. >
  93. {{ form.investHead ? form.investHead : "请选择项目负责人" }}
  94. </div>
  95. <selecDept
  96. ref="selecDepts"
  97. @getDeptUserInfo="getDeptUserInfo"
  98. :deptId="deptId"
  99. ></selecDept>
  100. </el-form-item>
  101. <el-form-item
  102. label="项目情况描述"
  103. prop="description"
  104. class="special-el-form-item"
  105. >
  106. <el-input
  107. :disabled="type === '2'"
  108. maxlength="200"
  109. rows="4"
  110. type="textarea"
  111. v-model="form.description"
  112. placeholder="请输入项目情况描述"
  113. />
  114. </el-form-item>
  115. <h3>项目公司信息</h3>
  116. <el-divider></el-divider>
  117. <el-form-item label="公司名称" prop="tProjectCompany.companyName">
  118. <el-input
  119. :disabled="type === '2'"
  120. maxlength="100"
  121. v-model="form.tProjectCompany.companyName"
  122. placeholder="请输入公司名称"
  123. />
  124. </el-form-item>
  125. <el-form-item label="统一社会信用代码" prop="tProjectCompany.companyCode">
  126. <el-input
  127. :disabled="type === '2'"
  128. maxlength="35"
  129. v-model="form.tProjectCompany.companyCode"
  130. placeholder="请输入企业统一社会信用代码"
  131. />
  132. </el-form-item>
  133. <el-form-item label="营业开始时间" prop="tProjectCompany.startTime">
  134. <el-date-picker
  135. :disabled="type === '2'"
  136. clearable
  137. v-model="form.tProjectCompany.startTime"
  138. type="date"
  139. value-format="yyyy-MM-dd"
  140. placeholder="请选择营业开始时间"
  141. >
  142. </el-date-picker>
  143. </el-form-item>
  144. <el-form-item label="营业结束时间" prop="tProjectCompany.endTime">
  145. <el-date-picker
  146. :disabled="type === '2'"
  147. clearable
  148. v-model="form.tProjectCompany.endTime"
  149. type="date"
  150. value-format="yyyy-MM-dd"
  151. placeholder="请选择营业结束时间"
  152. >
  153. </el-date-picker>
  154. </el-form-item>
  155. <el-form-item
  156. label="注册资本(万元)"
  157. prop="tProjectCompany.registeredCapital"
  158. >
  159. <el-input
  160. :disabled="type === '2'"
  161. maxlength="20"
  162. v-model="form.tProjectCompany.registeredCapital"
  163. @input="
  164. (value) =>
  165. (form.tProjectCompany.registeredCapital = value
  166. .replace(/[^0-9.]/g, '')
  167. .replace(/^(\-)*(\d+)\.(\d\d\d\d).*$/, '$1$2.$3')
  168. .replace(/-/g, ''))
  169. "
  170. placeholder="请输入注册资本"
  171. />
  172. </el-form-item>
  173. <el-form-item label="实缴资本(万元)" prop="tProjectCompany.paidCapital">
  174. <el-input
  175. :disabled="type === '2'"
  176. maxlength="20"
  177. v-model="form.tProjectCompany.paidCapital"
  178. @input="
  179. (value) =>
  180. (form.tProjectCompany.paidCapital = value
  181. .replace(/[^0-9.]/g, '')
  182. .replace(/^(\-)*(\d+)\.(\d\d\d\d).*$/, '$1$2.$3')
  183. .replace(/-/g, ''))
  184. "
  185. placeholder="请输入实缴资本"
  186. />
  187. </el-form-item>
  188. <el-form-item label="实控人" prop="tProjectCompany.actualBod">
  189. <el-input
  190. :disabled="type === '2'"
  191. maxlength="25"
  192. v-model="form.tProjectCompany.actualBod"
  193. placeholder="请输入实控人"
  194. />
  195. </el-form-item>
  196. <el-form-item label="联系电话" prop="tProjectCompany.phone">
  197. <el-input
  198. :disabled="type === '2'"
  199. maxlength="20"
  200. v-model="form.tProjectCompany.phone"
  201. placeholder="请输入联系电话"
  202. />
  203. </el-form-item>
  204. <el-form-item label="所属类型" prop="tProjectCompany.type">
  205. <el-input
  206. :disabled="type === '2'"
  207. maxlength="25"
  208. v-model="form.tProjectCompany.type"
  209. placeholder="请输入所属类型"
  210. />
  211. </el-form-item>
  212. <el-form-item label="备案时间" prop="tProjectCompany.filingTime">
  213. <el-date-picker
  214. :disabled="type === '2'"
  215. clearable
  216. v-model="form.tProjectCompany.filingTime"
  217. type="date"
  218. value-format="yyyy-MM-dd"
  219. placeholder="请选择备案时间"
  220. >
  221. </el-date-picker>
  222. </el-form-item>
  223. <el-form-item
  224. label="注册地址"
  225. prop="tProjectCompany.registeredAddress"
  226. class="special-el-form-item"
  227. >
  228. <el-input
  229. :disabled="type === '2'"
  230. type="textarea"
  231. rows="4"
  232. maxlength="100"
  233. v-model="form.tProjectCompany.registeredAddress"
  234. placeholder="请输入注册地址"
  235. />
  236. </el-form-item>
  237. <el-form-item
  238. label="办公地址"
  239. prop="tProjectCompany.businessAddress"
  240. class="special-el-form-item"
  241. >
  242. <el-input
  243. :disabled="type === '2'"
  244. type="textarea"
  245. rows="4"
  246. maxlength="100"
  247. v-model="form.tProjectCompany.businessAddress"
  248. placeholder="请输入办公地址"
  249. />
  250. </el-form-item>
  251. <el-form-item
  252. label="公司附件"
  253. prop="listFile"
  254. class="special-el-form-item"
  255. >
  256. <fileItem
  257. ref="fileItem"
  258. :id="form.id"
  259. @getFileList="getFileList"
  260. ></fileItem>
  261. </el-form-item>
  262. <h3>项目公司联系人信息</h3>
  263. <el-divider></el-divider>
  264. <el-form-item label="联系人姓名" prop="tProjectContacts.name">
  265. <el-input
  266. :disabled="type === '2'"
  267. maxlength="25"
  268. v-model="form.tProjectContacts.name"
  269. placeholder="请输入联系人姓名"
  270. />
  271. </el-form-item>
  272. <el-form-item label="职位" prop="tProjectContacts.position">
  273. <el-input
  274. :disabled="type === '2'"
  275. maxlength="25"
  276. v-model="form.tProjectContacts.position"
  277. placeholder="请输入职位"
  278. />
  279. </el-form-item>
  280. <el-form-item label="联系电话/微信" prop="tProjectContacts.contact">
  281. <el-input
  282. :disabled="type === '2'"
  283. maxlength="25"
  284. v-model="form.tProjectContacts.contact"
  285. placeholder="请输入联系电话/微信"
  286. />
  287. </el-form-item>
  288. <h3>项目融资信息</h3>
  289. <el-divider></el-divider>
  290. <el-form-item label="项目融资阶段" prop="financingStage">
  291. <el-select
  292. :disabled="type === '2'"
  293. v-model="form.financingStage"
  294. placeholder="请选择项目融资阶段"
  295. >
  296. <el-option
  297. v-for="dict in dict.type.financing_stage"
  298. :key="dict.value"
  299. :label="dict.label"
  300. :value="dict.value"
  301. ></el-option>
  302. </el-select>
  303. </el-form-item>
  304. <el-form-item label="预期融资金额(万元)" prop="financingMoney">
  305. <el-input
  306. :disabled="type === '2'"
  307. maxlength="20"
  308. v-model="form.financingMoney"
  309. @input="
  310. (value) =>
  311. (form.financingMoney = value.replace(/\D/g, '').replace(/-/g, ''))
  312. "
  313. placeholder="请输入预期融资金额"
  314. />
  315. </el-form-item>
  316. <el-form-item label="投前估值(万元)" prop="investValuation">
  317. <el-input
  318. :disabled="type === '2'"
  319. maxlength="20"
  320. v-model="form.investValuation"
  321. @input="
  322. (value) =>
  323. (form.investValuation = value
  324. .replace(/[^0-9.]/g, '')
  325. .replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3')
  326. .replace(/-/g, ''))
  327. "
  328. placeholder="请输入投前估值"
  329. />
  330. </el-form-item>
  331. <el-form-item label="预计投资金额(万元)" prop="investMoney">
  332. <el-input
  333. :disabled="type === '2'"
  334. maxlength="20"
  335. v-model="form.investMoney"
  336. @input="
  337. (value) =>
  338. (form.investMoney = value.replace(/\D/g, '').replace(/-/g, ''))
  339. "
  340. placeholder="请输入预计投资金额"
  341. />
  342. </el-form-item>
  343. <!-- -->
  344. <el-form-item label="投资类型" prop="investType">
  345. <el-select
  346. v-model="form.investType"
  347. placeholder="请选择投资类型"
  348. :disabled="type === '2'"
  349. >
  350. <el-option
  351. v-for="dict in dict.type.invest_type"
  352. :key="dict.value"
  353. :label="dict.label"
  354. :value="dict.value"
  355. ></el-option>
  356. </el-select>
  357. </el-form-item>
  358. <el-form-item label="投资策略" prop="investPloy">
  359. <el-select
  360. v-model="form.investPloy"
  361. placeholder="请选择投资策略"
  362. :disabled="type === '2'"
  363. >
  364. <el-option
  365. v-for="dict in dict.type.invest_ploy"
  366. :key="dict.value"
  367. :label="dict.label"
  368. :value="dict.value"
  369. ></el-option>
  370. </el-select>
  371. </el-form-item>
  372. <el-form-item label="投资价值" prop="investWorth">
  373. <el-select
  374. v-model="form.investWorth"
  375. placeholder="请选择投资价值"
  376. :disabled="type === '2'"
  377. >
  378. <el-option
  379. v-for="dict in dict.type.invest_worth"
  380. :key="dict.value"
  381. :label="dict.label"
  382. :value="dict.value"
  383. ></el-option>
  384. </el-select>
  385. </el-form-item>
  386. <el-form-item
  387. label="历次融资"
  388. prop="previousFinancing"
  389. class="special-el-form-item"
  390. >
  391. <el-input
  392. :disabled="type === '2'"
  393. maxlength="200"
  394. rows="4"
  395. type="textarea"
  396. v-model="form.previousFinancing"
  397. placeholder="请输入历次融资"
  398. />
  399. </el-form-item>
  400. <el-form-item
  401. label="融资条件"
  402. prop="financingCondition"
  403. class="special-el-form-item"
  404. >
  405. <el-input
  406. :disabled="type === '2'"
  407. maxlength="200"
  408. rows="4"
  409. type="textarea"
  410. v-model="form.financingCondition"
  411. placeholder="请输入融资条件"
  412. />
  413. </el-form-item>
  414. <el-form-item
  415. label="投资亮点"
  416. prop="investSparkle"
  417. class="special-el-form-item"
  418. >
  419. <el-input
  420. :disabled="type === '2'"
  421. maxlength="200"
  422. rows="4"
  423. type="textarea"
  424. v-model="form.investSparkle"
  425. placeholder="请输入投资亮点"
  426. />
  427. </el-form-item>
  428. <el-form-item
  429. label="股权架构"
  430. prop="shareholding"
  431. class="special-el-form-item"
  432. >
  433. <el-input
  434. :disabled="type === '2'"
  435. maxlength="200"
  436. rows="4"
  437. type="textarea"
  438. v-model="form.shareholding"
  439. placeholder="请输入股权架构"
  440. />
  441. </el-form-item>
  442. <h3>其他</h3>
  443. <el-divider></el-divider>
  444. <el-form-item label="BP" prop="bpFile" class="special-el-form-item">
  445. <fileItem
  446. ref="bpFileItem"
  447. :id="form.id"
  448. @getFileList="getBPFileList"
  449. ></fileItem>
  450. </el-form-item>
  451. <el-form-item
  452. label="其他附件"
  453. prop="otherFile"
  454. class="special-el-form-item"
  455. >
  456. <fileItem
  457. ref="otherFileItem"
  458. :id="form.id"
  459. @getFileList="getOtherFileList"
  460. ></fileItem>
  461. </el-form-item>
  462. <el-form-item label="备注" prop="mark" class="special-el-form-item">
  463. <el-input
  464. :disabled="type === '2'"
  465. maxlength="200"
  466. :readonly="type === '2' ? true : false"
  467. rows="4"
  468. type="textarea"
  469. v-model="form.mark"
  470. placeholder="请输入备注"
  471. />
  472. </el-form-item>
  473. <el-form-item class="btnList" v-if="type === '1'">
  474. <el-button @click="goBack">返 回</el-button>
  475. <el-button type="warning" @click="submitForm(1)" v-preventReClick>暂 存</el-button>
  476. <el-button type="primary" @click="submitForm(2)" v-preventReClick>提 交</el-button>
  477. </el-form-item>
  478. </el-form>
  479. </div>
  480. </template>
  481. <script>
  482. import {getPool,investmentOpportunityStart} from "@/api/project/investOpp/pool";
  483. import { listChannel } from "@/api/invest/channel";
  484. import fileItem from "../../invest/components/fileItem";
  485. import channelItem from "../../invest/components/channelItem";
  486. import selecDept from "../../invest/components/selecDept";
  487. import { mapGetters } from "vuex";
  488. export default {
  489. props: {
  490. id: {
  491. type: String,
  492. },
  493. type: {
  494. type: String,
  495. default: "1", //1可编辑 2不可编辑
  496. },
  497. },
  498. components: { fileItem, channelItem, selecDept },
  499. dicts: [
  500. "CUSTOMER_TRADE",
  501. "project_group",
  502. "invest_type",
  503. "invest_ploy",
  504. "invest_worth",
  505. "financing_stage",
  506. ],
  507. data() {
  508. const validateLogo = (rule, value, callback) => {
  509. if (this.fileListBP.length <= 0) {
  510. callback(new Error("请上传BP"));
  511. } else {
  512. callback();
  513. }
  514. };
  515. return {
  516. deptId: process.env.VUE_APP_DEPTID,
  517. title: "新增项目",
  518. baseUrl: process.env.VUE_APP_BASE_API,
  519. // 表单参数
  520. form: {
  521. id: null,
  522. projectName: null,
  523. projectGroup: "",
  524. industry: null,
  525. recordDate: null,
  526. projectCode: null,
  527. channel: "",
  528. contactDate: null,
  529. projectDate: null,
  530. decisionDate: null,
  531. tProjectCompany: {
  532. companyName: null,
  533. companyCode: null,
  534. startTime: null,
  535. endTime: null,
  536. registeredCapital: null,
  537. registeredAddress: null,
  538. paidCapital: null,
  539. businessAddress: null,
  540. actualBod: null,
  541. phone: null,
  542. filingTime: null,
  543. type: null,
  544. },
  545. tProjectContacts: {
  546. name: null,
  547. position: null,
  548. contact: null,
  549. },
  550. tProjectChannel: {
  551. channelName: "",
  552. channelGroup: "",
  553. },
  554. description: null,
  555. projectContacts: null,
  556. investHead: null,
  557. previousFinancing: null,
  558. financingStage: null,
  559. financingCondition: null,
  560. financingMoney: null,
  561. financingDate: null,
  562. investSparkle: null,
  563. investValuation: null,
  564. investMoney: null,
  565. investType: null,
  566. investPloy: null,
  567. investWorth: null,
  568. shareholding: null,
  569. projectStage: null,
  570. projectState: null,
  571. mark: null,
  572. delFlag: null,
  573. createBy: null,
  574. createTime: null,
  575. updateBy: null,
  576. updateTime: null,
  577. listFile: null,
  578. bpFile: null,
  579. otherFile: null,
  580. },
  581. fileList: [],
  582. fileListBP: [],
  583. fileListOther: [],
  584. // 表单校验
  585. rules1: {},
  586. rules: {
  587. projectName: [{ required: true, trigger: "blur", message: "请输入" }],
  588. // channel: [{ required: true, trigger: "blur", message: "请输入" }],
  589. contactDate: [{ required: true, trigger: "blur", message: "请输入" }],
  590. // projectGroup: [
  591. // { required: true, trigger: "change", message: "请选择" },
  592. // ],
  593. industry: [{ required: true, trigger: "change", message: "请选择" }],
  594. investHead: [{ required: true, trigger: "blur", message: "请输入" }],
  595. bpFile: [{ required: true, validator: validateLogo }],
  596. "tProjectChannel.channelName": [
  597. { required: true, trigger: "change", message: "请选择" },
  598. ],
  599. // description: [{ required: true, trigger: "blur", message: "请输入" }],
  600. "tProjectCompany.companyName": [
  601. { required: true, trigger: "blur", message: "请输入" },
  602. ],
  603. "tProjectCompany.companyCode": [
  604. { required: true, trigger: "blur", message: "请输入" },
  605. ],
  606. "tProjectCompany.startTime": [
  607. { required: true, trigger: "blur", message: "请选择" },
  608. ],
  609. "tProjectCompany.endTime": [
  610. { required: true, trigger: "blur", message: "请选择" },
  611. ],
  612. "tProjectCompany.registeredCapital": [
  613. { required: true, trigger: "blur", message: "请输入" },
  614. ],
  615. "tProjectCompany.registeredAddress": [
  616. { required: true, trigger: "blur", message: "请输入" },
  617. ],
  618. "tProjectCompany.paidCapital": [
  619. { required: true, trigger: "blur", message: "请输入" },
  620. ],
  621. "tProjectCompany.businessAddress": [
  622. { required: true, trigger: "blur", message: "请输入" },
  623. ],
  624. "tProjectCompany.actualBod": [
  625. { required: true, trigger: "blur", message: "请输入" },
  626. ],
  627. "tProjectCompany.phone": [
  628. { required: true, trigger: "blur", message: "请输入联系电话" },
  629. // {
  630. // pattern: /^1[3456789]\d{9}$/,
  631. // message: "请输入正确的手机号",
  632. // trigger: "blur",
  633. // },
  634. ],
  635. "tProjectCompany.filingTime": [
  636. { required: true, trigger: "blur", message: "请选择" },
  637. ],
  638. "tProjectCompany.type": [
  639. { required: true, trigger: "blur", message: "请输入" },
  640. ],
  641. // files: [{ required: true, trigger: "blur", message: "请输入" }],
  642. "tProjectContacts.name": [
  643. { required: true, trigger: "blur", message: "请输入" },
  644. ],
  645. "tProjectContacts.position": [
  646. { required: true, trigger: "blur", message: "请输入" },
  647. ],
  648. "tProjectContacts.contact": [
  649. { required: true, trigger: "blur", message: "请输入" },
  650. ],
  651. financingStage: [
  652. { required: true, trigger: "change", message: "请选择" },
  653. ],
  654. financingMoney: [
  655. { required: true, trigger: "blur", message: "请输入" },
  656. ],
  657. investValuation: [
  658. { required: true, trigger: "blur", message: "请输入" },
  659. ],
  660. investMoney: [{ required: true, trigger: "blur", message: "请输入" }],
  661. investType: [{ required: true, trigger: "change", message: "请选择" }],
  662. investPloy: [{ required: true, trigger: "change", message: "请选择" }],
  663. investWorth: [{ required: true, trigger: "change", message: "请选择" }],
  664. // previousFinancing: [{ required: true, trigger: "blur", message: "请输入" }],
  665. // financingCondition: [
  666. // { required: true, trigger: "blur", message: "请输入" },
  667. // ],
  668. investSparkle: [{ required: true, trigger: "blur", message: "请输入" }],
  669. shareholding: [{ required: true, trigger: "blur", message: "请输入" }],
  670. // mark: [{ required: true, trigger: "blur", message: "请输入" }]
  671. },
  672. channelList: [],
  673. };
  674. },
  675. computed: {
  676. ...mapGetters(["user"]),
  677. },
  678. mounted() {
  679. new Promise((resolve, reject) => {
  680. listChannel({
  681. pageNum: 1,
  682. pageSize: 100,
  683. }).then((response) => {
  684. this.channelList = response.rows;
  685. resolve();
  686. });
  687. }).then(() => {
  688. if (this.id) {
  689. this.getPoolDetail(this.id);
  690. } else {
  691. this.reset();
  692. }
  693. });
  694. },
  695. methods: {
  696. // getListChannel() {
  697. // // 渠道
  698. // listChannel({
  699. // pageNum: 1,
  700. // pageSize: 100,
  701. // }).then((response) => {
  702. // this.channelList = response.rows;
  703. // });
  704. // },
  705. // 选择部门人
  706. openSelectDept() {
  707. this.$refs.selecDepts.show(1, this.user.userId);
  708. },
  709. getDeptUserInfo(info) {
  710. if (info.length > 0) {
  711. this.form.investHead = info[0].nickName;
  712. this.$refs.form.clearValidate(["investHead"]);
  713. }
  714. },
  715. // 获取渠道信息
  716. getChannelInfo(info) {
  717. if (info.length > 0) {
  718. this.form.channel = info[0].id;
  719. this.form.tProjectChannel.channelName = info[0].channelName;
  720. this.form.tProjectChannel.channelGroup = info[0].channelGroup;
  721. this.$refs.form.clearValidate(["channel"]);
  722. }
  723. },
  724. // 选择渠道
  725. handleChannel(vId) {
  726. let obj = {};
  727. obj = this.channelList.find((item) => {
  728. return item.id === vId;
  729. });
  730. if (obj && obj.id) {
  731. this.form.channel = obj.id;
  732. this.form.tProjectChannel.channelName = obj.channelName;
  733. this.form.tProjectChannel.channelGroup = obj.channelGroup;
  734. } else {
  735. this.form.channel = -1;
  736. this.form.tProjectChannel.channelName = "无";
  737. this.form.tProjectChannel.channelGroup = "";
  738. }
  739. },
  740. handleChannelItem() {
  741. this.$refs.channelItem.showChannelItem = true;
  742. },
  743. getPoolDetail(id) {
  744. getPool(id).then((response) => {
  745. this.form = response.data;
  746. let channeItem = this.channelList.find((item) => {
  747. if (this.form.channel == item.id) {
  748. return item;
  749. }
  750. });
  751. if (channeItem && channeItem.channelName) {
  752. this.form.tProjectChannel.channelName = channeItem.channelName;
  753. this.form.tProjectChannel.channelGroup = channeItem.channelGroup;
  754. } else {
  755. this.form.tProjectChannel = {
  756. channelName: "无",
  757. channelGroup: "",
  758. };
  759. }
  760. setTimeout(() => {
  761. if (this.type == "2") {
  762. this.$refs.fileItem.handleButton();
  763. this.$refs.bpFileItem.handleButton();
  764. this.$refs.otherFileItem.handleButton();
  765. }
  766. this.$refs.fileItem.fileList = [];
  767. this.$refs.fileItem.getListFileBusinessId(
  768. this.form.tProjectCompany.companyId
  769. );
  770. this.$refs.bpFileItem.fileList = [];
  771. this.$refs.bpFileItem.getListFileBusinessId(this.form.id, "9");
  772. this.$refs.otherFileItem.fileList = [];
  773. this.$refs.otherFileItem.getListFileBusinessId(this.form.id, "0");
  774. }, 300);
  775. });
  776. },
  777. // 获取fileList
  778. getFileList(fileList) {
  779. if (fileList && fileList.length > 0) {
  780. this.fileList = fileList;
  781. } else {
  782. this.fileList = [];
  783. }
  784. },
  785. getBPFileList(fileList) {
  786. if (fileList && fileList.length > 0) {
  787. this.fileListBP = fileList;
  788. this.$refs.form.clearValidate(["bpFile"]);
  789. } else {
  790. this.fileList = [];
  791. }
  792. },
  793. getOtherFileList(fileList) {
  794. if (fileList && fileList.length > 0) {
  795. this.fileListOther = fileList;
  796. } else {
  797. this.fileList = [];
  798. }
  799. },
  800. /** 提交按钮 */
  801. submitForm(flag) {
  802. let that = this;
  803. if (this.form.channel == "") {
  804. this.form.channel = -1;
  805. }
  806. if (flag === 1) {
  807. // 暂存
  808. this.form.flag='false';
  809. if (!this.form.projectName) {
  810. this.$modal.msgError("请输入项目名称");
  811. return false;
  812. }
  813. this.form.listFile = this.fileList;
  814. this.form.bpFile = this.fileListBP;
  815. this.form.otherFile = this.fileListOther;
  816. //console.log(this.form.id+"id----------------------");
  817. if (this.form.id != null) {
  818. /*updatePool(this.form).then((response) => {
  819. this.$modal.msgSuccess("暂存成功");
  820. setTimeout(() => {
  821. that.goBack();
  822. }, 1500);
  823. });*/
  824. } else {
  825. this.form.projectStage = "1";
  826. this.form.projectState = "a";
  827. this.form.projectGroup = this.form.tProjectChannel.channelGroup;
  828. investmentOpportunityStart(this.form).then((response) => {
  829. this.$modal.msgSuccess("暂存成功");
  830. this.$store.dispatch("getMyTaskInvestOppNumber"); //更新代办数量
  831. setTimeout(() => {
  832. //that.goBack();
  833. that.goMyTask();
  834. }, 1500);
  835. });
  836. }
  837. } else if (flag=== 2) {
  838. // 提交
  839. this.form.flag='true';
  840. this.$refs["form"].validate((valid, rules) => {
  841. if (valid) {
  842. this.form.listFile = this.fileList;
  843. this.form.bpFile = this.fileListBP;
  844. this.form.otherFile = this.fileListOther;
  845. this.form.tProjectCompany.registeredCapital =
  846. this.form.tProjectCompany.registeredCapital
  847. .replace(/[^0-9.]/g, "")
  848. .replace(/^(\-)*(\d+)\.(\d\d\d\d).*$/, "$1$2.$3")
  849. .replace(/-/g, "");
  850. this.form.tProjectCompany.paidCapital =
  851. this.form.tProjectCompany.paidCapital
  852. .replace(/[^0-9.]/g, "")
  853. .replace(/^(\-)*(\d+)\.(\d\d\d\d).*$/, "$1$2.$3")
  854. .replace(/-/g, "");
  855. this.form.investValuation = this.form.investValuation
  856. .replace(/[^0-9.]/g, "")
  857. .replace(/^(\-)*(\d+)\.(\d\d).*$/, "$1$2.$3")
  858. .replace(/-/g, "");
  859. this.form.financingMoney = this.form.financingMoney
  860. .replace(/\D/g, "")
  861. .replace(/-/g, "");
  862. this.form.investMoney = this.form.investMoney
  863. .replace(/\D/g, "")
  864. .replace(/-/g, "");
  865. if (this.form.id != null) {
  866. if (this.form.projectState == "1") {
  867. this.form.projectState = "a";
  868. }
  869. /*updatePool(this.form).then((response) => {
  870. this.$modal.msgSuccess("修改成功");
  871. setTimeout(() => {
  872. that.goBack();
  873. }, 1500);
  874. });*/
  875. } else {
  876. this.form.projectStage = "1";
  877. this.form.projectState = "a";
  878. this.form.projectGroup = this.form.tProjectChannel.channelGroup;
  879. investmentOpportunityStart(this.form).then((response) => {
  880. this.$modal.msgSuccess("新增成功");
  881. this.$store.dispatch("getMyTaskInvestOppNumber"); //更新代办数量
  882. setTimeout(() => {
  883. //that.goBack();
  884. that.goMyTask();
  885. }, 1500);
  886. });
  887. }
  888. } else {
  889. for (var ruleName in rules) {
  890. let _rule = rules[ruleName];
  891. let message = _rule[0].message;
  892. this.$message.warning(message, 1);
  893. break;
  894. }
  895. //验证不通过回滚到不通过的第一个位置
  896. this.$nextTick(() => {
  897. let isError = document.getElementsByClassName("is-error");
  898. isError[0].scrollIntoView({
  899. block: "center",
  900. behavior: "smooth",
  901. });
  902. });
  903. }
  904. });
  905. }
  906. },
  907. //返回
  908. goBack() {
  909. this.$router.go(-1);
  910. },
  911. //跳转到我的任务-项目机会
  912. goMyTask(){
  913. //this.$router.push({ path: "/myTask/project/investOpp/myTask"});
  914. // 关闭当前标签页并返回指定页面
  915. const obj = { path: "/myTask/project/investOpp/myTask", query: { t: Date.now()} };
  916. this.$tab.closeOpenPage(obj);
  917. },
  918. // 表单重置
  919. reset() {
  920. this.form = {
  921. id: null,
  922. projectName: null,
  923. projectGroup: "",
  924. industry: null,
  925. recordDate: null,
  926. projectCode: null,
  927. channel: "",
  928. contactDate: null,
  929. projectDate: null,
  930. decisionDate: null,
  931. tProjectCompany: {
  932. companyName: null,
  933. companyCode: null,
  934. startTime: null,
  935. endTime: null,
  936. registeredCapital: null,
  937. registeredAddress: null,
  938. paidCapital: null,
  939. businessAddress: null,
  940. actualBod: null,
  941. phone: null,
  942. filingTime: null,
  943. type: null,
  944. },
  945. tProjectContacts: {
  946. name: null,
  947. position: null,
  948. contact: null,
  949. },
  950. tProjectChannel: {
  951. channelName: "",
  952. channelGroup: "",
  953. },
  954. description: null,
  955. projectContacts: null,
  956. investHead: this.user.nickName,
  957. previousFinancing: null,
  958. financingStage: null,
  959. financingCondition: null,
  960. financingMoney: null,
  961. financingDate: null,
  962. investSparkle: null,
  963. investValuation: null,
  964. investMoney: null,
  965. investType: null,
  966. investPloy: null,
  967. investWorth: null,
  968. shareholding: null,
  969. projectStage: null,
  970. projectState: null,
  971. mark: null,
  972. delFlag: null,
  973. createBy: null,
  974. createTime: null,
  975. updateBy: null,
  976. updateTime: null,
  977. listFile: null,
  978. bpFile: null,
  979. otherFile: null,
  980. };
  981. this.resetForm("form");
  982. },
  983. },
  984. };
  985. </script>
  986. <style lang="scss" scoped>
  987. .poolAdd {
  988. h2 {
  989. margin-left: 30px;
  990. }
  991. .special-el-form {
  992. h3 {
  993. width: 100%;
  994. margin-bottom: -10px;
  995. font-weight: bold;
  996. }
  997. .btnList {
  998. width: 100%;
  999. display: flex;
  1000. justify-content: center;
  1001. padding-bottom: 40px;
  1002. }
  1003. }
  1004. }
  1005. .poolDetail {
  1006. position: relative;
  1007. // cursor: not-allowed;
  1008. }
  1009. .poolDetail ::placeholder {
  1010. color: #f5f7fa !important;
  1011. }
  1012. // .poolDetail::after {
  1013. // content: "";
  1014. // display: block;
  1015. // position: absolute;
  1016. // top: 0;
  1017. // left: 0;
  1018. // width: 100%;
  1019. // height: 120%;
  1020. // }
  1021. </style>