checkMainPoints.vue 28 KB

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