addAndEditProject.vue 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844
  1. <template>
  2. <div>
  3. <el-dialog :title="title" :visible.sync="dialogVisible" width="850px" :before-close="handleClose"
  4. :append-to-body="true" :close-on-click-modal="false">
  5. <el-form :model="form" status-icon :rules="rules" ref="form" label-width="120px" class="demo-form">
  6. <template>
  7. <el-divider content-position="left">挖掘项目</el-divider>
  8. <el-row>
  9. <el-col :span="12">
  10. <el-form-item label="项目名称:" prop="name">
  11. <el-input v-model="form.name" placeholder="请输入项目名称"></el-input>
  12. </el-form-item>
  13. </el-col>
  14. <el-col :span="12">
  15. <el-form-item label="技术方向:">
  16. <el-input v-model="form.technicalDirection" placeholder="请输入技术方向"></el-input>
  17. </el-form-item>
  18. </el-col>
  19. </el-row>
  20. <el-row>
  21. <!-- <el-col :span="12">
  22. <el-form-item label="技术方向:">
  23. <el-input v-model="form.productPhase" placeholder="请输入产品阶段"></el-input>
  24. </el-form-item>
  25. </el-col> -->
  26. <!-- <el-col :span="12">
  27. <el-form-item label="产出:">
  28. <el-input v-model="form.output" placeholder="请输入产出"></el-input>
  29. </el-form-item>
  30. </el-col> -->
  31. </el-row>
  32. <el-row>
  33. <el-col :span="12">
  34. <el-form-item label="相关竞争对手:">
  35. <el-input v-model="form.relatedCompetitors" placeholder="请输入相关竞争对手"></el-input>
  36. </el-form-item>
  37. </el-col>
  38. <el-col :span="12">
  39. <el-form-item label="技术关键词:">
  40. <el-input v-model="form.technicalKeyword" placeholder="请输入技术关键词"></el-input>
  41. </el-form-item>
  42. </el-col>
  43. </el-row>
  44. <el-row>
  45. <el-col :span="12">
  46. <el-form-item label="预计产出:">
  47. <el-input v-model="form.output" placeholder="请输入产出"></el-input>
  48. </el-form-item>
  49. </el-col>
  50. <el-col :span="12">
  51. <el-form-item label="是否检索:">
  52. <el-switch v-model="form.ifSearch" active-color="#13ce66">
  53. </el-switch>
  54. </el-form-item>
  55. </el-col>
  56. <el-col :span="12">
  57. <!-- <el-form-item label="是否审核:">
  58. <el-switch v-model="form.examine" active-color="#13ce66" inactive-color="#ff4949">
  59. </el-switch>
  60. </el-form-item> -->
  61. </el-col>
  62. </el-row>
  63. <el-row>
  64. <el-col :span="24">
  65. <el-form-item label="参与人:">
  66. <div class="manage">
  67. <el-button size="small" @click="showDialog()">选择</el-button>
  68. <div v-html="getNames(form.adminPersons)">
  69. </div>
  70. </div>
  71. </el-form-item>
  72. </el-col>
  73. </el-row>
  74. <template>
  75. <div>
  76. <el-row>
  77. <el-col :span="24">
  78. <el-form-item label="事件:">
  79. <mySelectButton size='large' style="width:100%" @click="addEvent">
  80. <div style="width:100%">
  81. <el-select style="width:100%" v-model="form.eventId" @change="changeEvent" filterable remote
  82. :disabled="eventList.disabled" clearable placeholder="请选择" :loading="eventList.loading"
  83. v-SelectLazyLoading="loadEvent" :remote-method="remoteEvent">
  84. <el-option v-for="item in eventList.data" :key="item.id" :label="item.name" :value="item.id">
  85. </el-option>
  86. </el-select>
  87. </div>
  88. </mySelectButton>
  89. </el-form-item>
  90. </el-col>
  91. </el-row>
  92. <el-row v-if="show == true">
  93. <el-col :span="24">
  94. <el-form-item label="调查类型:" prop="matterIds">
  95. <el-checkbox-group v-model="form.matterIds">
  96. <template>
  97. <el-checkbox v-for="item in dictAssociates" :key="item.id" :label="parseInt(item.id)">
  98. {{ item.name }}
  99. </el-checkbox>
  100. </template>
  101. </el-checkbox-group>
  102. </el-form-item>
  103. </el-col>
  104. </el-row>
  105. </div>
  106. </template>
  107. <el-row>
  108. <el-col :span="24">
  109. <template>
  110. <div>
  111. <el-form-item label="委托方" prop="entrustId" v-if="userinfo.tenantType == 1">
  112. <mySelectButton size='large' style="width:100%" @click="handleSelect">
  113. <div style="width:100%">
  114. <el-autocomplete style="width:100%" v-model="form.entrustName" ref="client" value-key="name"
  115. :fetch-suggestions="querySearch" v-SelectLazyLoading="loadClient" @input="input"
  116. placeholder="请输入内容" :trigger-on-focus="false" @select="handleChange">
  117. </el-autocomplete>
  118. </div>
  119. </mySelectButton>
  120. </el-form-item>
  121. <el-form-item label="委托部门" prop="entrustId" v-else>
  122. <mySelectTree style="width:100%" v-model="form.entrustId" :options="departmentList"></mySelectTree>
  123. </el-form-item>
  124. </div>
  125. </template>
  126. </el-col>
  127. </el-row>
  128. <el-row>
  129. <el-col :span="24">
  130. <el-form-item label="负责人:">
  131. <el-select v-model="form.headId" placeholder="请选择负责人" style="width: 100%;" filterable remote
  132. :remote-method="remoteMethodPerson" v-SelectLazyLoading="lazyLoadingPerson"
  133. :loading="personnelList.loading">
  134. <el-option v-for="item in personnelList.data" :key="item.id" :label="item.name" :value="item.id">
  135. </el-option>
  136. </el-select>
  137. </el-form-item>
  138. </el-col>
  139. </el-row>
  140. <el-row>
  141. <el-col :span="24">
  142. <el-form-item label="附件:">
  143. <myUpload :file-list="form.systemFileList" @on-change="onchangeFile" @on-remove="onRemove"
  144. style="height: 180px;" :autoUpload="true"></myUpload>
  145. </el-form-item>
  146. </el-col>
  147. </el-row>
  148. <el-row>
  149. <el-col :span="24">
  150. <el-form-item label="项目备注:">
  151. <el-input type="textarea" :rows="3" placeholder="请输入内容" v-model="form.description"></el-input>
  152. </el-form-item>
  153. </el-col>
  154. </el-row>
  155. </template>
  156. <!-- 研发项目 -->
  157. <template>
  158. <el-divider content-position="left">研发项目</el-divider>
  159. <el-row>
  160. <el-col :span="12">
  161. <el-form-item label="编号:">
  162. <el-autocomplete class="inline-input" v-model="form.rdnumber" value-key="number"
  163. v-SelectLazyLoading="load" :fetch-suggestions="querySearchQuestion" placeholder="请选择编号"
  164. :trigger-on-focus="false" @select="handleRdNumber" @change="changeRdNumber" style="width: 100%;">
  165. </el-autocomplete>
  166. </el-form-item>
  167. </el-col>
  168. <el-col :span="12">
  169. <el-form-item label="项目名称:" prop="rdName">
  170. <el-autocomplete class="inline-input" v-model="form.rdName" value-key="name"
  171. v-SelectLazyLoading="loadRdName" :fetch-suggestions="querySearchRdName" placeholder="请输入研发项目名称"
  172. :trigger-on-focus="false" @select="handleRdName" @change="changeRdName" style="width: 100%;">
  173. </el-autocomplete>
  174. </el-form-item>
  175. </el-col>
  176. </el-row>
  177. <el-row>
  178. <el-col :span="12">
  179. <el-form-item label="产品:" prop="product">
  180. <el-input v-model="form.product" placeholder="请输入产品名称"></el-input>
  181. </el-form-item>
  182. </el-col>
  183. <el-col :span="12">
  184. <el-form-item label="产品阶段:">
  185. <el-input v-model="form.productPhase" placeholder="请输入产品阶段"></el-input>
  186. </el-form-item>
  187. </el-col>
  188. </el-row>
  189. </template>
  190. </el-form>
  191. <span slot="footer" class="dialog-footer">
  192. <el-button @click="handleClose">取 消</el-button>
  193. <el-button type="primary" v-if="!form.id" @click="handleExamine">提交审核</el-button>
  194. <el-button type="primary" @click="submit">直接完成</el-button>
  195. </span>
  196. </el-dialog>
  197. <choosePerson ref="choosePerson" @getPersonIds="getPersonIds"></choosePerson>
  198. <el-dialog title="选择委托方" :visible.sync="visible" width="800px" append-to-body destroy-on-close :before-close="close2"
  199. top="10vh">
  200. <ClientTable :choseClient="true" @getClient="getClient"></ClientTable>
  201. </el-dialog>
  202. <examine ref="examine" @save="addProjectOpenExamineTask"></examine>
  203. <addEvent ref="addEvent"></addEvent>
  204. </div>
  205. </template>
  206. <script>
  207. import { mapGetters } from 'vuex'
  208. import { personnelLoading } from '../mixins/index2'
  209. import choosePerson from '@/views/components/dialog/person.vue'
  210. import ClientTable from '@/views/client'
  211. import examine from '@/views/components/dialog/examine.vue'
  212. import addEvent from '@/views/event/components/dialog/addEvent.vue'
  213. export default {
  214. mixins: [personnelLoading],
  215. components: {
  216. choosePerson,
  217. ClientTable,
  218. examine,
  219. addEvent,
  220. },
  221. props: {},
  222. data() {
  223. return {
  224. dialogVisible: false,
  225. title: '',
  226. form: {
  227. matterIds: [],
  228. systemFileList: [],
  229. fileGuids: [],
  230. ifSearch: true,
  231. },
  232. rules: {
  233. name: [{ required: true, message: '请输入项目名称', trigger: 'blur' },],
  234. },
  235. options: [],//负责人数组
  236. value: '',//负责人
  237. //人员列表懒加载
  238. personnelList: {
  239. queryParams: {
  240. current: 1,
  241. size: 10
  242. },
  243. data: []
  244. },
  245. // 研发项目编号列表懒加载
  246. rdNumberArr: {
  247. queryParams: {
  248. current: 1,
  249. size: 10,
  250. },
  251. input: '',
  252. data: []
  253. },
  254. // 研发项目名称列表懒加载
  255. rdNameArr: {
  256. queryParams: {
  257. current: 1,
  258. size: 10,
  259. },
  260. input: '',
  261. data: []
  262. },
  263. //事件列表
  264. eventList: {
  265. queryParams: {
  266. current: 1,
  267. size: 10
  268. },
  269. data: []
  270. },
  271. /**
  272. * 委托方
  273. */
  274. clientList: {
  275. queryParams: {
  276. current: 1,
  277. size: 10
  278. },
  279. data: [],
  280. cb: null
  281. },
  282. visible: false,
  283. // 控制调查类型是否显示
  284. show: false,
  285. //调查类型列表
  286. dictAssociates: [],
  287. // 部门数据
  288. departmentList:[],
  289. };
  290. },
  291. watch: {},
  292. computed: {
  293. ...mapGetters(['webSocket', 'userinfo']),
  294. },
  295. created() { },
  296. mounted() {
  297. // 获取人员列表
  298. // this.getPermissionPersonnel();
  299. this.getDepartment()
  300. },
  301. methods: {
  302. //获取部门列表
  303. getDepartment() {
  304. this.$api.getPermissionDepartmentList().then((response) => {
  305. this.departmentList = response.data;
  306. });
  307. },
  308. // 专利挖掘项目审核
  309. addProjectOpenExamineTask(form) {
  310. var params = {
  311. patentDigProjectDTO: this.form,
  312. projectTaskDTO: form,
  313. }
  314. this.$api.addProjectOpenExamineTask(params).then(res => {
  315. if (res.code == 200) {
  316. this.$message.success('已发送审核任务')
  317. this.$emit('isSuccess', '新增成功')
  318. this.$refs.examine.handleCloseTask()
  319. this.handleClose()
  320. }
  321. })
  322. },
  323. /**
  324. * 0标引任务
  325. * 1项目开卷审核任务
  326. * 2检索条件任务
  327. * 3对比任务
  328. * 4协同任务
  329. * 5任务审核任务
  330. *
  331. */
  332. // 审核任务弹窗
  333. handleExamine() {
  334. this.$refs.form.validate((valid) => {
  335. if (valid) {
  336. var form = {
  337. name:this.form.name + '审核任务'
  338. }
  339. this.$refs.examine.open(form)
  340. }
  341. })
  342. },
  343. /**
  344. * 客户/委托方
  345. * @param {*} query
  346. */
  347. //远程搜索委托方(建议调取接口获取)
  348. async querySearch(queryString, cb) {
  349. this.clientList.queryParams.current = 1
  350. this.clientList.queryParams.name = queryString
  351. this.clientList.data = []
  352. this.clientList.cb = cb
  353. await this.getClientList()
  354. // 调用 callback 返回建议列表的数据
  355. // cb(this.clientList.data);
  356. },
  357. loadClient() {
  358. if (this.clientList.queryParams.current * this.clientList.queryParams.size >= this.clientList.queryParams.total) {
  359. return false
  360. }
  361. this.clientList.queryParams.current += 1
  362. this.getClientList()
  363. },
  364. //获取委托方
  365. async getClientList() {
  366. await this.$api.getAdminClientList(this.clientList.queryParams).then(res => {
  367. if (res.code == 200) {
  368. this.clientList.data.push(...res.data.records)
  369. this.clientList.queryParams.total = res.data.total
  370. this.clientList.cb(this.clientList.data);
  371. }
  372. })
  373. },
  374. //输入框输入事件(委托方)
  375. input() {
  376. this.$set(this.form, 'entrustId', -1)
  377. },
  378. //切换选择委托方
  379. handleChange(row) {
  380. this.$set(this.form, 'entrustId', row.id)
  381. this.$set(this.form, 'entrustName', row.name)
  382. this.close2()
  383. },
  384. //打开选择委托方弹窗
  385. handleSelect() {
  386. this.visible = true
  387. },
  388. //获取委托方信息
  389. getClient(row) {
  390. this.$set(this.form, 'entrustId', row.id)
  391. this.$set(this.form, 'entrustName', row.name)
  392. this.close2()
  393. },
  394. //关闭委托方弹窗
  395. close2() {
  396. this.visible = false
  397. },
  398. /*
  399. * 事件
  400. */
  401. //打开事件弹窗
  402. addEvent() {
  403. let form = {}
  404. this.$refs.addEvent.open(form, 1)
  405. },
  406. //懒加载事件
  407. loadEvent() {
  408. if (this.eventList.queryParams.current * this.eventList.queryParams.size >= this.eventList.queryParams.total) {
  409. return false
  410. }
  411. this.eventList.queryParams.current += 1
  412. this.getEventList()
  413. },
  414. //远程搜索
  415. remoteEvent(query) {
  416. this.eventList.data = []
  417. this.eventList.queryParams.current = 1
  418. this.eventList.name = query.trim()
  419. this.getEventList(1)
  420. },
  421. //获取事件列表
  422. async getEventList(type) {
  423. this.eventList.loading = true;
  424. let params = {
  425. ...this.eventList.queryParams,//分页信息
  426. searchQuery: this.eventList.name ? `name=${this.eventList.name}` : '',//检索条件
  427. orderDTOList: [{ orderBy: "createTime", orderType: 1 },]//排序
  428. }
  429. await this.$api.queryEvent(params).then(response => {
  430. if (response.code == 200) {
  431. this.eventList.loading = false;
  432. if (!type) {
  433. if (this.form.eventId) {
  434. var index = response.data.data.findIndex(item => {
  435. return item.id == this.form.eventId
  436. })
  437. if (index != -1) {
  438. response.data.data.splice(index, 1)
  439. }
  440. }
  441. this.eventList.queryParams.total = response.data.total
  442. }
  443. this.eventList.data.push(...response.data.data)
  444. // this.eventList.queryParams.total = response.data.total
  445. }
  446. })
  447. },
  448. //切换事件
  449. async changeEvent(val) {
  450. if (!val) {
  451. this.form.scenarioIds = []
  452. this.show = false
  453. this.form.matterIds = []
  454. this.remoteEvent('')
  455. return
  456. }
  457. var obj = this.eventList.data.find(item => {
  458. return item.id == val
  459. })
  460. if (obj) {
  461. this.form.scenarioIds = [obj.scenarioId]
  462. this.show = true
  463. await this.onChange()
  464. }
  465. },
  466. //调查类型选择切换
  467. async onChange() {
  468. if (this.form.scenarioIds.length != 0) {
  469. await this.$api.getMatter(this.form.scenarioIds).then(response => {
  470. this.show = true
  471. this.dictAssociates = response.data.data
  472. })
  473. } else {
  474. this.show = false
  475. }
  476. },
  477. // 打开参与人 人员弹窗
  478. showDialog() {
  479. this.$refs.choosePerson.open(this.form.adminIds, this.form.adminPersons)
  480. },
  481. //获取参与人员信息
  482. getPersonIds({ personIds, persons }) {
  483. if (personIds.length > 0) {
  484. // adminPersons存储返回的人员id数组
  485. this.$set(this.form, 'adminPersons', persons)
  486. this.$set(this.form, 'adminIds', personIds)
  487. } else {
  488. this.$set(this.form, 'adminPersons', [])
  489. this.$set(this.form, 'adminIds', [])
  490. }
  491. },
  492. // 处理参与人数据
  493. getNames(row) {
  494. if (!row) {
  495. return ''
  496. }
  497. var arr = row.map(item => {
  498. return item.name
  499. })
  500. return arr.join('、')
  501. },
  502. /**
  503. * 研发编号
  504. */
  505. // 研发编号懒加载方法
  506. load() {
  507. if (this.rdNumberArr.queryParams.current * this.rdNumberArr.queryParams.size >= this.rdNumberArr.queryParams.total) {
  508. return false
  509. }
  510. this.rdNumberArr.queryParams.current++
  511. this.getRdProjectByNumber()
  512. },
  513. // 查询研发编号
  514. async getRdProjectByNumber() {
  515. let searchValue = { number: this.rdNumberArr.input }
  516. let params = {
  517. ...this.rdNumberArr.queryParams,//分页信息
  518. searchQuery: this.$commonJS.objectToString(searchValue)//输入的建议
  519. }
  520. await this.$api.getRdProjectByNumber(params).then(res => {
  521. if (res.code == 200) {
  522. this.rdNumberArr.data.push(...res.data.data)
  523. this.rdNumberArr.queryParams.total = res.data.total
  524. this.rdNumberArr.cb(this.rdNumberArr.data);
  525. }
  526. })
  527. },
  528. //获取下拉建议研发编号数据
  529. async querySearchQuestion(queryString, cb) {
  530. this.rdNumberArr.queryParams.current = 1
  531. this.rdNumberArr.input = queryString
  532. this.rdNumberArr.data = []
  533. this.rdNumberArr.cb = cb
  534. await this.getRdProjectByNumber()
  535. },
  536. // 选中的研发编号
  537. handleRdNumber(val) {
  538. this.$set(this.form, 'rdnumber', val.number)
  539. this.$set(this.form, 'rdName', val.name)
  540. },
  541. // 监听研发项目编号输入框的值
  542. changeRdNumber(val) {
  543. if (val) {
  544. this.form.rdnumber = val
  545. if (this.form.rdName) {
  546. let a = this.rdNameArr.data.findIndex(item => {
  547. return item.name == this.form.rdName
  548. })
  549. if (a != -1) {
  550. this.form.rdName = ''
  551. }
  552. }
  553. }
  554. },
  555. /**
  556. * 研发项目名称rdNameArr
  557. */
  558. loadRdName() {
  559. if (this.rdNameArr.queryParams.current * this.rdNameArr.queryParams.size >= this.rdNameArr.queryParams.total) {
  560. return false
  561. }
  562. this.rdNameArr.queryParams.current++
  563. this.getRdProjectRdName()
  564. },
  565. // 查询研发项目名称
  566. async getRdProjectRdName() {
  567. let searchValue = { name: this.rdNameArr.input }
  568. let params = {
  569. ...this.rdNameArr.queryParams,//分页信息
  570. searchQuery: this.$commonJS.objectToString(searchValue)//输入的建议
  571. }
  572. await this.$api.getRdProjectByNumber(params).then(res => {
  573. if (res.code == 200) {
  574. this.rdNameArr.data.push(...res.data.data)
  575. this.rdNameArr.queryParams.total = res.data.total
  576. this.rdNameArr.cb(this.rdNameArr.data);
  577. }
  578. })
  579. },
  580. //获取下拉建议研发项目名称数据
  581. async querySearchRdName(queryString, cb) {
  582. this.rdNameArr.queryParams.current = 1
  583. this.rdNameArr.input = queryString
  584. this.rdNameArr.data = []
  585. this.rdNameArr.cb = cb
  586. await this.getRdProjectRdName()
  587. },
  588. // 选中的研发项目名称
  589. handleRdName(val) {
  590. this.$set(this.form, 'rdnumber', val.number)
  591. this.$set(this.form, 'rdName', val.name)
  592. },
  593. // 监听研发项目名称输入框的值
  594. changeRdName(val) {
  595. if (val) {
  596. if (this.form.rdnumber) {
  597. let a = this.rdNumberArr.data.findIndex(item => {
  598. return item.number == this.form.rdnumber
  599. })
  600. if (a != -1) {
  601. this.form.rdnumber = ''
  602. }
  603. }
  604. this.form.rdName = val
  605. }
  606. },
  607. /**
  608. * 上传文件处理
  609. * */
  610. // 上传的文件监听
  611. onchangeFile(file, fileList) {
  612. if(!this.form.systemFileList){
  613. this.$set(this.form,'systemFileList',[])
  614. }
  615. if (file.guid) {
  616. let index = this.form.systemFileList.findIndex(item => {
  617. return item.uid == file.uid
  618. })
  619. if (index != -1) {
  620. this.form.systemFileList.splice(index, 1, file)
  621. }
  622. } else {
  623. this.form.systemFileList.push(file.raw)
  624. }
  625. },
  626. // 删除上传的文件
  627. onRemove(file, fileList) {
  628. let index = this.form.systemFileList.findIndex(item => {
  629. return item.uid == file.uid
  630. })
  631. if (index != -1) {
  632. this.form.systemFileList.splice(index, 1)
  633. }
  634. },
  635. //打开弹窗
  636. async open(form) {
  637. this.personnelList.data = []
  638. if (form && form.id) {
  639. this.form = JSON.parse(JSON.stringify(form))
  640. // 负责人
  641. if (this.form.headId) {
  642. this.personnelList.queryParams.id = this.form.headId
  643. await this.getPermissionPersonnel(1)
  644. this.personnelList.queryParams.id = null
  645. }
  646. // 部门委托客户
  647. if (this.form.entrustId) {
  648. // this.personnelList.queryParams.id = this.form.entrustId
  649. // await this.getPermissionPersonnel(1)
  650. // this.personnelList.queryParams.id = null
  651. }
  652. // 参与人
  653. if (this.form.involvedPersons && this.form.involvedPersons.length) {
  654. this.form.adminPersons = []
  655. this.form.adminIds = []
  656. this.form.involvedPersons.forEach(item => {
  657. let a = {
  658. id: item.personId,
  659. name: item.personName
  660. }
  661. this.form.adminPersons.push(a)
  662. this.form.adminIds.push(a.id)
  663. })
  664. }
  665. this.title = '编辑专利挖掘项目'
  666. } else {
  667. // this.eventList.disabled = false
  668. // if (this.form.eventId) {
  669. // this.eventList.disabled = true
  670. // this.eventList.data.push({
  671. // id: this.form.eventId,
  672. // name: this.form.eventName,
  673. // })
  674. // }
  675. this.title = '新增专利挖掘项目'
  676. }
  677. this.eventList.data = []
  678. this.eventList.name = ''
  679. this.eventList.disabled = false
  680. var hasEvent = false
  681. if(this.form.eventId){
  682. this.eventList.disabled = true
  683. hasEvent = true
  684. }
  685. if(this.form.eventIds && this.form.eventIds.length>0){
  686. this.form.eventId = this.form.eventIds[0]
  687. hasEvent = true
  688. }
  689. if(hasEvent){
  690. if(this.form.eventId){
  691. let params = {
  692. current:1,
  693. size:1,
  694. searchQuery:`id=${this.form.eventId}`,//检索条件
  695. orderDTOList: [
  696. {
  697. orderBy: "createTime",
  698. orderType: 1
  699. },
  700. ]//排序
  701. }
  702. await this.$api.queryEvent(params).then(response => {
  703. if(response.code == 200){
  704. this.eventList.data.push(...response.data.data)
  705. this.eventList.queryParams.total = response.data.total
  706. }
  707. })
  708. this.changeEvent(this.form.eventId)
  709. }else{
  710. this.getEventList()
  711. }
  712. }
  713. this.getPermissionPersonnel()
  714. this.dialogVisible = true
  715. },
  716. //关闭弹窗
  717. handleClose() {
  718. // this.$refs.upload.clearFiles()
  719. this.$refs.form.resetFields()
  720. this.form = {
  721. matterIds: [],
  722. systemFileList: [],
  723. fileGuids: [],
  724. }
  725. this.dialogVisible = false
  726. },
  727. //提交数据
  728. submit() {
  729. this.$refs.form.validate((valid) => {
  730. if (valid) {
  731. // 判断文件是否都上传完毕
  732. this.$commonJS.allUploadFile(this.form)
  733. if (this.form.scenarioIds && this.form.scenarioIds.length > 0) {
  734. var scenarioIds = JSON.parse(JSON.stringify(this.form.scenarioIds))
  735. }
  736. if (this.form.eventId) {
  737. this.form.events = []
  738. this.form.scenarioIds = []
  739. if(this.form.matterIds.length>0){
  740. this.form.matterIds.forEach(item => {
  741. this.form.events.push(
  742. {
  743. matterId: item,
  744. scenarioId: scenarioIds[0],
  745. eventId: this.form.eventId
  746. }
  747. )
  748. })
  749. }else{
  750. this.form.events.push(
  751. {
  752. matterId: null,
  753. scenarioId: scenarioIds[0],
  754. eventId: this.form.eventId
  755. }
  756. )
  757. }
  758. }
  759. if (this.form.adminIds && this.form.adminIds.length > 0) {
  760. this.form.involvedPersonIds = this.form.adminIds
  761. }
  762. if (!this.form.id) {//新增
  763. if (this.form.examine) {//审核任务
  764. } else {//不审核直接创建项目
  765. this.$api.addPatentDigProject(this.form).then(res => {
  766. if (res.code == 200) {
  767. this.$message.success('新增专利挖掘项目成功')
  768. this.$emit('isSuccess', '新增成功')
  769. this.handleClose()
  770. }
  771. }).catch(error => {
  772. // 如果报告未创建成功,则赋值
  773. this.form.scenarioIds = JSON.parse(JSON.stringify(scenarioIds))
  774. this.show = true
  775. })
  776. }
  777. } else {//编辑
  778. this.$api.updatePatentDigProject(this.form).then(res => {
  779. if (res.code == 200) {
  780. this.$message.success('更新专利挖掘项目成功')
  781. this.$emit('isSuccess', '更新成功')
  782. this.handleClose()
  783. }
  784. })
  785. }
  786. } else {
  787. this.$message.error('信息未输入完整')
  788. }
  789. });
  790. },
  791. // 审核任务
  792. examine(data) {
  793. let params = {
  794. }
  795. this.$api.task(params).then(res => {
  796. if (res.code == 200) {
  797. }
  798. })
  799. },
  800. },
  801. // 组件销毁函数
  802. destroyed() {
  803. // 清空事件相关
  804. this.form.eventIds = []
  805. this.eventList.queryParams.current = 1
  806. // 清空负责人相关
  807. this.form.involvedPersons = []
  808. this.form.adminIds = []
  809. this.form.adminPersons = []
  810. this.personnelList.data = []
  811. this.personnelList.queryParams.name = ''
  812. this.personnelList.queryParams.current = 1
  813. },
  814. };
  815. </script>
  816. <style lang="scss" scoped></style>