b0569236f71c5b97c36c046f476f94712fcff0ce.svn-base 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527
  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" :style="{'max-height':testHeight+'px','height':testHeight+'px'}">
  5. <tb-left-tree orgType="034" :isAll="viewPriv" @treeNodeClickHandler="treeNodeClickHandler" @organList="getOrganList" @changeTabType="changeTabType"></tb-left-tree>
  6. </el-aside>
  7. <!-- 主要窗口 -->
  8. <el-main id="dxdcListMaintdfj" style="padding:5px 20px;">
  9. <el-row>
  10. <el-col :span="24">
  11. <el-form :inline="true" size="mini" class="demo-form-inline" style="padding-left: 10px;">
  12. <el-form-item label="督查状态">
  13. <el-select v-model="dcType" clearable placeholder="督查状态">
  14. <el-option label="未督查" value="0"></el-option>
  15. <el-option label="督查中" value="1"></el-option>
  16. <el-option label="已督查" value="2"></el-option>
  17. </el-select>
  18. </el-form-item>
  19. <el-form-item label="行政区名称">
  20. <addvSearch
  21. v-model="adName"
  22. :maxHeight='300'
  23. :maxWidth='250'
  24. :rootAddCode='"000000000000"'
  25. :level='"3"'
  26. :nameOrCode="'name'"
  27. />
  28. </el-form-item>
  29. <el-form-item label="项目名称">
  30. <el-input v-model="name" placeholder="项目名称" clearable></el-input>
  31. </el-form-item>
  32. <el-form-item label="所在组">
  33. <el-autocomplete v-model="groupName" clearable value-key='nm' :fetch-suggestions="querySearchAsync" placeholder="请输入内容"
  34. @select="handleSelect"></el-autocomplete>
  35. </el-form-item>
  36. <el-form-item label="督查时间">
  37. <div style="display: flex;">
  38. <el-date-picker
  39. v-model="dateRange"
  40. type="daterange"
  41. value-format="yyyy-MM-dd"
  42. style="width:100%"
  43. range-separator="至"
  44. start-placeholder="开始日期"
  45. end-placeholder="结束日期"
  46. ></el-date-picker>
  47. </div>
  48. </el-form-item>
  49. <el-form-item>
  50. <el-button type="primary" @click="onSubmit" icon="el-icon-search">查询</el-button>
  51. <!-- <el-button type="success" @click="reFresh" icon="el-icon-refresh">刷新</el-button>-->
  52. </el-form-item>
  53. </el-form>
  54. </el-col>
  55. </el-row>
  56. <el-table
  57. ref="table"
  58. border
  59. :height="tableHeight"
  60. :data="skDataList"
  61. style="width: 100%"
  62. v-loading="expLoading">
  63. <el-table-column prop="nm" label="水库名称" show-overflow-tooltip min-width="100" align="center" fixed="left"></el-table-column>
  64. <el-table-column
  65. prop="adName"
  66. label="行政区划"
  67. show-overflow-tooltip
  68. min-width="80"
  69. align="center"
  70. ></el-table-column>
  71. <el-table-column prop="groupName" label="所在组" show-overflow-tooltip min-width="100" align="center"></el-table-column>
  72. <el-table-column prop="intm" label="创建时间" show-overflow-tooltip min-width="100" align="center"></el-table-column>
  73. <el-table-column
  74. prop="uptm"
  75. label="更新时间"
  76. align="center"
  77. min-width="100">
  78. </el-table-column>
  79. <el-table-column
  80. prop="state"
  81. label="督查状态"
  82. align="center"
  83. min-width="80">
  84. <template slot-scope="scope">
  85. <span
  86. style="padding: 3px 10px;background:#F56C6C;border-radius:15px;color:rgba(255,255,255,1)"
  87. v-if="scope.row.state == '0' || !scope.row.state">未督查</span>
  88. <span
  89. style="padding: 3px 10px;background:#FBB56D;border-radius:15px;color:rgba(255,255,255,1)"
  90. v-if="scope.row.state == '1'">督查中</span>
  91. <span
  92. style="padding: 3px 10px;background:#63C25E;border-radius:15px;color:rgba(255,255,255,1)"
  93. v-if="scope.row.state == '2'">已督查</span>
  94. </template>
  95. </el-table-column>
  96. <!-- <el-table-column-->
  97. <!-- prop="sfdrStat"-->
  98. <!-- label="除险加固项目抽查情况"-->
  99. <!-- align="center"-->
  100. <!-- min-width="80">-->
  101. <!-- <template slot-scope="scope">-->
  102. <!-- <p style="cursor:pointer;color:#F56C6C;" v-if="scope.row.sfdrState == 0 || !scope.row.sfdrState">待填报</p>-->
  103. <!-- <p style="cursor:pointer;color:#67C23A" v-if="scope.row.sfdrState == 1">未完成</p>-->
  104. <!-- <p style="cursor:pointer;color:#67C23A" v-if="scope.row.sfdrState == 2">已完成</p>-->
  105. <!-- </template>-->
  106. <!-- </el-table-column>-->
  107. <el-table-column align="center" label="操作" min-width="200" fixed="right" v-if="ownPriv('manage') || ownPriv('revoke')">
  108. <template slot-scope="scope">
  109. <div style="display: flex;justify-content: center">
  110. <div v-if="ownPriv('manage')" style="display: flex">
  111. <el-button size="mini" type="success" v-if="scope.row.rgstrId && scope.row.state!='2'" plain @click="toAddMember('填报',scope.row)">填报</el-button>
  112. <el-button size="mini" type="danger" v-if="scope.row.rgstrId && scope.row.state!='2'" plain @click="deleteMember(scope.row)">删除</el-button>
  113. <el-button size="mini" type="danger" v-if="scope.row.rgstrId && scope.row.state!='2'" plain @click="submitHandler(scope.row)">提交</el-button>
  114. </div>
  115. <el-button size="mini" style="margin-left: 10px;" type="warning" v-if="scope.row.rgstrId && scope.row.state == '2'" plain @click="toCheck(scope.row)">查看</el-button>
  116. <div v-if="ownPriv('revoke')" style="padding-left: 10px;">
  117. <el-button size="mini" type="warning" v-if="scope.row.rgstrId && scope.row.state == '2'" plain @click="revoke(scope.row)">撤回</el-button>
  118. </div>
  119. </div>
  120. </template>
  121. </el-table-column>
  122. </el-table>
  123. <el-pagination background :pager-count="5" :current-page="pageIndex"
  124. :page-size="pageSize" :page-sizes="[10, 20, 30, 40, 50, 100]"
  125. layout="sizes, total, prev, pager, next" :total="total"
  126. @current-change="pageIndexChange" @size-change="handleSizeChange"
  127. ></el-pagination>
  128. </el-main>
  129. <!-- </el-container> -->
  130. <chuxianTianbao v-if="showChuXianTianBao" :rowData="rowData" :currentObjectRgstrId="currentObjectRgstrId" :currentObjectId="currentObjectId"
  131. :currentObjectName="currentResName"
  132. :openType="openType"
  133. @cancelHandler="cancelHandler" @addShuiKuSuccess="addShuiKuSuccess"></chuxianTianbao>
  134. </el-container>
  135. </div>
  136. </template>
  137. <script>
  138. import request from '@util/gw_ajax_request.js'
  139. import {dateFormat} from '@util/gw_date.js'
  140. import provTreeList from "@widget/provTreeList.vue";
  141. import addvSearch from "@widget/addvSearch.vue"
  142. import tbLeftTree from "./dctb_lefttree.vue"
  143. export default {
  144. components: {
  145. provTreeList: provTreeList,
  146. addvSearch,
  147. tbLeftTree,
  148. chuxianTianbao: resolve => {
  149. require(["./xskchuxianjiagu/chuxiantb.vue"], resolve);
  150. },
  151. },
  152. props: [],
  153. data() {
  154. return {
  155. dateRange:[],
  156. lyjg:[],
  157. engScale:'',
  158. orgName:'',
  159. groupName:'',
  160. groupId:'',
  161. groups:[],
  162. adName:'',
  163. treeData:[],
  164. dxdcMainHeight: window.innerHeight - 304,
  165. testHeight: window.innerHeight - 111,
  166. skDataList: [],
  167. pageIndex:1,
  168. pageSize:20,
  169. total:0,
  170. tableHeight:0,
  171. currentResCode:'',
  172. currentResName:'',
  173. currentObjectId:'',
  174. currentObjectRgstrId:'',
  175. currentObjectInfoObject:null,
  176. showChuXianTianBao:false,
  177. currentAdCode:'',
  178. currentNodeId:'',
  179. rsvrName:'',
  180. dcType:'',
  181. sjState:'',
  182. rowData:'',
  183. disabled:true,
  184. showChuXianTianBaoPl:false,
  185. downIcon:'el-icon-download',
  186. expLoading:false,
  187. dataStat: '',
  188. name: '',
  189. state: '',
  190. chuxianDialog: false,
  191. tabType:'0',
  192. openType:false
  193. };
  194. },
  195. computed: {
  196. persId() {
  197. return localStorage.getItem("userid")
  198. ? localStorage.getItem("userid")
  199. : "1098101939614724096";
  200. },
  201. isAdmin:function(){
  202. return localStorage.getItem("isAdmin")? localStorage.getItem("isAdmin"): ''
  203. },
  204. hasPriv() {
  205. return this.ownPriv('manage')
  206. },
  207. viewPriv(){
  208. return this.ownPriv('view')
  209. }
  210. },
  211. mounted() {
  212. this.$nextTick(function () {
  213. this.tableHeight = window.innerHeight - this.$refs.table.$el.offsetTop - 50;
  214. let _self = this;
  215. window.onresize = function() {
  216. _self.tableHeight = window.innerHeight - _self.$refs.table.$el.offsetTop - 50
  217. }
  218. })
  219. this.getSkDataList();
  220. this.getAllGroup();
  221. },
  222. activated(){
  223. },
  224. watch: {
  225. currentNodeId(n,o){
  226. this.getSkDataList();
  227. },
  228. groupName(n,o){
  229. if(n==''){
  230. this.groupId = '';
  231. }
  232. },
  233. },
  234. methods: {
  235. changeTabType(tabType) {
  236. this.tabType = tabType;
  237. this.currentNodeId = "";
  238. this.groupName = "";
  239. this.groupId = "";
  240. this.getAllGroup();
  241. this.getSkDataList();
  242. },
  243. reFresh(){
  244. this.currentNodeId = "";
  245. this.rsvrName = "";
  246. this.dcType = "";
  247. this.getSkDataList();
  248. },
  249. //获取所有的组
  250. getAllGroup(){
  251. var _self = this;
  252. request.get('/dc/user/getGroupByPersid',{params:{'persid':this.persId,'ptype':'034'}}).then((res)=>{
  253. if(res.success){
  254. _self.groups = res.data;
  255. }
  256. })
  257. },
  258. querySearchAsync(queryString, cb) {
  259. var restaurants = this.groups;
  260. var results = queryString ? restaurants.filter(this.createStateFilter(queryString)) : restaurants;
  261. clearTimeout(this.timeout);
  262. this.timeout = setTimeout(() => {
  263. cb(results);
  264. }, 1500 * Math.random());
  265. },
  266. createStateFilter(queryString) {
  267. return (state) => {
  268. return (state.nm.toLowerCase().indexOf(queryString.toLowerCase()) != -1);
  269. };
  270. },
  271. handleSelect(item) {
  272. console.log(item);
  273. this.groupId = item.id;
  274. },
  275. getOrganList(data){
  276. this.lyjg = data
  277. },
  278. treeNodeClickHandler(data){
  279. this.currentNodeId = data.id;
  280. if(this.currentNodeId.length==12){
  281. this.groupId = data.id;
  282. this.groupName = data.pnm;
  283. }
  284. },
  285. provTreeSelectChangeHandler:function(params){
  286. this.currentAdCode = params.likeCode;
  287. this.getSkDataList();
  288. },
  289. formatDate(row,column){
  290. if(row.uptm){
  291. return (dateFormat(row.uptm,'yyyy-MM-dd'));
  292. }
  293. },
  294. getSkDataList:function(){
  295. this.expLoading = true;
  296. let paramStartDate = '';
  297. let paramEndDate = '';
  298. if(this.dateRange&&this.dateRange.length>1&&this.dateRange[0]!=''&&this.dateRange[1]!=''){
  299. paramStartDate = this.dateRange[0];
  300. paramEndDate = this.dateRange[1];
  301. }
  302. let params = {
  303. "sttm": paramStartDate,
  304. "entm": paramEndDate,
  305. "pageSize": this.pageSize,
  306. "pageNum": this.pageIndex,
  307. "groupId": this.groupId,
  308. "rsName": this.name,
  309. "state": this.dcType,
  310. "pType": 34,
  311. "adName": this.adName,
  312. "presId": this.persId,
  313. "plnaId": this.currentNodeId,
  314. "tabType":this.tabType
  315. };
  316. if(this.viewPriv) params['isAll'] = 1
  317. // /bis/insp/fsc/rgstr/list/page
  318. request.post(`/bis/insp/rssfdr/rgstr/findRssfdrPage`,params).then(res =>{
  319. if(res.success){
  320. this.expLoading = false;
  321. if(res.data.list){
  322. res.data.list.forEach((item)=>{
  323. if(item.intm && item.uptm){
  324. item.intm = item.intm.substr(0,10);
  325. item.uptm = item.uptm.substr(0,10);
  326. }
  327. })
  328. }
  329. this.skDataList = res.data.list;
  330. this.total = res.data.total;
  331. }
  332. })
  333. },
  334. onSubmit(){
  335. this.getSkDataList();
  336. },
  337. toCheck(rowData){
  338. console.log(rowData)
  339. var _self = this;
  340. this.rowData = rowData;
  341. console.log(rowData);
  342. _self.currentObjectId = this.rowData.objId;
  343. _self.currentObjectRgstrId = this.rowData.rgstrId;
  344. _self.currentResName = this.rowData.nm;
  345. _self.currentResCode = this.rowData.code;
  346. _self.showChuXianTianBao = true;
  347. _self.openType = false;
  348. },
  349. toAddMember(type,rowData){
  350. console.log(rowData)
  351. var _self = this;
  352. this.rowData = rowData;
  353. console.log(rowData);
  354. _self.currentObjectId = this.rowData.objId;
  355. _self.currentObjectRgstrId = this.rowData.rgstrId;
  356. _self.currentResName = this.rowData.nm;
  357. _self.currentResCode = this.rowData.code;
  358. _self.showChuXianTianBao = true;
  359. _self.openType = true;
  360. },
  361. cancelHandler(){
  362. this.showChuXianTianBao = false;
  363. this.getSkDataList();
  364. },
  365. addShuiKuSuccess(){
  366. this.getSkDataList();
  367. },
  368. deleteMember(obj){
  369. console.log(obj);
  370. var _self = this;
  371. this.$confirm('此操作将删除该条相关的所有已填报的信息和问题,确认删除该条数据吗?', '提示', {
  372. confirmButtonText: '确定',
  373. cancelButtonText: '取消',
  374. type: 'warning'
  375. }).then(() => {
  376. request.get(`/supervision/plan/cleanObjDataByObjId?objType=34&objId=${obj.objId}`).then((res)=>{
  377. if(res.success){
  378. _self.pageIndexChange();
  379. _self.$message.success('删除成功')
  380. }else{
  381. _self.$message.error(res.message)
  382. }
  383. });
  384. }).catch(() => {
  385. });
  386. },
  387. submitHandler(rowData){
  388. console.log(rowData)
  389. var _self = this;
  390. // if(rowData.sfdrState != '2'){
  391. // this.$message.warning('除险加固项目抽查情况未填报完成')
  392. // return
  393. // }
  394. this.$confirm('请确认所有信息填报完毕?', '提示', {
  395. confirmButtonText: '确定',
  396. cancelButtonText: '取消',
  397. type: 'warning'
  398. }).then(() => {
  399. let formObj = {
  400. "id":rowData.rgstrId,
  401. "state":"2"
  402. }
  403. request.post('/bis/insp/rssfdr/rgstr', formObj).then((res) => {
  404. if (res.success) {
  405. _self.addShuiKuSuccess();
  406. _self.$message.success("提交成功");
  407. } else {
  408. _self.cancelHandler();
  409. }
  410. });
  411. }).catch(() => {
  412. });
  413. },
  414. revoke(rowData){
  415. var _self = this;
  416. this.$confirm('请确认要撤回当前数据?', '提示', {
  417. confirmButtonText: '确定',
  418. cancelButtonText: '取消',
  419. type: 'warning'
  420. }).then(() => {
  421. let formObj = {
  422. "id":rowData.rgstrId,
  423. "state":"1"
  424. }
  425. request.post('/bis/insp/rssfdr/rgstr', formObj).then((res) => {
  426. if (res.success) {
  427. _self.addShuiKuSuccess();
  428. _self.$message.success("撤回成功");
  429. } else {
  430. _self.cancelHandler();
  431. }
  432. });
  433. }).catch(() => {
  434. });
  435. },
  436. pageIndexChange(val){
  437. console.log(val);
  438. this.pageIndex = val;
  439. this.getSkDataList();
  440. },
  441. handleSizeChange(val){
  442. this.pageSize = val;
  443. this.getSkDataList();
  444. },
  445. // 下载填报模板
  446. downloadTemplate(){
  447. this.downloadTemplateSet();
  448. this.disabled = false;
  449. },
  450. downloadTemplateSet(){
  451. let paramStartDate = '';
  452. let paramEndDate = '';
  453. if(this.dateRange&&this.dateRange.length>1&&this.dateRange[0]!=''&&this.dateRange[1]!=''){
  454. paramStartDate = this.dateRange[0];
  455. paramEndDate = this.dateRange[1];
  456. }
  457. let href = `/pdcApi/bis/insp/fsc/pblm/downTemplate?fileName=pblmFsc.xlsx&adName=${this.adName}&name=${this.name}&state=${this.dcType}&entm=${paramEndDate}sttm=${paramStartDate}&presId=${this.persId}&startRow=1`;
  458. const a = document.createElement('a'); // 创建a标签
  459. a.setAttribute('download', '特定飞检填报模板.xls');// download属性
  460. a.setAttribute('href', href);// href链接
  461. a.click();// 自执行点击事件
  462. },
  463. showPlDialog(){
  464. this.showChuXianTianBaoPl = true
  465. },
  466. closePlDialog(val){
  467. this.showChuXianTianBaoPl = false
  468. },
  469. uploadSuccess(){
  470. this.showChuXianTianBaoPl = false;
  471. this.getSkDataList();
  472. },
  473. toView(rowData){
  474. this.rowData = rowData;
  475. this.currentResCode = this.rowData.code;
  476. this.currentObjectId = this.rowData.objId;
  477. this.currentObjectRgstrId = this.rowData.rgstrId;
  478. this.currentResName = this.rowData.nm;
  479. this.chuxianDialog = true;
  480. },
  481. chuxianCancelHandler() {
  482. this.chuxianDialog = false;
  483. },
  484. },
  485. filters:{
  486. buildStat(val){
  487. if(val == '1'){
  488. return '已建成'
  489. }else if(val == '2'){
  490. return '未建成'
  491. }else if(val == '3'){
  492. return '待实施'
  493. }else{
  494. return val
  495. }
  496. }
  497. }
  498. };
  499. </script>
  500. <style>
  501. .el-table .warning-row {
  502. background: oldlace;
  503. }
  504. .el-table .success-row {
  505. background: #f0f9eb;
  506. }
  507. #dxdcListMaintdfj{
  508. overflow-y: hidden;
  509. }
  510. </style>