5ed572feac191aa947ebd029b20eac55cec8b6b0.svn-base 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483
  1. <template>
  2. <div class="infoReuse" >
  3. <el-dialog title="督查组详情" :visible.sync="dialogFormVisible" :close-on-click-modal="false" width="80%" :before-close="closeDialog">
  4. <el-main>
  5. <el-row :gutter="10" style="height:60vh;">
  6. <el-col :span="5" style="height: 100%;">
  7. <el-card style="height: 100%;overflow: auto;">
  8. <el-tree
  9. :data="treeData"
  10. :props="defaultProps"
  11. :load="getTreeList"
  12. @node-click="handleNodeClick"
  13. lazy>
  14. </el-tree>
  15. </el-card>
  16. </el-col>
  17. <el-col :span="19" style="height: 100%;">
  18. <div class="container">
  19. <div>
  20. <el-table
  21. border
  22. ref="Table"
  23. height="calc(28vh)"
  24. :data="tableData"
  25. tooltip-effect="dark"
  26. style="width: 100%"
  27. @selection-change="handleSelectionChange"
  28. >
  29. <el-table-column
  30. type="selection"
  31. min-width="55"
  32. align="center">
  33. </el-table-column>
  34. <el-table-column
  35. header-align="center"
  36. align="center"
  37. min-width="100"
  38. prop="nm"
  39. label="名称"
  40. show-overflow-tooltip
  41. ></el-table-column>
  42. <el-table-column
  43. header-align="center"
  44. align="center"
  45. min-width="140"
  46. label="组长"
  47. show-overflow-tooltip
  48. >
  49. <template slot-scope="scope" v-if="scope.row.persAllDtoList">
  50. <span v-for="(item,index) in scope.row.persAllDtoList" :key="index">
  51. <span v-if="item.persType == '1'">{{item.persName + ' '}}</span>
  52. </span>
  53. </template>
  54. </el-table-column>
  55. <el-table-column
  56. header-align="center"
  57. align="center"
  58. min-width="100"
  59. label="组员"
  60. show-overflow-tooltip
  61. >
  62. <template slot-scope="scope" v-if="scope.row.persAllDtoList">
  63. <span v-for="(item,index) in scope.row.persAllDtoList" :key="index">
  64. <span v-if="item.persType == '2'">{{item.persName + ' '}}</span>
  65. </span>
  66. </template>
  67. </el-table-column>
  68. <el-table-column
  69. header-align="center"
  70. align="center"
  71. min-width="120"
  72. label="联络员"
  73. show-overflow-tooltip
  74. >
  75. <template slot-scope="scope" v-if="scope.row.persAllDtoList">
  76. <span v-for="(item,index) in scope.row.persAllDtoList" :key="index">
  77. <span v-if="item.persType == '3'">{{item.persName + ' '}}</span>
  78. </span>
  79. </template>
  80. </el-table-column>
  81. <el-table-column
  82. header-align="center"
  83. align="center"
  84. min-width="120"
  85. prop="persType"
  86. label="专家"
  87. show-overflow-tooltip
  88. >
  89. <template slot-scope="scope" v-if="scope.row.persAllDtoList">
  90. <span v-for="(item,index) in scope.row.persAllDtoList" :key="index">
  91. <span v-if="item.persType == '4'">{{item.persName + ' '}}</span>
  92. </span>
  93. </template>
  94. </el-table-column>
  95. <el-table-column
  96. header-align="center"
  97. align="center"
  98. min-width="100"
  99. prop="sttm"
  100. label="开始时间"
  101. show-overflow-tooltip
  102. >
  103. <template slot-scope="scope" v-if="scope.row.sttm">
  104. <span>{{scope.row.sttm.substr(0,10)}}</span>
  105. </template>
  106. </el-table-column>
  107. <el-table-column
  108. header-align="center"
  109. align="center"
  110. min-width="100"
  111. prop="entm"
  112. label="结束时间"
  113. show-overflow-tooltip
  114. >
  115. <template slot-scope="scope" v-if="scope.row.entm">
  116. <span>{{scope.row.entm.substr(0,10)}}</span>
  117. </template>
  118. </el-table-column>
  119. </el-table>
  120. </div>
  121. <div>
  122. <el-table
  123. border
  124. height="calc(28vh)"
  125. :data="bisInspDvdwkList"
  126. tooltip-effect="dark"
  127. style="width: 100%"
  128. >
  129. <el-table-column align="center" type="index" label="序号" min-width="55">
  130. <template slot-scope="scope">{{ (pageNum - 1) * 10 + (scope.$index + 1) }}</template>
  131. </el-table-column>
  132. <el-table-column
  133. header-align="center"
  134. align="center"
  135. min-width="100"
  136. prop="nm"
  137. label="名称"
  138. show-overflow-tooltip
  139. ></el-table-column>
  140. <el-table-column
  141. header-align="center"
  142. align="center"
  143. min-width="140"
  144. label="组长"
  145. show-overflow-tooltip
  146. >
  147. <template slot-scope="scope" v-if="scope.row.persAllDtoList">
  148. <span v-for="(item,index) in scope.row.persAllDtoList" :key="index">
  149. <span v-if="item.persType == '1'">{{item.persName + ' '}}</span>
  150. </span>
  151. </template>
  152. </el-table-column>
  153. <el-table-column
  154. header-align="center"
  155. align="center"
  156. min-width="100"
  157. label="组员"
  158. show-overflow-tooltip
  159. >
  160. <template slot-scope="scope" v-if="scope.row.persAllDtoList">
  161. <span v-for="(item,index) in scope.row.persAllDtoList" :key="index">
  162. <span v-if="item.persType == '2'">{{item.persName + ' '}}</span>
  163. </span>
  164. </template>
  165. </el-table-column>
  166. <el-table-column
  167. header-align="center"
  168. align="center"
  169. min-width="120"
  170. label="联络员"
  171. show-overflow-tooltip
  172. >
  173. <template slot-scope="scope" v-if="scope.row.persAllDtoList">
  174. <span v-for="(item,index) in scope.row.persAllDtoList" :key="index">
  175. <span v-if="item.persType == '3'">{{item.persName + ' '}}</span>
  176. </span>
  177. </template>
  178. </el-table-column>
  179. <el-table-column
  180. header-align="center"
  181. align="center"
  182. min-width="120"
  183. prop="persType"
  184. label="专家"
  185. show-overflow-tooltip
  186. >
  187. <template slot-scope="scope" v-if="scope.row.persAllDtoList">
  188. <span v-for="(item,index) in scope.row.persAllDtoList" :key="index">
  189. <span v-if="item.persType == '4'">{{item.persName + ' '}}</span>
  190. </span>
  191. </template>
  192. </el-table-column>
  193. <el-table-column
  194. header-align="center"
  195. align="center"
  196. min-width="100"
  197. prop="sttm"
  198. label="开始时间"
  199. show-overflow-tooltip
  200. >
  201. <template slot-scope="scope" v-if="scope.row.sttm">
  202. <span>{{scope.row.sttm.substr(0,10)}}</span>
  203. </template>
  204. </el-table-column>
  205. <el-table-column
  206. header-align="center"
  207. align="center"
  208. min-width="100"
  209. prop="entm"
  210. label="结束时间"
  211. show-overflow-tooltip
  212. >
  213. <template slot-scope="scope" v-if="scope.row.entm">
  214. <span>{{scope.row.entm.substr(0,10)}}</span>
  215. </template>
  216. </el-table-column>
  217. </el-table>
  218. <!--<el-form :inline="true" class="demo-form-inline">-->
  219. <!--<el-form-item label="复用至">-->
  220. <!--<el-date-picker-->
  221. <!--v-model="planYr"-->
  222. <!--type="year"-->
  223. <!--value-format="yyyy"-->
  224. <!--placeholder="选择年">-->
  225. <!--</el-date-picker>-->
  226. <!--</el-form-item>-->
  227. <!--<el-form-item label="年">-->
  228. <!--<el-input-->
  229. <!--v-model="planMounth"-->
  230. <!--placeholder="填写月如01">-->
  231. <!--</el-input>-->
  232. <!--</el-form-item>-->
  233. <!--<el-form-item lable="月">-->
  234. <!--<el-select v-model="dclxType" placeholder="请选择督查类型" style="width: 140px">-->
  235. <!--<el-option-->
  236. <!--v-for="item in inspectorTypeList"-->
  237. <!--:label="item.label"-->
  238. <!--:value="item.value">-->
  239. <!--</el-option>-->
  240. <!--</el-select>-->
  241. <!--</el-form-item>-->
  242. <!--<el-form-item lable="类型督查计划"></el-form-item>-->
  243. <!--<el-form-item style="float: right;">-->
  244. <!--<div slot="footer" class="dialog-footer">-->
  245. <!--<el-button type="primary" plain @click="closeDialog">取 消</el-button>-->
  246. <!--<el-button type="primary" @click="appendPlan" >确 定</el-button>-->
  247. <!--</div>-->
  248. <!--</el-form-item>-->
  249. <!--</el-form>-->
  250. <footer class="tableFoot">
  251. <span>复用至</span>
  252. <el-date-picker
  253. v-model="planYr"
  254. type="year"
  255. value-format="yyyy"
  256. placeholder="选择年"
  257. style="width: 100px;">
  258. </el-date-picker>
  259. <span>年</span>
  260. <!--<el-input-->
  261. <!--v-model="planMounth"-->
  262. <!--placeholder="填写月如01">-->
  263. <!--</el-input>-->
  264. <el-select v-model="planMounth" placeholder="选择月" clearable style="width: 100px;">
  265. <el-option
  266. v-for="item in titleMonths"
  267. :key="item.value"
  268. :label="item.label"
  269. :value="item.value"
  270. ></el-option>
  271. </el-select>
  272. <span>月</span>
  273. <el-select v-model="dclxType" placeholder="请选择督查类型" clearable style="width: 130px;">
  274. <el-option
  275. v-for="(item,index) in inspectorTypeList"
  276. :key="index"
  277. :label="item.label"
  278. :value="item.value">
  279. </el-option>
  280. </el-select>
  281. <span>督查计划</span>
  282. <div slot="footer" class="dialog-footer">
  283. <el-button type="primary" plain @click="closeDialog">取 消</el-button>
  284. <el-button type="primary" @click="appendPlan" >确 定</el-button>
  285. </div>
  286. </footer>
  287. </div>
  288. </div>
  289. </el-col>
  290. </el-row>
  291. </el-main>
  292. </el-dialog>
  293. </div>
  294. </template>
  295. <script>
  296. import request from '../../utils/gw_ajax_request'
  297. export default {
  298. name: "InformationReuse",
  299. data() {
  300. return {
  301. dialogFormVisible: true,
  302. bisInspDvdwkList: [],
  303. tableData: [],
  304. planYr: '',
  305. planMounth: '',
  306. dclxType: '',
  307. inspectorTypeList: [
  308. {label: '小水库', value: '001'},
  309. {label: '人饮', value: '002'},
  310. {label: '水毁', value: '003'},
  311. {label: '172', value: '004'},
  312. {label: '地下水', value: '005'},
  313. {label: '水闸', value: '006'},
  314. {label: '水利工程运行', value: '007'}
  315. ],
  316. treeData: [],
  317. defaultProps: {
  318. children: 'children',
  319. label: 'prsnTitle',
  320. disabled: false,
  321. expandOnClickNode: false,
  322. first: true,
  323. },
  324. defaultPid: 0,
  325. pageNum:1,
  326. titleMonths:[],
  327. fyOrgid:'',
  328. sttm: '',
  329. entm: ''
  330. }
  331. },
  332. mounted() {
  333. this.monthSelect();
  334. },
  335. methods: {
  336. closeDialog() {
  337. this.$emit('closeDialog')
  338. },
  339. appendPlan() {
  340. if(this.bisInspDvdwkList.length && this.planMounth && this.planYr && this.dclxType){
  341. let arrList = [];
  342. let arrxzqhList = [];
  343. this.bisInspDvdwkList.forEach(item =>{
  344. arrList = arrList.concat(item.persAllDtoList);
  345. arrxzqhList = arrxzqhList.concat(item.persAllAreaDtoList);
  346. })
  347. request.post(`/supervision/plan/copyGroupInfo`,
  348. {
  349. "inspMnth": this.planMounth,
  350. "inspYear": this.planYr,
  351. "orgId": this.fyOrgid,
  352. "persAllAreaDtoList": arrxzqhList,
  353. "persAllDtoList": arrList,
  354. "ptype": this.dclxType,
  355. "sttm": this.sttm,
  356. "entm": this.entm
  357. }
  358. ).then(res =>{
  359. if(res.success){
  360. this.$message.success('复用督查组成功');
  361. this.closeDialog();
  362. }else {
  363. this.$message.error(res.message);
  364. }
  365. }).catch(err =>{
  366. console.log(err);
  367. })
  368. }else{
  369. this.$message.warning('复用的督查组或年月督查类型不能为空');
  370. }
  371. },
  372. getTreeList(node, resolve) {
  373. if (node.data.plnaId) {
  374. this.defaultPid = node.data.plnaId;
  375. } else {
  376. this.defaultPid = 0;
  377. }
  378. request.get(`/dc/insp/base/getByPersid?userid=${localStorage.getItem("userid")}&pid=${this.defaultPid}`).then(res => {
  379. let myList = [];
  380. res.data.forEach(item => {
  381. // item.children ? item : Object.assign(item, {children: []})
  382. myList.push(item)
  383. })
  384. resolve(myList);
  385. }).catch(res => {
  386. resolve([]);
  387. })
  388. },
  389. handleNodeClick(data) {
  390. this.fyOrgid = data.plnaId.substring(3,6);
  391. console.log(this.fyOrgid);
  392. this.tableData = [];
  393. if(data.plnaId.length == '9'){
  394. request.get(`/supervision/plan/getAllInfoByPersid?persid=${localStorage.getItem('userid')}&ptype=${data.ptype}&id=${data.plnaId}`).then(res => {
  395. this.$nextTick(function () {
  396. this.tableData = res.data;
  397. })
  398. }).catch(err => {
  399. console.log(err);
  400. })
  401. }
  402. },
  403. handleSelectionChange(val){
  404. if (val.length > 1) {
  405. this.$refs.Table.clearSelection()
  406. this.$refs.Table.toggleRowSelection(val.pop())
  407. }else{
  408. console.log(val);
  409. this.bisInspDvdwkList = val;
  410. this.sttm = val[0]["sttm"].substr(0,10);
  411. this.entm = val[0]["entm"].substr(0,10);
  412. }
  413. },
  414. monthSelect: function() {
  415. var _this = this;
  416. for (var i = 0; i < 12; i++) {
  417. if (i < 9) {
  418. _this.titleMonths.push({
  419. label: "0" + (i + 1),
  420. value: "0" + (i + 1)
  421. });
  422. } else {
  423. _this.titleMonths.push({
  424. label: i + 1,
  425. value: i + 1
  426. });
  427. }
  428. }
  429. },
  430. },
  431. filters: {
  432. ryType(val) {
  433. switch (val) {
  434. case '1':
  435. return '组长';
  436. break;
  437. case '2':
  438. return '组员';
  439. break;
  440. case '3':
  441. return '联络员';
  442. break;
  443. case '4':
  444. return '专家';
  445. break;
  446. }
  447. }
  448. }
  449. }
  450. </script>
  451. <style>
  452. .container{
  453. height: 100%;
  454. display: flex;
  455. flex-direction: column;
  456. }
  457. .container>div{
  458. width: 100%;
  459. height: 49%;
  460. }
  461. .tableFoot{
  462. height: 40px;
  463. line-height: 40px;
  464. }
  465. .infoReuse .dialog-footer{
  466. float: right;
  467. margin-right: 20px;
  468. }
  469. .infoReuse thead .el-table-column--selection .cell {
  470. display: none;
  471. }
  472. </style>