50178bec30b3a1d4bfa330ebbdbc64b2b50a9fe4.svn-base 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470
  1. <!-- 人员工作情况 -->
  2. <template>
  3. <div id="gzqkContainer" class="zgqkTableClass">
  4. <draagable :title="draagableTitle" @closeDraggable="closeDraggable" initTop=150
  5. initLeft=20 initWidth=980 initHeight=690 style="z-index: 999">
  6. <div style="height:450px;" v-if="noData">
  7. <el-table
  8. v-loading="loading"
  9. border
  10. ref="et"
  11. :height="(tableHeight + 50)"
  12. :data="searchTableData"
  13. tooltip-effect="dark"
  14. style="width: 100%"
  15. >
  16. <el-table-column
  17. fixed="left"
  18. header-align="center"
  19. align="center"
  20. min-width="100"
  21. prop="year"
  22. label="年度"
  23. show-overflow-tooltip
  24. ></el-table-column>
  25. <el-table-column
  26. header-align="center"
  27. align="center"
  28. min-width="100"
  29. prop="batch"
  30. label="稽察批次"
  31. show-overflow-tooltip
  32. ></el-table-column>
  33. <el-table-column
  34. header-align="center"
  35. align="center"
  36. min-width="100"
  37. prop="groupNm"
  38. sortable
  39. label="组别"
  40. show-overflow-tooltip
  41. ></el-table-column>
  42. <el-table-column
  43. header-align="center"
  44. align="center"
  45. min-width="200"
  46. label="开始时间"
  47. prop="stTm"
  48. ></el-table-column>
  49. <el-table-column
  50. header-align="center"
  51. align="center"
  52. min-width="200"
  53. label="结束时间"
  54. prop="enTm"
  55. ></el-table-column>
  56. <el-table-column
  57. header-align="center"
  58. align="center"
  59. min-width="250"
  60. label="稽察地点"
  61. prop="areas"
  62. show-overflow-tooltip
  63. >
  64. </el-table-column>
  65. <el-table-column
  66. header-align="center"
  67. align="center"
  68. min-width="250"
  69. label="稽察项目"
  70. show-overflow-tooltip
  71. >
  72. <template slot-scope="scope">
  73. <transition name="el-fade-in-linear">
  74. <div v-if="scope.row['objList'].length" style="width:100%;height:100%;display:flex;flex-direction:row;justify-content:center;align-items:center;">
  75. <span>{{scope.row['objList']&&scope.row['objList'].length?testformatterArray(scope.row['objList'],'ojbNm'):''}}</span>
  76. </div>
  77. </transition>
  78. </template>
  79. </el-table-column>
  80. <el-table-column
  81. header-align="center"
  82. align="center"
  83. min-width="100"
  84. prop="workDpNm"
  85. label="项目类型"
  86. show-overflow-tooltip
  87. ></el-table-column>
  88. <el-table-column
  89. header-align="center"
  90. align="center"
  91. min-width="200"
  92. label="稽察组长"
  93. show-overflow-tooltip
  94. >
  95. <template slot-scope="scope">
  96. <transition name="el-fade-in-linear">
  97. <div v-if="scope.row['special'].length" style="width:100%;height:100%;display:flex;flex-direction:row;justify-content:center;align-items:center;">
  98. <span>{{scope.row['special']&&scope.row['special'].length?testformatterArray(scope.row['special'],'name'):''}}</span>
  99. </div>
  100. </transition>
  101. </template>
  102. </el-table-column>
  103. <el-table-column
  104. header-align="center"
  105. align="center"
  106. min-width="200"
  107. label="助理"
  108. show-overflow-tooltip
  109. >
  110. <template slot-scope="scope">
  111. <transition name="el-fade-in-linear">
  112. <div v-if="scope.row['aid'].length" style="width:100%;height:100%;display:flex;flex-direction:row;justify-content:center;align-items:center;">
  113. <span>{{scope.row['aid']&&scope.row['aid'].length?testformatterArray(scope.row['aid'],'name'):''}}</span>
  114. </div>
  115. </transition>
  116. </template>
  117. </el-table-column>
  118. <el-table-column
  119. header-align="center"
  120. align="center"
  121. min-width="200"
  122. label="前期专家"
  123. show-overflow-tooltip
  124. >
  125. <template slot-scope="scope">
  126. <transition name="el-fade-in-linear">
  127. <div v-if="scope.row['qqzj'].length" style="width:100%;height:100%;display:flex;flex-direction:row;justify-content:center;align-items:center;">
  128. <span>{{scope.row['qqzj']&&scope.row['qqzj'].length?testformatterArray(scope.row['qqzj'],'name'):''}}</span>
  129. </div>
  130. </transition>
  131. </template>
  132. </el-table-column>
  133. <el-table-column
  134. header-align="center"
  135. align="center"
  136. min-width="150"
  137. label="建管专家"
  138. show-overflow-tooltip
  139. >
  140. <template slot-scope="scope">
  141. <transition name="el-fade-in-linear">
  142. <div v-if="scope.row['jgzj'].length" style="width:100%;height:100%;display:flex;flex-direction:row;justify-content:center;align-items:center;">
  143. <span>{{scope.row['jgzj']&&scope.row['jgzj'].length?testformatterArray(scope.row['jgzj'],'name'):''}}</span>
  144. </div>
  145. </transition>
  146. </template>
  147. </el-table-column>
  148. <el-table-column
  149. header-align="center"
  150. align="center"
  151. min-width="150"
  152. label="计划专家"
  153. show-overflow-tooltip
  154. >
  155. <template slot-scope="scope">
  156. <transition name="el-fade-in-linear">
  157. <div v-if="scope.row['jhzj'].length" style="width:100%;height:100%;display:flex;flex-direction:row;justify-content:center;align-items:center;">
  158. <span>{{scope.row['jhzj']&&scope.row['jhzj'].length?testformatterArray(scope.row['jhzj'],'name'):''}}</span>
  159. </div>
  160. </transition>
  161. </template>
  162. </el-table-column>
  163. <el-table-column
  164. header-align="center"
  165. align="center"
  166. min-width="150"
  167. label="财务专家"
  168. show-overflow-tooltip
  169. >
  170. <template slot-scope="scope">
  171. <transition name="el-fade-in-linear">
  172. <div v-if="scope.row['cwzj'].length" style="width:100%;height:100%;display:flex;flex-direction:row;justify-content:center;align-items:center;">
  173. <span>{{scope.row['cwzj']&&scope.row['cwzj'].length?testformatterArray(scope.row['cwzj'],'name'):''}}</span>
  174. </div>
  175. </transition>
  176. </template>
  177. </el-table-column>
  178. <el-table-column
  179. header-align="center"
  180. align="center"
  181. min-width="150"
  182. label="质量专家"
  183. show-overflow-tooltip
  184. >
  185. <template slot-scope="scope">
  186. <transition name="el-fade-in-linear">
  187. <div v-if="scope.row['zlzj'].length" style="width:100%;height:100%;display:flex;flex-direction:row;justify-content:center;align-items:center;">
  188. <span>{{scope.row['zlzj']&&scope.row['zlzj'].length?testformatterArray(scope.row['zlzj'],'name'):''}}</span>
  189. </div>
  190. </transition>
  191. </template>
  192. </el-table-column>
  193. <el-table-column
  194. header-align="center"
  195. align="center"
  196. min-width="150"
  197. label="安全专家"
  198. show-overflow-tooltip
  199. >
  200. <template slot-scope="scope">
  201. <transition name="el-fade-in-linear">
  202. <div v-if="scope.row['aqzj'].length" style="width:100%;height:100%;display:flex;flex-direction:row;justify-content:center;align-items:center;">
  203. <span style="justify-content:center;">{{scope.row['aqzj']&&scope.row['aqzj'].length?testformatterArray(scope.row['aqzj'],'name'):''}}</span>
  204. </div>
  205. </transition>
  206. </template>
  207. </el-table-column>
  208. <el-table-column
  209. header-align="center"
  210. align="center"
  211. min-width="220"
  212. label="备注"
  213. prop="remark"
  214. ></el-table-column>
  215. <!--<el-table-column-->
  216. <!--header-align="center"-->
  217. <!--align="center"-->
  218. <!--min-width="120"-->
  219. <!--label="稽察组长联系"-->
  220. <!--&gt;</el-table-column>-->
  221. <el-table-column
  222. header-align="center"
  223. align="center"
  224. min-width="220"
  225. label="检测单位"
  226. prop="audUnits"
  227. ></el-table-column>
  228. <el-table-column
  229. header-align="center"
  230. align="center"
  231. min-width="220"
  232. label="稽察处别"
  233. prop="audCategory"
  234. ></el-table-column>
  235. </el-table>
  236. </div>
  237. <div style="height:450px;" v-else>
  238. <p style="padding: 27%;text-align: center;">暂无分组数据!</p>
  239. </div>
  240. </draagable>
  241. <personGzqkPointList
  242. v-if="showList"
  243. :currentPersId="currentPersId"
  244. :lon="lon"
  245. :lat="lat"
  246. @closeHandler="closeHandler1"></personGzqkPointList>
  247. </div>
  248. </template>
  249. <script>
  250. import {
  251. formatterArrayToLabel
  252. } from "@util/gw_formatter";
  253. import request from '@util/gw_ajax_request'
  254. import draagable from './draggable.vue'
  255. import {dateFormat} from "../../../utils/gw_date.js"
  256. import {getPersonGzqk,getPersonGzqkPointList} from '../../../api/jcOneMapApi.js'
  257. export default {
  258. components: {
  259. draagable,
  260. personGzqkPointList: resolve => {require(['./personGzqkPointList'], resolve)},
  261. },
  262. props:['currentPersId','select_nd','select_pc'],
  263. data() {
  264. return {
  265. searchTableData:[],
  266. tableHeight: window.innerHeight * .6 + 15,
  267. draagableTitle:'工作情况',
  268. group:'',
  269. tableResultData:[],
  270. selectDataList:[],
  271. loading:false,
  272. lon:'',
  273. lat:'',
  274. showList:false,
  275. formShow:false,//人员所在组的下拉框
  276. noData:true,//无数据展示内容控制
  277. };
  278. },
  279. computed: {
  280. roleTypeData(){
  281. return this.$store.state.jcState.roleTypeData;
  282. }
  283. },
  284. watch: {
  285. currentPersId(){
  286. this.getLishiJiHuaSearch();
  287. },
  288. select_nd(){
  289. this.getLishiJiHuaSearch();
  290. },
  291. select_pc(){
  292. this.getLishiJiHuaSearch();
  293. },
  294. },
  295. //生命周期 - 创建完成(可以访问当前this实例)
  296. created() {
  297. },
  298. //生命周期 - 挂载完成(可以访问DOM元素)
  299. mounted() {
  300. this.getLishiJiHuaSearch();
  301. },
  302. beforeCreate() {}, //生命周期 - 创建之前
  303. beforeMount() {}, //生命周期 - 挂载之前
  304. beforeUpdate() {}, //生命周期 - 更新之前
  305. updated() {}, //生命周期 - 更新之后
  306. beforeDestroy() {}, //生命周期 - 销毁之前
  307. destroyed() {}, //生命周期 - 销毁完成
  308. activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发
  309. methods: {
  310. //角色
  311. roleTypeFy(row){
  312. if(row){
  313. this.roleTypeData.forEach(ele => {
  314. if (ele.value == row) {
  315. row = ele.label;
  316. }
  317. });
  318. return row;
  319. }else{
  320. return '';
  321. }
  322. },
  323. //改变组事件
  324. groupChangEvent(item){
  325. this.getPersonDetailsData(item);
  326. },
  327. // //获取人员所在组数据
  328. // getLishiJiHuaSearch(){
  329. // var _self = this;
  330. // console.log(_self.currentPersId)
  331. // let params = {
  332. // "loginId":_self.currentPersId,
  333. // "year":_self.select_nd,
  334. // "batch":_self.select_pc,
  335. // }
  336. // getPersonGzqk(params).then((res)=>{
  337. // _self.loading = false;
  338. // if(res.success){
  339. // _self.selectDataList = res.data;
  340. // if(_self.selectDataList.length == 0){
  341. // _self.noData = false;//处理没有数据情况
  342. // }else{
  343. // _self.noData = true;
  344. // if(_self.selectDataList.length == 1){
  345. // _self.formShow = false;//处理人员只在一个组中的情况,不显示下拉框
  346. // }else{
  347. // _self.formShow = true;
  348. // _self.group = _self.selectDataList[0].audContent ? _self.selectDataList[0].audContent:_self.selectDataList[0].groupNm
  349. // }
  350. // _self.getPersonDetailsData(_self.selectDataList[0].id)//表格数据默认用第一组的组id请求,获取其他组员
  351. // }
  352. // }
  353. // })
  354. // },
  355. getLishiJiHuaSearch(){
  356. var _self = this;
  357. this.loading = true;
  358. let params = {
  359. "loginId":_self.currentPersId,
  360. "year":_self.select_nd,
  361. "batch":_self.select_pc,
  362. }
  363. request.post(`/tac/insp/year/batch/group/getGroupList`,params).then(res =>{
  364. if(res.success){
  365. this.loading = false;
  366. this.$nextTick(() =>{
  367. this.searchTableData = res.data;
  368. this.getPerFl(this.searchTableData);
  369. this.searchTableData.forEach(item =>{
  370. item.stTm = dateFormat(item.stTm, "yyyy-MM-dd");
  371. item.enTm = dateFormat(item.enTm, "yyyy-MM-dd");
  372. })
  373. })
  374. }
  375. })
  376. },
  377. getPerFl(arr){
  378. // 为列表分开稽察组长,助理,前期专家
  379. arr.forEach(element => {
  380. element["qqzj"] = [];//前期专家
  381. element["jgzj"] = [];//建管专家
  382. element["jhzj"] = [];//计划专家
  383. element["cwzj"] = [];//财务专家
  384. element["zlzj"] = [];//质量专家
  385. element["aqzj"] = [];//安全专家
  386. element["aid"] = [];//助理
  387. element["special"] = [];//稽察组长
  388. element["workersList"].forEach(per => {
  389. if (per.roleType == "11") {
  390. element["qqzj"].push(per);
  391. } else if (per.roleType == "12") {
  392. element["jgzj"].push(per);
  393. } else if (per.roleType == "13") {
  394. element["jhzj"].push(per);
  395. } else if (per.roleType == "14") {
  396. element["cwzj"].push(per);
  397. }else if (per.roleType == "15") {
  398. element["zlzj"].push(per);
  399. } else if (per.roleType == "16") {
  400. element["aqzj"].push(per);
  401. } else if (per.roleType == "19") {
  402. element["aid"].push(per);
  403. } else if (per.roleType == "20") {
  404. element["special"].push(per);
  405. }
  406. });
  407. });
  408. },
  409. testformatterArray: function(
  410. arr,
  411. labelPropName,
  412. splitMark = ",",
  413. nonLabel = "",
  414. isAddNonLabel = true
  415. ) {
  416. let r = formatterArrayToLabel(
  417. arr,
  418. labelPropName,
  419. (splitMark = ","),
  420. (nonLabel = ""),
  421. (isAddNonLabel = true)
  422. );
  423. return r;
  424. },
  425. //根据人员所在组id查询其他组员
  426. getPersonDetailsData(item){
  427. var _self = this;
  428. request.post(`/tac/worker/b/getWorkerbsListById`,{
  429. "groupId": item
  430. }).then(res =>{
  431. if(res.success){
  432. // res.data.forEach(ele =>{
  433. // ele.year = _self.select_nd
  434. // ele.batch = _self.select_pc
  435. // })
  436. this.tableResultData = res.data;
  437. console.log(this.tableResultData)
  438. }
  439. })
  440. },
  441. guijiDetail(item,type){
  442. var _self = this;
  443. getPersonGzqkPointList(_self.currentPersId,item.lon,item.lat).then((res)=>{
  444. if(res.success){
  445. _self.$emit('showPerGzqkOnMap',res.data);
  446. }
  447. })
  448. },
  449. guijiList(item,type){
  450. this.lon = item.lon;
  451. this.lat = item.lat;
  452. this.showList = true;
  453. },
  454. closeDraggable:function(){
  455. this.showList = false;
  456. this.$emit("closeHandler","groupInfo");
  457. },
  458. closeHandler1(){
  459. this.showList = false;
  460. }
  461. },
  462. }
  463. </script>
  464. <style>
  465. /*@import url(); 引入公共css类*/
  466. </style>