checkMainPoints.vue 29 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111
  1. <template>
  2. <view class="checkMainPoints">
  3. <u-navbar :title="ifSearchMod?'':'查核要点'" title-color="#292C33">
  4. <view v-if="ifSearchMod" class="slot-wrap" back-icon-size="25rpx">
  5. <input confirm-type="search" class="searchBar" type="text" v-model="searchKey" @input="filterFromName"
  6. placeholder-class="searchBarHolder" placeholder="搜索查核要点或查核项" />
  7. <image @click="clearSearch" v-if="searchKey" class="clearIcon" src="../../static/text-clear.png"
  8. mode=""></image>
  9. </view>
  10. <view v-if="ifSearchMod" class="navbar-right" slot="right">
  11. <text @click="cancelSearchMod" class="searchActiveBtn">取消</text>
  12. </view>
  13. </u-navbar>
  14. <uni-popup ref="popup" type="center" :maskClick="true" @change="onMaskChange"></uni-popup>
  15. <tm-top-menu v-if="!ifSearchMod" class="tm-top-menu">
  16. <template v-if="situationType != 2">
  17. <view class="top-search">
  18. <view class="search">
  19. <input confirm-type="search" @input="filterFromName" placeholder="搜索查核要点或查核项" />
  20. <image src="../../static/search.png"></image>
  21. </view>
  22. <view class="btnGroup">
  23. <image @click="toBindPeople(true)" class="searchBtn" src="../../static/bindPeople.png" mode="">
  24. </image>
  25. <image @click="openFilter" class="filterBtn" src="../../static/filterIcon.png" mode="">
  26. </image>
  27. </view>
  28. <!-- <view class="top-btn-wrap">
  29. <view class="btn-list" v-if="nowPermission == 3">
  30. <com-button v-for="(item, index) in btnArr" :btnText="item.label"
  31. :type="active === item.id ? 'pramary':'default'" v-on:btnClick="btnClick(item.id)" />
  32. </view>
  33. <view class="select-wrap" v-else-if="nowPermission == 2 || nowPermission == 1"
  34. @click="toggleModal(!showModal)">
  35. <text>{{getCheckPointName}}</text>
  36. <image :src="`../../static/${showModal?'open':'close'}-icon.png`"></image>
  37. </view>
  38. </view> -->
  39. </view>
  40. </template>
  41. <!-- 查核分页模式下// -->
  42. <template v-if="situationType == 2">
  43. <view class="top-search-two">
  44. <view class="rowOne" v-if="nowPermission == 3 && situationType == 2">
  45. <view class="selectPeople" @click="toSelectVisiter">
  46. <template v-if="investigationUsers.length>0">
  47. <image
  48. v-if="currentSelectedInvestigationUser&&currentSelectedInvestigationUser['investigationStatus'] != 1"
  49. class="completePeopleIcon" src="../../static/peopleIcon.png" mode=""></image>
  50. <image
  51. v-if="currentSelectedInvestigationUser&&currentSelectedInvestigationUser['investigationStatus'] == 1"
  52. class="completePeopleIcon" src="../../static/completePeopleIcon.png" mode="">
  53. </image>
  54. <text
  55. class="peopleName">{{currentSelectedInvestigationUser?currentSelectedInvestigationUser['investigationUserName']:''}}</text>
  56. <image class="fullArrow" src="../../static/close-icon.png" mode=""></image>
  57. </template>
  58. <template v-if="investigationUsers.length==0">
  59. <image @click="toSelectVisiter" class="addPeopleBtn" src="../../static/icon-add.png"
  60. mode=""></image>
  61. </template>
  62. </view>
  63. <view class="btnGroup">
  64. <image @click="toSearch" class="searchBtn" src="../../static/search.png" mode=""></image>
  65. <image @click="openFilter" class="filterBtn" src="../../static/filterIcon.png" mode="">
  66. </image>
  67. </view>
  68. </view>
  69. </view>
  70. </template>
  71. <!-- 只有当查核者进入才展示 -->
  72. <view class="rowTwo" v-if="nowPermission == 3" :animation="animationData">
  73. <text class="rowTwoName">查核状态</text>
  74. <view class="filterBtnWrap">
  75. <com-button v-for="(item, index) in btnArr" :btnText="item.label" :width="350" :height="80"
  76. :type="active === item.id ? 'pramary':'default'" v-on:btnClick="btnClick(item.id)" />
  77. </view>
  78. </view>
  79. </tm-top-menu>
  80. <tm-modal v-show="showModal" v-on:click="toggleModal(false)">
  81. <view class="content-list">
  82. <view class="list-item" v-for="(item, index) in point"
  83. :class="{active: checkPointId === item.checkPointId}" @click="checkPointHandle(item.checkPointId)">
  84. <text>{{item.checkPointName}}</text>
  85. <image class="check-img" v-if="checkPointId === item.checkPointId"
  86. src="../../static/checkStatus.png"></image>
  87. </view>
  88. </view>
  89. </tm-modal>
  90. <view class="contentContainer">
  91. <scroll-view @scroll="scrollHandle" scroll-y="true"
  92. :class="(detailList.length>0&&active != 2&&finishedStatus != 1)?'scroll-Y':'scroll-Y noBtn'">
  93. <view class="list" v-for="(item, index) in detailList" :key="index">
  94. <view class="title" v-if="item.responseList.length > 0">查核要点:{{item.checkPointName}}</view>
  95. <view class="item" v-for="(child, n) in item.responseList"
  96. @click="childClick(child,item.checkPointId)" :key="n">
  97. <view class="top-box">
  98. <view class="top-box-left">
  99. <view :class="[child.completeFlag?'index-icon done':'index-icon']">{{n + 1}}</view>
  100. <text>{{child.checkItemName}}</text>
  101. <!-- <text>ICU病房查看危重病人的抢救全过程(访谈)ICU病房查看危重病人的抢救全过程(访谈)ICU病房查看危重病人的抢救全过程(访谈)的抢救全过程(访谈)</text> -->
  102. </view>
  103. <view class="topRightGroup">
  104. <!-- showNotApplicable==0展示,1不展示 -->
  105. <view class="checkStatus" v-if="!child.showNotApplicable"
  106. @click.stop="checkNoApplicable(child)">
  107. <image v-if="child.isNoApplicable&&!notApplicableList.includes(child.id)"
  108. class="checkIcon" src="../../static/check-no.png" mode=""></image>
  109. <image v-if="notApplicableList.includes(child.id)||!child.isNoApplicable"
  110. class="checkIcon" src="../../static/check-checkbox.png" mode=""></image>
  111. <text class="checkStatusText">{{child.notApplicableName}}</text>
  112. </view>
  113. <image src="../../static/tuli.png"
  114. @tap.stop="goLegendDetails($event ,child.checkItemId, item.checkPointId)"></image>
  115. </view>
  116. </view>
  117. <view class="children">
  118. <view class="child">
  119. <text>{{child.deptName || '--'}}</text>
  120. <text>查核单位</text>
  121. </view>
  122. <view class="child">
  123. <text>{{child.checkModelName || '--'}}</text>
  124. <text>查核方式</text>
  125. </view>
  126. <view class="child">
  127. <text :style="{color:`#${child.lastResultColor}`}">{{child.lastResult || '--'}}</text>
  128. <text>上次结果</text>
  129. </view>
  130. <view class="child">
  131. <text :style="{color:`#${child.checkResultColor}`}">{{child.checkResult || '--'}}</text>
  132. <text>本次结果</text>
  133. </view>
  134. </view>
  135. </view>
  136. </view>
  137. </scroll-view>
  138. </view>
  139. <tm-callback-listpage />
  140. <view class="bottomBtnGroup" v-if="!ifSearchMod">
  141. <view class="score">
  142. <view class="box">
  143. <text class="label">得分</text>
  144. <text class="currentScore">{{currentScore}}</text>
  145. </view>
  146. <view class="midLine"></view>
  147. <view class="box">
  148. <text class="label">总分</text>
  149. <text class="totalScore">{{totalScore}}</text>
  150. </view>
  151. </view>
  152. <view v-if="detailList.length>0&&active != 2&&finishedStatus != 1" @click="onkeyCheckHandle"
  153. class="botOneKeyCheck">完成</view>
  154. </view>
  155. <!-- <view v-if="detailList.length>0&&active != 2&&finishedStatus != 1" @click="onkeyCheckHandle" class="botOneKeyCheck">完成</view> -->
  156. </view>
  157. </template>
  158. <script>
  159. import {
  160. mapState
  161. } from 'vuex';
  162. import {
  163. _stopPropagation
  164. } from "../../utils/compatible.js";
  165. export default {
  166. data() {
  167. return {
  168. btnArr: [{
  169. id: 0,
  170. label: '全部'
  171. },
  172. {
  173. id: 1,
  174. label: '未查核'
  175. },
  176. {
  177. id: 2,
  178. label: '已查核'
  179. },
  180. ],
  181. showModal: false,
  182. detailList: [],
  183. copyDetailList: [],
  184. point: [{
  185. checkPointId: 'all',
  186. checkPointName: '全部要点'
  187. }],
  188. checkPointId: 'all',
  189. nowPermission: uni.getStorageSync('nowPermission'),
  190. active: 0,
  191. checkId: '',
  192. deptId: '',
  193. currentScrollHeight: 0,
  194. finishedStatus: 0, //所有计划里的查核项是否都以完成
  195. totalScore: 0,
  196. currentScore: 0,
  197. animationData: {}, //动画对象
  198. ifOpenFilter: false,
  199. searchKey: '', //搜索关键字
  200. ifSearchMod: false, //搜索模式
  201. applicable: true, //是否适用
  202. situationType: null, //情境类型
  203. notApplicableList: [], //保存本次check的查核项id
  204. };
  205. },
  206. computed: {
  207. ...mapState({
  208. investigationUsers: state => state.checkMainPoints.investigationUsers,
  209. currentSelectedInvestigationUser: state => state.checkMainPoints.currentSelectedInvestigationUser,
  210. ifUpdate:state => state.checkMainPoints.ifUpdate,
  211. }),
  212. getCheckPointName() {
  213. let item = this.point.find((item) => item.checkPointId === this.checkPointId);
  214. return item ? item.checkPointName : '';
  215. }
  216. },
  217. watch: {
  218. currentSelectedInvestigationUser(newVal, oldVal) {
  219. if (this.situationType == 2) {
  220. //更换受访对象时拉取新数据
  221. if (newVal && newVal.investigationUserName == '') {
  222. //已删除所有访查对象
  223. this.$store.commit('checkMainPoints/comChangeState', {
  224. key: 'detailList',
  225. data: []
  226. });
  227. this.detailList = [];
  228. } else {
  229. this.loadItemData();
  230. }
  231. }
  232. }
  233. },
  234. onLoad: function({
  235. checkId,
  236. deptId,
  237. finishedStatus,
  238. situationType
  239. }) {
  240. this.deptId = deptId;
  241. this.checkId = checkId;
  242. this.finishedStatus = finishedStatus;
  243. this.situationType = situationType;
  244. if (situationType == 2) {
  245. this.getInvestigationUsers();
  246. }
  247. //非分页情况下
  248. if (situationType != 2) {
  249. this.loadItemData();
  250. }
  251. },
  252. onShow: function() {
  253. if (this.ifUpdate) {
  254. //页面重新拉取数据
  255. this.loadItemData();
  256. }
  257. //创建动画实例
  258. const animation = uni.createAnimation({
  259. duration: 300,
  260. timingFunction: 'ease',
  261. })
  262. this.animation = animation;
  263. },
  264. onUnload() {
  265. this.$store.commit('checkMainPoints/comChangeState',{key:'ifUpdate',data:false});
  266. },
  267. methods: {
  268. //绑定当事人
  269. /**
  270. * @param {Boolean} bool true直接执行设置当事人,忽略本地以缓存的deptTd
  271. */
  272. toBindPeople(bool) {
  273. if(this.isBindResponsible&&bool){
  274. uni.showToast({
  275. icon:'none',
  276. title: '已绑定过当事人!',
  277. duration: 2000
  278. });
  279. return;
  280. };
  281. let notNowBindPeopledeptIds = uni.getStorageSync('notNowBindPeopledeptIds');
  282. if(!notNowBindPeopledeptIds){
  283. notNowBindPeopledeptIds = []
  284. }else {
  285. notNowBindPeopledeptIds = JSON.parse(notNowBindPeopledeptIds);
  286. }
  287. if (!notNowBindPeopledeptIds.includes(this.deptId)||bool) {
  288. const nowPermission = JSON.parse(uni.getStorageSync('nowPermission'));
  289. if (!this.isBindResponsible && this.checkDetailMapResponses.length > 0 && nowPermission == 3) {
  290. //当未绑定当事人状态为false,可查核项大于0且当前角色是查核组员时
  291. //只有从查核列表进来才提示
  292. uni.showModal({
  293. title: '提示',
  294. content: '目前未批量分配当事人,是否前往选择?',
  295. confirmText: '前往设置',
  296. cancelText: '暂不设置',
  297. success: (res) => {
  298. if (res.confirm) {
  299. uni.navigateTo({
  300. url: `/pages/responsibleList/responsibleList?deptId=${this.deptId}&isFromCheckMainPoints=true`,
  301. });
  302. } else if (res.cancel) {
  303. //将当前病区保存,之后不在提示
  304. notNowBindPeopledeptIds.push(this.deptId);
  305. uni.setStorageSync('notNowBindPeopledeptIds',JSON.stringify(notNowBindPeopledeptIds));
  306. }
  307. }
  308. });
  309. }
  310. }
  311. },
  312. loadItemData() {
  313. this.checkTaskDetailList({
  314. 'deptId': this.deptId,
  315. 'checkId': this.checkId,
  316. 'situationType': this.situationType,
  317. 'investigationUserName': this.currentSelectedInvestigationUser && this
  318. .currentSelectedInvestigationUser.investigationUserName
  319. })
  320. },
  321. //不适用回调
  322. checkNoApplicable({
  323. id,
  324. isNoApplicable
  325. }) {
  326. this.$store.dispatch({
  327. type: 'checkMainPoints/commActions',
  328. key: 'oneKeyNotApplicable',
  329. data: id
  330. }).then(data => {
  331. if (data) {
  332. //重新拉去列表数据
  333. this.loadItemData();
  334. }
  335. })
  336. },
  337. toSelectVisiter() {
  338. //更新受访对象状态,可能已经是进行中了
  339. this.$store.dispatch({
  340. type: 'checkMainPoints/commActions',
  341. key: 'getInvestigationUsers',
  342. data: {
  343. checkId: this.checkId,
  344. situationType: this.situationType,
  345. deptId: this.deptId
  346. }
  347. }).then(data => {
  348. this.$store.commit('checkMainPoints/comChangeState', {
  349. key: 'investigationUsers',
  350. data: data
  351. });
  352. uni.navigateTo({
  353. url: `/pages/selectVisitPerson/selectVisitPerson?checkId=${this.checkId}&situationType=${this.situationType}&deptId=${this.deptId}`
  354. });
  355. });
  356. },
  357. toSearch() {
  358. this.ifSearchMod = true;
  359. this.detailList = [];
  360. },
  361. cancelSearchMod() {
  362. this.ifSearchMod = false;
  363. this.detailList = [...this.copyDetailList];
  364. },
  365. onMaskChange({
  366. show
  367. }) {
  368. if (!show) {
  369. this.ifOpenFilter = false;
  370. this.animation.height(0).step();
  371. this.animationData = this.animation.export()
  372. }
  373. },
  374. openFilter() {
  375. const status = this.ifOpenFilter;
  376. if (!status) {
  377. this.$refs.popup.open();
  378. this.ifOpenFilter = true;
  379. this.animation.height('11vh').step();
  380. } else {
  381. this.$refs.popup.close();
  382. this.ifOpenFilter = false;
  383. this.animation.height(0).step();
  384. }
  385. this.animationData = this.animation.export()
  386. },
  387. //滚动监听事件,记录滚动高度
  388. scrollHandle(e) {
  389. this.currentScrollHeight = e.detail.scrollTop;
  390. },
  391. //一键查核
  392. onkeyCheckHandle() {
  393. uni.showModal({
  394. title: '注意',
  395. content: '确定所有未填写查核结果项默认无缺失结果吗?',
  396. success: (res) => {
  397. if (res.confirm) {
  398. console.log('用户点击确定');
  399. this.oneKeyCheckCommit();
  400. } else if (res.cancel) {
  401. console.log('用户点击取消');
  402. }
  403. }
  404. });
  405. },
  406. oneKeyCheckCommit() {
  407. let ids = [];
  408. // console.log('this.detailList',this.detailList);
  409. this.detailList.forEach(item => {
  410. // console.log(item.responseList);
  411. //筛选掉已查核项
  412. const temp = item.responseList.filter(v => !v.checkResult);
  413. const arr = temp.map(v => v.id);
  414. ids = ids.concat(arr);
  415. });
  416. this.$store.dispatch({
  417. type: 'checkMainPoints/commActions',
  418. key: 'oneKeyCheck',
  419. data: ids
  420. }).then(data => {
  421. if (data) {
  422. uni.showModal({
  423. title: '查核完成!',
  424. content: '',
  425. showCancel: false,
  426. success: function(res) {
  427. if (res.confirm) {
  428. console.log('用户点击确定');
  429. uni.navigateBack({
  430. delta: 1
  431. });
  432. }
  433. }
  434. });
  435. }
  436. });
  437. },
  438. btnClick(id) {
  439. // console.log({id});
  440. this.active = id;
  441. this.filterCompleteFlag(id);
  442. },
  443. //获取访查对象列表
  444. getInvestigationUsers() {
  445. this.$store.dispatch({
  446. type: 'checkMainPoints/commActions',
  447. key: 'getInvestigationUsers',
  448. data: {
  449. checkId: this.checkId,
  450. situationType: this.situationType,
  451. deptId: this.deptId
  452. }
  453. }).then(data => {
  454. this.$store.commit('checkMainPoints/comChangeState', {
  455. key: 'investigationUsers',
  456. data: data
  457. });
  458. this.$store.commit('checkMainPoints/comChangeState', {
  459. key: 'currentSelectedInvestigationUser',
  460. data: data[0]
  461. })
  462. });
  463. },
  464. checkTaskDetailList({
  465. checkId,
  466. deptId,
  467. situationType,
  468. investigationUserName
  469. }) {
  470. const params = {
  471. checkId,
  472. deptId,
  473. situationType,
  474. }
  475. //增加受访人
  476. if (situationType == 2) params['investigationUser'] = investigationUserName;
  477. this.dispatch('checkTaskDetailList', {
  478. ...params
  479. }).then((data) => {
  480. if (data) {
  481. if (!data.checkDetailMapResponses) return;
  482. this.$store.commit('checkMainPoints/comChangeState', {
  483. key: 'detailList',
  484. data: data.checkDetailMapResponses
  485. });
  486. this.isBindResponsible = data.isBindResponsible;
  487. this.detailList = data.checkDetailMapResponses;
  488. this.copyDetailList = data.checkDetailMapResponses;
  489. this.currentScore = data.getScore;
  490. this.totalScore = data.totalScore;
  491. this.checkDetailMapResponses = data.checkDetailMapResponses;
  492. data.checkDetailMapResponses.map(({
  493. checkPointId,
  494. checkPointName
  495. }) => {
  496. this.point.push({
  497. checkPointId,
  498. checkPointName
  499. });
  500. });
  501. //检查是否需要弹绑定当事人弹窗
  502. this.toBindPeople();
  503. //页面获取完数据时,保持筛选
  504. this.filterCompleteFlag(this.active);
  505. }
  506. });
  507. },
  508. childClick(child, checkPointId) {
  509. // 查核者,管理员
  510. if (this.nowPermission == 1 || this.nowPermission == 3) {
  511. let str = '',
  512. that = this;
  513. if (child.checkResult && !child.allowEdit) {
  514. // 当存在查核结果且不允许再修改时 跳转到查核项详情
  515. str = 'auditItemDetails/auditItemDetails';
  516. } else {
  517. if (this.nowPermission == 1) {
  518. uni.showModal({
  519. title: '提示',
  520. content: '请切换至查核者角色再进行查核操作!',
  521. showCancel: false
  522. });
  523. return;
  524. } else {
  525. // 跳转到查核结果提交
  526. str = 'mainPointsDetail/mainPointsDetail';
  527. }
  528. }
  529. uni.navigateTo({
  530. url: `/pages/${str}?id=${child.id}&checkPointId=${checkPointId}&checkItemId=${child.checkItemId}&situationType=${this.situationType}`,
  531. success: function(res) {
  532. const currentGroup = that.detailList.filter(item => item.checkPointId ==
  533. checkPointId);
  534. // 通过eventChannel向被打开页面传送数据
  535. res.eventChannel.emit('acceptDataFromOpenerPage', {
  536. data: currentGroup
  537. });
  538. }
  539. });
  540. }
  541. },
  542. toggleModal(flage) {
  543. this.showModal = flage;
  544. },
  545. checkPointHandle(id) {
  546. this.checkPointId = id;
  547. if (id === 'all') {
  548. this.detailList = [...this.copyDetailList];
  549. } else {
  550. this.detailList = this.copyDetailList
  551. .filter((item) => item.checkPointId === id);
  552. }
  553. },
  554. filterCompleteFlag(btnId) {
  555. if (btnId === 0) {
  556. this.detailList = [...this.copyDetailList];
  557. } else {
  558. let completeFlag = btnId === 1 ? false : true;
  559. this.detailList = this.copyDetailList.map((item) => {
  560. return {
  561. ...item,
  562. responseList: item.responseList
  563. .filter((child) => child.completeFlag === completeFlag)
  564. }
  565. });
  566. }
  567. },
  568. clearSearch() {
  569. this.searchKey = '';
  570. this.detailList = [...this.copyDetailList];
  571. },
  572. filterFromName(e) {
  573. const {
  574. value
  575. } = e.detail;
  576. this.searchKey = value;
  577. if (value === '') {
  578. this.detailList = [...this.copyDetailList];
  579. } else {
  580. this.detailList = [];
  581. this.copyDetailList.map((item) => {
  582. let responseList = item.responseList
  583. .filter((child) => child.checkItemName.indexOf(value) >= 0);
  584. if (item.checkPointName.indexOf(value) >= 0) {
  585. this.detailList.push({
  586. ...item
  587. });
  588. } else if (responseList.length > 0) {
  589. this.detailList.push({
  590. ...item,
  591. responseList
  592. });
  593. }
  594. });
  595. }
  596. },
  597. goLegendDetails(e, checkItemId, checkPointId) {
  598. _stopPropagation(e);
  599. //跳转到图例详情
  600. uni.navigateTo({
  601. url: `/pages/legendDetails/legendDetails?checkItemId=${checkItemId}&checkPointId=${checkPointId}`
  602. });
  603. },
  604. dispatch(key, data) {
  605. return this.$store.dispatch({
  606. type: 'checkList/commActions',
  607. key,
  608. data
  609. });
  610. },
  611. }
  612. }
  613. </script>
  614. <style lang="less">
  615. .checkMainPoints {
  616. position: relative;
  617. height: 100%;
  618. display: flex;
  619. flex-direction: column;
  620. // font-size: 22.5rpx;
  621. // line-height: 33.75rpx;
  622. background-color: #F5F6FA;
  623. .slot-wrap {
  624. display: flex;
  625. flex: 1;
  626. justify-content: center;
  627. align-items: center;
  628. background: #F0F2F7;
  629. border-radius: 44px;
  630. padding-left: 20rpx;
  631. .searchBar {
  632. flex: 1;
  633. width: 100%;
  634. height: 55rpx;
  635. font-size: 22.5rpx;
  636. }
  637. .clearIcon {
  638. width: 25rpx;
  639. height: 25rpx;
  640. margin: 0 20.5rpx;
  641. }
  642. .searchBarHolder {
  643. font-size: 22.5rpx;
  644. font-family: SourceHanSansCN-Normal, SourceHanSansCN;
  645. font-weight: 400;
  646. color: #A1A7B3;
  647. }
  648. }
  649. .navbar-right {
  650. display: flex;
  651. justify-content: center;
  652. align-items: center;
  653. padding: 0 25rpx;
  654. .searchActiveBtn {
  655. font-size: 22.5rpx;
  656. font-family: SourceHanSansCN-Normal, SourceHanSansCN;
  657. font-weight: 400;
  658. color: #292C33;
  659. }
  660. }
  661. .botOneKeyCheck {
  662. text-align: center;
  663. height: 75rpx;
  664. width: 100%;
  665. line-height: 75rpx;
  666. font-size: 22.5rpx;
  667. font-family: SourceHanSansCN-Normal, SourceHanSansCN;
  668. font-weight: 400;
  669. color: #FFFFFF;
  670. background: #3377FF;
  671. }
  672. .bottomBtnGroup {
  673. // position: fixed;
  674. width: 100%;
  675. // left:0;
  676. // bottom: 0;
  677. display: flex;
  678. flex-direction: row;
  679. border-top: 1px solid #DADEE6;
  680. background-color: #fff;
  681. .score {
  682. display: flex;
  683. width: 50%;
  684. flex-direction: row;
  685. justify-content: center;
  686. align-items: center;
  687. height: 75rpx;
  688. .box {
  689. width: 50%;
  690. text-align: center;
  691. white-space: nowrap;
  692. vertical-align: bottom;
  693. .label {
  694. color: #666E80;
  695. font-size: 17.5rpx;
  696. margin-right: 10rpx;
  697. }
  698. .currentScore {
  699. font-size: 30rpx;
  700. font-weight: bold;
  701. color: #3377FF;
  702. }
  703. .totalScore {
  704. font-size: 30rpx;
  705. font-weight: bold;
  706. color: #292C33;
  707. }
  708. }
  709. .midLine {
  710. height: 17.5rpx;
  711. border-left: 0.62rpx solid #DADEE6;
  712. }
  713. }
  714. .botOneKeyCheck {
  715. text-align: center;
  716. height: 75rpx;
  717. flex-grow: 1;
  718. line-height: 75rpx;
  719. font-size: 22.5rpx;
  720. font-family: SourceHanSansCN-Normal, SourceHanSansCN;
  721. font-weight: 400;
  722. color: #FFFFFF;
  723. background: #3377FF;
  724. }
  725. }
  726. .tm-top-menu {
  727. .rowTwo {
  728. display: flex;
  729. width: 100%;
  730. height: 0;
  731. overflow: hidden;
  732. flex-direction: column;
  733. box-sizing: border-box;
  734. padding: 0 25rpx;
  735. overflow: hidden;
  736. .rowTwoName {
  737. font-size: 22.5rpx;
  738. font-family: SourceHanSansCN-Normal, SourceHanSansCN;
  739. font-weight: 400;
  740. color: #666F80;
  741. margin-bottom: 12.5rpx;
  742. padding-top: 35rpx;
  743. }
  744. .filterBtnWrap {
  745. display: flex;
  746. flex-direction: row;
  747. justify-content: space-between;
  748. }
  749. }
  750. }
  751. .top-search {
  752. display: flex;
  753. flex-direction: row;
  754. align-items: center;
  755. justify-content: space-between;
  756. padding: 25rpx;
  757. background-color: #fff;
  758. box-shadow: 0 3.75rpx 12.5rpx 0 rgba(0, 13, 51, 0.1);
  759. .search {
  760. position: relative;
  761. width: 70%;
  762. height: 55rpx;
  763. line-height: 55rpx;
  764. background-color: #F0F2F7;
  765. input {
  766. padding: 0 45rpx 0 15rpx;
  767. height: 55rpx;
  768. line-height: 55rpx;
  769. font-size: 22.5rpx;
  770. }
  771. image {
  772. position: absolute;
  773. top: 16.87rpx;
  774. right: 15rpx;
  775. width: 21.25rpx;
  776. height: 21.25rpx;
  777. }
  778. }
  779. .btnGroup {
  780. display: flex;
  781. flex-direction: row;
  782. justify-content: center;
  783. align-items: center;
  784. .searchBtn {
  785. width: 30rpx;
  786. height: 30rpx;
  787. margin-right: 30rpx;
  788. }
  789. .filterBtn {
  790. width: 30rpx;
  791. height: 27.5rpx;
  792. }
  793. }
  794. .top-btn-wrap {
  795. padding-left: 25rpx;
  796. .btn-list {
  797. display: flex;
  798. flex-direction: row;
  799. .com-button {
  800. margin-left: 5rpx;
  801. &:first-child {
  802. margin-left: 0;
  803. }
  804. }
  805. }
  806. .select-wrap {
  807. display: flex;
  808. flex-direction: row;
  809. align-items: center;
  810. white-space: nowrap;
  811. image {
  812. margin-left: 9.37rpx;
  813. width: 12.5rpx;
  814. height: 12.5rpx;
  815. }
  816. }
  817. }
  818. }
  819. .top-search-two {
  820. display: flex;
  821. flex-direction: column;
  822. align-items: flex-start;
  823. justify-content: center;
  824. padding: 25rpx;
  825. background-color: #fff;
  826. box-shadow: 0 3.75rpx 12.5rpx 0 rgba(0, 13, 51, 0.1);
  827. .rowOne {
  828. display: flex;
  829. width: 100%;
  830. flex-direction: row;
  831. justify-content: space-between;
  832. align-items: center;
  833. .selectPeople {
  834. display: flex;
  835. flex-direction: row;
  836. justify-content: space-between;
  837. align-items: center;
  838. .completePeopleIcon {
  839. width: 50rpx;
  840. height: 50rpx;
  841. margin-right: 15rpx;
  842. }
  843. .peopleName {
  844. font-size: 25rpx;
  845. font-family: SourceHanSansCN-Normal, SourceHanSansCN;
  846. font-weight: 400;
  847. color: #292C33;
  848. }
  849. .fullArrow {
  850. width: 11.25rpx;
  851. height: 7.5rpx;
  852. margin-left: 15rpx;
  853. }
  854. .addPeopleBtn {
  855. width: 30rpx;
  856. height: 30rpx;
  857. margin-right: 12.5rpx;
  858. }
  859. }
  860. .btnGroup {
  861. .searchBtn {
  862. width: 30rpx;
  863. height: 30rpx;
  864. margin-right: 50rpx;
  865. }
  866. .filterBtn {
  867. width: 30rpx;
  868. height: 27.5rpx;
  869. }
  870. }
  871. }
  872. }
  873. .content-list {
  874. // padding-top: 105rpx;
  875. width: 100%;
  876. background-color: #fff;
  877. .list-item {
  878. display: flex;
  879. flex-direction: row;
  880. justify-content: space-between;
  881. align-items: center;
  882. border-bottom: 1px solid #DADEE6;
  883. padding: 0 25rpx;
  884. width: 100%;
  885. height: 87.5rpx;
  886. font-size: 22.5rpx;
  887. line-height: 33.75rpx;
  888. color: #292C33;
  889. .check-img {
  890. float: right;
  891. width: 19.37rpx;
  892. height: 14.37rpx;
  893. }
  894. &.active {
  895. color: #3377FF;
  896. }
  897. }
  898. }
  899. .contentContainer {
  900. display: flex;
  901. flex: 1;
  902. height: 100%;
  903. overflow: hidden;
  904. .scroll-Y {
  905. height: 100%;
  906. &.noBtn {
  907. height: 100%;
  908. }
  909. }
  910. }
  911. .list {
  912. .title {
  913. padding-left: 25rpx;
  914. width: 100%;
  915. height: 62.5rpx;
  916. line-height: 62.5rpx;
  917. color: #666F80;
  918. }
  919. .item {
  920. margin-top: 15rpx;
  921. padding: 25rpx 0;
  922. min-height: 167.5rpx;
  923. background-color: #fff;
  924. &:nth-child(2) {
  925. margin-top: 0;
  926. }
  927. .top-box {
  928. display: flex;
  929. flex-direction: row;
  930. justify-content: space-between;
  931. align-items: center;
  932. .top-box-left {
  933. display: flex;
  934. flex-direction: row;
  935. width: calc(100% - 55rpx);
  936. .index-icon {
  937. margin-right: 15rpx;
  938. border-radius: 0 62.5rpx 62.5rpx 0;
  939. width: 50rpx;
  940. height: 35rpx;
  941. line-height: 35rpx;
  942. text-align: center;
  943. color: #fff;
  944. background-color: #66B2FE;
  945. &.done {
  946. background-color: rgba(195, 202, 217, 1);
  947. }
  948. }
  949. >text {
  950. display: -webkit-box;
  951. overflow: hidden;
  952. width: calc(100% - 65rpx);
  953. text-overflow: ellipsis;
  954. -webkit-line-clamp: 2;
  955. /*! autoprefixer: off */
  956. -webkit-box-orient: vertical;
  957. }
  958. }
  959. .topRightGroup {
  960. display: flex;
  961. flex-direction: row;
  962. .checkStatus {
  963. display: flex;
  964. flex-direction: row;
  965. justify-content: center;
  966. align-items: center;
  967. width: 125rpx;
  968. height: 40rpx;
  969. margin-right: 15rpx;
  970. background: #F2F4F7;
  971. border-radius: 20rpx;
  972. .checkIcon {
  973. width: 25rpx;
  974. height: 25rpx;
  975. margin-right: 10rpx;
  976. }
  977. .checkStatusText {
  978. font-size: 20rpx;
  979. font-family: SourceHanSansCN-Normal, SourceHanSansCN;
  980. font-weight: 400;
  981. color: #292C33;
  982. }
  983. }
  984. image {
  985. margin-right: 15rpx;
  986. width: 40rpx;
  987. height: 40rpx;
  988. }
  989. }
  990. }
  991. .children {
  992. display: flex;
  993. flex-direction: row;
  994. align-items: center;
  995. margin-top: 18.75rpx;
  996. .child {
  997. display: flex;
  998. flex-direction: column;
  999. justify-content: center;
  1000. align-items: center;
  1001. flex: 1;
  1002. border-right: 1px solid #DADEE6;
  1003. text {
  1004. width:150rpx;
  1005. font-weight: 500;
  1006. text-align: center;
  1007. overflow: hidden;
  1008. text-overflow: ellipsis;
  1009. white-space: nowrap;
  1010. &:last-child {
  1011. font-size: 17.5rpx;
  1012. line-height: 26.25rpx;
  1013. color: #7A8599;
  1014. text-align: center;
  1015. font-weight: 400;
  1016. }
  1017. }
  1018. &:last-child {
  1019. border-right: 0;
  1020. }
  1021. }
  1022. }
  1023. }
  1024. }
  1025. }
  1026. </style>