index.vue 31 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010
  1. <template>
  2. <div class="bg-transparent flex resumption">
  3. <el-row :gutter="20">
  4. <!--机构数据-->
  5. <el-col :span="4" :xs="24">
  6. <org-tree
  7. v-model="queryParams.orgId"
  8. @defaultKey="getDefaultKey"
  9. @checkChange="checkChange"
  10. @click="clickTreeNode"
  11. ></org-tree>
  12. </el-col>
  13. <el-col :span="20" :xs="24">
  14. <!-- 搜索条件 -->
  15. <el-form
  16. :model="queryParams"
  17. ref="queryParams"
  18. size="small"
  19. :inline="true"
  20. v-show="showSearch"
  21. label-width="100px"
  22. >
  23. <el-form-item label="履职计划">
  24. <el-select
  25. v-model="queryParams.planId"
  26. filterable
  27. placeholder="请选择履职计划"
  28. >
  29. <el-option
  30. v-for="item in planList"
  31. :key="item.id"
  32. :label="item.name"
  33. :value="item.id"
  34. >
  35. </el-option>
  36. </el-select>
  37. </el-form-item>
  38. <el-form-item label="履职角色">
  39. <el-select
  40. v-model="queryParams.executeRole"
  41. placeHolder="请选择履职角色"
  42. clearable
  43. >
  44. <el-option
  45. v-for="item in roleList"
  46. :key="item.id"
  47. :label="item.name"
  48. :value="item.id"
  49. ></el-option>
  50. </el-select>
  51. </el-form-item>
  52. <el-form-item label="履职周期">
  53. <el-select
  54. v-model="queryParams.executeCycle"
  55. placeHolder="请选择履职周期"
  56. clearable
  57. @change="changeType($event)"
  58. >
  59. <el-option
  60. v-for="item in dict.type.plan_cycle"
  61. :key="item.value"
  62. :label="item.label"
  63. :value="item.value"
  64. ></el-option>
  65. </el-select>
  66. </el-form-item>
  67. <el-form-item label="任务状态">
  68. <el-select
  69. v-model="queryParams.status"
  70. placeHolder="请选择任务状态"
  71. clearable
  72. >
  73. <el-option
  74. v-for="item in dict.type.resumption_status"
  75. :key="item.value"
  76. :label="item.label"
  77. :value="item.value"
  78. ></el-option>
  79. </el-select>
  80. </el-form-item>
  81. <el-form-item
  82. class="searchTitle"
  83. label="计划时间"
  84. v-if="
  85. queryParams.executeCycle == 1 || queryParams.executeCycle == 2 || queryParams.executeCycle == null || queryParams.executeCycle==0
  86. "
  87. >
  88. <DataRangePicker
  89. v-model="queryParams.range"
  90. key="daterange"
  91. type="daterange"
  92. :clearable="timeClearable"
  93. />
  94. </el-form-item>
  95. <el-form-item
  96. class="searchTitle"
  97. label="计划时间"
  98. v-if="queryParams.executeCycle == 3"
  99. >
  100. <!-- :format='weekStart+" 到 "+weekEnd+ 第WW周' format=" yyyy 第 WW 周"-->
  101. <el-date-picker
  102. :picker-options="{ firstDayOfWeek: 1 }"
  103. key="week"
  104. v-model="week"
  105. @change="weekChanged"
  106. :clearable="timeClearable"
  107. type="week"
  108. format=" yyyy 第 WW 周"
  109. placeholder="选择周"
  110. >
  111. </el-date-picker>
  112. </el-form-item>
  113. <el-form-item
  114. class="searchTitle"
  115. label="计划时间"
  116. v-if="queryParams.executeCycle == 4"
  117. >
  118. <el-date-picker
  119. v-model="monthRange"
  120. @change="monthChanged"
  121. type="monthrange"
  122. key="monthRange"
  123. align="right"
  124. :clearable="timeClearable"
  125. unlink-panels
  126. range-separator="-"
  127. start-placeholder="开始月份"
  128. end-placeholder="结束月份"
  129. />
  130. </el-form-item>
  131. <el-form-item
  132. class="searchTitle"
  133. label="计划时间"
  134. v-if="queryParams.executeCycle == 5"
  135. >
  136. <el-date-picker
  137. :clearable="timeClearable"
  138. type="year"
  139. align="right"
  140. key="quarterSyearS"
  141. v-model="yearS"
  142. />
  143. -
  144. <el-select v-model="quarterS" placeholder="请选择">
  145. <el-option
  146. v-for="item in optionsQS"
  147. :key="item.key"
  148. :label="item.text"
  149. :value="item.value"
  150. :clearable="timeClearable"
  151. />
  152. </el-select>
  153. <label
  154. class="el-form-item__label"
  155. style="margin: 0 10px; padding: 0"
  156. >至</label
  157. >
  158. <el-date-picker
  159. :clearable="timeClearable"
  160. type="year"
  161. v-model="yearE"
  162. key="quarterSyearE"
  163. align="right"
  164. />
  165. -
  166. <el-select v-model="quarterE" placeholder="请选择">
  167. <el-option
  168. v-for="item in optionsQE"
  169. :key="item.key"
  170. :label="item.text"
  171. :value="item.value"
  172. :clearable="timeClearable"
  173. />
  174. </el-select>
  175. </el-form-item>
  176. <el-form-item label="计划时间" v-if="queryParams.executeCycle == 6">
  177. <el-date-picker
  178. :clearable="timeClearable"
  179. type="year"
  180. align="right"
  181. key="halfyearS"
  182. v-model="yearS"
  183. />
  184. -
  185. <el-select v-model="halfyearS" placeholder="请选择">
  186. <el-option
  187. v-for="item in optionsHS"
  188. :key="item.key"
  189. :label="item.text"
  190. :value="item.value"
  191. :clearable="timeClearable"
  192. />
  193. </el-select>
  194. <label
  195. class="el-form-item__label"
  196. style="margin: 0 10px; padding: 0"
  197. >至</label
  198. >
  199. <el-date-picker
  200. :clearable="timeClearable"
  201. type="year"
  202. v-model="yearE"
  203. key="halfyearE"
  204. align="right"
  205. />
  206. -
  207. <el-select v-model="halfyearE" placeholder="请选择">
  208. <el-option
  209. v-for="item in optionsHE"
  210. :key="item.key"
  211. :label="item.text"
  212. :value="item.value"
  213. :clearable="timeClearable"
  214. />
  215. </el-select>
  216. </el-form-item>
  217. <el-form-item
  218. class="searchTitle"
  219. label="计划时间"
  220. v-if="queryParams.executeCycle == 7"
  221. >
  222. <el-date-picker
  223. :clearable="timeClearable"
  224. type="year"
  225. align="right"
  226. v-model="yearS"
  227. key="yearS"
  228. />
  229. <label
  230. class="el-form-item__label"
  231. style="margin: 0 10px; padding: 0"
  232. >至</label
  233. >
  234. <el-date-picker
  235. :clearable="timeClearable"
  236. type="year"
  237. v-model="yearE"
  238. align="right"
  239. key="yearE"
  240. />
  241. </el-form-item>
  242. <el-form-item>
  243. <el-button
  244. type="primary"
  245. icon="el-icon-search"
  246. size="mini"
  247. @click="getList"
  248. >搜索</el-button
  249. >
  250. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
  251. >重置</el-button
  252. >
  253. </el-form-item>
  254. </el-form>
  255. <!-- 按纽 -->
  256. <el-row :gutter="10" class="mb8">
  257. <el-col :span="1.5">
  258. <el-button
  259. type="primary"
  260. plain
  261. icon="el-icon-download"
  262. size="mini"
  263. @click="exportExcel()"
  264. v-hasPermi="['system:user:add']"
  265. >导出</el-button
  266. >
  267. </el-col>
  268. <right-toolbar
  269. :showSearch.sync="showSearch"
  270. @queryTable="getList"
  271. :columns="columns"
  272. ></right-toolbar>
  273. </el-row>
  274. <el-table v-loading="loading" :data="pageData">
  275. <el-table-column
  276. type="index"
  277. min-width="4%"
  278. v-if="columns[0].visible"
  279. >
  280. <template slot-scope="r">{{ r.row.order }}</template>
  281. </el-table-column>
  282. <el-table-column
  283. prop="name"
  284. label="任务名称"
  285. min-width="20%"
  286. v-if="columns[1].visible"
  287. >
  288. <template slot-scope="r">{{ r.row.planName }}</template>
  289. </el-table-column>
  290. <el-table-column
  291. prop="planStartTime"
  292. label="任务开始时间"
  293. min-width="15%"
  294. v-if="columns[2].visible"
  295. />
  296. <el-table-column
  297. prop="planEndTime"
  298. label="任务结束时间"
  299. min-width="15%"
  300. v-if="columns[3].visible"
  301. />
  302. <el-table-column
  303. prop="status"
  304. label="上级机构"
  305. min-width="15%"
  306. v-if="columns[4].visible"
  307. >
  308. <template slot-scope="r">
  309. {{ r.row.parentOrgName }}
  310. </template>
  311. </el-table-column>
  312. <el-table-column
  313. prop="status"
  314. label="履职机构"
  315. min-width="15%"
  316. v-if="columns[5].visible"
  317. >
  318. <template slot-scope="r">
  319. {{ r.row.orgName }}
  320. </template>
  321. </el-table-column>
  322. <el-table-column
  323. prop="status"
  324. label="履职角色"
  325. min-width="10%"
  326. v-if="columns[6].visible"
  327. >
  328. <template slot-scope="r">
  329. {{ r.row.roleName }}
  330. </template>
  331. </el-table-column>
  332. <el-table-column
  333. prop="submitter"
  334. label="提交人"
  335. min-width="10%"
  336. v-if="columns[7].visible"
  337. ></el-table-column>
  338. <el-table-column
  339. label="提交时间"
  340. min-width="15%"
  341. v-if="columns[8].visible"
  342. >
  343. <template slot-scope="r">{{
  344. r.row.submitTime | dateTime
  345. }}</template>
  346. </el-table-column>
  347. <el-table-column
  348. prop="abnormalDataNums"
  349. label="异常个数"
  350. min-width="9%"
  351. v-if="columns[8].visible"
  352. >
  353. <template slot-scope="r">{{ r.row.abnormalDataNums }}</template>
  354. </el-table-column>
  355. <el-table-column
  356. prop="status"
  357. label="任务状态"
  358. min-width="8%"
  359. v-if="columns[9].visible"
  360. >
  361. <template slot-scope="r">
  362. <label :style="statusStyle(r.row.status)">
  363. {{ getLabel(dict.type.resumption_status, r.row.status) }}</label
  364. >
  365. </template>
  366. </el-table-column>
  367. <el-table-column label="操作" min-width="13%">
  368. <template slot-scope="r">
  369. <!-- <el-button v-if="
  370. r.row.status == 'WAIT' &&
  371. queryParams.type == 'QUARTER'
  372. " type="text" @click="onEdit(r.row.id)">履职</el-button>
  373. <el-button v-else-if="
  374. r.row.status != 'NA' &&
  375. r.row.status != 'NOT' &&
  376. r.row.status != 'WAIT'
  377. " type="text" @click="onEdit(r.row.id, { isRead: true })">查看</el-button> -->
  378. <el-button type="text" @click="showDetail(r.row)" v-show="r.row.status!=2 || r.row.status!=3">查看</el-button>
  379. <el-button type="text" @click="showscanRecord(r.row)" v-show="r.row.status!=2 || r.row.status!=3"
  380. >扫描记录</el-button
  381. >
  382. </template>
  383. </el-table-column>
  384. </el-table>
  385. <pagination
  386. v-show="total > 0"
  387. :total="total"
  388. :page.sync="queryParams.pageNum"
  389. :limit.sync="queryParams.pageSize"
  390. @pagination="getList"
  391. />
  392. </el-col>
  393. </el-row>
  394. <!-- 详情 -->
  395. <dialog-detail ref="detaildialog"></dialog-detail>
  396. <dialog-scan-record ref="scanrecorddialog"></dialog-scan-record>
  397. </div>
  398. </template>
  399. <script>
  400. import { mapState, mapMutations } from "vuex";
  401. // import { Message } from "element-ui";
  402. import DialogDetail from "./dialog.detail";
  403. import DialogScanRecord from "./dialog.scanrecord";
  404. import DataRangePicker from "@/components/dateTime/daterange.picker.vue";
  405. import OrgTree from "@/components/orgTree";
  406. import * as api from "@/api/resumption/taskManger.js";
  407. import { getLabel } from "@/views/commonOption.js";
  408. export default {
  409. name: "overviewDetialList",
  410. dicts: ["plan_cycle", "resumption_status"],
  411. components: { DialogDetail, DialogScanRecord, DataRangePicker, OrgTree },
  412. data() {
  413. // const { params, query } = this.$route;
  414. let sDate = new Date();
  415. let eDate = new Date();
  416. // if (query.startDate != undefined) {
  417. // sDate = new Date(query.startDate);
  418. // }
  419. // if (query.endDate != undefined) {
  420. // eDate = new Date(query.endDate);
  421. // }
  422. // let tempType = 1;
  423. // let tempOrgId = 1;
  424. // let tempRole = null;
  425. // let tempstatus = null;
  426. // if (query.executeCycle != undefined) tempType = query.executeCycle;
  427. // if (query.orgId != undefined) tempOrgId = parseInt(query.orgId);
  428. // else {
  429. // if (
  430. // this.loginUser != undefined &&
  431. // this.loginUser.org != undefined &&
  432. // this.loginUser.org.id != undefined
  433. // )
  434. // tempOrgId = parseInt(this.loginUser.org.id);
  435. // }
  436. // if (query.executeRole != undefined && query.executeRole != "all")
  437. // tempRole = query.executeRole;
  438. // if (query.status != undefined && query.status != "all")
  439. // tempstatus = query.status;
  440. let temphalfyearE = 1;
  441. let temphalfyearS = 1;
  442. let tempquarterE = 1;
  443. let tempquarterS = 1;
  444. // if (query.halfyearE != undefined) temphalfyearE = parseInt(query.halfyearE);
  445. // if (query.halfyearS != undefined) temphalfyearS = parseInt(query.halfyearS);
  446. // if (query.quarterE != undefined) tempquarterE = parseInt(query.quarterE);
  447. // if (query.quarterS != undefined) tempquarterS = parseInt(query.quarterS);
  448. return {
  449. loading: false,
  450. showSearch: true,
  451. total: 0,
  452. timeClearable: false,
  453. options: [],
  454. roleList: [],
  455. planList: [],
  456. yearS: sDate,
  457. yearE: eDate,
  458. halfyearE: temphalfyearE,
  459. halfyearS: temphalfyearS,
  460. quarterE: tempquarterE,
  461. quarterS: tempquarterS,
  462. monthRange: [sDate, eDate],
  463. week: sDate,
  464. weekStart: null,
  465. weekEnd: null,
  466. optionsHS: [
  467. { key: "1", value: 1, text: "上半年" },
  468. { key: "2", value: 2, text: "下半年" },
  469. ],
  470. optionsHE: [
  471. { key: "1", value: 1, text: "上半年" },
  472. { key: "2", value: 2, text: "下半年" },
  473. ],
  474. optionsQS: [
  475. { key: "1", value: 1, text: "第一季度" },
  476. { key: "2", value: 2, text: "第二季度" },
  477. { key: "3", value: 3, text: "第三季度" },
  478. { key: "4", value: 4, text: "第四季度" },
  479. ],
  480. optionsQE: [
  481. { key: "1", value: 1, text: "第一季度" },
  482. { key: "2", value: 2, text: "第二季度" },
  483. { key: "3", value: 3, text: "第三季度" },
  484. { key: "4", value: 4, text: "第四季度" },
  485. ],
  486. queryParams: {
  487. executeCycle: "1",
  488. checkSub: false,
  489. orgId: null,
  490. range: [sDate, eDate],
  491. executeRole: null,
  492. status: null,
  493. planId: null,
  494. pageNum: 1,
  495. pageSize: 10,
  496. },
  497. pageData: [],
  498. columns: [
  499. { key: 0, label: `序号`, visible: true },
  500. { key: 1, label: `计划名称`, visible: true },
  501. { key: 2, label: `开始时间`, visible: true },
  502. { key: 3, label: `结束时间`, visible: true },
  503. { key: 4, label: `上级机构`, visible: true },
  504. { key: 5, label: `履职机构`, visible: true },
  505. { key: 6, label: `履职角色`, visible: true },
  506. { key: 2, label: `提交人`, visible: true },
  507. { key: 3, label: `提交时间`, visible: true },
  508. { key: 4, label: `异常个数`, visible: true },
  509. { key: 5, label: `任务状态`, visible: true },
  510. ],
  511. };
  512. },
  513. props: {},
  514. watch: {
  515. // org: {
  516. // deep: true,
  517. // immediate: true,
  518. // handler(nOrg) {
  519. // if (nOrg.id) {
  520. // this.queryParams.orgId = nOrg.id;
  521. // } else {
  522. // this.queryParams.orgId = this.loginUser.org.id;
  523. // }
  524. // this.roleVal = "all";
  525. // this.planVal = -1;
  526. // this.loadRoles(this.queryParams.orgId);
  527. // },
  528. // },
  529. statusVal(value) {
  530. if (value == undefined) return;
  531. if (value == "all") this.queryParams.status = null;
  532. else this.queryParams.status = value;
  533. },
  534. planVal(value) {
  535. if (value == undefined) return;
  536. if (value == -1) this.queryParams.planId = null;
  537. else this.queryParams.planId = value;
  538. },
  539. $route(v) {
  540. //this.queryParams.type = this.$route.params.type.toUpperCase();
  541. },
  542. // 0每日;1每周;2每月;3每季度;4每半年;5每年
  543. yearS(val) {
  544. if (this.yearE < val) {
  545. this.yearE = val;
  546. if (this.queryParams.executeCycle == 3) {
  547. if (this.quarterS > this.quarterE) {
  548. this.quarterS = this.quarterE;
  549. } else this.resetRangeParam();
  550. } else if (this.queryParams.executeCycle == 4) {
  551. if (this.halfyearS > this.halfyearE) {
  552. this.halfyearS = this.quarterE;
  553. } else this.resetRangeParam();
  554. }
  555. } else this.resetRangeParam();
  556. },
  557. yearE(val) {
  558. if (val < this.yearS) {
  559. this.yearS = val;
  560. if (this.queryParams.executeCycle == 3) {
  561. if (this.quarterS > this.quarterE) {
  562. this.quarterS = this.quarterE;
  563. } else this.resetRangeParam();
  564. } else if (this.queryParams.executeCycle == 4) {
  565. if (this.halfyearS > this.halfyearE) {
  566. this.halfyearS = this.halfyearE;
  567. } else this.resetRangeParam();
  568. }
  569. } else this.resetRangeParam();
  570. },
  571. quarterS(val) {
  572. if (this.yearS == this.yearE) {
  573. if (val > this.quarterE) this.quarterE = val;
  574. else this.resetRangeParam();
  575. } else this.resetRangeParam();
  576. },
  577. quarterE(val) {
  578. if (this.yearS == this.yearE) {
  579. if (val < this.quarterS) this.quarterS = val;
  580. else this.resetRangeParam();
  581. } else this.resetRangeParam();
  582. },
  583. halfyearS(val) {
  584. console.log("ccccccccc", val);
  585. if (this.yearS == this.yearE) {
  586. if (val > this.halfyearE) this.halfyearE = val;
  587. else this.resetRangeParam();
  588. } else this.resetRangeParam();
  589. },
  590. halfyearE(val) {
  591. console.log("dddddddddd", val);
  592. if (this.yearS == this.yearE) {
  593. if (val < this.halfyearS) this.halfyearS = val;
  594. else this.resetRangeParam();
  595. } else this.resetRangeParam();
  596. },
  597. monthRange(val) {
  598. this.resetRangeParam();
  599. },
  600. },
  601. computed: {
  602. ...mapState(["org", "loginUser"]),
  603. },
  604. methods: {
  605. ...mapMutations([]),
  606. getLabel,
  607. toName(row) {
  608. // const ymd = row.ymd;
  609. const ymd = new Date(row.ymdDate);
  610. switch (row.executeCycle) {
  611. case 0:
  612. return `${ymd.year}年${ymd.month}月${ymd.day}日-${row.formTypeText}`;
  613. case 1:
  614. return `${ymd.year}年第${ymd.week}周-${row.formTypeText}`;
  615. case 2:
  616. return `${ymd.year}年第${ymd.month}月`;
  617. case 3:
  618. return `${ymd.year}年第${ymd.quarter}季`;
  619. case 4:
  620. let text = ymd.halfyear == 1 ? "上" : "下";
  621. return `${ymd.year}年${text}每半年`;
  622. case 5:
  623. return `${ymd.year}年`;
  624. case 6:
  625. return `${ymd.year}年${ymd.month}月${ymd.day}日${ymd.hour}小时${ymd.minute}分钟-${row.formTypeText}`;
  626. }
  627. },
  628. async exportExcel() {
  629. if (!this.isTableHaveData) {
  630. Message.error({
  631. message: `暂无可用数据导出!`,
  632. type: "error",
  633. duration: 2000,
  634. });
  635. return;
  636. }
  637. await api.exportResumptionRecord(this.queryParams);
  638. },
  639. showDetail(row) {
  640. this.$refs.detaildialog.show(row.resumptionId, row.name,row.ymd);
  641. //this.$refs.detaildialog.show("75246a09eba74e018b60ade0b1f336f8", row.planName);
  642. },
  643. showscanRecord(row) {
  644. this.$refs.scanrecorddialog.show(row.resumptionId, row.orgId);
  645. },
  646. getDefaultKey(key) {
  647. this.queryParams.orgId = key;
  648. this.getList();
  649. this.loadRoles(key);
  650. this.loadPlanList();
  651. },
  652. //单选框状态改变
  653. checkChange(state) {
  654. this.queryParams.checkSub = state;
  655. this.getList();
  656. },
  657. // 节点单击事件
  658. clickTreeNode(data) {
  659. this.queryParams.orgId = data.id;
  660. this.loadPlanList();
  661. this.loadRoles();
  662. this.getList();
  663. },
  664. resetQuery() {
  665. this.resetForm("queryParams");
  666. this.queryParams.orgId = undefined;
  667. this.queryParams.checkSub = false;
  668. this.$refs.tree.setCurrentKey(null);
  669. this.getList();
  670. },
  671. async getList() {
  672. this.loading = true;
  673. console.log("this.queryParams", this.queryParams);
  674. api
  675. .page(this.queryParams)
  676. .then((r) => {
  677. this.pageData = r.rows;
  678. this.total = r.total;
  679. this.loading = false;
  680. })
  681. .catch((e) => {
  682. this.loading = false;
  683. });
  684. },
  685. loadRoles() {
  686. api
  687. .getRoles({
  688. orgId: this.queryParams.orgId,
  689. planCycle: Number(this.queryParams.executeCycle),
  690. })
  691. .then((r) => (this.roleList = r.data));
  692. },
  693. loadPlanList() {
  694. api
  695. .getPlans({
  696. orgId: this.queryParams.orgId,
  697. // checkSub: this.queryParams.checkSub,
  698. })
  699. .then((r) => {
  700. this.planList = r.data;
  701. });
  702. },
  703. async changeType(selectValue) {
  704. // console.log("selectValue",selectValue.target.value)
  705. // this.planVal = -1;
  706. this.queryParams.executeCycle = selectValue;
  707. let nowDate = new Date();
  708. let nowMonth = nowDate.getMonth();
  709. if (nowMonth <= 2) {
  710. this.quarterS = 1;
  711. this.quarterE = 1;
  712. this.halfyearS = 1;
  713. this.halfyearE = 1;
  714. } else if (nowMonth <= 5) {
  715. this.quarterS = 2;
  716. this.quarterE = 2;
  717. this.halfyearS = 1;
  718. this.halfyearE = 1;
  719. } else if (nowMonth <= 8) {
  720. this.quarterS = 3;
  721. this.quarterE = 3;
  722. this.halfyearS = 2;
  723. this.halfyearE = 2;
  724. } else if (nowMonth <= 11) {
  725. this.quarterS = 4;
  726. this.quarterE = 4;
  727. this.halfyearS = 2;
  728. this.halfyearE = 2;
  729. }
  730. // 1每小时;2每天.......;3每月;4每季度;4每半年;5每年
  731. if (this.queryParams.executeCycle == 3) {
  732. if (!this.week) this.week = new Date();
  733. let oneDayLong = 24*60*60*1000
  734. let c_day = this.week.getDay()
  735. let monday=this.week-(c_day==0?6:(c_day-1))*oneDayLong;
  736. let sunday=this.week+(c_day==0?0:(7-c_day))*oneDayLong;
  737. this.weekStart =`${monday.getYear()}-${monday.getMonth()}-${monday.getDate()}`;
  738. this.weekEnd = `${sunday.getYear()}-${sunday.getMonth()}-${sunday.getDate()}`;
  739. // this.weekChanged();
  740. }
  741. this.resetRangeParam();
  742. },
  743. weekChanged() {
  744. var date = this.$moment(this.week).isoWeekday(1);
  745. this.weekStart = date.weekday(1).format("YYYY-MM-DD");
  746. this.weekEnd = date.weekday(7).format("YYYY-MM-DD");
  747. this.resetRangeParam();
  748. },
  749. monthChanged() {
  750. this.resetRangeParam();
  751. },
  752. async resetRangeParam() {
  753. if (this.queryParams.executeCycle == 3) {
  754. let yearSval = this.yearS.getFullYear();
  755. let yearEval = this.yearE.getFullYear();
  756. let sQDate = yearSval + "-";
  757. let eQData = yearEval + "-";
  758. switch (this.quarterS) {
  759. case 1:
  760. sQDate += "01-01";
  761. break;
  762. case 2:
  763. sQDate += "04-01";
  764. break;
  765. case 3:
  766. sQDate += "07-01";
  767. break;
  768. case 4:
  769. sQDate += "10-01";
  770. break;
  771. }
  772. switch (this.quarterE) {
  773. case 1:
  774. eQData += "03-31";
  775. break;
  776. case 2:
  777. eQData += "06-30";
  778. break;
  779. case 3:
  780. eQData += "09-30";
  781. break;
  782. case 4:
  783. eQData += "12-31";
  784. break;
  785. }
  786. this.queryParams.range = [new Date(sQDate), new Date(eQData)];
  787. } else if (this.queryParams.executeCycle == 4) {
  788. let yearSval = this.yearS.getFullYear();
  789. let yearEval = this.yearE.getFullYear();
  790. let sHDate = yearSval + "-";
  791. let eHData = yearEval + "-";
  792. switch (this.halfyearS) {
  793. case 1:
  794. sHDate += "01-01";
  795. break;
  796. case 2:
  797. sHDate += "07-01";
  798. break;
  799. }
  800. switch (this.halfyearE) {
  801. case 1:
  802. eHData += "06-30";
  803. break;
  804. case 2:
  805. eHData += "12-31";
  806. break;
  807. }
  808. this.queryParams.range = [new Date(sHDate), new Date(eHData)];
  809. } else if (this.queryParams.executeCycle == 5) {
  810. let yearSval = this.yearS.getFullYear();
  811. let yearEval = this.yearE.getFullYear();
  812. let sYDate = yearSval + "-01-01";
  813. let eYData = yearEval + "-12-31";
  814. this.queryParams.range = [new Date(sYDate), new Date(eYData)];
  815. } else if (this.queryParams.executeCycle == 2) {
  816. if (!this.monthRange || this.monthRange.length != 2) {
  817. this.queryParams.range = null;
  818. } else {
  819. let dateObjS = this.monthRange[0];
  820. let dateObjE = this.monthRange[1];
  821. if (dateObjS.getFullYear == undefined) {
  822. dateObjS = new Date(dateObjS);
  823. dateObjE = new Date(dateObjE);
  824. }
  825. let sMDate =
  826. dateObjS.getFullYear() + "-" + (dateObjS.getMonth() + 1) + "-1";
  827. let eMData =
  828. dateObjE.getFullYear() + "-" + (dateObjE.getMonth() + 1) + "-1";
  829. let tempDate = new Date(
  830. dateObjE.getFullYear(),
  831. dateObjE.getMonth(),
  832. 29
  833. );
  834. if (dateObjE.getMonth() == 1 && tempDate.getDate() === 29) {
  835. eMData =
  836. dateObjE.getFullYear() + "-" + (dateObjE.getMonth() + 1) + "-29";
  837. } else {
  838. switch (dateObjE.getMonth()) {
  839. case 0:
  840. eMData =
  841. dateObjE.getFullYear() +
  842. "-" +
  843. (dateObjE.getMonth() + 1) +
  844. "-31";
  845. break;
  846. case 1:
  847. eMData =
  848. dateObjE.getFullYear() +
  849. "-" +
  850. (dateObjE.getMonth() + 1) +
  851. "-28";
  852. break;
  853. case 2:
  854. eMData =
  855. dateObjE.getFullYear() +
  856. "-" +
  857. (dateObjE.getMonth() + 1) +
  858. "-31";
  859. break;
  860. case 3:
  861. eMData =
  862. dateObjE.getFullYear() +
  863. "-" +
  864. (dateObjE.getMonth() + 1) +
  865. "-30";
  866. break;
  867. case 4:
  868. eMData =
  869. dateObjE.getFullYear() +
  870. "-" +
  871. (dateObjE.getMonth() + 1) +
  872. "-31";
  873. break;
  874. case 5:
  875. eMData =
  876. dateObjE.getFullYear() +
  877. "-" +
  878. (dateObjE.getMonth() + 1) +
  879. "-30";
  880. break;
  881. case 6:
  882. eMData =
  883. dateObjE.getFullYear() +
  884. "-" +
  885. (dateObjE.getMonth() + 1) +
  886. "-31";
  887. break;
  888. case 7:
  889. eMData =
  890. dateObjE.getFullYear() +
  891. "-" +
  892. (dateObjE.getMonth() + 1) +
  893. "-31";
  894. break;
  895. case 8:
  896. eMData =
  897. dateObjE.getFullYear() +
  898. "-" +
  899. (dateObjE.getMonth() + 1) +
  900. "-30";
  901. break;
  902. case 9:
  903. eMData =
  904. dateObjE.getFullYear() +
  905. "-" +
  906. (dateObjE.getMonth() + 1) +
  907. "-31";
  908. break;
  909. case 10:
  910. eMData =
  911. dateObjE.getFullYear() +
  912. "-" +
  913. (dateObjE.getMonth() + 1) +
  914. "-30";
  915. break;
  916. case 11:
  917. eMData =
  918. dateObjE.getFullYear() +
  919. "-" +
  920. (dateObjE.getMonth() + 1) +
  921. "-31";
  922. break;
  923. }
  924. }
  925. this.queryParams.range = [new Date(sMDate), new Date(eMData)];
  926. }
  927. } else if (this.queryParams.executeCycle == 1) {
  928. this.queryParams.range = [
  929. new Date(this.weekStart),
  930. new Date(this.weekEnd),
  931. ];
  932. } else if (
  933. this.queryParams.executeCycle === 0 ||
  934. this.queryParams.executeCycle == 6
  935. ) {
  936. this.queryParams.range = this.$dateRange.before(0);
  937. }
  938. },
  939. statusStyle(status) {
  940. let color = "";
  941. switch (status) {
  942. case "1":
  943. color = "#BFBFBF";
  944. case "2":
  945. color = "1890FF";
  946. case "3":
  947. color = "52C41A";
  948. case "4":
  949. color = "F5222D";
  950. }
  951. return "list-style-type:disc;color:" + color;
  952. },
  953. },
  954. async mounted() {
  955. // const { params, query } = this.$route;
  956. // if (this.loginUser && this.loginUser.org && this.loginUser.org.id) {
  957. // if (query == undefined || query.orgId == undefined) {
  958. // this.queryParams.orgId = this.loginUser.org.id;
  959. // }
  960. // }
  961. // this.loadRoles(this.queryParams.orgId);
  962. // await this.loadtypes();
  963. // this.loadPlanList();
  964. // await this.refresh();
  965. },
  966. };
  967. </script>
  968. <style lang="scss">
  969. // .searchItem {
  970. // margin-right: 10px;
  971. // margin-top: 5px;
  972. // margin-bottom: 5px;
  973. // }
  974. // .searchTitle {
  975. // margin-right: 10px !important;
  976. // margin-bottom: 0 !important;
  977. // margin-top: 0 !important;
  978. // }
  979. </style>