batchDistribution.vue 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815
  1. <template>
  2. <view class="allocationPerson-page">
  3. <scroll-view class="scroll-y" scroll-y="true">
  4. <template>
  5. <view class="blockTitle">计划时间</view>
  6. <div class="date-view">
  7. <view class="row">
  8. <!-- 已经分配过的病区,再次修改禁止修改时间 -->
  9. <text class="label">开始时间</text>
  10. <view class="date-box">
  11. <date-time-picker :disabled="details.isDistribution" :height="100"
  12. :start="details.startDate" :end="details.planEndDate" :defaultValue="details.startDate"
  13. placeholder="请选择起始时间" pickType="startDate" @change="changeDateTime" />
  14. </view>
  15. </view>
  16. <view class="row">
  17. <text class="label">结束时间</text>
  18. <view class="date-box">
  19. <date-time-picker :disabled="details.isDistribution" :height="100"
  20. :start="details.planStartDate" :end="details.planEndDate"
  21. :defaultValue="details.endDate?details.endDate:details.planEndDate" placeholder="请选择结束时间" pickType="endDate"
  22. @change="changeDateTime" />
  23. </view>
  24. </view>
  25. </div>
  26. <view class="tabWrap" v-if="checkPointList.length >0">
  27. <view :class="[currentSelectedTab==0?'on tab':'tab']" @click="tabChangeHandle(0)">
  28. {{`查核人(${checkPresonList.length})`}}</view>
  29. <view :class="[currentSelectedTab==1?'on tab':'tab']" @click="tabChangeHandle(1)">
  30. {{`要点分类(${checkedPointList.length})`}}</view>
  31. </view>
  32. <view class="blockTitle noBottomBlockTitle" v-if="checkPointList.length == 0">
  33. 查核人<text>{{`已选择${checkPresonList.length}人`}}</text></view>
  34. <view v-if="currentSelectedTab==0">
  35. <view class="filter">
  36. <view class="selecter" @click="selecterHandle">
  37. <text>{{selectedDeptStr}}</text>
  38. <image src="../../static/fillBlackArrow.png" mode=""></image>
  39. </view>
  40. <view class="searchBar">
  41. <image class="serachIcon" src="../../static/searchIcon.png" mode=""></image>
  42. <tm-input class="searchVal" :clear="ifclearSearch" @onChange="searchInputHandle"
  43. placeholder="请输入搜索姓名"></tm-input>
  44. <view class="searchBtn" @click="searchHandle">搜索</view>
  45. </view>
  46. </view>
  47. <view class="empListWrapper" v-if="empList.length>0" :style="{height:empListWrapperH}">
  48. <tm-checked-group :list="empList" :defaultValue='checkPresonList' :setting="{
  49. value: 'employeeId',
  50. name: 'label'
  51. }" :openkeys="[0]" @change="onCheckPerosonChanged" />
  52. </view>
  53. <view class="empty" v-if="empList.length==0">
  54. <image src="../../static/no-data.png" mode=""></image>
  55. <text>暂无内容</text>
  56. </view>
  57. </view>
  58. <tm-checked-group v-if="details.situationType == 3&&currentSelectedTab==1" :list="checkPointList"
  59. :defaultValue='checkedPointList' :setting="{
  60. value: 'categoryId',
  61. name: 'categoryName'
  62. }" :openkeys="[0]" @change="checkChanged" />
  63. </template>
  64. </scroll-view>
  65. <view class="fixed-buttom-btn" @click="sure">
  66. <text class="btn-text">确定</text>
  67. </view>
  68. <uni-popup ref="popup" type="bottom" :maskClick="true">
  69. <view class="selectableList">
  70. <scroll-view scroll-y="true" class="listWrap">
  71. <view :class="getClass(v.id)" v-for="(v,i) in departments" @click="listClickHandle(v)">{{v.name}}
  72. </view>
  73. </scroll-view>
  74. <!-- <view class="listWrap">
  75. <view :class="getClass(v.id)" v-for="(v,i) in departments" @click="listClickHandle(v)">{{v.name}}
  76. </view>
  77. </view> -->
  78. <view class="btnGroup">
  79. <view class="cancelBtn btn" @click="btnGroupClickHandle(false)">取消</view>
  80. <view class="confirmBtn btn" @click="btnGroupClickHandle(true)">确定</view>
  81. </view>
  82. </view>
  83. </uni-popup>
  84. </view>
  85. </template>
  86. <script>
  87. // 查核列表编辑 查核人和计划时间
  88. import {
  89. mapState
  90. } from "vuex";
  91. import moment from 'moment';
  92. export default {
  93. computed: {
  94. selectedDeptStr() {
  95. const {
  96. deptIdStr
  97. } = this.filter;
  98. return (deptIdStr.map(t => t.name)).join(',')
  99. },
  100. empListWrapperH() {
  101. if (this.checkPointList.length > 0) {
  102. return 'calc(100vh - 485rpx)'
  103. } else {
  104. return 'calc(100vh - 460rpx)'
  105. }
  106. },
  107. ifclearSearch() {
  108. return this.filter.keyword.length == 0
  109. },
  110. },
  111. watch: {
  112. filter(val, oldVal) {
  113. if (val.keyword.length == 0) {
  114. this.searchHandle();
  115. }
  116. }
  117. },
  118. data() {
  119. return {
  120. title: '', // 导航标题
  121. // 查核组员列表
  122. empList: [],
  123. // 组件信息
  124. details: {},
  125. //选中的查核人
  126. checkPresonList: [],
  127. //查核要点列表
  128. checkPointList: [],
  129. // 服务器时间
  130. dateStr: '',
  131. timer: null,
  132. // 点击确定按钮是否直接保存
  133. isSubmit: false,
  134. //选中的查核要点
  135. checkedPointList: [],
  136. //可选单位列表
  137. departments: [],
  138. currentSelectedTab: 0, //0 查核人 1 要点分类
  139. //筛选条件
  140. filter: {
  141. keyword: '',
  142. deptIdStr: [{
  143. name: '全部',
  144. id: 0
  145. }], //单位
  146. },
  147. }
  148. },
  149. onLoad(data) {
  150. const _details = JSON.parse(data.details);
  151. //初始化默认时间
  152. // console.log({data,_details});
  153. const currentDate = new Date();
  154. _details.startDate = `${currentDate.getFullYear()}-${currentDate.getMonth()+1}-${currentDate.getDate()} 00:00`;
  155. _details.endDate = _details.endDate;
  156. this.isZichaducha = _details.isZichaducha;
  157. this.departmentType = _details.departmentType;
  158. this.departmentId = _details.departmentId;
  159. this.editPlanIds = _details.ids; //当前设置计划的id
  160. this.multiple = data.multiple; //是否批量
  161. // 强制刷新返回查核列表页面
  162. if (getCurrentPages().length === 1 && !this.isZichaducha) {
  163. const {
  164. situationId,
  165. checkId,
  166. checkGroupId,
  167. planStartDate,
  168. planEndDate,
  169. } = _details;
  170. uni.redirectTo({
  171. url: `/pages/editCheckList/editCheckList?situationId=${situationId}&checkId=${checkId}&checkGroupId=${checkGroupId}&startDate=${planStartDate}&endDate=${planEndDate}`
  172. });
  173. }
  174. this.pageQueryParams = _details;
  175. this.getComponentInfo(_details);
  176. },
  177. destroyed() {
  178. this.clearTimer();
  179. },
  180. methods: {
  181. tabChangeHandle(num) {
  182. this.currentSelectedTab = num;
  183. },
  184. getClass(id) {
  185. const index = this.filter.deptIdStr.findIndex(t => t.id == id)
  186. if (index != -1) {
  187. return "list on"
  188. }
  189. return "list"
  190. },
  191. searchHandle() {
  192. const {
  193. checkGroupId,
  194. situationType,
  195. checkedList,
  196. } = this.details;
  197. const deptId = checkedList?checkedList.join(','):'';
  198. this.getEmpDeptTree(checkGroupId, situationType, deptId)
  199. },
  200. /**
  201. * @param {boolean} flag true确定按钮点击,false取消按钮
  202. */
  203. btnGroupClickHandle(flag) {
  204. this.$refs.popup.close();
  205. //清空搜索
  206. this.filter = {
  207. ...this.filter,
  208. keyword: ''
  209. }
  210. },
  211. listClickHandle(item) {
  212. const _filter = this.filter;
  213. const {
  214. deptIdStr
  215. } = _filter;
  216. const index = _filter.deptIdStr.findIndex(t => t.id == item.id);
  217. if (item.id == 0) {
  218. //全部
  219. this.filter = {
  220. ...this.filter,
  221. deptIdStr: [{
  222. name: '全部',
  223. id: 0
  224. }]
  225. };
  226. return;
  227. }
  228. //去除全部选项选中
  229. deptIdStr.splice(_filter.deptIdStr.findIndex(t => t.id == 0), 1);
  230. if (index != -1) {
  231. deptIdStr.splice(index, 1)
  232. } else {
  233. deptIdStr.push({
  234. name: item.name,
  235. id: item.id
  236. })
  237. }
  238. this.filter = _filter;
  239. },
  240. selecterHandle() {
  241. this.$refs.popup.open();
  242. },
  243. /**
  244. * @param {string} val
  245. */
  246. searchInputHandle(val) {
  247. this.filter = {
  248. ...this.filter,
  249. keyword: val
  250. };
  251. },
  252. getComponentInfo(details) {
  253. const {
  254. checkGroupId,
  255. situationType,
  256. checkId,
  257. // deptId,
  258. checkedList,
  259. empId,
  260. empName,
  261. categoryId
  262. } = details;
  263. this.details = details;
  264. const deptId = checkedList ? checkedList.join(',') : '';
  265. this.getEmpDeptTree(checkGroupId, situationType, deptId);
  266. //查核人回显
  267. if (empId && empName) {
  268. const empIdArr = empId.split(',');
  269. const empNameArr = empName.split(',');
  270. this.checkPresonList = empIdArr.map((item, index) => ({
  271. employeeId: Number(item),
  272. employeeName: empNameArr[index]
  273. }));
  274. }
  275. //查核要点回显
  276. if (categoryId) {
  277. this.checkedPointList = categoryId.map((item) => ({
  278. categoryId: Number(item),
  279. }));
  280. }
  281. },
  282. // 查询部门人员树
  283. getEmpDeptTree(checkGroupId, situationType, deptId) {
  284. if (this.isZichaducha) {
  285. //自查督查人员批量设置
  286. this.$store.dispatch({
  287. type: 'batchDistribution/commActions',
  288. key: "getZichaduchaEmpList",
  289. data: {
  290. departmentType: this.departmentType,
  291. departmentId: this.departmentId,
  292. }
  293. }).then((data) => {
  294. if (data) {
  295. this.empList = data.map(item => ({
  296. label: `${item.empName}`,
  297. employeeId: item.empId
  298. }));
  299. const deweight = (arr)=>{
  300. let map = new Map();
  301. for (let i of arr) {
  302. if (!map.has(i.id)) {
  303. map.set(i.id, i)
  304. }
  305. }
  306. arr = [...map.values()]
  307. return arr;
  308. }
  309. let departments = data.map(item => ({
  310. name: item.departmentName,
  311. id: item.departmentId
  312. }));
  313. this.departments = [{
  314. name: '全部',
  315. id: 0
  316. },
  317. ...deweight(departments)
  318. ];
  319. }
  320. })
  321. } else {
  322. this.$store.dispatch({
  323. type: 'allocationPerson/commActions',
  324. key: "getGroupEmpList",
  325. data: {
  326. checkGroupId,
  327. situationType,
  328. deptId,
  329. name: this.filter.keyword,
  330. deptIdStr: (this.filter.deptIdStr.map(t => t.id == 0 ? '' : t.id)).join(',')
  331. }
  332. }).then(data => {
  333. if (data) {
  334. let empList = [];
  335. if (data.sysCheckGroupEmployees) {
  336. empList = data.sysCheckGroupEmployees.map(t => ({
  337. ...t,
  338. label: `${t.employeeName} | ${t.code} | ${t.deptName}`
  339. }))
  340. } else {
  341. empList = [];
  342. }
  343. this.empList = empList;
  344. this.departments = [{
  345. name: '全部',
  346. id: 0
  347. }, ...data.departments] || [];
  348. if (situationType == 3) this.checkPointList = data.pointCategoryBOs || [];
  349. }
  350. });
  351. }
  352. },
  353. //查核要点选择回调
  354. checkChanged(data) {
  355. const {
  356. checkedList
  357. } = data;
  358. this.checkedPointList = checkedList;
  359. },
  360. //查核人选择回调
  361. onCheckPerosonChanged(data) {
  362. const {
  363. checkedList
  364. } = data;
  365. this.checkPresonList = checkedList;
  366. },
  367. // 指派查核人员改变
  368. changeDetails(selectVal, selectData, index) {
  369. this.details = {
  370. ...this.details,
  371. empId: selectData.employeeId,
  372. empName: selectData.employeeName
  373. }
  374. },
  375. // 时间变化
  376. changeDateTime(dateObj, pickType) {
  377. if (pickType === 'startDate') { // 开始时间变化
  378. this.diffDateTime(dateObj.f3, this.details.endDate);
  379. } else {
  380. this.diffDateTime(this.details.startDate, dateObj.f3);
  381. }
  382. this.details = {
  383. ...this.details,
  384. [pickType]: dateObj.f3
  385. };
  386. },
  387. // 开始时间和结束时间对比
  388. diffDateTime(startTime, endTime) {
  389. if (moment(startTime).valueOf() > moment(endTime).valueOf()) {
  390. this.showModal('开始时间不能大于结束时间');
  391. }
  392. },
  393. // 点击确定
  394. sure() {
  395. const {
  396. startDate,
  397. endDate,
  398. planEndDate
  399. } = this.details;
  400. console.log('this.details',this.details);
  401. const empId = (this.checkPresonList.map(item => item.employeeId)).join(',');
  402. const empName = (this.checkPresonList.map(item => item.employeeName)).join(',');
  403. if (!empId) {
  404. return this.showModal('请选择查核人');
  405. }
  406. if (!startDate) {
  407. return this.showModal('请选择开始时间');
  408. }
  409. if (!endDate&&!planEndDate) {
  410. return this.showModal('请选择结束时间');
  411. }
  412. if (this.checkPointList.length > 0 && this.checkedPointList.length == 0) {
  413. //当未选择要点分类时
  414. return this.showModal('请选择要点分类!');
  415. }
  416. if(this.isZichaducha){
  417. //自查督查计划修改
  418. if(this.multiple == 'false'){
  419. this.$store.dispatch({
  420. type: 'batchDistribution/commActions',
  421. key: 'saveZichaduchaPlanSet',
  422. data: {
  423. checkUser:this.checkPresonList.map(item=>({responsibleUserId:item.employeeId,responsibleUserName:item.label?item.label:item.employeeName})),
  424. departmentId:Number(this.departmentId),
  425. functionId:Number(this.editPlanIds),
  426. planStartDate:startDate,
  427. planEndDate:endDate?endDate:planEndDate
  428. }
  429. }).then((data)=>{
  430. if(data){
  431. uni.navigateBack({
  432. delta: 1
  433. });
  434. }
  435. })
  436. }else{
  437. //批量设置
  438. let ids = this.editPlanIds.split(',');
  439. this.$store.dispatch({
  440. type: 'batchDistribution/commActions',
  441. key: 'batchSaveZichaduchaPlanSet',
  442. data: {
  443. checkUser:this.checkPresonList.map(item=>({responsibleUserId:item.employeeId,responsibleUserName:item.label?item.label:item.employeeName})),
  444. functionId:ids.map(item=>Number(item)),
  445. }
  446. }).then((data)=>{
  447. if(data){
  448. uni.navigateBack({
  449. delta: 1
  450. });
  451. }
  452. })
  453. }
  454. }else{
  455. const {
  456. checkId,
  457. checkedList,
  458. checkNo,
  459. situationType
  460. } = this.details;
  461. const categoryIds = this.checkedPointList.map(item => item.categoryId);
  462. const data = {
  463. "checkId": checkId, // 计划id
  464. "deptId": JSON.parse(JSON.stringify(checkedList)), // 多个单位id列表
  465. "empId": empId, // 查核者id
  466. "empName": empName, // 查核者名字
  467. "startDate": startDate, // 开始时间
  468. "endDate": endDate?endDate:planEndDate, // 结束时间
  469. "checkNo": checkNo,
  470. "situationType": Number(situationType),
  471. "categoryIds": categoryIds
  472. }
  473. this.$store.dispatch({
  474. type: 'batchDistribution/commActions',
  475. key: 'batchCheckEmp',
  476. data: {
  477. ...data
  478. }
  479. }).then(data => {
  480. if (data) {
  481. uni.showModal({
  482. title: '分配成功!',
  483. content: '',
  484. showCancel: false,
  485. success: function(res) {
  486. if (res.confirm) {
  487. // console.log('用户点击确定');
  488. let pages = getCurrentPages(); // 获取当前页面栈
  489. let prePage = pages[pages.length - 2]; // 上一个页面
  490. prePage.ifInit = true;
  491. uni.navigateBack({
  492. delta: 1
  493. });
  494. }
  495. }
  496. });
  497. }
  498. });
  499. }
  500. },
  501. // 获取当前时间
  502. getDateStr() {
  503. this.$store.dispatch({
  504. type: "commActions",
  505. key: "getDateStr",
  506. }).then((data) => {
  507. if (data) {
  508. this.dateStr = data;
  509. }
  510. });
  511. },
  512. showModal(content) {
  513. uni.showModal({
  514. content,
  515. showCancel: false
  516. });
  517. },
  518. // 清除定时器
  519. clearTimer() {
  520. if (this.timer) {
  521. clearInterval(this.timer);
  522. this.timer = null;
  523. }
  524. }
  525. },
  526. }
  527. </script>
  528. <style lang="less" scoped>
  529. .allocationPerson-page {
  530. height: 100%;
  531. .selectableList {
  532. display: flex;
  533. width: 100%;
  534. flex-direction: column;
  535. height: 50vh;
  536. padding-top: 50rpx;
  537. box-sizing: border-box;
  538. border-radius: 25rpx 25rpx 0px 0px;
  539. background-color: #FFFFFF;
  540. .listWrap {
  541. height: calc(50vh - 75rpx);
  542. overflow-y: scroll;
  543. .list {
  544. height: 87.5rpx;
  545. line-height: 87.5rpx;
  546. text-align: center;
  547. font-size: 30rpx;
  548. font-family: SourceHanSansCN-Normal, SourceHanSansCN;
  549. font-weight: 400;
  550. color: #8A8F99;
  551. &.on {
  552. font-weight: 500;
  553. color: #3377FF;
  554. }
  555. }
  556. }
  557. .btnGroup {
  558. display: flex;
  559. width: 100%;
  560. flex-direction: row;
  561. justify-content: center;
  562. align-items: center;
  563. .btn {
  564. width: 50%;
  565. height: 75rpx;
  566. line-height: 75rpx;
  567. text-align: center;
  568. font-size: 22.5rpx;
  569. font-family: SourceHanSansCN-Normal, SourceHanSansCN;
  570. font-weight: 400;
  571. color: #3377FF;
  572. }
  573. .cancelBtn {
  574. border-top: 0.62rpx solid #DADEE6;
  575. }
  576. .confirmBtn {
  577. color: #FFFFFF;
  578. background: #3377FF;
  579. }
  580. }
  581. }
  582. .scroll-y {
  583. height: calc(100% - 87.5rpx);
  584. padding-top: 15rpx;
  585. .blockTitle {
  586. display: flex;
  587. flex-direction: row;
  588. justify-content: space-between;
  589. align-items: center;
  590. font-size: 22.5rpx;
  591. font-family: SourceHanSansCN-Normal, SourceHanSansCN;
  592. font-weight: 400;
  593. color: #666F80;
  594. padding: 15rpx 25rpx;
  595. border-bottom: 0.62rpx solid #DADEE6;
  596. &.noBottomBlockTitle {
  597. border-bottom: none;
  598. }
  599. }
  600. .tabWrap {
  601. display: flex;
  602. flex-direction: row;
  603. justify-content: space-around;
  604. align-items: center;
  605. padding: 25rpx 0;
  606. padding-top: 12.5rpx;
  607. .tab {
  608. width: 250rpx;
  609. height: 50rpx;
  610. background: #FFFFFF;
  611. border-radius: 25rpx;
  612. font-size: 22.5rpx;
  613. font-family: SourceHanSansCN-Normal, SourceHanSansCN;
  614. font-weight: 400;
  615. text-align: center;
  616. line-height: 50rpx;
  617. ;
  618. color: #525866;
  619. &.on {
  620. color: #FFFFFF;
  621. background: #3377FF;
  622. }
  623. }
  624. }
  625. .filter {
  626. display: flex;
  627. flex-direction: row;
  628. justify-content: space-between;
  629. align-items: center;
  630. margin-bottom: 15rpx;
  631. padding: 0 25rpx;
  632. background: #FFFFFF;
  633. .selecter {
  634. display: flex;
  635. width: 25%;
  636. height: 87.5rpx;
  637. flex-direction: row;
  638. justify-content: space-between;
  639. align-items: center;
  640. padding-right: 25rpx;
  641. border-right: 0.62rpx solid #DADEE6;
  642. &>text {
  643. width: 112.5rpx;
  644. font-size: 25rpx;
  645. font-family: SourceHanSansCN-Medium, SourceHanSansCN;
  646. font-weight: 500;
  647. color: #292C33;
  648. text-overflow: ellipsis;
  649. overflow: hidden;
  650. white-space: nowrap;
  651. }
  652. &>image {
  653. width: 11.25rpx;
  654. height: 7.5rpx;
  655. }
  656. }
  657. .searchBar {
  658. display: flex;
  659. width: 75%;
  660. flex-direction: row;
  661. align-items: center;
  662. height: 87.5rpx;
  663. padding-left: 25rpx;
  664. .serachIcon {
  665. width: 30rpx;
  666. height: 30rpx;
  667. }
  668. .searchVal {
  669. width: 79%;
  670. padding-left: 25rpx;
  671. font-size: 25rpx;
  672. font-family: SourceHanSansCN-Normal, SourceHanSansCN;
  673. font-weight: 400;
  674. color: #292C33;
  675. }
  676. .searchBtn {
  677. padding-left: 25rpx;
  678. font-size: 25rpx;
  679. font-family: SourceHanSansCN-Normal, SourceHanSansCN;
  680. font-weight: 400;
  681. color: #3377FF;
  682. white-space: nowrap;
  683. border-left: 1rpx solid #DADEE6;
  684. }
  685. }
  686. }
  687. .empListWrapper {
  688. // height: 40vh;
  689. overflow-y: scroll;
  690. margin-bottom: 25rpx;
  691. background-color: #FFFFFF;
  692. }
  693. .empty {
  694. display: flex;
  695. height: 40vh;
  696. flex-direction: column;
  697. justify-content: center;
  698. align-items: center;
  699. margin-bottom: 25rpx;
  700. background-color: #FFFFFF;
  701. &>image {
  702. width: 175rpx;
  703. height: 190rpx;
  704. margin-bottom: 40rpx;
  705. }
  706. &>text {
  707. font-size: 22.5rpx;
  708. font-family: SourceHanSansCN-Normal, SourceHanSansCN;
  709. font-weight: 400;
  710. color: #828899;
  711. }
  712. }
  713. .date-view {
  714. padding: 0 25rpx;
  715. background: #fff;
  716. margin-bottom: 12.5rpx;
  717. border-bottom: 0.62rpx solid #DADEE6;
  718. .row {
  719. display: flex;
  720. align-items: center;
  721. height: 62.5rpx;
  722. border-bottom: 0.62rpx solid #DADEE6;
  723. .label {
  724. width: 112.5rpx;
  725. font-size: 22.5rpx;
  726. color: #292C33;
  727. }
  728. .date-box {
  729. padding-left: 25rpx;
  730. flex: 1;
  731. }
  732. &:last-child {
  733. border-bottom: 0;
  734. }
  735. }
  736. }
  737. }
  738. }
  739. </style>