meetingList.vue 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957
  1. <template>
  2. <div class="app-container">
  3. <el-form
  4. v-if="type !== '2'"
  5. :model="queryParams"
  6. ref="queryForm"
  7. size="small"
  8. :inline="true"
  9. v-show="showSearch"
  10. label-width="70px"
  11. >
  12. <el-form-item label="会议主题" prop="meetingTheme">
  13. <el-input
  14. v-model="queryParams.meetingTheme"
  15. placeholder="请输入会议主题"
  16. clearable
  17. @keyup.enter.native="handleQuery"
  18. />
  19. </el-form-item>
  20. <el-form-item label="会议编号" prop="meetingCode">
  21. <el-input
  22. v-model="queryParams.meetingCode"
  23. placeholder="请输入会议编号"
  24. clearable
  25. @keyup.enter.native="handleQuery"
  26. />
  27. </el-form-item>
  28. <el-form-item label="会议类别" prop="meetingType">
  29. <el-select
  30. v-model="queryParams.meetingType"
  31. placeholder="全部"
  32. clearable
  33. >
  34. <el-option
  35. v-for="dict in dict.type.meeting_type"
  36. :key="dict.value"
  37. :label="dict.label"
  38. :value="dict.value"
  39. />
  40. </el-select>
  41. </el-form-item>
  42. <el-form-item label="开始时间" prop="startTime">
  43. <el-date-picker
  44. style="width: 205px"
  45. clearable
  46. v-model="queryParams.startTime"
  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="结束时间" prop="endTime">
  54. <el-date-picker
  55. style="width: 205px"
  56. clearable
  57. v-model="queryParams.endTime"
  58. type="date"
  59. value-format="yyyy-MM-dd"
  60. placeholder="请选择会议结束时间"
  61. >
  62. </el-date-picker>
  63. </el-form-item>
  64. <el-form-item>
  65. <el-button
  66. type="primary"
  67. icon="el-icon-search"
  68. size="mini"
  69. @click="handleQuery"
  70. >搜索</el-button
  71. >
  72. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
  73. >重置</el-button
  74. >
  75. </el-form-item>
  76. </el-form>
  77. <el-row :gutter="10" class="mb8" v-if="type !== '2'">
  78. <el-col :span="1.5">
  79. <el-button
  80. type="primary"
  81. plain
  82. icon="el-icon-plus"
  83. size="mini"
  84. @click="handleAdd"
  85. v-hasPermi="['invest:meeting:add']"
  86. >新增</el-button
  87. >
  88. </el-col>
  89. <el-col :span="1.5">
  90. <el-button
  91. type="success"
  92. plain
  93. icon="el-icon-edit"
  94. size="mini"
  95. :disabled="single"
  96. @click="handleUpdate"
  97. v-hasPermi="['invest:meeting:edit']"
  98. >修改</el-button
  99. >
  100. </el-col>
  101. <el-col :span="1.5">
  102. <el-button
  103. type="danger"
  104. plain
  105. icon="el-icon-delete"
  106. size="mini"
  107. :disabled="multiple"
  108. @click="handleDelete"
  109. v-hasPermi="['invest:meeting:remove']"
  110. >删除</el-button
  111. >
  112. </el-col>
  113. <el-col :span="1.5">
  114. <el-button
  115. type="warning"
  116. plain
  117. icon="el-icon-download"
  118. size="mini"
  119. @click="handleExport"
  120. v-hasPermi="['invest:meeting:export']"
  121. >导出</el-button
  122. >
  123. </el-col>
  124. <right-toolbar
  125. :showSearch.sync="showSearch"
  126. @queryTable="getList"
  127. ></right-toolbar>
  128. </el-row>
  129. <el-table
  130. v-loading="loading"
  131. border
  132. :data="meetingList"
  133. @selection-change="handleSelectionChange"
  134. >
  135. <el-table-column type="selection" width="55" align="center" />
  136. <!-- <el-table-column label="主键ID" align="center" prop="id" /> -->
  137. <el-table-column
  138. label="会议主题"
  139. width="200"
  140. align="center"
  141. prop="meetingTheme"
  142. />
  143. <el-table-column
  144. label="项目名称"
  145. align="center"
  146. width="300"
  147. prop="tProjectPool.projectName"
  148. />
  149. <el-table-column
  150. label="会议编号"
  151. width="120"
  152. align="center"
  153. prop="meetingCode"
  154. />
  155. <el-table-column
  156. label="会议类别"
  157. width="120"
  158. align="center"
  159. prop="meetingType"
  160. >
  161. <template slot-scope="scope">
  162. <dict-tag
  163. :options="dict.type.meeting_type"
  164. :value="scope.row.meetingType"
  165. />
  166. </template>
  167. </el-table-column>
  168. <el-table-column
  169. label="会议开始时间"
  170. width="120"
  171. align="center"
  172. prop="startTime"
  173. >
  174. <template slot-scope="scope">
  175. <span>{{ parseTime(scope.row.startTime, "{y}-{m}-{d}") }}</span>
  176. </template>
  177. </el-table-column>
  178. <el-table-column
  179. label="会议结束时间"
  180. width="120"
  181. align="center"
  182. prop="endTime"
  183. >
  184. <template slot-scope="scope">
  185. <span>{{ parseTime(scope.row.endTime, "{y}-{m}-{d}") }}</span>
  186. </template>
  187. </el-table-column>
  188. <el-table-column
  189. label="会议地点"
  190. width="150"
  191. align="center"
  192. prop="place"
  193. />
  194. <el-table-column
  195. label="会议发起人"
  196. width="120"
  197. align="center"
  198. prop="promoter"
  199. />
  200. <el-table-column
  201. label="会议参与人"
  202. width="300"
  203. align="center"
  204. prop="participants"
  205. />
  206. <el-table-column
  207. label="创建人"
  208. width="120"
  209. align="center"
  210. prop="createBy"
  211. />
  212. <el-table-column
  213. label="创建时间"
  214. align="center"
  215. prop="createTime"
  216. width="160"
  217. />
  218. <el-table-column
  219. label="操作"
  220. fixed="right"
  221. align="center"
  222. class-name="small-padding fixed-width"
  223. width="200"
  224. >
  225. <template slot-scope="scope">
  226. <el-button
  227. size="mini"
  228. type="text"
  229. icon="el-icon-edit"
  230. @click="handleUpdate(scope.row)"
  231. v-hasPermi="['invest:meeting:edit']"
  232. >修改</el-button
  233. >
  234. <el-button
  235. class="custom-red-color"
  236. size="mini"
  237. type="text"
  238. icon="el-icon-delete"
  239. @click="handleDelete(scope.row)"
  240. v-hasPermi="['invest:meeting:remove']"
  241. >删除</el-button
  242. >
  243. <el-dropdown
  244. v-if="
  245. scope.row.meetingType == 'LX' || scope.row.meetingType == 'TJ'
  246. "
  247. trigger="click"
  248. @command="handleCommand($event, scope.row)"
  249. >
  250. <!-- class="custom-blue-color" -->
  251. <span
  252. class="el-dropdown-link"
  253. v-preventReClick
  254. @click="getButtonItem(scope.row)"
  255. >
  256. <el-button size="mini" type="text" icon="el-icon-d-arrow-right"
  257. >更多</el-button
  258. >
  259. </span>
  260. <el-dropdown-menu slot="dropdown">
  261. <el-dropdown-item
  262. v-if="!showLookMark && showMarkBtn"
  263. command="1"
  264. icon="el-icon-document-remove"
  265. @click="handleMark(scope.row, '1', false)"
  266. >去打分</el-dropdown-item
  267. >
  268. <el-dropdown-item
  269. v-if="showLookMark && showMarkBtn"
  270. icon="el-icon-search"
  271. command="2"
  272. @click="handleMark(scope.row, '1', true)"
  273. >查看打分表</el-dropdown-item
  274. >
  275. <el-dropdown-item
  276. v-if="isInitiator"
  277. icon="el-icon-search"
  278. command="3"
  279. @click="handleLookMark(scope.row, '2', true)"
  280. >查看打分汇总表</el-dropdown-item
  281. >
  282. </el-dropdown-menu>
  283. </el-dropdown>
  284. <!-- <el-button
  285. size="mini"
  286. type="text"
  287. icon="el-icon-document-remove"
  288. @click="handleMark(scope.row, '1',false)"
  289. >去打分</el-button
  290. >
  291. <el-button
  292. size="mini"
  293. type="text"
  294. icon="el-icon-search"
  295. @click="handleMark(scope.row, '1',true)"
  296. >查看打分表</el-button
  297. >
  298. <el-button
  299. size="mini"
  300. type="text"
  301. icon="el-icon-search"
  302. @click="handleLookMark(scope.row, '2',true)"
  303. >查看打分汇总表</el-button
  304. > -->
  305. </template>
  306. </el-table-column>
  307. </el-table>
  308. <pagination
  309. v-show="total > 0"
  310. :total="total"
  311. :page.sync="queryParams.pageNum"
  312. :limit.sync="queryParams.pageSize"
  313. @pagination="getList"
  314. />
  315. <!-- 添加或修改会议记录对话框 -->
  316. <el-dialog
  317. :title="title"
  318. :visible.sync="open"
  319. width="1000px"
  320. append-to-body
  321. >
  322. <el-form
  323. class="special-el-form"
  324. ref="form"
  325. :model="form"
  326. :rules="rules"
  327. label-width="120px"
  328. >
  329. <el-form-item label="会议主题" prop="meetingTheme">
  330. <el-input v-model="form.meetingTheme" placeholder="请输入会议主题" />
  331. </el-form-item>
  332. <!-- <el-form-item label="会议编号" prop="meetingCode">
  333. <el-input v-model="form.meetingCode" placeholder="请输入会议编号" />
  334. </el-form-item> -->
  335. <el-form-item label="会议类别" prop="meetingType">
  336. <el-select
  337. v-model="form.meetingType"
  338. placeholder="请选择会议类别"
  339. :disabled="
  340. meetingTypeDisabled || (pageType === '1' && meetingType != null)
  341. "
  342. >
  343. <el-option
  344. v-for="dict in dict.type.meeting_type"
  345. :key="dict.value"
  346. :label="dict.label"
  347. :value="dict.value"
  348. ></el-option>
  349. </el-select>
  350. </el-form-item>
  351. <el-form-item
  352. label="项目名称"
  353. prop="projectName"
  354. :rules="[
  355. { required: verifyProjectName, trigger: 'blur', message: '请选择' },
  356. ]"
  357. >
  358. <div
  359. class="el-input__inner inputSimulation yichu1"
  360. @click="handleProjectItem"
  361. :class="{ show_disabled: pageType === '1' }"
  362. :title="form.projectName"
  363. >
  364. {{ form.projectName ? form.projectName : "请选择 " }}
  365. </div>
  366. <projectItem
  367. ref="projectItem"
  368. @getProjectInfo="getProjectInfo"
  369. ></projectItem>
  370. </el-form-item>
  371. <el-form-item label="项目阶段" prop="projectStage">
  372. <el-select v-model="form.projectStage" disabled placeholder="">
  373. <el-option
  374. v-for="dict in dict.type.project_stage"
  375. :key="dict.value"
  376. :label="dict.label"
  377. :value="dict.value"
  378. />
  379. </el-select>
  380. </el-form-item>
  381. <!-- <el-form-item label="组别" prop="projectGroup">
  382. <el-select v-model="form.projectGroup" disabled placeholder="">
  383. <el-option
  384. v-for="dict in dict.type.project_group"
  385. :key="dict.value"
  386. :label="dict.label"
  387. :value="dict.value"
  388. ></el-option>
  389. </el-select>
  390. </el-form-item> -->
  391. <el-form-item label="会议开始时间" prop="startTime">
  392. <el-date-picker
  393. v-model="form.startTime"
  394. type="datetime"
  395. placeholder="请选择会议开始时间"
  396. >
  397. </el-date-picker>
  398. <!-- <el-date-picker
  399. clearable
  400. v-model="form.startTime"
  401. type="date"
  402. value-format="yyyy-MM-dd"
  403. placeholder="请选择会议开始时间"
  404. >
  405. </el-date-picker> -->
  406. </el-form-item>
  407. <el-form-item label="会议结束时间" prop="endTime">
  408. <el-date-picker
  409. v-model="form.endTime"
  410. type="datetime"
  411. placeholder="请选择会议结束时间"
  412. >
  413. </el-date-picker>
  414. <!-- <el-date-picker
  415. clearable
  416. v-model="form.endTime"
  417. type="date"
  418. value-format="yyyy-MM-dd"
  419. placeholder="请选择会议结束时间"
  420. >
  421. </el-date-picker> -->
  422. </el-form-item>
  423. <el-form-item label="会议地点" prop="place">
  424. <el-input v-model="form.place" placeholder="请输入会议地点" />
  425. </el-form-item>
  426. <el-form-item label="会议发起人" prop="promoter">
  427. <div
  428. class="el-input__inner inputSimulation"
  429. @click="openSelectDept(1)"
  430. >
  431. {{ form.promoter ? form.promoter : "请选择会议发起人" }}
  432. </div>
  433. <selecDept
  434. ref="selecDepts"
  435. @getDeptUserInfo="getDeptUserInfo"
  436. :deptId="deptId"
  437. ></selecDept>
  438. </el-form-item>
  439. <el-form-item label="会议参与人" prop="participants">
  440. <div
  441. class="el-input__inner inputSimulation yichu1"
  442. @click="handleSelectPeople()"
  443. :title="form.participants"
  444. >
  445. <!-- @click="openSelectDept(2)" -->
  446. {{ form.participants ? form.participants : "请选择会议参与人" }}
  447. </div>
  448. <!-- <selecDept
  449. ref="selecDepts1"
  450. @getDeptMoreUserInfo="getDeptMoreUserInfo"
  451. :deptId="deptId"
  452. :isSolo="false"
  453. ></selecDept> -->
  454. </el-form-item>
  455. <el-form-item label="附件" prop="file">
  456. <fileItem
  457. ref="fileItems"
  458. :id="form.id"
  459. @getFileList="getFileList"
  460. ></fileItem>
  461. </el-form-item>
  462. </el-form>
  463. <div slot="footer" class="dialog-footer">
  464. <el-button type="primary" @click="submitForm" v-preventReClick
  465. >确 定</el-button
  466. >
  467. <el-button @click="cancel">取 消</el-button>
  468. </div>
  469. </el-dialog>
  470. <!--选择人员-->
  471. <selecUser
  472. ref="flowUser"
  473. :checkType="checkType"
  474. :selectValues="selectValues"
  475. :selectNameValues="selectNameValues"
  476. @handleUserSelect="handleUserSelect"
  477. ></selecUser>
  478. </div>
  479. </template>
  480. <script>
  481. import {
  482. listMeeting,
  483. getMeeting,
  484. delMeeting,
  485. addMeeting,
  486. updateMeeting,
  487. getCanScoringMeetingId,
  488. } from "@/api/invest/meeting";
  489. import projectItem from "./projectItem";
  490. import fileItem from "./fileItem";
  491. import selecDept from "./selecDept";
  492. import selecUser from "./selecUser";
  493. export default {
  494. props: {
  495. type: {
  496. type: String,
  497. default: "1", //1=显示全部列表 2=显示某项目下的详情列表
  498. },
  499. projectId: {
  500. type: String,
  501. },
  502. },
  503. dicts: ["meeting_type", "project_stage", "project_group"],
  504. components: { projectItem, selecDept, fileItem, selecUser },
  505. watch: {
  506. "form.meetingType": function (newValue, oldValue) {
  507. // console.log(newValue,"this.form.meetingType", this.form.meetingType);
  508. if (this.form.meetingType == "LX" || this.form.meetingType == "TJ") {
  509. this.verifyProjectName = true;
  510. } else {
  511. this.verifyProjectName = false;
  512. }
  513. },
  514. open: function (newValue, oldValue) {
  515. if (newValue === false) {
  516. this.selectValues = null;
  517. this.selectNameValues = null;
  518. this.queryParams.projectPoolId = null;
  519. this.meetingType = null;
  520. this.pageType = null;
  521. }
  522. },
  523. },
  524. data() {
  525. return {
  526. meetingTypeDisabled: false, //会议类别
  527. showMenu: false,
  528. // 人员选择器
  529. checkType: "multiple",
  530. // 数据回显
  531. selectValues: null,
  532. selectNameValues: null,
  533. userVisible: false,
  534. pageType: null,
  535. meetingType: null,
  536. verifyProjectName: false,
  537. fileList: [],
  538. showProjectItem: false,
  539. deptId: process.env.VUE_APP_DEPTID,
  540. // 遮罩层
  541. loading: true,
  542. // 选中数组
  543. ids: [],
  544. idsName: [],
  545. // 非单个禁用
  546. single: true,
  547. // 非多个禁用
  548. multiple: true,
  549. // 显示搜索条件
  550. showSearch: true,
  551. // 总条数
  552. total: 0,
  553. // 会议记录表格数据
  554. meetingList: [],
  555. // 弹出层标题
  556. title: "",
  557. // 是否显示弹出层
  558. open: false,
  559. // 查询参数
  560. queryParams: {
  561. pageNum: 1,
  562. pageSize: 10,
  563. meetingTheme: null,
  564. meetingCode: null,
  565. meetingType: null,
  566. startTime: null,
  567. endTime: null,
  568. orderByColumn: "createTime",
  569. isAsc: "desc",
  570. },
  571. // 表单参数
  572. form: {
  573. id: null,
  574. meetingTheme: null,
  575. meetingCode: null,
  576. meetingType: null,
  577. projectPoolId: null,
  578. projectName: null,
  579. projectStage: null,
  580. projectGroup: null,
  581. startTime: null,
  582. endTime: null,
  583. place: null,
  584. promoter: null,
  585. promoterId: null,
  586. participants: null,
  587. participantsId: null,
  588. delFlag: null,
  589. createBy: null,
  590. createTime: null,
  591. updateBy: null,
  592. updateTime: null,
  593. projectGroup: null,
  594. },
  595. // 表单校验
  596. rules: {
  597. meetingTheme: [{ required: true, trigger: "blur", message: "请输入" }],
  598. meetingType: [{ required: true, trigger: "change", message: "请选择" }],
  599. // projectGroup: [{ required: true, trigger: "change", message: "请选择" }],
  600. // projectName: [{ required: true, trigger: "blur", message: "请选择" }],
  601. startTime: [{ required: true, trigger: "change", message: "请选择" }],
  602. endTime: [{ required: true, trigger: "blur", message: "请选择" }],
  603. place: [{ required: true, trigger: "blur", message: "请输入" }],
  604. promoter: [{ required: true, trigger: "blur", message: "请选择" }],
  605. participants: [{ required: true, trigger: "blur", message: "请选择" }],
  606. },
  607. user: {
  608. userId: null,
  609. nickName: null,
  610. },
  611. isInitiator: false, //是否是发起人
  612. showLookMark: false, //是否查看打分表
  613. showMarkBtn: false,
  614. };
  615. },
  616. created() {
  617. this.user = this.$store.getters.user;
  618. this.user.userId = this.user.userId.toString();
  619. // 查询该id下的列表信息
  620. if (this.$route.query.id) {
  621. this.queryParams.projectPoolId = this.$route.query.id;
  622. }
  623. // 会议类型
  624. if (this.$route.query.meetingType) {
  625. this.meetingType = this.$route.query.meetingType;
  626. }
  627. // 直接弹出新增
  628. if (this.$route.query.type === "1") {
  629. this.pageType = this.$route.query.type;
  630. this.handleAdd();
  631. }
  632. if (this.projectId) {
  633. this.queryParams.projectPoolId = this.projectId;
  634. }
  635. this.getList();
  636. },
  637. methods: {
  638. handleSelectPeople() {
  639. // this.userVisible = true;
  640. this.$refs.flowUser.handleUserVisible(true);
  641. },
  642. /*用户选中赋值*/
  643. // checkUserComplete() {
  644. // this.userVisible = false;
  645. // this.checkType = "";
  646. // },
  647. // 用户选中数据
  648. handleUserSelect(selection) {
  649. const that = this;
  650. if (selection && selection[0]) {
  651. if (selection instanceof Array) {
  652. const userIds = selection.map((item) => item.userId);
  653. const nickName = selection.map((item) => item.nickName);
  654. this.form.participants = nickName.join(",");
  655. this.form.participantsId = userIds.join(",");
  656. this.selectNameValues = nickName.join(",");
  657. this.selectValues = userIds.join(",");
  658. } else {
  659. this.form.participants = selection.nickName;
  660. this.form.participantsId = selection.userId;
  661. this.selectNameValues = selection.nickName;
  662. this.selectValues = selection.userId;
  663. }
  664. }
  665. },
  666. getButtonItem(row) {
  667. this.showMarkBtn = false;
  668. this.isInitiator = false;
  669. // 是否是发起人
  670. let isInitiator = row.promoterId == this.user.userId;
  671. // 参与人数组
  672. let participantsIdList = row.participantsId.split(",");
  673. // console.log("是否是发起人",this.isInitiator)
  674. // console.log("参与人数组",participantsIdList,"this.user.userId=",this.user.userId,participantsIdList.indexOf(this.user.userId) > -1)
  675. // if (isInitiator) {
  676. // 参与人里面包含发起人
  677. if (participantsIdList.indexOf(this.user.userId) > -1) {
  678. this.showMarkBtn = true;
  679. }
  680. // }
  681. // console.log("this.showMarkBtn=",this.showMarkBtn)
  682. getCanScoringMeetingId(row.id).then((response) => {
  683. // 查看打分
  684. if (response.tProjectScoring) {
  685. this.showLookMark = true;
  686. this.$store.commit("SET_TPROJECTSCORING", response.tProjectScoring);
  687. this.isInitiator = true;
  688. } else {
  689. // 去打分
  690. this.showLookMark = false;
  691. this.isInitiator = false;
  692. if (!this.showMarkBtn) {
  693. this.$message.warning("暂无更多操作权限");
  694. }
  695. }
  696. });
  697. },
  698. // getCanScoringMeetingId
  699. handleCommand(command, row) {
  700. // console.log("handleCommand", command);
  701. // console.log("row", row);
  702. let type = "1",
  703. readonly = true;
  704. if (command === "1") {
  705. readonly = false;
  706. }
  707. if (command === "3") {
  708. type = "2";
  709. }
  710. this.handleMark(row, type, readonly);
  711. },
  712. // 去打分
  713. handleMark(row, type, readonly) {
  714. this.$router.push({
  715. path: "/invest/meeting/mark",
  716. query: { id: row.id, formType: type, readonly: readonly },
  717. });
  718. },
  719. // 查看打分表
  720. handleLookMark(row, type) {
  721. this.$router.push({
  722. path: "/invest/meeting/mark",
  723. query: { id: row.id, formType: type },
  724. });
  725. },
  726. // 选择部门人
  727. openSelectDept(type) {
  728. if (type == 2) {
  729. // this.$refs.selecDepts1.show(type);
  730. } else {
  731. this.$refs.selecDepts.show(type, this.form.promoterId);
  732. }
  733. },
  734. getDeptUserInfo(info) {
  735. if (info.length > 0) {
  736. this.form.promoter = info[0].nickName;
  737. this.form.promoterId = info[0].userId.toString();
  738. this.$refs.form.clearValidate(["promoter"]);
  739. }
  740. },
  741. // 多选人
  742. getDeptMoreUserInfo(info) {
  743. let peoList = [],
  744. peoIdList = [];
  745. for (let i in info) {
  746. peoList.push(info[i].nickName);
  747. peoIdList.push(info[i].userId.toString());
  748. }
  749. let peopleStr = peoList.join(",");
  750. let peopleIdStr = peoIdList.join(",");
  751. this.form.participants = peopleStr;
  752. this.form.participantsId = peopleIdStr;
  753. this.$refs.form.clearValidate(["participants"]);
  754. },
  755. // 获取fileList
  756. getFileList(fileList) {
  757. this.fileList = fileList;
  758. },
  759. // 获取公司信息
  760. getProjectInfo(info) {
  761. if (info.length > 0) {
  762. // console.log("info=", info);
  763. this.form.projectPoolId = info[0].id;
  764. this.form.projectName = info[0].projectName;
  765. this.form.projectStage = info[0].projectStage;
  766. this.form.projectGroup = info[0].tProjectChannel.channelGroup;
  767. this.form.projectState = info[0].projectState;
  768. this.$refs.form.clearValidate(["projectName"]);
  769. }
  770. },
  771. //展示人员
  772. handleProjectItem() {
  773. this.$refs.projectItem.showProjectItem = true;
  774. },
  775. /** 查询会议记录列表 */
  776. getList() {
  777. this.loading = true;
  778. if (this.projectId) {
  779. this.queryParams.projectPoolId = this.projectId;
  780. }
  781. listMeeting(this.queryParams).then((response) => {
  782. this.meetingList = response.rows;
  783. this.total = response.total;
  784. this.loading = false;
  785. });
  786. },
  787. // 取消按钮
  788. cancel() {
  789. this.open = false;
  790. this.reset();
  791. },
  792. // 表单重置
  793. reset() {
  794. this.form = {
  795. id: null,
  796. meetingTheme: null,
  797. meetingCode: null,
  798. meetingType: null,
  799. projectPoolId: null,
  800. projectName: null,
  801. projectStage: null,
  802. projectGroup: null,
  803. startTime: null,
  804. endTime: null,
  805. place: null,
  806. promoter: null,
  807. promoterId: null,
  808. participants: null,
  809. participantsId: null,
  810. delFlag: null,
  811. createBy: null,
  812. createTime: null,
  813. updateBy: null,
  814. updateTime: null,
  815. projectGroup: null,
  816. };
  817. this.resetForm("form");
  818. },
  819. /** 搜索按钮操作 */
  820. handleQuery() {
  821. this.queryParams.pageNum = 1;
  822. this.getList();
  823. },
  824. /** 重置按钮操作 */
  825. resetQuery() {
  826. this.resetForm("queryForm");
  827. this.queryParams.orderByColumn = "createTime";
  828. this.queryParams.isAsc = "desc";
  829. this.handleQuery();
  830. },
  831. // 多选框选中数据
  832. handleSelectionChange(selection) {
  833. this.ids = selection.map((item) => item.id);
  834. this.idsName = selection.map((item) => item.meetingTheme);
  835. this.single = selection.length !== 1;
  836. this.multiple = !selection.length;
  837. },
  838. /** 新增按钮操作 */
  839. handleAdd(projectId) {
  840. let that = this;
  841. this.meetingTypeDisabled = false;
  842. this.selectValues = null;
  843. this.selectNameValues = null;
  844. this.reset();
  845. if (projectId && typeof projectId === "string") {
  846. this.pageType = "1";
  847. }
  848. // 直接绑定好项目
  849. if (this.pageType === "1") {
  850. let projectItemMessage = this.$store.getters.projectItemMessage;
  851. this.form.projectPoolId = projectItemMessage.id;
  852. this.form.projectName = projectItemMessage.projectName;
  853. this.form.projectStage = projectItemMessage.projectStage;
  854. this.form.projectGroup = projectItemMessage.projectGroup;
  855. this.form.meetingType = this.meetingType;
  856. }
  857. this.open = true;
  858. this.title = "添加会议";
  859. setTimeout(() => {
  860. that.$refs.fileItems.fileList = [];
  861. }, 200);
  862. },
  863. /** 修改按钮操作 */
  864. handleUpdate(row) {
  865. this.selectValues = null;
  866. this.selectNameValues = null;
  867. this.reset();
  868. const id = row.id || this.ids;
  869. this.meetingTypeDisabled = true;
  870. getMeeting(id).then((response) => {
  871. this.form = response.data;
  872. this.form.projectName = response.data.tProjectPool.projectName;
  873. this.form.projectStage = response.data.tProjectPool.projectStage;
  874. this.form.projectGroup = response.data.tProjectPool.projectGroup;
  875. this.open = true;
  876. this.title = "修改会议";
  877. this.selectValues = response.data.participantsId;
  878. this.selectNameValues = response.data.participants;
  879. setTimeout(() => {
  880. this.$refs.fileItems.getListFileBusinessId(id);
  881. }, 200);
  882. });
  883. },
  884. /** 提交按钮 */
  885. submitForm() {
  886. this.$refs["form"].validate((valid) => {
  887. if (valid) {
  888. if (
  889. new Date(this.form.endTime).getTime() <
  890. new Date(this.form.startTime).getTime()
  891. ) {
  892. this.$confirm("会议结束时间不能小于开始时间,请重新选择!", "提示", {
  893. confirmButtonText: "确定",
  894. cancelButtonText: "取消",
  895. type: "warning",
  896. })
  897. .then(() => {})
  898. .catch(() => {});
  899. return false;
  900. }
  901. this.form.listFile = this.fileList;
  902. if (this.form.id != null) {
  903. updateMeeting(this.form).then((response) => {
  904. this.$modal.msgSuccess("修改成功");
  905. this.open = false;
  906. this.getList();
  907. });
  908. } else {
  909. addMeeting(this.form).then((response) => {
  910. this.$modal.msgSuccess("新增成功");
  911. this.open = false;
  912. this.getList();
  913. });
  914. }
  915. }
  916. });
  917. },
  918. /** 删除按钮操作 */
  919. handleDelete(row) {
  920. const ids = row.id || this.ids;
  921. const idsName = row.meetingTheme ? row.meetingTheme : this.idsName;
  922. this.$modal
  923. .confirm('是否确认删除"' + idsName + '"?')
  924. .then(function () {
  925. return delMeeting(ids);
  926. })
  927. .then(() => {
  928. this.getList();
  929. this.$modal.msgSuccess("删除成功");
  930. })
  931. .catch(() => {});
  932. },
  933. /** 导出按钮操作 */
  934. handleExport() {
  935. this.download(
  936. "invest/meeting/export",
  937. {
  938. ...this.queryParams,
  939. },
  940. `meeting_${new Date().getTime()}.xlsx`
  941. );
  942. },
  943. },
  944. };
  945. </script>