093e3b43a98cead6cd556fe719bd821e36d3c42c.svn-base 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584
  1. <template>
  2. <div style="height:100%;width:100%;">
  3. <el-container style="height:100%;width:100%;">
  4. <el-aside width="320px" style="border-right:2px solid #d5d5ff;float:left;text-align: center;"
  5. :style="{'max-height':testHeight+'px','height':testHeight+'px'}">
  6. <el-button size="mini" :class="tabType==1 ? 'skactive' : 'sknormal'" @click="tabChange('1')">当前数据</el-button>
  7. <!-- <el-button size="mini" :class="tabType==2 ? 'skactive' : 'sknormal'" @click="tabChange('2')">历史数据</el-button>-->
  8. <el-button size="mini" :class="tabType==0 ? 'skactive' : 'sknormal'" @click="tabChange('0')">全部数据</el-button>
  9. <div class="tree" style="
  10. height: calc(100% - 50px);
  11. width: 100%;
  12. overflow: auto;
  13. display: inline-flex;">
  14. <el-tree
  15. :highlight-current="true"
  16. style="height:100%;"
  17. :data="treeData"
  18. node-key="id"
  19. :expand-on-click-node="false"
  20. @node-click='treeNodeClickHandler'
  21. ref="jigou_tree"
  22. >
  23. <div class="custom-tree-node" slot-scope="{ node, data }">
  24. <span style="float:left;">{{ data.pnm}}
  25. </span>
  26. </div>
  27. </el-tree>
  28. </div>
  29. </el-aside>
  30. <!-- 主要窗口 -->
  31. <el-main id="dxdcListMainqt" style="padding:5px 20px;">
  32. <el-row>
  33. <el-col :span="24">
  34. <el-form :inline="true" size="mini" class="demo-form-inline" style="padding-left: 10px;">
  35. <el-form-item label="督查状态">
  36. <el-select v-model="dcType" clearable placeholder="督查状态">
  37. <el-option label="未督查" value="0"></el-option>
  38. <el-option label="督查中" value="1"></el-option>
  39. <el-option label="已督查" value="2"></el-option>
  40. </el-select>
  41. </el-form-item>
  42. <!--<el-form-item label="数据状态">-->
  43. <!--<el-select v-model="dataStat" clearable placeholder="数据状态">-->
  44. <!--<el-option label="正常" value="0"></el-option>-->
  45. <!--<el-option label="删除" value="9"></el-option>-->
  46. <!--</el-select>-->
  47. <!--</el-form-item>-->
  48. <el-form-item label="行政区名称">
  49. <el-input v-model="adName" clearable placeholder="行政区名称"></el-input>
  50. <!--<addvSearch-->
  51. <!--v-model="adName"-->
  52. <!--:maxHeight='300'-->
  53. <!--:maxWidth='250'-->
  54. <!--:rootAddCode='curAdcode_long'-->
  55. <!--:level='"3"'-->
  56. <!--:nameOrCode="'name'"-->
  57. <!--&gt;</addvSearch>-->
  58. </el-form-item>
  59. <el-form-item label="督查时间">
  60. <div style="display: flex;">
  61. <el-date-picker
  62. v-model="dateRange"
  63. type="daterange"
  64. value-format="yyyy-MM-dd"
  65. style="width:100%"
  66. range-separator="至"
  67. start-placeholder="开始日期"
  68. end-placeholder="结束日期"
  69. ></el-date-picker>
  70. </div>
  71. </el-form-item>
  72. <el-form-item style="float:right">
  73. <el-button type="primary" @click="onSubmit" icon="el-icon-search">查询</el-button>
  74. <!--<el-button type="success" style="float:right;margin-left:5px"-->
  75. <!--@click="showPlDialog"-->
  76. <!--icon="el-icon-upload2"-->
  77. <!--:disabled="disabled"-->
  78. <!--&gt;批量填报-->
  79. <!--</el-button>-->
  80. <!--<el-button type="success" style="float:right;"-->
  81. <!--@click="downloadTemplate"-->
  82. <!--:icon="downIcon"-->
  83. <!--&gt;下载模板-->
  84. <!--</el-button>-->
  85. </el-form-item>
  86. </el-form>
  87. </el-col>
  88. </el-row>
  89. <el-table
  90. ref="table"
  91. border
  92. :height="tableHeight"
  93. :data="qtDataList"
  94. style="width: 100%"
  95. v-loading="expLoading">
  96. <!--<el-table-column prop="province" label="省" v-if="isXj" show-overflow-tooltip min-width="100"-->
  97. <!--align="center"></el-table-column>-->
  98. <!--<el-table-column prop="city" :label="ownAdName" show-overflow-tooltip min-width="100"-->
  99. <!--align="center"></el-table-column>-->
  100. <!--<el-table-column prop="county" label="县" v-if="isXj" show-overflow-tooltip min-width="100"-->
  101. <!--align="center"></el-table-column>-->
  102. <el-table-column prop="nm" label="行政主管部门名称" min-width="130" align="center"
  103. fixed="left"></el-table-column>
  104. <el-table-column prop="location" label="行政区名称" min-width="200" align="center"
  105. fixed="left"></el-table-column>
  106. <el-table-column prop="groupName" label="所在组" show-overflow-tooltip min-width="150"
  107. align="center"></el-table-column>
  108. <el-table-column prop="intm" label="创建时间" show-overflow-tooltip min-width="120"
  109. align="center"></el-table-column>
  110. <el-table-column
  111. prop="uptm"
  112. label="修改时间"
  113. align="center"
  114. min-width="120">
  115. </el-table-column>
  116. <el-table-column
  117. prop="state"
  118. label="督查状态"
  119. align="center"
  120. min-width="130">
  121. <template slot-scope="scope">
  122. <span
  123. style="padding: 3px 10px;background:#F56C6C;border-radius:15px;color:rgba(255,255,255,1)"
  124. v-if="scope.row.state == 0"
  125. >未督查</span>
  126. <span
  127. style="padding: 3px 10px;background:#FBB56D;border-radius:15px;color:rgba(255,255,255,1)"
  128. v-if="scope.row.state == 1"
  129. >督查中</span>
  130. <span
  131. style="padding: 3px 10px;background:#63C25E;border-radius:15px;color:rgba(255,255,255,1)"
  132. v-if="scope.row.state == 2"
  133. >已督查</span>
  134. </template>
  135. </el-table-column>
  136. <el-table-column
  137. label="“强监管”综合督查情况"
  138. align="center"
  139. min-width="130">
  140. <template slot-scope="scope">
  141. <p style="cursor:pointer;color:#F56C6C;"
  142. v-if="scope.row.jgState == 0 || !scope.row.jgState">待填报</p>
  143. <p style="cursor:pointer;color:#fbb56d" v-if="scope.row.jgState == 1">未完成</p>
  144. <p style="cursor:pointer;color:#67C23A" v-if="scope.row.jgState == 2">已完成</p>
  145. </template>
  146. </el-table-column>
  147. <el-table-column align="center" label="操作" min-width="220" fixed="right" v-if="ownPriv('manage')">
  148. <template slot-scope="scope">
  149. <el-button size="mini" type="success" v-if="!scope.row.rgstrId" plain
  150. @click="toAddMember('填报',scope.row)">填报
  151. </el-button>
  152. <el-button size="mini" type="success" v-if="scope.row.rgstrId" plain
  153. @click="toAddMember('编辑',scope.row)">编辑
  154. </el-button>
  155. <el-button size="mini" type="danger" plain @click="deleteMember(scope.row)">删除</el-button>
  156. <el-button size="mini" type="danger" plain @click="submitHandler(scope.row)">提交</el-button>
  157. </template>
  158. </el-table-column>
  159. </el-table>
  160. <el-pagination background :pager-count="5" :current-page="pageIndex"
  161. :page-size="pageSize" :page-sizes="[10, 20, 30, 40, 50, 100]"
  162. layout="sizes, total, prev, pager, next" :total="total"
  163. @current-change="pageIndexChange" @size-change="handleSizeChange"
  164. ></el-pagination>
  165. </el-main>
  166. <!-- </el-container> -->
  167. <zjQjgTianBao v-if="showQiTaTianBao" :rowData="rowData" :currentObjectRgstrId="currentObjectRgstrId"
  168. :currentResCode="currentResCode" :currentObjectId="currentObjectId"
  169. :currentObjectName="currentResName"
  170. @cancelHandler="cancelHandler" @addQiTaSuccess="addQiTaSuccess"></zjQjgTianBao>
  171. </el-container>
  172. <!-- 添加/编辑人员弹窗 -->
  173. <!-- 上传模板弹窗 -->
  174. <zjQjgTianBaoPl v-if="showQiTaTianBaoPl"
  175. :showQiTaTianBaoPl="showQiTaTianBaoPl"
  176. :id="currentNodeId"
  177. @closePlDialog="closePlDialog" @uploadSuccess="uploadSuccess"></zjQjgTianBaoPl>
  178. </div>
  179. </template>
  180. <script>
  181. import request from '../../utils/gw_ajax_request.js'
  182. import {dateFormat} from '../../utils/gw_date.js'
  183. import provTreeList from "../../widgets/provTreeList.vue";
  184. import zjQjgTianBao from "../duChaTianBao/zjQjgTianBao.vue"
  185. // import zjQjgTianBaoPl from "../duChaTianBao/zjQjgTianbao_piliang.vue"
  186. import addvSearch from "../../widgets/addvSearch.vue"
  187. import {curAdcode_short, curAdcode_long} from '@util/global_variable.js'
  188. import {exportModel} from "@util/gw_exportModel";
  189. export default {
  190. components: {
  191. provTreeList: provTreeList,
  192. zjQjgTianBao: zjQjgTianBao,
  193. // zjQjgTianBaoPl:zjQjgTianBaoPl,
  194. addvSearch
  195. },
  196. props: [],
  197. data() {
  198. return {
  199. tabType:"0",//0全部数据,1当前数据,2历史数据
  200. dateRange: [],
  201. lyjg: [],
  202. engScale: '',
  203. orgName: '',
  204. groupName: '',
  205. groupId: '',
  206. groups: [],
  207. // sttm:'',
  208. // ettm:'',
  209. adName: '',
  210. treeData: [],
  211. dxdcMainHeight: window.innerHeight - 304,
  212. testHeight: window.innerHeight - 111,
  213. qtDataList: [],
  214. pageIndex: 1,
  215. pageSize: 20,
  216. total: 0,
  217. tableHeight: 0,
  218. currentResCode: '',
  219. currentResName: '',
  220. currentObjectId: '',
  221. currentObjectRgstrId: '',
  222. currentObjectInfoObject: null,
  223. showQiTaTianBao: false,
  224. currentAdCode: '',
  225. currentNodeId: '',
  226. rsvrName: '',
  227. dcType: '',
  228. sjState: '',
  229. rowData: '',
  230. disabled: true,
  231. showQiTaTianBaoPl: false,
  232. downIcon: 'el-icon-download',
  233. expLoading: false,
  234. dataStat: '',
  235. name: '',
  236. state: ''
  237. };
  238. },
  239. computed: {
  240. persId() {
  241. return localStorage.getItem("userid")
  242. ? localStorage.getItem("userid")
  243. : "1098101939614724096";
  244. },
  245. isAdmin() {
  246. return localStorage.getItem("isAdmin") ? localStorage.getItem("isAdmin") : ''
  247. },
  248. curAdcode_short() {
  249. return curAdcode_short
  250. },
  251. curAdcode_long() {
  252. return curAdcode_long
  253. }
  254. },
  255. mounted() {
  256. this.$nextTick(function () {
  257. this.tableHeight = window.innerHeight - this.$refs.table.$el.offsetTop - 50;
  258. let _self = this;
  259. window.onresize = function () {
  260. _self.tableHeight = window.innerHeight - _self.$refs.table.$el.offsetTop - 50
  261. }
  262. })
  263. this.getTdfjDataList();
  264. this.getAllGroup();
  265. },
  266. activated() {
  267. this.getLeftTreeData();
  268. this.currentNodeId = "";
  269. this.rsvrName = "";
  270. this.dcType = "";
  271. this.getTdfjDataList();
  272. },
  273. watch: {
  274. currentNodeId(n, o) {
  275. this.getTdfjDataList();
  276. },
  277. groupName(n, o) {
  278. if (n == '') {
  279. this.groupId = '';
  280. }
  281. },
  282. },
  283. methods: {
  284. tabChange(tabType){
  285. this.tabType = tabType;
  286. this.currentNodeId = "";
  287. this.getAllGroup();
  288. this.getLeftTreeData();
  289. this.getTdfjDataList();
  290. },
  291. //获取所有的组
  292. getAllGroup() {
  293. var _self = this;
  294. request.get('/dc/user/getGroupByPersid', {
  295. params: {
  296. 'persid': this.persId,
  297. 'ptype': '042',
  298. 'tabType':this.tabType
  299. }
  300. }).then((res) => {
  301. if (res.success) {
  302. _self.groups = res.data;
  303. }
  304. })
  305. },
  306. querySearchAsync(queryString, cb) {
  307. var restaurants = this.groups;
  308. var results = queryString ? restaurants.filter(this.createStateFilter(queryString)) : restaurants;
  309. clearTimeout(this.timeout);
  310. this.timeout = setTimeout(() => {
  311. cb(results);
  312. }, 1500 * Math.random());
  313. },
  314. createStateFilter(queryString) {
  315. return (state) => {
  316. return (state.nm.toLowerCase().indexOf(queryString.toLowerCase()) != -1);
  317. };
  318. },
  319. handleSelect(item) {
  320. console.log(item);
  321. this.groupId = item.id;
  322. },
  323. getLeftTreeData() {
  324. var _self = this;
  325. _self.lyjg = [];
  326. request.get('/dc/organization/base/getAllNode', {
  327. params: {
  328. 'userId': this.persId,
  329. 'orgType': '042',
  330. 'tabType':this.tabType
  331. }
  332. }).then((res) => {
  333. let data = res.data
  334. data.forEach(ele => {
  335. if (ele.pid == null || ele.pid == '') {
  336. ele.pid = '010'
  337. }
  338. if (ele.id.length == 6) {
  339. _self.lyjg.push(ele);
  340. }
  341. });
  342. data = _self.getTrees(data)
  343. _self.treeData = data;
  344. console.log(data);
  345. })
  346. },
  347. //格式化树形数据
  348. getTrees(list) {
  349. //@wxcwater重写方法 适应多个树
  350. let highLevelLength = 99;//预设最大节点id长度,目前最大应该为12,所以设置为99保证正常
  351. let _self = this;
  352. list.forEach((item, index) => {
  353. item['pidLength'] = item.pid && item.pid != '' ? item.pid.length : 0;
  354. if (highLevelLength > item.pidLength) {
  355. highLevelLength = item.pidLength;
  356. }
  357. });
  358. console.log(highLevelLength);
  359. let heightLevelNode = [];
  360. list.forEach((item, index) => {
  361. if (highLevelLength >= item.pidLength) {
  362. heightLevelNode.push(item);
  363. }
  364. });
  365. list.forEach((item, index) => {
  366. heightLevelNode.forEach((pItem) => {
  367. _self.addTreeNode(pItem, item);
  368. });
  369. });
  370. console.log(heightLevelNode);
  371. return heightLevelNode;
  372. },
  373. addTreeNode: function (treeNode, leafNode) {
  374. let _self = this;
  375. if (!treeNode.hasOwnProperty('children')) {
  376. treeNode['children'] = [];
  377. }
  378. if (leafNode.pid == treeNode.id) {
  379. treeNode.children.push(leafNode);
  380. return;
  381. }
  382. treeNode.children.forEach((item) => {
  383. _self.addTreeNode(item, leafNode);
  384. });
  385. },
  386. treeNodeClickHandler: function (data, node, tree) {
  387. this.currentNodeId = data.id;
  388. },
  389. provTreeSelectChangeHandler: function (params) {
  390. this.currentAdCode = params.likeCode;
  391. this.getTdfjDataList();
  392. },
  393. formatDate(row, column) {
  394. if (row.uptm) {
  395. return (dateFormat(row.uptm, 'yyyy-MM-dd'));
  396. }
  397. },
  398. getTdfjDataList: function () {
  399. this.expLoading = true;
  400. let paramStartDate = '';
  401. let paramEndDate = '';
  402. if(this.dateRange&&this.dateRange.length>1&&this.dateRange[0]!=''&&this.dateRange[1]!=''){
  403. paramStartDate = this.dateRange[0];
  404. paramEndDate = this.dateRange[1];
  405. }
  406. let params = {
  407. "sttm": paramStartDate,
  408. "entm": paramEndDate,
  409. "pageSize": this.pageSize,
  410. "pageNum": this.pageIndex,
  411. // "dataStat": this.dataStat,
  412. "groupId": this.currentNodeId,
  413. "state": this.dcType,
  414. // "type": this.dcType,
  415. "adName": this.adName,
  416. "presId": this.persId,
  417. // "orgId": this.currentNodeId
  418. "tabType":this.tabType
  419. };
  420. // /bis/insp/fsc/rgstr/list/page
  421. request.post(`/bis/zhejiang/jg/rgstr/rgstrs-pc`,params).then(res =>{
  422. if(res.success){
  423. this.expLoading = false;
  424. if(res.data.list){
  425. res.data.list.forEach((item)=>{
  426. if(item.intm || item.uptm){
  427. item.intm = item.intm.substr(0,10);
  428. item.uptm = item.uptm.substr(0,10);
  429. }
  430. })
  431. }
  432. this.qtDataList = res.data.list;
  433. this.total = res.data.total;
  434. }
  435. })
  436. },
  437. onSubmit() {
  438. this.getTdfjDataList();
  439. },
  440. toAddMember(type, rowData) {
  441. var _self = this;
  442. this.rowData = rowData;
  443. console.log(rowData);
  444. _self.currentResCode = this.rowData.code;
  445. _self.currentObjectId = this.rowData.objId;
  446. _self.currentObjectRgstrId = this.rowData.rgstrId;
  447. _self.currentResName = this.rowData.nm;
  448. _self.showQiTaTianBao = true;
  449. },
  450. cancelHandler() {
  451. this.showQiTaTianBao = false;
  452. },
  453. addQiTaSuccess() {
  454. this.getTdfjDataList();
  455. // this.showQiTaTianBao = false;
  456. },
  457. deleteMember(obj) {
  458. console.log(obj);
  459. var _self = this;
  460. // /dc/insp/rsvrRgstr/delete/{id}
  461. this.$confirm('此操作将删除该条相关的所有已填报的信息和问题,确认删除该条数据吗?', '提示', {
  462. confirmButtonText: '确定',
  463. cancelButtonText: '取消',
  464. type: 'warning'
  465. }).then(() => {
  466. request.get(`/supervision/plan/cleanObjDataByObjId?objType=10&objId=${obj.objId}`).then((res) => {
  467. if (res.success) {
  468. _self.pageIndexChange();
  469. _self.$message.success('删除成功')
  470. } else {
  471. _self.$message.error(res.message)
  472. }
  473. });
  474. }).catch(() => {
  475. });
  476. },
  477. submitHandler(rowData) {
  478. console.log(rowData)
  479. var _self = this;
  480. this.$confirm('请确认所有信息填报完毕?', '提示', {
  481. confirmButtonText: '确定',
  482. cancelButtonText: '取消',
  483. type: 'warning'
  484. }).then(() => {
  485. let formObj = {
  486. "id": rowData.rgstrId,
  487. "state": "2"
  488. }
  489. request.post('/bis/zhejiang/jg/rgstr', formObj).then((res) => {
  490. if (res.success) {
  491. _self.addQiTaSuccess();
  492. _self.$message.success("提交成功");
  493. } else {
  494. _self.cancelHandler();
  495. }
  496. });
  497. }).catch(() => {
  498. });
  499. },
  500. pageIndexChange(val) {
  501. console.log(val);
  502. this.pageIndex = val;
  503. this.getTdfjDataList();
  504. },
  505. handleSizeChange(val) {
  506. this.pageSize = val;
  507. this.getTdfjDataList();
  508. },
  509. // 下载填报模板
  510. async downloadTemplate() {
  511. let paramStartDate = '';
  512. let paramEndDate = '';
  513. if (this.dateRange && this.dateRange.length > 1 && this.dateRange[0] != '' && this.dateRange[1] != '') {
  514. paramStartDate = this.dateRange[0];
  515. paramEndDate = this.dateRange[1];
  516. }
  517. let url = `/pdcApi/bis/insp/other/pblm/downTemplate?fileName=pblmOther.xlsx&adName=${this.adName}&name=${this.name}&state=${this.dcType}&entm=${paramEndDate}sttm=${paramStartDate}&presId=${this.persId}&startRow=1`;
  518. let downloadName = "其他填报模板.xls";
  519. let type = "get";
  520. await exportModel(type, url, downloadName);
  521. this.disabled = false;
  522. },
  523. showPlDialog() {
  524. this.showQiTaTianBaoPl = true
  525. },
  526. closePlDialog(val) {
  527. this.showQiTaTianBaoPl = false
  528. },
  529. uploadSuccess() {
  530. this.showQiTaTianBaoPl = false;
  531. this.getTdfjDataList();
  532. }
  533. },
  534. };
  535. </script>
  536. <style>
  537. .skactive{
  538. background: #3f8eff !important;
  539. color:white !important;
  540. margin-top: 5px;
  541. margin-bottom: 5px;
  542. }
  543. .sknormal{
  544. background: white;
  545. margin-top: 5px;
  546. margin-bottom: 5px;
  547. }
  548. .el-table .warning-row {
  549. background: oldlace;
  550. }
  551. .el-table .success-row {
  552. background: #f0f9eb;
  553. }
  554. #dxdcListMainqt {
  555. overflow-y: hidden;
  556. }
  557. </style>