meetingList.vue 26 KB

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