index.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696
  1. <template>
  2. <view class=" uni-container uni-container-bg">
  3. <view class="uni-padding-wrap uni-common-mt">
  4. <uni-segmented-control :current="current" :values="items" style-type="text" active-color="rgb(25, 146, 148)"
  5. @clickItem="onClickItem" />
  6. </view>
  7. <!-- <uni-row class="demo-uni-row align-center flex padding-tb-sm" :gutter="20" width="100%">
  8. <uni-col :span="12" class="flex flex-direction-row ">
  9. <text class="text-Width">开始时间:</text>
  10. <u-button customStyle="color: #2563EB;" plain shape="circle" size="small" color="#2563EB"
  11. @click="showtimeStart = true" :text="formData.start"></u-button>
  12. <u-datetime-picker :show="showtimeStart" :value="formData.start" mode="date" closeOnClickOverlay
  13. @confirm="confirmStarttime" @cancel="showtimeStart = false" @change="changetime"
  14. @close="showtimeStart = false">
  15. </u-datetime-picker>
  16. </uni-col>
  17. <uni-col :span="12" class="flex flex-direction-row ">
  18. <text class="text-Width">结束时间:</text>
  19. <u-button customStyle="color: #2563EB;" plain shape="circle" size="small" color="#2563EB"
  20. @click="showtimeEnd = true" :text="formData.end"></u-button>
  21. <u-datetime-picker :show="showtimeEnd" :value="formData.end" mode="date" closeOnClickOverlay
  22. @confirm="confirmEndtime" @cancel="showtimeEnd = false" @change="changetime"
  23. @close="showtimeEnd = false">
  24. </u-datetime-picker>
  25. </uni-col>
  26. </uni-row> -->
  27. <!-- 搜索 -->
  28. <!-- <uni-row class="demo-uni-row padding-tb-sm" :gutter="20" width="100%">
  29. <view class="" style="display: flex; align-items: center;">
  30. <uni-col :span="22">
  31. <view class="u-page__tag-item">
  32. <u-search v-model="keyword" :show-action="false"></u-search>
  33. </view>
  34. </uni-col>
  35. <uni-col :span='2'>
  36. <u-icon name="hourglass-half-fill" size="28" style='float: right;' @click='showSearch=true'>
  37. </u-icon>
  38. </uni-col>
  39. </view>
  40. </uni-row> -->
  41. <view v-if="current == 0">
  42. <view class="" style="margin-bottom: 100rpx;">
  43. <u-list @scrolltolower="scrolltolower">
  44. <u-list-item v-for="(item, index) in tableData" :key="index" link>
  45. <uni-row>
  46. <uni-col :span="2">
  47. <view class="" style="position: absolute;top: 0rpx;">
  48. <image :src="item.checked ?zhengchang:moren" class="tupian"
  49. @click="listItemChecked(item,index)">
  50. </image>
  51. </view>
  52. </uni-col>
  53. <uni-col :span="22">
  54. <view class="">
  55. <uni-row class="demo-uni-row " :gutter="20" width="100%">
  56. <uni-col :span="18" class="text-xl font-weight-700">{{item.insp_name}}</uni-col>
  57. <uni-col :span="6" class="text-xl font-weight-700">
  58. <u-button size="mini" :color="'#ed7d31'">
  59. 未确认
  60. </u-button>
  61. </uni-col>
  62. </uni-row>
  63. <uni-row class="demo-uni-row " :gutter="20" width="100%">
  64. <uni-col :span="24" class="text-2cut text-grey1 ">{{item.description}}
  65. </uni-col>
  66. </uni-row>
  67. <uni-row class="demo-uni-row " :gutter="20" width="100%">
  68. <uni-col :span="18" class="text-cut text-grey1">巡查时间:{{item.inspect_time}}</uni-col>
  69. <uni-col :span="6" class="justify-end flex ">
  70. <!-- <u-button size="small"
  71. :color="item.status==='0'||item.status==='3'?'red':item.status==='1'?'green':'blue'"
  72. style="width: 160rpx;">{{statusListTran(item.status)}}</u-button> -->
  73. <u-button size="small" color="rgb(25, 146, 148)" style="width: 160rpx;"
  74. @click.native="onClick(item)">查看详情</u-button>
  75. </uni-col>
  76. </uni-row>
  77. </view>
  78. </uni-col>
  79. </uni-row>
  80. </u-list-item>
  81. </u-list>
  82. </view>
  83. <view class="review-button">
  84. <u-button size="small" color="rgb(25, 146, 148)" :customStyle="btnGetCode" style="width: 280rpx;"
  85. @click.native="sureBtn">确认</u-button>
  86. </view>
  87. </view>
  88. <view v-else-if="current == 1">
  89. <view class="" style="margin-bottom: 100rpx;">
  90. <u-list @scrolltolower="scrolltolower">
  91. <u-list-item v-for="(item, index) in tableData" :key="index" link>
  92. <uni-row>
  93. <uni-col :span="2">
  94. <view class="" style="position: absolute;top: 0rpx;">
  95. <image :src="item.checked ?zhengchang:moren" class="tupian"
  96. @click="listItemChecked(item,index)">
  97. </image>
  98. </view>
  99. </uni-col>
  100. <uni-col :span="22">
  101. <view class="">
  102. <uni-row class="demo-uni-row " :gutter="20" width="100%">
  103. <uni-col :span="18" class="text-xl font-weight-700">{{item.insp_name}}</uni-col>
  104. <uni-col :span="6" class="text-xl font-weight-700">
  105. <u-button size="mini" color="#ed7d31">
  106. 未处理
  107. </u-button>
  108. </uni-col>
  109. </uni-row>
  110. <uni-row class="demo-uni-row " :gutter="20" width="100%">
  111. <uni-col :span="24" class="text-2cut text-grey1 ">{{item.description}}
  112. </uni-col>
  113. </uni-row>
  114. <uni-row class="demo-uni-row " :gutter="20" width="100%">
  115. <uni-col :span="18" class="text-cut text-grey1">巡查时间:{{item.inspect_time}}
  116. </uni-col>
  117. <uni-col :span="6" class="justify-end flex ">
  118. <!-- <u-button size="small"
  119. :color="item.status==='0'||item.status==='3'?'red':item.status==='1'?'green':'blue'"
  120. style="width: 160rpx;">{{statusListTran(item.status)}}</u-button> -->
  121. <u-button size="small" color="rgb(25, 146, 148)" style="width: 160rpx;"
  122. @click.native="onClick(item)">查看详情</u-button>
  123. </uni-col>
  124. </uni-row>
  125. </view>
  126. </uni-col>
  127. </uni-row>
  128. </u-list-item>
  129. </u-list>
  130. </view>
  131. <view class="review-button">
  132. <u-button size="small" color="rgb(25, 146, 148)" :customStyle="btnGetCode" style="width: 280rpx;"
  133. @click.native="reviewBtn">复 查</u-button>
  134. </view>
  135. </view>
  136. <view v-else-if="current == 2">
  137. <view class="" style="margin-bottom: 100rpx;">
  138. <u-list @scrolltolower="scrolltolower">
  139. <u-list-item v-for="(item, index) in tableData" :key="index" link>
  140. <uni-row>
  141. <!-- <uni-col :span="2">
  142. <view class="" style="position: absolute;top: 0rpx;" v-if="item.denger_status==0">
  143. <image :src="item.checked ?zhengchang:moren" class="tupian"
  144. @click="listItemChecked(item,index)">
  145. </image>
  146. </view>
  147. </uni-col> -->
  148. <uni-col :span="22">
  149. <view class="">
  150. <uni-row class="demo-uni-row " :gutter="20" width="100%">
  151. <uni-col :span="18" class="text-xl font-weight-700">{{item.insp_name}}</uni-col>
  152. <uni-col :span="6" class="text-xl font-weight-700">
  153. <!-- <u-button size="mini" :color="item.denger_status=='0'?'#ed7d31':'#aace99'">
  154. {{ item.denger_status=='0'?'未处理':'已处理'}}
  155. </u-button> -->
  156. <u-button size="mini" color="#aace99">
  157. 已处理
  158. </u-button>
  159. </uni-col>
  160. </uni-row>
  161. <uni-row class="demo-uni-row " :gutter="20" width="100%">
  162. <uni-col :span="24" class="text-2cut text-grey1 ">{{item.description}}
  163. </uni-col>
  164. </uni-row>
  165. <uni-row class="demo-uni-row " :gutter="20" width="100%">
  166. <uni-col :span="18" class="text-cut text-grey1">巡查时间:{{item.inspect_time}}</uni-col>
  167. <uni-col :span="6" class="justify-end flex ">
  168. <!-- <u-button size="small"
  169. :color="item.status==='0'||item.status==='3'?'red':item.status==='1'?'green':'blue'"
  170. style="width: 160rpx;">{{statusListTran(item.status)}}</u-button> -->
  171. <u-button size="small" color="rgb(25, 146, 148)" style="width: 160rpx;"
  172. @click.native="onClick(item)">查看详情</u-button>
  173. </uni-col>
  174. </uni-row>
  175. </view>
  176. </uni-col>
  177. </uni-row>
  178. </u-list-item>
  179. </u-list>
  180. </view>
  181. </view>
  182. <!-- 搜索框 -->
  183. <u-popup :show="showSearch" :round="20" mode="bottom" @close="close" @open="open">
  184. <view class="searchpopup">
  185. <u--form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
  186. labelPosition="left" label-width="68px">
  187. <u-form-item label="处理结果" prop="handleResult">
  188. <u--input v-model="queryParams.handleResult" placeholder="请输入处理结果" clearable
  189. @keyup.enter.native="handleQuery" />
  190. </u-form-item>
  191. <u-form-item label="解决方式" prop="handleMethod">
  192. <u-radio-group v-model="queryParams.handleMethod">
  193. <u-radio :customStyle="{marginRight: '16px'}" v-for="dict in dengerHandle" :key="dict.value"
  194. :label="dict.label" :name="dict.value">
  195. </u-radio>
  196. </u-radio-group>
  197. </u-form-item>
  198. <u-form-item>
  199. <u-button @click="showSearch=false">取消</u-button>
  200. <u-button type="primary" color="rgb(25, 146, 148)" @click="handleQuery">搜索</u-button>
  201. </u-form-item>
  202. </u--form>
  203. </view>
  204. </u-popup>
  205. <u-modal title="隐患复查" width="640rpx" :show="showreview " showCancelButton buttonReverse @confirm="onreviewclick"
  206. @cancel="cancelClick" confirmColor="rgb(25, 146, 148)">
  207. <view class="" style="width: 100%;">
  208. <u--form :model="reviewFromdata" ref="reviewfrom" label-width='80'>
  209. <u-form-item label="解决方式:" prop="handleMethod">
  210. <u-radio-group v-model="reviewFromdata.handleMethod">
  211. <u-radio :customStyle="{marginRight: '16px'}" activeColor="rgb(25, 146, 148)"
  212. v-for="dict in dengerHandle" :key="dict.value" :label="dict.label" :name="dict.value">
  213. </u-radio>
  214. </u-radio-group>
  215. </u-form-item>
  216. <!-- <u-form-item label="是否上报:" prop="isReport">
  217. <u-radio-group v-model="reviewFromdata.isReport">
  218. <u-radio :customStyle="{marginRight: '16px'}" activeColor="rgb(25, 146, 148)"
  219. v-for="dict in isReportList" :key="dict.value" :label="dict.label" :name="dict.value">
  220. </u-radio>
  221. </u-radio-group>
  222. </u-form-item> -->
  223. <u-form-item label="截止日期:" prop="handleTime" @click="showHandleTime = true; hideKeyboard()">
  224. <u--input v-model="reviewFromdata.handleTime" :disabled="true" disabledColor="#ffffff"
  225. suffixIcon="calendar" suffixIconStyle="color: #909399">
  226. </u--input>
  227. </u-form-item>
  228. <u-form-item label="复查人员:" @click="
  229. showOrg = true;
  230. hideKeyboard()">
  231. <u-input border="none" disabled v-model="reviewFromdata.receiverName" style="padding:18rpx"
  232. placeholder="请选择复查人员"></u-input>
  233. </u-form-item>
  234. <!-- <swiperl :list="list5" @change="e => current = e.current" :autoplay="false" previousMargin="60"
  235. nextMargin="60" circular radius="5" bgColor="#ffffff" @click="swiperClick">
  236. <view slot="indicator" class="indicator">
  237. <view class="indicator__dot" v-for="(item, index) in list5" :key="index"
  238. :class="[index === current && 'indicator__dot--active']">
  239. </view>
  240. </view>
  241. </swiperl> -->
  242. </u--form>
  243. </view>
  244. </u-modal>
  245. <u-action-sheet :show="showOrg" :actions="list5" title="请选择复查人员" @close="showOrg = false" @select="sexSelect">
  246. </u-action-sheet>
  247. <u-datetime-picker :show="showHandleTime" v-model="time" mode="date" closeOnClickOverlay
  248. @confirm="confirmReviewTime" @cancel="showHandleTime = false" @change="changeReviewTime"
  249. @close="showHandleTime = false">
  250. </u-datetime-picker>
  251. <!-- 加载中 -->
  252. <isLodingModel></isLodingModel>
  253. </view>
  254. </template>
  255. <script>
  256. let that = null;
  257. import {
  258. getPageDenger, // 历史记录隐患记录
  259. } from "@/api/historical_record";
  260. import {
  261. getSelfEmp, // 获取本单位下的人员信息
  262. dangeRreview, // 隐患复查
  263. batchSetDangerStatus
  264. } from "@/api/hiddenTrouble";
  265. import {
  266. DICT_TYPE,
  267. getDictDatas
  268. } from "@/utils/dict";
  269. import swiperl from "@/components/swiper/swiper.vue"
  270. import {
  271. shijianc
  272. } from '@/utils/common.js'
  273. import config from '@/config'
  274. const baseUrlImg=config.baseUrlImg
  275. export default {
  276. components: {
  277. swiperl
  278. },
  279. data() {
  280. return {
  281. items: ['隐患确认','待复查', '已处理'],
  282. current: 0,
  283. moren: `${baseUrlImg}/checkActive/moren.png`, //默认图片
  284. zhengchang: `${baseUrlImg}/checkActive/zhengchang.png`,
  285. photograph:`${baseUrlImg}/checkActive/photograph.png`,
  286. btnGetCode: {
  287. width: '280rpx', // 注意驼峰命名,并且值必须用引号包括,因为这是对象
  288. },
  289. // 数据
  290. tableData: [],
  291. // 每页数据量
  292. pageSize: 20,
  293. // 当前页
  294. pageNo: 1,
  295. // 数据总量
  296. total: 0,
  297. // tableData数据加载中
  298. loading: false,
  299. showOrg: false,
  300. // 初始化时搜索框的值
  301. keyword: '',
  302. // 开始时间与结束时间
  303. formData: {
  304. start: '请选择开始时间',
  305. end: '请选择结束时间',
  306. },
  307. showtimeStart: false,
  308. showtimeEnd: false,
  309. statusList: {
  310. 0: "未解决",
  311. 1: "已解决",
  312. 2: "审核中",
  313. 3: "审核未通过"
  314. },
  315. // 搜索框显示控制
  316. showSearch: false,
  317. // 查询参数
  318. queryParams: {
  319. pageNo: 1,
  320. pageSize: 10,
  321. dengerStatus: 0,
  322. handleResult: null,
  323. handleTime: [],
  324. status: 0,
  325. handleMethod: null,
  326. orgId: null,
  327. userId: null,
  328. },
  329. dengerHandle: getDictDatas(DICT_TYPE.DENGER_HANDLE),
  330. // =========================================
  331. time: Number(new Date()),
  332. reviewFromdata: {
  333. broadId: 0,
  334. dangerMapList: [],
  335. handleMethod: "",
  336. handleResult: "",
  337. handleTime: "",
  338. orgId: 0,
  339. receiver: "",
  340. sender: 0,
  341. isReport: "",
  342. receiverName:""
  343. },
  344. isReportList: [{
  345. value: 0,
  346. label: "否"
  347. }, {
  348. value: 1,
  349. label: "是"
  350. }],
  351. showHandleTime: false,
  352. showreview: false,
  353. list5: [],
  354. current: 0,
  355. currentChecked: false,
  356. dangerIdStatus: {
  357. "dangerIds": [],
  358. "dangerStatus": 1
  359. }, //点击确认
  360. dangerIds: [],
  361. rules: {
  362. 'handleMethod': {
  363. // type: 'string',
  364. required: true,
  365. message: '请选择解决方式',
  366. trigger: ['blur', 'change']
  367. },
  368. // 'isReport': {
  369. // // type: 'string',
  370. // required: true,
  371. // message: '请选择是否上报',
  372. // trigger: ['blur', 'change']
  373. // },
  374. 'handleTime': {
  375. // type: 'string',
  376. required: true,
  377. message: '请选择截止日期',
  378. trigger: ['blur', 'change']
  379. },
  380. },
  381. }
  382. },
  383. onReady() {},
  384. // 在 vue页面,向起始页通过事件传递数据
  385. onLoad: function(option) {
  386. console.log("this.$store.state: ", this.$store.state);
  387. console.log('DICT_TYPE', getDictDatas(DICT_TYPE.DENGER_HANDLE));
  388. },
  389. onShow() {
  390. this.tableData = []
  391. this.getData(1)
  392. },
  393. mixins: [uni.$u.mixin],
  394. watch: {
  395. loading: {
  396. handler(newLength, oldLength) {
  397. this.$modal.isLoadingModel(this.loading)
  398. },
  399. immediate: true
  400. },
  401. // this.$refs.uForm.setRules(this.rules);
  402. showreview: {
  403. handler(value) {
  404. this.$nextTick(() => { //在弹窗加载出来只有 show 才会变成 true
  405. if (value == true) { //判断 弹窗 v-model 变成 true 的时候去加载规则。 原理:在弹窗渲染完成之后表单渲染完成之前去加载规则就不会报错了
  406. // 如果需要兼容微信小程序,并且校验规则中含有方法等,只能通过setRules方法设置规则
  407. this.$refs.reviewfrom.setRules(this.rules);
  408. }
  409. })
  410. },
  411. immediate: true, // 重点
  412. deep: true, // 重点
  413. },
  414. },
  415. methods: {
  416. cancelClick(){
  417. this.showOrg=false
  418. this.showreview = false
  419. },
  420. // tab头部点击
  421. onClickItem(e) {
  422. if (this.current !== e.currentIndex) {
  423. this.current = e.currentIndex;
  424. }
  425. this.queryParams.dengerStatus = e.currentIndex == 2 ? 2 : (e.currentIndex == 0 ? 0 : 1)
  426. this.tableData=[]
  427. this.getData(1)
  428. this.dangerIds = []
  429. },
  430. hideKeyboard() {
  431. uni.hideKeyboard()
  432. },
  433. // =================数据转换==================
  434. statusListTran(val) { //status状态转换
  435. return this.statusList[val]
  436. },
  437. // ================================
  438. // 获取数据
  439. getData(pageNo, value = '') {
  440. console.log('this.$store', this.$store.state.user.orgId);
  441. this.queryParams.orgId = this.$store.state.user.orgId
  442. this.queryParams.userId = this.$store.state.user.id
  443. this.loading = true
  444. this.queryParams.pageNo = pageNo
  445. getPageDenger(this.queryParams).then(response => {
  446. // 为数据赋值:通过展开运算符的形式,进行新旧数据的拼接
  447. this.tableData = [...this.tableData, ...response.data.list]
  448. // this.tableData = response.data.list;
  449. this.total = response.data.total;
  450. this.loading = false;
  451. this.tableData.map(i => {
  452. i.checked = false
  453. i.inspect_time = shijianc(i.inspect_time)
  454. })
  455. });
  456. },
  457. onClick(val) {
  458. console.log(val)
  459. if (val.insp_type == 'fpd') {
  460. uni.navigateTo({
  461. url: '/pagesA/fire/hidden_trouble/trouble_xf_deetails/trouble_xf_deetails?id=' + val.id,
  462. })
  463. } else {
  464. uni.navigateTo({
  465. url: '/pagesA/fire/hidden_trouble/trouble_details/trouble_details?id=' + val.id,
  466. })
  467. }
  468. },
  469. // 触底的事件
  470. scrolltolower() {
  471. // 判断是否还有下一页数据
  472. if (this.queryParams.pageNo * this.queryParams.pageSize >= this.total) return
  473. // 判断是否正在请求其它数据,如果是,则不发起额外的请求
  474. if (this.loading) return
  475. this.pageNo += 1
  476. this.getData(this.pageNo)
  477. },
  478. //日期范围
  479. // 开始日期
  480. confirmStarttime(e) {
  481. this.showtimeStart = false
  482. console.log(e.value, e.mode);
  483. let value = new Date(e.value)
  484. this.formData.start = uni.$u.timeFormat(e.value, 'yyyy/mm/dd');
  485. },
  486. changetime(e) {
  487. console.log('change', e)
  488. },
  489. confirmEndtime(e) {
  490. this.showtimeEnd = false
  491. console.log(e.value, e.mode);
  492. let value = new Date(e.value)
  493. this.formData.end = uni.$u.timeFormat(e.value, 'yyyy/mm/dd');
  494. },
  495. // 搜索框
  496. open(e) {
  497. console.log('搜索框open', e);
  498. },
  499. close(e) {
  500. this.showSearch = false
  501. console.log('搜索框close', e);
  502. },
  503. /** 搜索按钮操作 */
  504. handleQuery() {
  505. this.showSearch = false
  506. this.queryParams.pageNo = 1
  507. this.getData(this.queryParams.pageNo)
  508. },
  509. // ===搜索框结束=============================
  510. // =====复选框====================================
  511. restReviewform() {
  512. this.reviewFromdata = {
  513. broadId: 0,
  514. dangerMapList: [],
  515. handleMethod: "",
  516. handleResult: "",
  517. handleTime: "",
  518. orgId: 0,
  519. receiver: 0,
  520. sender: 0,
  521. }
  522. },
  523. sexSelect(e) {
  524. this.reviewFromdata.receiver = e.id;
  525. this.reviewFromdata.receiverName = e.name;
  526. },
  527. confirmReviewTime(e) {
  528. console.log("e: ", e);
  529. var time = uni.$u.timeFormat(e.value, 'yyyy-mm-dd');
  530. this.reviewFromdata.handleTime = time
  531. this.showHandleTime = false
  532. // this.list5=[]
  533. },
  534. changeReviewTime(e) {
  535. console.log("e: ", e);
  536. },
  537. listItemChecked(val, index) {
  538. this.tableData[index].checked = !this.tableData[index].checked
  539. this.dangerIds.push(val.id)
  540. this.$forceUpdate()
  541. // val.checked=!val.checked
  542. },
  543. sureBtn() { //确认
  544. this.current = 1
  545. this.dangerIdStatus.dangerStatus = 1
  546. this.dangerIdStatus.dangerIds = Array.from(new Set(this.dangerIds)) //去重
  547. console.log(this.dangerIdStatus, 'this.dangerIdStatusthis.dangerIdStatus');
  548. batchSetDangerStatus(JSON.stringify(this.dangerIdStatus)).then(res => {
  549. console.log(res, 'resresres');
  550. if (res.data) {
  551. this.current = 1
  552. this.queryParams.dengerStatus = 1
  553. this.getData(1)
  554. }
  555. })
  556. },
  557. reviewBtn() {
  558. console.log("this.$store.state: ", this.$store.state);
  559. let list = this.tableData
  560. let checedkList = list.filter(i => i.checked == true)
  561. if (checedkList.length == 0) {
  562. this.$modal.msgError('请先选择隐患')
  563. return
  564. }
  565. const newArr = checedkList.map(item => item.orgId);
  566. const isRepeat = Array.from(new Set(newArr)) //去重
  567. if (isRepeat.length > 1) {
  568. this.$modal.msgError('单位所属不一致')
  569. return
  570. }
  571. console.log(isRepeat, 'isRepeatisRepeat');
  572. getSelfEmp({
  573. orgId: isRepeat[0]
  574. }).then(response => {
  575. this.showreview = true,
  576. // this.list5 = response.data;
  577. response.data.map(i => {
  578. this.list5.push({
  579. id: i.accountId,
  580. name: i.empRyxm
  581. });
  582. // i.title = i.empRyxm
  583. // i.image = i.image ? i.image : ''
  584. })
  585. // this.list5 = response.data;
  586. console.log("this.list5: ", this.list5);
  587. });
  588. },
  589. onreviewclick() {
  590. let list = this.tableData
  591. let checedkList = list.filter(i => i.checked == true)
  592. if (checedkList.length == 0) {
  593. this.$modal.msgError('请先选择隐患')
  594. return
  595. }
  596. const newArr = checedkList.map(item => item.orgId);
  597. console.log("newArr: ", newArr);
  598. const isRepeat = Array.from(new Set(newArr)) //去重
  599. console.log("isRepeat: ", isRepeat, isRepeat[0]);
  600. if (isRepeat.length > 1) {
  601. this.$modal.msgError('单位所属不一致')
  602. return
  603. }
  604. var dangerMapList = []
  605. checedkList.map(i => {
  606. dangerMapList.push({
  607. id: i.id,
  608. insp_id: i.insp_id,
  609. org_id: i.org_id,
  610. task_id: i.task_id,
  611. broad_id: i.broad_id
  612. })
  613. })
  614. this.reviewFromdata.broadId = checedkList[0].broad_id //后端返回的checedkList中的broad_id都相同,取任意一个就行
  615. this.reviewFromdata.dangerMapList = dangerMapList
  616. this.reviewFromdata.orgId = isRepeat[0]
  617. // this.reviewFromdata.receiver = this.list5[this.current].accountId
  618. this.reviewFromdata.sender = this.$store.state.user.id
  619. console.log("formdata: ", this.reviewFromdata);
  620. // 如果有错误,会在catch中返回报错信息数组,校验通过则在then中返回true
  621. this.$refs.reviewfrom.validate().then(res => {
  622. // uni.$u.toast('校验通过')
  623. dangeRreview(this.reviewFromdata).then(response => {
  624. if (response.data) this.$modal.msgSuccess('修改成功')
  625. this.showreview = false
  626. this.list5=[]
  627. this.restReviewform()
  628. this.getData(1)
  629. });
  630. }).catch(errors => {
  631. console.log(errors);
  632. // uni.$u.toast('校验失败')/
  633. })
  634. },
  635. swiperClick(e) {
  636. console.log("e: ", e);
  637. }
  638. }
  639. }
  640. </script>
  641. <style scoped lang="scss">
  642. ::v-deep .u-list-item {
  643. transition: border linear .2s, box-shadow linear .5s;
  644. -moz-transition: border linear .2s, -moz-box-shadow linear .5s;
  645. -webkit-transition: border linear .2s, -webkit-box-shadow linear .5s;
  646. outline: none;
  647. border-color: rgba(86, 165, 168, 0.4);
  648. box-shadow: 0 0 8px rgba(93, 149, 242, .105);
  649. -moz-box-shadow: 0 0 8px rgba(93, 149, 242, .5);
  650. -webkit-box-shadow: 0 0 8px rgb(86, 165, 168);
  651. }
  652. .addInsp {
  653. width: 40px;
  654. position: fixed;
  655. right: 4px;
  656. z-index: 99999;
  657. }
  658. ::v-deep .u-icon__icon {
  659. margin-right: 0px !important;
  660. }
  661. .searchpopup {
  662. height: 60vh;
  663. display: flex;
  664. justify-content: center;
  665. padding: 20rpx
  666. }
  667. .tupian {
  668. width: 48rpx;
  669. height: 48rpx;
  670. }
  671. .review-button {
  672. position: fixed;
  673. bottom: 0rpx;
  674. width: 100%;
  675. background: #F5F7F9;
  676. height: 100rpx;
  677. display: flex;
  678. align-items: center;
  679. }
  680. /deep/.u-action-sheet {
  681. overflow-y: auto;
  682. height: 1000rpx;
  683. background-color: #fff;
  684. }
  685. </style>