AppealInfo.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707
  1. <template>
  2. <van-popup
  3. v-model="showAppealInfo"
  4. :position="position"
  5. duration="0.2"
  6. :style="{ height: height, width: width, 'background-color': 'rgb(245, 245, 245)' }"
  7. @open="onOpen"
  8. @closed="onClosed"
  9. >
  10. <div style="height: 100%;width: 100%">
  11. <van-nav-bar
  12. title="申诉信息"
  13. :left-arrow="true"
  14. @click-left="showAppealInfo = false"
  15. @click-right="showActions = true"
  16. fixed
  17. >
  18. <template slot="right" v-if="canActions">
  19. <van-icon name="bars"/>
  20. </template>
  21. </van-nav-bar>
  22. <div class="container" v-if="appealInfo" >
  23. <div class="card-box">
  24. <van-row type="flex" justify="center" gutter="10" align="center">
  25. <van-col span="6" style="text-align: right">
  26. <userImage
  27. :img_url="appealInfo.employee_img_url"
  28. :user_name="appealInfo.employee_name"
  29. />
  30. </van-col>
  31. <van-col span="10" style="text-align: left" class="font-flex-word">
  32. <span style="line-height: 0.8rem;">{{appealInfo.employee_name}}</span>
  33. </van-col>
  34. <van-col span="8">
  35. <van-tag :type="appealStatusType(appealInfo.status)" size="medium" >{{appealStatusMap[appealInfo.status] || '--'}}</van-tag>
  36. </van-col>
  37. </van-row>
  38. <van-divider/>
  39. <div class="card-content">
  40. <p><van-tag type="primary" size="medium">{{appealInfo.create_time}}</van-tag>&nbsp;发起复议申请</p>
  41. <p>共<van-tag type="primary" size="medium">{{appealInfo.events.length}}</van-tag>&nbsp;条积分事件</p>
  42. <p v-if="appealInfo.global_remark">申请原因&nbsp;:&nbsp;<van-tag type="primary" size="medium">{{appealInfo.global_remark}}</van-tag></p>
  43. <template v-if="appealInfo.complete_time">
  44. <p><van-tag type="primary" size="medium">{{appealInfo.complete_time}}</van-tag>&nbsp;审批结束</p>
  45. </template>
  46. </div>
  47. </div>
  48. <van-collapse v-model="activeNames" accordion>
  49. <van-collapse-item name="process">
  50. <template slot="title">
  51. <span class="content-font">审批流程</span>
  52. </template>
  53. <van-steps direction="vertical" :active="appealInfo.process.length - 1" >
  54. <van-step v-for="(item,index) in appealInfo.process" :key="index" >
  55. <div class="card-box">
  56. <div class="card-content" style="text-align: left;line-height: 0.25rem;">
  57. <p>阶段{{item.step}}&nbsp;<van-tag :type="processStatusType(item.status)" size="medium">{{processStatusMap[item.status] || '--'}}</van-tag></p>
  58. <p>发起人&nbsp;:&nbsp;{{item.publisher_name}}</p>
  59. <p>发起时间&nbsp;:&nbsp;{{item.create_time}}</p>
  60. <p>审批人&nbsp;:&nbsp;{{item.reviewer_name}}</p>
  61. <p v-if="item.remark" class="font-flex-word">审批意见&nbsp;:&nbsp;{{item.remark}}</p>
  62. <p v-if="item.complete_time">完结时间&nbsp;:&nbsp;{{item.complete_time}}</p>
  63. </div>
  64. </div>
  65. </van-step>
  66. </van-steps>
  67. </van-collapse-item>
  68. <van-collapse-item name="events">
  69. <template slot="title">
  70. <span class="content-font">{{appealInfo.events.length + '条积分'}}</span>
  71. </template>
  72. <div class="card-box" v-for="(item,index) in appealInfo.events" :key="index">
  73. <div class="card-content1">
  74. <p>积分&nbsp;:&nbsp;{{item.point + ' ' + ptName(item.pt_id)}} <van-tag :type="pointStatusType(item.status)" >{{pointStatusMap[item.status] || '--'}}</van-tag> </p>
  75. <p style="line-height: 0.5rem">积分备注&nbsp;:&nbsp;{{item.event_remark}}</p>
  76. <p>时间&nbsp;:&nbsp;{{item.event_time}}</p>
  77. <p v-if="item.appeal_remark" >复议原因&nbsp;:&nbsp;{{item.appeal_remark}}</p>
  78. <p v-if="item.delete_time" >已删除&nbsp;:&nbsp;{{item.delete_time}}</p>
  79. </div>
  80. </div>
  81. </van-collapse-item>
  82. <van-collapse-item name="logs">
  83. <template slot="title">
  84. <span class="content-font">{{appealInfo.logs.length + '条操作日志'}}</span>
  85. </template>
  86. <p v-for="(item,index) in appealInfo.logs" :key="index" class="content-font font-flex-word">
  87. <van-tag type="primary" size="medium" v-if="item.create_time" >{{item.create_time}}</van-tag>
  88. {{item.msg}}
  89. </p>
  90. </van-collapse-item>
  91. </van-collapse>
  92. </div>
  93. </div>
  94. <van-action-sheet
  95. v-model="showActions"
  96. :actions="appealActions"
  97. @select="actionSelect"
  98. close-on-click-action
  99. />
  100. <!-- 拒绝审批 -->
  101. <van-dialog
  102. v-model="showReviewRefuse"
  103. title="拒绝审批"
  104. :show-cancel-button="false"
  105. :show-confirm-button="false"
  106. >
  107. <van-form @submit="refuseReview">
  108. <van-cell-group>
  109. <van-cell><Mtextarea v-model="formData.remark" placeholder="原因说明(选填)"></Mtextarea></van-cell>
  110. </van-cell-group>
  111. <van-row type="flex" justify="center" gutter="10" style="margin: 0.1rem;">
  112. <van-col span="12">
  113. <van-button round block type="warning" native-type="button" @click="closeRefuseReview">
  114. 取消
  115. </van-button>
  116. </van-col>
  117. <van-col span="12">
  118. <van-button round block type="info" native-type="submit">
  119. 提交
  120. </van-button>
  121. </van-col>
  122. </van-row>
  123. </van-form>
  124. </van-dialog>
  125. <!-- 驳回重做 -->
  126. <van-dialog
  127. v-model="showReviewRejectRewrite"
  128. title="驳回重做"
  129. :show-cancel-button="false"
  130. :show-confirm-button="false"
  131. >
  132. <van-form @submit="rejectRewrite">
  133. <van-cell-group>
  134. <van-cell><Mtextarea v-model="formData.remark" placeholder="原因说明(选填)"></Mtextarea></van-cell>
  135. </van-cell-group>
  136. <van-row type="flex" justify="center" gutter="10" style="margin: 0.1rem;">
  137. <van-col span="12">
  138. <van-button round block type="warning" native-type="button" @click="closeRejectRewrite">
  139. 取消
  140. </van-button>
  141. </van-col>
  142. <van-col span="12">
  143. <van-button round block type="info" native-type="submit">
  144. 提交
  145. </van-button>
  146. </van-col>
  147. </van-row>
  148. </van-form>
  149. </van-dialog>
  150. <!-- 递交审批 -->
  151. <van-dialog
  152. v-model="showReviewSubmit"
  153. title="递交审批"
  154. :show-cancel-button="false"
  155. :show-confirm-button="false"
  156. >
  157. <van-form @submit="reviewSubmit">
  158. <van-cell-group>
  159. <EmployeeSelectorCell
  160. title="递交审批"
  161. v-model="formData.reviewer"
  162. :multi="false"
  163. icon-type="records"
  164. :employee_list="userInfo.employee_detail.superior_list"
  165. :is_employee_list="true"
  166. />
  167. </van-cell-group>
  168. <van-cell-group>
  169. <van-cell><Mtextarea v-model="formData.remark" placeholder="原因说明(选填)"></Mtextarea></van-cell>
  170. </van-cell-group>
  171. <van-row type="flex" justify="center" gutter="10" style="margin: 0.1rem;">
  172. <van-col span="12">
  173. <van-button round block type="warning" native-type="button" @click="closeReviewSubmit">
  174. 取消
  175. </van-button>
  176. </van-col>
  177. <van-col span="12">
  178. <van-button round block type="info" native-type="submit">
  179. 提交
  180. </van-button>
  181. </van-col>
  182. </van-row>
  183. </van-form>
  184. </van-dialog>
  185. <!-- 审批通过 -->
  186. <van-dialog
  187. v-model="showReviewApproval"
  188. title="通过"
  189. :show-cancel-button="false"
  190. :show-confirm-button="false"
  191. >
  192. <van-form @submit="reviewApproval">
  193. <van-cell-group>
  194. <van-cell><Mtextarea v-model="formData.remark" placeholder="原因说明(选填)"></Mtextarea></van-cell>
  195. </van-cell-group>
  196. <van-row type="flex" justify="center" gutter="10" style="margin: 0.1rem;">
  197. <van-col span="12">
  198. <van-button round block type="warning" native-type="button" @click="closeReviewApproval">
  199. 取消
  200. </van-button>
  201. </van-col>
  202. <van-col span="12">
  203. <van-button round block type="info" native-type="submit">
  204. 提交
  205. </van-button>
  206. </van-col>
  207. </van-row>
  208. </van-form>
  209. </van-dialog>
  210. <!-- 重新填写 -->
  211. <!-- <van-dialog-->
  212. <!-- v-model="showRewrite"-->
  213. <!-- title="复议记录"-->
  214. <!-- :show-cancel-button="false"-->
  215. <!-- :show-confirm-button="false"-->
  216. <!-- >-->
  217. <!-- </van-dialog>-->
  218. <AppealRewrite
  219. v-if="appealInfo"
  220. :visible.sync="showRewrite"
  221. :id="appealInfo.id"
  222. @hasSubmit="handleRewriteSubmit"
  223. />
  224. </van-popup>
  225. </template>
  226. <script>
  227. import Vue from "vue";
  228. import {NavBar,Steps,Step,Collapse,CollapseItem,Dialog} from "vant";
  229. import EmployeeSelectorCell from "./EmployeeSelectorCell.vue";
  230. import Mtextarea from "./Mtextarea2.vue";
  231. import AppealRewrite from "./AppealRewrite.vue";
  232. Vue.use(NavBar)
  233. .use(Steps)
  234. .use(Step)
  235. .use(Collapse)
  236. .use(CollapseItem)
  237. .use(Dialog)
  238. export default {
  239. name: 'appealInfo',
  240. components: {AppealRewrite, Mtextarea, EmployeeSelectorCell},
  241. props: {
  242. visible:{
  243. type: Boolean,
  244. default : false
  245. },
  246. position:{
  247. type: String,
  248. default: 'bottom'
  249. },
  250. id:{
  251. type: Number,
  252. default: 0
  253. },
  254. height:{
  255. type: String,
  256. default: '100%'
  257. },
  258. width:{
  259. type: String,
  260. default: '100%'
  261. }
  262. },
  263. data(){
  264. return {
  265. userInfo: this.$userInfo(),
  266. showAppealInfo:this.visible,
  267. hasOpen:false,
  268. hasSubmit:false,
  269. loading:false,
  270. appealInfo:null,
  271. appealStatusMap:{
  272. 0:'全部',
  273. 1:'审批中',
  274. 2:'审批通过',
  275. 3:'驳回重做',
  276. 4:'撤回重填',
  277. 5:'拒绝'
  278. },
  279. pointStatusMap:{
  280. 1:'正常',
  281. 2:'已删除',
  282. 3:'已通过申述并删除'
  283. },
  284. processStatusMap:{
  285. 1:'待处理',
  286. 2:'审批通过',
  287. 3:'递交审批',
  288. 4:'拒绝',
  289. 5:'驳回重做',
  290. 6:'撤回上个节点重填',
  291. 7:'复议撤回',
  292. },
  293. pts:this.$getTypes,
  294. formData:{
  295. remark:'',
  296. reviewer:[]
  297. },
  298. rewriteData:{
  299. events:[],
  300. globalRemark:'',
  301. reviewerId:'',
  302. reviewerName:'',
  303. employeeSelected: { dept: [], employee: [] },
  304. },
  305. showReviewRefuse:false,
  306. showReviewRejectRewrite:false,
  307. showReviewApproval:false,
  308. showReviewerSelector:false,
  309. showReviewSubmit:false,
  310. submitting:false,
  311. showEventSelector:false,
  312. showRewrite:false,
  313. activeNames:'process',
  314. showActions:false,
  315. actions:{
  316. delete:{name:'删除复议',action:'delete',loading:false,disabled:false},
  317. refuse:{name:'拒绝',action:'refuse',loading:false,disabled:false},
  318. rejectRewrite:{name:'驳回重做',action:'rejectRewrite',loading:false,disabled:false},
  319. cancel:{name:'撤回审批',action:'cancel',loading:false,disabled:false},
  320. cancelAppeal:{name:'撤回复议',action:'cancelAppeal',loading:false,disabled:false},
  321. rewrite:{name:'重新填写',action:'rewrite',loading:false,disabled:false},
  322. submit:{name:'递交审批',action:'submit',loading:false,disabled:false},
  323. approval:{name:'通过',action:'approval',loading:false,disabled:false},
  324. }
  325. }
  326. },
  327. watch:{
  328. showAppealInfo(v){
  329. this.$emit('update:visible', v)
  330. },
  331. visible(v){
  332. this.showAppealInfo = v
  333. }
  334. },
  335. computed:{
  336. appealActions(){
  337. let actions = []
  338. if (!this.appealInfo) return actions
  339. if (this.appealInfo.can_delete) actions.push(this.actions.delete)
  340. if (this.appealInfo.can_refuse) actions.push(this.actions.refuse)
  341. if (this.appealInfo.can_reject_rewrite) actions.push(this.actions.rejectRewrite)
  342. if (this.appealInfo.can_cancel) actions.push(this.actions.cancel)
  343. if (this.appealInfo.can_cancel_appeal) actions.push(this.actions.cancelAppeal)
  344. if (this.appealInfo.can_rewrite) actions.push(this.actions.rewrite)
  345. if (this.appealInfo.can_submit) actions.push(this.actions.submit)
  346. if (this.appealInfo.can_approval) actions.push(this.actions.approval)
  347. return actions
  348. },
  349. canActions(){
  350. return this.appealActions.length > 0
  351. }
  352. },
  353. methods:{
  354. initData(){
  355. this.formData.remark = ''
  356. this.formData.reviewer = []
  357. this.hasSubmit = false
  358. this.appealInfo = null
  359. this.showReviewRefuse = false
  360. this.showReviewRejectRewrite = false
  361. this.showReviewApproval = false
  362. this.showReviewerSelector = false
  363. this.showReviewSubmit = false
  364. this.showRewrite = false
  365. this.showEventSelector = false
  366. this.submitting = false
  367. },
  368. onOpen(){
  369. this.hasOpen = true
  370. this.initData()
  371. this.getAppealInfo()
  372. },
  373. onClosed(){
  374. this.hasOpen = false
  375. this.activeNames = 'process'
  376. if (this.hasSubmit) this.$emit('hasSubmit')
  377. this.$emit('closeInfo')
  378. },
  379. getAppealInfo(){
  380. if (!this.$props.id) return
  381. let self = this
  382. self.loading = true
  383. self.$axiosUser('get','api/pro/integral/appeal/info',{appeal_id:this.$props.id})
  384. .then(res => {
  385. if (res.data.code === 1) self.appealInfo = res.data.data
  386. })
  387. .finally(() => {
  388. self.loading = false
  389. })
  390. },
  391. appealStatusType(status){
  392. const map = {
  393. 1:'primary',
  394. 2:'success',
  395. 3:'warning',
  396. 4:'warning',
  397. 5:'danger'
  398. }
  399. return map[status] || 'info'
  400. },
  401. processStatusType(status){
  402. const map = {
  403. 1:'primary',
  404. 2:'success',
  405. 3:'success',
  406. 4:'danger',
  407. 5:'warning',
  408. 6:'warning',
  409. 7:'primary',
  410. }
  411. return map[status] || 'info'
  412. },
  413. ptName(ptId){
  414. let item = this.pts.find(item => item.id === ptId)
  415. return item ? item.name : ''
  416. },
  417. pointStatusType(status){
  418. switch (status){
  419. case 2:
  420. case 3:
  421. return 'warning'
  422. default:
  423. return "success"
  424. }
  425. },
  426. actionSelect(item){
  427. switch (item.action){
  428. case 'delete':
  429. Dialog.confirm({
  430. title:'删除复议',
  431. message:'删除复议后将不可恢复,确认提交吗',
  432. showCancelButton:true,
  433. confirmButtonText:'提交',
  434. cancelButtonText:'取消',
  435. })
  436. .then(() => {
  437. this.removeAppeal()
  438. })
  439. .catch(() => {})
  440. break;
  441. case 'refuse':
  442. this.showReviewRefuse = true
  443. break;
  444. case 'rejectRewrite':
  445. this.showReviewRejectRewrite = true
  446. break;
  447. case 'cancel':
  448. Dialog.confirm({
  449. title:'撤回审批',
  450. message:'审批撤回后可以重新编辑内容重新提交',
  451. showCancelButton:true,
  452. confirmButtonText:'提交',
  453. cancelButtonText:'取消',
  454. })
  455. .then(() => {
  456. this.reviewCancel()
  457. })
  458. .catch(() => {})
  459. break;
  460. case 'cancelAppeal':
  461. Dialog.confirm({
  462. title:'撤回复议',
  463. message:'复议撤回后可以重新编辑内容重新提交',
  464. showCancelButton:true,
  465. confirmButtonText:'提交',
  466. cancelButtonText:'取消',
  467. })
  468. .then(() => {
  469. this.appealCancel()
  470. })
  471. .catch(() => {})
  472. break;
  473. case 'rewrite':
  474. this.showRewrite = true
  475. break;
  476. case 'submit':
  477. this.showReviewSubmit = true
  478. break;
  479. case 'approval':
  480. this.showReviewApproval = true
  481. break;
  482. }
  483. },
  484. removeAppeal(){
  485. if (!this.appealInfo) return
  486. let self = this
  487. self.submitting = true
  488. let params = {
  489. appeal_id:self.appealInfo.id
  490. }
  491. self.$axiosUser('post','api/pro/integral/appeal/remove',params)
  492. .then(res => {
  493. if (res.data.code === 1){
  494. self.hasSubmit = true
  495. self.showAppealInfo = false
  496. }else {
  497. self.$toast(res.data.msg)
  498. }
  499. })
  500. .finally(() => {
  501. self.submitting = false
  502. })
  503. },
  504. refuseReview(){
  505. if (!this.appealInfo) return
  506. let self = this
  507. self.submitting = true
  508. let params = {
  509. appeal_id:self.appealInfo.id,
  510. remark:self.formData.remark
  511. }
  512. self.$axiosUser('post','api/pro/integral/appeal/review/refuse',params)
  513. .then(res => {
  514. if (res.data.code === 1){
  515. self.hasSubmit = true
  516. self.getAppealInfo()
  517. self.showReviewRefuse = false
  518. }else {
  519. self.$toast(res.data.msg)
  520. }
  521. })
  522. .finally(() => {
  523. self.submitting = false
  524. })
  525. },
  526. closeRefuseReview(){
  527. this.showReviewRefuse = false
  528. },
  529. rejectRewrite(){
  530. if (!this.appealInfo) return
  531. let self = this
  532. self.submitting = true
  533. let params = {
  534. appeal_id:self.appealInfo.id,
  535. remark:self.formData.remark
  536. }
  537. self.$axiosUser('post','api/pro/integral/appeal/review/reject',params)
  538. .then(res => {
  539. if (res.data.code === 1){
  540. self.hasSubmit = true
  541. self.getAppealInfo()
  542. self.showReviewRejectRewrite = false
  543. }else {
  544. self.$toast(res.data.msg)
  545. }
  546. })
  547. .finally(() => {
  548. self.submitting = false
  549. })
  550. },
  551. closeRejectRewrite(){
  552. this.showReviewRejectRewrite = false
  553. },
  554. reviewSubmit(){
  555. if (!this.appealInfo) return
  556. let self = this
  557. self.submitting = true
  558. let params = {
  559. appeal_id:self.appealInfo.id,
  560. reviewer_id:self.formData.reviewer[0].id,
  561. remark:self.formData.remark
  562. }
  563. self.$axiosUser('post','api/pro/integral/appeal/review/submit',params)
  564. .then(res => {
  565. if (res.data.code === 1){
  566. self.hasSubmit = true
  567. self.getAppealInfo()
  568. self.showReviewSubmit = false
  569. }else {
  570. self.$message.error(res.data.msg)
  571. }
  572. })
  573. .finally(() => {
  574. self.submitting = false
  575. })
  576. },
  577. closeReviewSubmit(){
  578. this.showReviewSubmit = false
  579. },
  580. reviewApproval(){
  581. if (!this.appealInfo) return
  582. let self = this
  583. self.submitting = true
  584. let params = {
  585. appeal_id:self.appealInfo.id,
  586. remark:self.formData.remark
  587. }
  588. self.$axiosUser('post','api/pro/integral/appeal/review/approval',params)
  589. .then(res => {
  590. if (res.data.code === 1){
  591. self.hasSubmit = true
  592. self.getAppealInfo()
  593. self.showReviewApproval = false
  594. }else {
  595. self.$toast(res.data.msg)
  596. }
  597. })
  598. .finally(() => {
  599. self.submitting = false
  600. })
  601. },
  602. closeReviewApproval(){
  603. this.showReviewApproval = false
  604. },
  605. reviewCancel(){
  606. if (!this.appealInfo) return
  607. this.submitting = true
  608. let self = this
  609. self.$axiosUser('post','api/pro/integral/appeal/review/cancel',{appeal_id:self.appealInfo.id})
  610. .then(res => {
  611. if (res.data.code === 1){
  612. self.hasSubmit = true
  613. self.getAppealInfo()
  614. }else {
  615. self.$toast(res.data.msg)
  616. }
  617. })
  618. .finally(() => {
  619. self.submitting = false
  620. })
  621. },
  622. appealCancel(){
  623. if (!this.appealInfo) return
  624. this.submitting = true
  625. let self = this
  626. self.$axiosUser('post','api/pro/integral/appeal/cancel',{appeal_id:self.appealInfo.id})
  627. .then(res => {
  628. if (res.data.code === 1){
  629. self.hasSubmit = true
  630. self.getAppealInfo()
  631. }else {
  632. self.$toast(res.data.msg)
  633. }
  634. })
  635. .finally(() => {
  636. self.submitting = false
  637. })
  638. },
  639. handleRewriteSubmit(){
  640. this.hasSubmit = true
  641. this.getAppealInfo()
  642. }
  643. },
  644. }
  645. </script>
  646. <style scoped lang="less">
  647. .container {
  648. position: relative;
  649. width: 100%;
  650. margin-top: 1.5rem;
  651. & .card-box{
  652. margin: 0.2rem;
  653. padding: 0.1rem;
  654. border-radius: 0.3rem;
  655. border: 1px solid #ebeef5;
  656. background-color: #ffffff;
  657. overflow: hidden;
  658. color: #303133;
  659. text-align: center;
  660. box-shadow: 0 2px 12px 0 rgba(0,0,0,0.1);
  661. & .card-content{
  662. font-size: 0.25rem;
  663. line-height: 0.5rem;
  664. color: #909399;
  665. text-align: left;
  666. margin-left: 0.3rem;
  667. }
  668. & .card-content1{
  669. font-size: 0.25rem;
  670. line-height: 0.25rem;
  671. color: #909399;
  672. text-align: left;
  673. }
  674. }
  675. .content-font{
  676. font-size: 0.25rem;
  677. line-height: 0.25rem;
  678. color: #909399;
  679. text-align: left;
  680. }
  681. }
  682. </style>