c2ed3a2932c71a750f3536592d5036d9ee57bf4f.svn-base 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602
  1. <template>
  2. <!-- 弹出窗 -->
  3. <el-dialog title="添加督查对象" :visible.sync="dialogFormVisible" width="80%" @close="closeFatherDialogEvent" modal-append-to-body append-to-body >
  4. <el-container>
  5. <el-aside width="200px" style="border:1px solid #d5d5ff">
  6. <p style="font-weight:bolder;background-color:#d5d5ff;padding:3px;">
  7. <i class="el-icon-share"></i>所属机构
  8. </p>
  9. <provTreeListQy
  10. ref="provTreeListQyRef"
  11. v-show="showLeftTree"
  12. :ddczId='dczId'
  13. rootCode="000000"
  14. :adCodes="adCodes"
  15. rootType="1"
  16. style="max-height:485px;"
  17. @treeDataEmit="treeDataEmit"
  18. @provTreeSelectChange="provTreeSelectChangeHandler_qy">
  19. </provTreeListQy>
  20. <provTreeList
  21. v-show="!showLeftTree"
  22. rootCode="000000"
  23. rootType="1"
  24. style="max-height:485px;"
  25. @provTreeSelectChange="provTreeSelectChangeHandler"
  26. ></provTreeList>
  27. </el-aside>
  28. <el-main style="border:1px solid #d5d5ff;margin-left:5px;padding:0px;">
  29. <p style="font-weight:bolder;background-color:#d5d5ff;padding:3px;">督查对象</p>
  30. <el-form :inline="true" :model="formInline" class="demo-form-inline">
  31. <el-form-item label="项目名称">
  32. <el-input v-model="formInline.name" placeholder="项目名称" clearable ></el-input>
  33. </el-form-item>
  34. <!-- <el-form-item label="检查分类">
  35. <el-select v-model="formInline.type" clearable placeholder="检查分类">
  36. <el-option v-for="item in jianchaLists" :key="item.value" :label="item.name" :value="item.value"></el-option>
  37. </el-select>
  38. </el-form-item> -->
  39. <el-form-item>
  40. <el-button type="primary" @click="onSubmit">查询</el-button>
  41. <el-button type="primary" @click="toAddNewTdfj">添加新项目</el-button>
  42. </el-form-item>
  43. </el-form>
  44. <el-table
  45. border
  46. :height="tableHeight"
  47. v-loading="loading"
  48. :data="currentShowList"
  49. tooltip-effect="dark"
  50. style="width: 100%"
  51. @selection-change="handleSelectionChange">
  52. <el-table-column align="center" type="selection" width="60"></el-table-column>
  53. <el-table-column align="center" prop="index" label="序号" min-width="40"></el-table-column>
  54. <el-table-column
  55. align="center"
  56. show-overflow-tooltip
  57. prop="name"
  58. label="项目名称"
  59. min-width="100"
  60. ></el-table-column>
  61. <el-table-column
  62. align="center"
  63. show-overflow-tooltip
  64. prop="type"
  65. label="检查分类"
  66. :formatter="formatType"
  67. min-width="100"
  68. ></el-table-column>
  69. <el-table-column
  70. align="center"
  71. show-overflow-tooltip
  72. prop="location"
  73. label="工程详细位置"
  74. min-width="130"
  75. ></el-table-column>
  76. </el-table>
  77. <el-pagination
  78. small
  79. @current-change="handleCurrentChange"
  80. :pager-count="5"
  81. :current-page.sync="pageNum"
  82. :page-size="pageSize"
  83. layout="total, prev, pager, next"
  84. :total="total"
  85. ></el-pagination>
  86. </el-main>
  87. </el-container>
  88. <el-dialog title="添加新项目" :visible.sync="addTdfjVisible" append-to-body width="60%" @close="closeAddNewObj">
  89. <el-row>
  90. <el-button style="float: right;" type="primary" @click="addReadyHave">添加已有项目</el-button>
  91. </el-row>
  92. <el-form label-width="120px" :model="formObj" ref="formObj" :inline="true" >
  93. <el-form-item label="检查分类" required >
  94. <el-select v-model="formObj.type" placeholder="请选择" @change="changeOtherTableData">
  95. <el-option v-for="item in jianchaLists" :key="item.value" :label="item.name" :value="item.value"></el-option>
  96. </el-select>
  97. </el-form-item>
  98. <el-form-item label="项目名称" required >
  99. <el-input v-model="formObj.name" autocomplete="off" ></el-input>
  100. </el-form-item>
  101. <el-form-item label="项目编号" required >
  102. <el-input v-model="formObj.code" autocomplete="off" ></el-input>
  103. </el-form-item>
  104. <el-form-item label="所属流域机构" prop="reverOrg">
  105. <el-select v-model="formObj.admOrg" placeholder="所属流域机构" style="width: 178px;">
  106. <el-option v-for="item in lyjg" :key="item.id" :label="item.pnm" :value="item.id"></el-option>
  107. </el-select>
  108. </el-form-item>
  109. <el-form-item label="行政区名称">
  110. <addvSearch
  111. style="width: 178px;margin-left:10px;margin-right:15px"
  112. v-model="formObj.adCode"
  113. :maxHeight='300'
  114. :maxWidth='250'
  115. :rootAddCode='curAdcode_long'
  116. :level='"3"'
  117. :nameOrCode="'code'"
  118. @addvTreeNodeClick="addvTreeNodeClickEvent"
  119. ></addvSearch>
  120. </el-form-item>
  121. <el-form-item label="工程详细位置">
  122. <el-input v-model="formObj.location" autocomplete="off" ></el-input>
  123. </el-form-item>
  124. <el-form-item label="经度">
  125. <el-input v-model="formObj.centerX" autocomplete="off" ></el-input>
  126. </el-form-item>
  127. <el-form-item label="纬度">
  128. <el-input v-model="formObj.centerY" autocomplete="off" ></el-input>
  129. </el-form-item>
  130. </el-form>
  131. <el-row v-if="addOtherTableData" style="border-top:1px solid #dcdcdc;">
  132. <el-form label-width="120px" :model="formObj" ref="formObj" :inline="true" style="margin-top: 10px;">
  133. <el-form-item label="项目名称">
  134. <el-input v-model="formObjOther.name" autocomplete="off" ></el-input>
  135. </el-form-item>
  136. <el-button type="primary" @click="onSubmitOther">查询</el-button>
  137. </el-form>
  138. </el-row>
  139. <el-table
  140. v-if="otherTable"
  141. border
  142. v-loading="loadingOther"
  143. :data="otherDcdxTableDataLists"
  144. highlight-current-row
  145. @current-change="otherTableRowClickEvent"
  146. tooltip-effect="dark"
  147. style="width: 100%"
  148. >
  149. <el-table-column align="center" prop="index" label="序号" min-width="40"></el-table-column>
  150. <el-table-column
  151. align="center"
  152. show-overflow-tooltip
  153. prop="name"
  154. label="项目名称"
  155. min-width="100"
  156. ></el-table-column>
  157. <el-table-column
  158. align="center"
  159. show-overflow-tooltip
  160. prop="location"
  161. label="工程详细位置"
  162. min-width="100"
  163. ></el-table-column>
  164. <el-table-column
  165. align="center"
  166. show-overflow-tooltip
  167. prop="type"
  168. label="检查分类"
  169. :formatter="formatType"
  170. min-width="100"
  171. ></el-table-column>
  172. </el-table>
  173. <el-pagination
  174. style="text-align:center;"
  175. v-if="otherTable"
  176. small
  177. @current-change="handleCurrentChangeOther"
  178. :pager-count="5"
  179. :current-page.sync="pageNumOther"
  180. :page-size="pageSizeOther"
  181. layout="total, prev, pager, next"
  182. :total="totalOther"
  183. ></el-pagination>
  184. <div slot="footer" class="dialog-footer">
  185. <el-button @click="addTdfjVisibleCancel">取 消</el-button>
  186. <el-button type="primary" @click="addNewTdfj('formObj')">确 定</el-button>
  187. </div>
  188. </el-dialog>
  189. <div slot="footer" class="dialog-footer">
  190. <el-button @click="cancel()">取 消</el-button>
  191. <el-button type="primary" :loading="addOnce" :disabled="addOnce" @click="saveChange">确 定</el-button>
  192. </div>
  193. </el-dialog>
  194. </template>
  195. <script>
  196. import request from '../../utils/gw_ajax_request.js';
  197. import provTreeList from "../../widgets/provTreeList.vue";
  198. import addvSearch from "../../widgets/addvSearch.vue"
  199. import {getTdfjList,addDcAndObjRel,getOtherTableData} from "../../api/duChaDuiXiang_tdfj_API.js";
  200. import { getLyjglistSz } from "../../api/duChaTianBao.js";
  201. import {curAdcode_short,curAdcode_long} from '@util/global_variable.js'
  202. export default {
  203. components: {
  204. provTreeList: provTreeList,
  205. addvSearch,
  206. provTreeListQy:resolve => {require(['../../widgets/provTreeList_quyu.vue'],resolve)},
  207. },
  208. props: ["dczId", "dczName", "plnaId", "objType","adCodes","isNewPlan"],
  209. data() {
  210. return {
  211. qyDataList:[],
  212. addOtherTableData:false,
  213. // currentOtherTableRow:{},
  214. otherDcdxTableDataLists:[],
  215. pageNumOther:1,
  216. pageSizeOther:10,
  217. totalOther:0,
  218. otherTable:false,
  219. addOnce:false,
  220. addArr: "",
  221. addName:"",
  222. addLttd:"",
  223. addLgtd:"",
  224. lyjg: [],//流域机构
  225. addTdfjVisible:false,
  226. loading:true,
  227. loadingOther:true,
  228. currentShowList:[],
  229. multipleSelection: [],
  230. pageNum:1,
  231. pageSize:10,
  232. total:0,
  233. dialogFormVisible: false,
  234. showLeftTree:true,
  235. searchProvTreeListCode: "",
  236. formInline:{
  237. name:"",
  238. type:"",
  239. },
  240. formObjOther:{
  241. name:"",
  242. type:"",
  243. },
  244. formObj:{
  245. name:"",
  246. code:"",
  247. type:"",
  248. location:"",
  249. centerX:"",
  250. centerY:"",
  251. admOrg:"",
  252. adCode:"",
  253. },
  254. jianchaLists:[
  255. {
  256. name:'水库',
  257. value:'1'
  258. },
  259. {
  260. name:'水闸',
  261. value:'2'
  262. },
  263. {
  264. name:'人饮',
  265. value:'3'
  266. },
  267. {
  268. name:'水利工程建设',
  269. value:'4'
  270. },
  271. {
  272. name:'水利工程运行',
  273. value:'5'
  274. },
  275. ]
  276. }
  277. },
  278. watch: {
  279. searchProvTreeListCode(n,o){
  280. this.searchProvTreeListCode = n;
  281. this.getTableData();
  282. },
  283. dczId(n,o){
  284. this.dczId = n ;
  285. },
  286. qyDataList(n,o){
  287. if(this.qyDataList.length == 0){
  288. this.showLeftTree = false;
  289. }else{
  290. this.showLeftTree = true;
  291. }
  292. this.getTableData();
  293. }
  294. },
  295. mounted() {
  296. },
  297. computed:{
  298. userId:function(){
  299. return localStorage.getItem("userid")? localStorage.getItem("userid"): '1098101939614724096'
  300. },
  301. tableHeight(){
  302. if(window.innerWidth <= 1366){
  303. return window.innerHeight - 300;
  304. }else{
  305. return window.innerHeight - 510;
  306. }
  307. },
  308. curAdcode_short(){
  309. return curAdcode_short
  310. },
  311. curAdcode_long(){
  312. return curAdcode_long
  313. }
  314. },
  315. methods: {
  316. treeDataEmit(item){
  317. this.qyDataList = item;
  318. if(this.qyDataList.length == 0){
  319. this.showLeftTree = false;
  320. }else{
  321. this.showLeftTree = true;
  322. }
  323. },
  324. onSubmit(){
  325. this.getTableData();
  326. },
  327. onSubmitOther(){
  328. this.getOtherTableDataLists();
  329. },
  330. showDialog(dczIdSelf,tableCurrentRowType = null,yqList) {
  331. // this.qyDataList = yqList;
  332. // this.dczId = dczIdSelf;
  333. // this.tableCurrentRowType = tableCurrentRowType;
  334. this.dialogFormVisible = true;
  335. if(this.$refs['provTreeListQyRef']){
  336. this.$refs['provTreeListQyRef'].getQyList();
  337. }
  338. this.getTableData();
  339. this.getLyjgList();
  340. },
  341. //获取流域机构数据
  342. getLyjgList() {
  343. var _self = this;
  344. getLyjglistSz().then(res => {
  345. _self.lyjg = res.data;
  346. });
  347. },
  348. provTreeSelectChangeHandler: function(params) {
  349. this.searchProvTreeListCode = params.code;
  350. this.formObj.adCode = params.code;
  351. },
  352. handleCurrentChange(val) {
  353. console.log(`当前页: ${val}`);
  354. this.getTableData();
  355. },
  356. handleCurrentChangeOther(val) {
  357. console.log(`当前页: ${val}`);
  358. this.getOtherTableDataLists();
  359. },
  360. handleSelectionChange(val) {
  361. this.multipleSelection = val;
  362. },
  363. getTableData(){
  364. var _self = this;
  365. if(_self.qyDataList.length == 0){
  366. _self.showLeftTree = false;
  367. }else{
  368. _self.showLeftTree = true;
  369. }
  370. _self.loading = true;
  371. if(_self.qyDataList.length > 1){
  372. var str = '';
  373. for(var i=0;i<_self.qyDataList.length;i++){
  374. str+= _self.qyDataList[i].adCode+',';
  375. }
  376. str = str.substring(0,str.length-1);
  377. _self.searchProvTreeListCode = str;
  378. }else{
  379. _self.searchProvTreeListCode = _self.searchProvTreeListCode;
  380. }
  381. getTdfjList(_self.pageNum,_self.pageSize,9,_self.formInline.name,_self.dczId,_self.searchProvTreeListCode).then((response)=>{
  382. _self.loading = false;
  383. _self.currentShowList = response.data.list;
  384. _self.currentShowList.forEach((element, index) => {
  385. element["index"] = _self.pageSize * (_self.pageNum - 1) + index + 1;
  386. });
  387. _self.total = response.data.total;
  388. })
  389. },
  390. getOtherTableDataLists(){
  391. var _self = this;
  392. let obj = {
  393. 'type':_self.formObj.type,
  394. 'pageNum':_self.pageNumOther,
  395. 'pageSize':_self.pageSizeOther,
  396. 'adCode':_self.formObj.adCode,
  397. 'name':_self.formObjOther.name,
  398. }
  399. getOtherTableData(obj).then((response)=>{
  400. _self.loadingOther = false;
  401. _self.otherDcdxTableDataLists = response.data.list;
  402. _self.otherDcdxTableDataLists.forEach((element, index) => {
  403. element["index"] = _self.pageSizeOther * (_self.pageNumOther - 1) + index + 1;
  404. });
  405. _self.totalOther = response.data.total;
  406. })
  407. },
  408. otherTableRowClickEvent(val) {
  409. // val = val;
  410. this.formObj.name = val.name;
  411. this.formObj.location = val.location;
  412. this.formObj.centerX = val.centerX;
  413. this.formObj.centerY = val.centerY;
  414. this.formObj.admOrg = val.admOrg;
  415. this.formObj.adCode = val.adCode;
  416. },
  417. toAddNewTdfj(){
  418. this.addTdfjVisible = true
  419. // this.formObj.engScal = this.gongchengguimo[0].value
  420. // this.formObj.rsType = this.zhubaleixing[0].value
  421. },
  422. addNewTdfj(formName){
  423. let _this = this
  424. this.formObj['persId'] = this.userId;
  425. // if(this.searchProvTreeListCode != ""){
  426. // this.formObj.adCode = this.searchProvTreeListCode;
  427. // }
  428. request.post('/att/fsc/base',this.formObj).then(res=>{
  429. if(res.success){
  430. _this.$message.success('添加成功')
  431. this.addTdfjVisible = false;
  432. this.getTableData();
  433. _this.addRsvrVisible = false
  434. this.putEmptyObj();
  435. }else{
  436. _this.$message.error(res.message)
  437. }
  438. }).catch(res=>{
  439. _this.$message.error('请求错误'+ res.message)
  440. })
  441. },
  442. saveChange() {
  443. this.addObjectChange();
  444. },
  445. addObjectChange: function() {
  446. //提交当前选中对象
  447. var _self = this;
  448. var names = [];
  449. if(_self.addOnce){
  450. _self.addOnce = false;
  451. return;
  452. }
  453. _self.addOnce = true
  454. var objArr = [];
  455. const length = _self.multipleSelection.length;
  456. for (let i = 0; i < length; i++) {
  457. var obj = {};
  458. obj['code'] = _self.multipleSelection[i].id;
  459. obj['name'] = _self.multipleSelection[i].name;
  460. obj['ptype'] = '9';
  461. objArr.push(obj);
  462. names.push(_self.multipleSelection[i].name);
  463. }
  464. if(this.isNewPlan){
  465. var obj = {
  466. persid :this.userId,
  467. nm: this.dczName,
  468. id: this.dczId,
  469. persAllAreaDtoList: [],
  470. persAllDtoList: [],
  471. persAllObjDtoList: objArr
  472. };
  473. this.addOnce = false;
  474. this.dialogFormVisible = false;
  475. this.$message.success("选择成功");
  476. this.$emit("addSuccess",{obj:obj,names:names.join(",")});
  477. return;
  478. }
  479. try {
  480. request.post("/supervision/plan/insertSupervisionObj", {
  481. persid :this.userId,
  482. nm: this.dczName,
  483. id: this.dczId,
  484. persAllAreaDtoList: [],
  485. persAllDtoList: [],
  486. persAllObjDtoList: objArr
  487. }).then(response => {
  488. if (response.success == true) {
  489. _self.addOnce = false;
  490. _self.dialogFormVisible = false;
  491. _self.$message.success("添加成功");
  492. _self.$emit("addSuccess");
  493. }
  494. });
  495. } catch (e) {
  496. alert("暂无数据");
  497. }
  498. },
  499. formatType(row,column){
  500. let type = row.type;
  501. let _type = '水利工程运行';
  502. switch (type) {
  503. case '1' : _type = '水库';break;
  504. case '2' : _type = '水闸';break;
  505. case '3' : _type = '人饮';break;
  506. case '4' : _type = '水利工程建设';break;
  507. }
  508. return _type;
  509. },
  510. putEmptyObj(){
  511. this.formObj = {
  512. "name": '',
  513. "code": '',
  514. "type": "",
  515. "location": "",
  516. "centerX": '',
  517. "centerY": "",
  518. "admOrg": "",
  519. };
  520. },
  521. cancel(){
  522. this.putEmptyObj();
  523. this.formObjOther.name="";
  524. this.formInline.name = "";
  525. this.searchProvTreeListCode = "";
  526. this.dialogFormVisible = false;
  527. },
  528. addReadyHave(){
  529. if(this.formObj.type == ""){
  530. this.$message.warning("请先选择检查分类!");
  531. }else{
  532. this.addOtherTableData = true;
  533. this.otherTable = true;
  534. this.getOtherTableDataLists();
  535. }
  536. },
  537. changeOtherTableData(){
  538. this.getOtherTableDataLists();
  539. this.formObj.name = "";
  540. this.formObj.location = "";
  541. this.formObj.centerX = "";
  542. this.formObj.centerY = "";
  543. this.formObj.admOrg = "";
  544. },
  545. addTdfjVisibleCancel(){
  546. this.addTdfjVisible = false;
  547. this.addOtherTableData = false;
  548. this.otherTable = false;
  549. this.formObj.type = "";
  550. this.formObj.name = "";
  551. this.formObj.location = "";
  552. this.formObj.centerX = "";
  553. this.formObj.centerY = "";
  554. this.formObj.admOrg = "";
  555. this.formObj.adCode = "";
  556. },
  557. closeAddNewObj(){
  558. this.addOtherTableData = false;
  559. this.otherTable = false;
  560. this.formObj.type = "";
  561. this.formObj.name = "";
  562. this.formObj.location = "";
  563. this.formObj.centerX = "";
  564. this.formObj.centerY = "";
  565. this.formObj.admOrg = "";
  566. this.formObj.adCode = "";
  567. },
  568. closeFatherDialogEvent(){
  569. this.putEmptyObj();
  570. this.formInline.name = "";
  571. this.searchProvTreeListCode = "";
  572. },
  573. addvTreeNodeClickEvent(item){
  574. this.formObj.adCode = item.id;
  575. this.getOtherTableDataLists();
  576. },
  577. provTreeSelectChangeHandler_qy(params){
  578. //this.qyDataList.length = 1;
  579. this.searchProvTreeListCode = params.code;
  580. this.formObj.adCode = params.code;
  581. this.getTableData();
  582. },
  583. }
  584. };
  585. </script>
  586. <style>
  587. .demo-form-inline{
  588. padding:10px;
  589. }
  590. </style>