warehouse_approval.vue 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807
  1. <template>
  2. <view class="warp">
  3. <view class="topInfo">
  4. <view class="topInfo-item">
  5. <view class="flex info">
  6. <view class="logo">
  7. <image src="../../../static/img/reject.png" mode="" v-if="list.status == '已驳回'"
  8. style="height: 40rpx;"></image><!-- 驳回 -->
  9. <image src="../../../static/img/tongguo.png" mode="" v-if="list.status == '已通过'"
  10. style="height: 40rpx;"></image><!-- 通过 -->
  11. <image src="../../../static/img/daishenhe.png" mode="" v-if="list.status == '审核中'"
  12. style="height: 40rpx;"></image><!-- 待审核 -->
  13. </view>
  14. <view class="infoText">{{list.approveStatus?list.approveStatus:list.status}}</view>
  15. </view>
  16. <view class="infoData">{{list.updateDate}}</view>
  17. </view>
  18. </view>
  19. <view class='content1'>
  20. <view class="title">基本信息</view>
  21. <view class='row'>
  22. <view class="left">仓库</view>
  23. <view class="right">{{list.warehouseName}}</view>
  24. </view>
  25. <view class='row'>
  26. <view class="left">货名</view>
  27. <view class="right">{{list.goodsName}}</view>
  28. </view>
  29. <!-- <view class='row' v-if="list.bulkDensityStandard !=1">
  30. <view class="left" >基准水分(%)</view>
  31. <view class="right">{{list.waterBase}}</view>
  32. </view>
  33. <view class='row' v-if="list.bulkDensityStandard !=1">
  34. <view class="left">干粮水分(%)</view>
  35. <view class="right">{{list.waterMin}}</view>
  36. </view>
  37. <view class='row' v-if="list.bulkDensityStandard !=1">
  38. <view class="left">水分上限(%)</view>
  39. <view class="right">{{list.waterMax}}</view>
  40. </view>
  41. <view v-if="list.paramType == '2' && list.bulkDensityStandard !=1" class='row'>
  42. <view class="left">扣重比</view>
  43. <view class="right">{{list.deductWeight}}</view>
  44. </view> -->
  45. <view class="form_view" style="background: #F9F9FA;" v-if="list.bulkDensityStandard ==1">
  46. <table border="1" width="100%" style="border-collapse: collapse;" cellspacing="0" cellpadding="0"
  47. class="table_css">
  48. <tr>
  49. <td>{{list.goodsName!='大豆' ? '容重(g/L)' : '蛋白(g/L)'}}</td>
  50. <td>价格(元/公斤)</td>
  51. </tr>
  52. <tr v-for="(item,index) in list.detailPrints">
  53. <td>{{item.bulkDensityMax }} ~ {{ item.bulkDensityMin}}</td>
  54. <td>{{item.bulkDensityPrice}}</td>
  55. </tr>
  56. </table>
  57. </view>
  58. <!-- <view class='row' v-if="list.bulkDensityStandard !=1">
  59. <view class="left">干粮收购价格(元/公斤)</view>
  60. <view class="right">{{list.dryGrainPrice}}</view>
  61. </view> -->
  62. <view class='row boder'>
  63. <view class="left">销售上限</view>
  64. <view class="right">{{list.saleLimit}}</view>
  65. </view>
  66. </view>
  67. <view class="form_view" v-if="list.bulkDensityStandard !=1">
  68. <table border="1" width="100%" style="border-collapse: collapse;" cellspacing="0" cellpadding="0"
  69. class="table_css">
  70. <tr>
  71. <td>水分</td>
  72. <td>一等</td>
  73. <td>二等</td>
  74. <td>三等</td>
  75. <td>等外</td>
  76. </tr>
  77. <tr v-for="(item,index) in list.detailPrints">
  78. <td>{{item.waterMin}}</td>
  79. <td>{{item.price1}}</td>
  80. <td>{{item.price2}}</td>
  81. <td>{{item.price3}}</td>
  82. <td>{{item.priceOther}}</td>
  83. </tr>
  84. </table>
  85. </view>
  86. <!-- <view class="content2" v-if="list.bulkDensityStandard !=1">
  87. <view class="title">粮价设置</view>
  88. <view v-for="(item,index) in list.details" :key="index">
  89. <view class="row">
  90. <view class="left">等级</view>
  91. <view class="right">{{item.level}}</view>
  92. </view>
  93. <view v-if="list.paramType == '2'" class="row">
  94. <view class="left">基准单价(元/公斤)</view>
  95. <view class="right">{{item.basePrice}}</view>
  96. </view>
  97. <view class="row" v-for="(item1,index1) in item.modelList" :key="index1"
  98. :class="index1==item.modelList.length-1?'boder':''">
  99. <view v-if="list.paramType == '2'" class="left">{{item1.startWater}}-{{item1.endWater}}降幅(元/0.1%)
  100. </view>
  101. <view v-else class="left">{{item1.startWater}}-{{item1.endWater}}扣重比</view>
  102. <view class="right">{{item1.price}}</view>
  103. </view>
  104. </view>
  105. </view> -->
  106. <flow :auditList="auditList" @status='getStatus'></flow>
  107. <view v-if='show1' class="shade">
  108. <view class="wrap">
  109. <view class="alert-top">
  110. <view class="title">
  111. 审核意见(驳回)
  112. </view>
  113. <u-icon name="close" class="close" color="#8890B1" @click="close()"></u-icon>
  114. </view>
  115. <view class="u-textarea-style">
  116. <view class="right-bottom">
  117. {{rejectInfo.length}}/1000个字
  118. </view>
  119. <u-input class="" v-model='rejectInfo' placeholder="请在此输入审核意见" type="textarea" height="414"
  120. maxlength="1000" />
  121. </view>
  122. <!-- <u-button @click="show1 = false" class="cancel">取消</u-button>
  123. <u-button @click="reject()" class="confirm">确定</u-button> -->
  124. <view @click='show1 = false' class="cancel">取消</view>
  125. <view @click='reject()' class="confirm">确定</view>
  126. </view>
  127. </view>
  128. <view v-if='show2' class="shade">
  129. <view class="wrap">
  130. <view class="alert-top">
  131. <view class="title">
  132. 审核意见(通过)
  133. </view>
  134. <u-icon name="close" class="close" color="#8890B1" @click="close()"></u-icon>
  135. </view>
  136. <view class="u-textarea-style">
  137. <view class="right-bottom">
  138. {{rejectInfo1.length}}/100个字
  139. </view>
  140. <u-input class="" v-model='rejectInfo1' placeholder="请在此输入审核意见" type="textarea" height="414"
  141. maxlength="100" />
  142. </view>
  143. <!-- <u-button @click="show2 = false" class="cancel">取消</u-button>
  144. <u-button @click="audit()" class="confirm">确定</u-button> -->
  145. <view @click='show2 = false' class="cancel">取消</view>
  146. <view @click='audit()' class="confirm">确定</view>
  147. </view>
  148. </view>
  149. <u-toast ref="uToast" />
  150. <view style='padding:10px;' class='flex bottom-btn'>
  151. <u-button v-if='isSHowBtn' @click='show1 = true' type="error" class="btn1" hover-class='none'>驳回</u-button>
  152. <u-button v-if='isSHowBtn' @click='show2 = true' type="success" class="btn2">通过</u-button>
  153. </view>
  154. </view>
  155. </template>
  156. <script>
  157. import helper from '@/common/helper.js';
  158. import flow from '@/components/flow.vue';
  159. import {
  160. mapState
  161. } from 'vuex';
  162. export default {
  163. components: {
  164. flow
  165. },
  166. name: "task",
  167. data() {
  168. return {
  169. everyCheck: '',
  170. isSHowBtn: true,
  171. show: false,
  172. height: 200,
  173. autoHeight: true,
  174. border: false,
  175. show2: false,
  176. show1: false,
  177. rejectInfo: "",
  178. rejectInfo1: "",
  179. id: 0,
  180. list: {},
  181. auditList: [],
  182. pcUserInfo: uni.getStorageSync('pcUserInfo'),
  183. switchVal: false,
  184. contractNoList: [],
  185. };
  186. },
  187. computed: {
  188. ...mapState(['hasLogin', 'userInfo'])
  189. },
  190. onBackPress(e) {
  191. if (this.everyCheck) {
  192. uni.navigateTo({
  193. url: "/pages/task/my_task"
  194. })
  195. return true;
  196. }
  197. },
  198. onLoad(options) {
  199. this.everyCheck = uni.getStorageSync("everyTask")
  200. this.id = options.id
  201. this.isSHowBtn = options.isShowbtn
  202. },
  203. onShow() {
  204. var that = this
  205. this.$nextTick(function() {
  206. that.getData()
  207. })
  208. },
  209. methods: {
  210. getStatus(val) {
  211. if (val == 200) this.getList()
  212. },
  213. close() {
  214. this.show1 = false
  215. this.show2 = false
  216. },
  217. showcontent(item) {
  218. item.showflow = !item.showflow
  219. },
  220. getData() {
  221. uni.showLoading({
  222. title: '加载中',
  223. mask: true
  224. })
  225. var data = []
  226. var that = this
  227. this.$api.doRequest('get', '/purchasePrice/purchasePriceLook', {
  228. id: this.id
  229. }).then(res => {
  230. if (res.data.code == 200) {
  231. this.list = res.data.data
  232. this.$api.doRequest('get', '/workflow/query/workflowDefinitions', {
  233. businessCode: 'PROCUREMENT-PRICE-APPROVE',
  234. tmpCompId: uni.getStorageSync('pcUserInfo').compId
  235. }).then(res1 => {
  236. this.$api.doRequest('get', '/commonUser/getHis', {
  237. workflowId: res1.data.data[0].id,
  238. businessKey: this.id,
  239. // branch:that.list.jointVentureParties?that.list.jointVentureParties:'zt'
  240. }).then(response => {
  241. uni.hideLoading()
  242. for (let i = 0; i < response.data.data.length; i++) {
  243. this.$set(response.data.data[i], 'status', 'question')
  244. // console.log(response.data.data[i].workflowHistoricTasks,i)
  245. if (response.data.data[i].commonStaffs) {
  246. response.data.data[i].showflow = false
  247. response.data.data[i].operatorTitle = response.data.data[i]
  248. .desc.substring(0, 2)
  249. response.data.data[i].operatorName = response.data.data[i]
  250. .desc
  251. response.data.data[i].staffscontent = '共' + response.data
  252. .data[i].commonStaffs.length + '人,当前审核' + response.data
  253. .data[i].workflowHistoricTasks.length + '人'
  254. if (response.data.data[i].workflowHistoricTasks && response
  255. .data.data[i].workflowHistoricTasks.length > 0) {
  256. if (response.data.data[i].workflowHistoricTasks
  257. .length != response.data.data[i].commonStaffs
  258. .length) {
  259. // response.data.data[i].status='question'
  260. this.$set(response.data.data[i], 'status',
  261. 'question')
  262. } else {
  263. this.$set(response.data.data[i], 'status',
  264. 'success')
  265. // response.data.data[i].status='success'
  266. }
  267. response.data.data[i].workflowlen = response.data.data[
  268. i].workflowHistoricTasks.length
  269. var workflowdata = response.data.data[i]
  270. .workflowHistoricTasks
  271. var staffsdata = response.data.data[i].commonStaffs
  272. for (let q = 0; q < staffsdata.length; q++) {
  273. staffsdata[q].status = false
  274. staffsdata[q].staffTitle = staffsdata[q].staffName
  275. for (let k = 0; k < workflowdata.length; k++) {
  276. if (staffsdata[q].staffId == workflowdata[k]
  277. .operatorId) {
  278. staffsdata[q].status = true
  279. }
  280. }
  281. }
  282. }
  283. response.data.data[i].commonStaffs1 = response.data.data[i]
  284. .commonStaffs
  285. } else {
  286. if (response.data.data[i].workflowHistoricTasks && response
  287. .data.data[i].workflowHistoricTasks.length > 0) {
  288. var len = response.data.data[i].workflowHistoricTasks
  289. .length - 1
  290. if (response.data.data[i].workflowHistoricTasks[len]
  291. .approved) {
  292. this.$set(response.data.data[i], 'status',
  293. 'success')
  294. } else {
  295. this.$set(response.data.data[i], 'status', 'error')
  296. }
  297. response.data.data[i].operatorTitle = response.data
  298. .data[i].workflowHistoricTasks[len].operatorName
  299. .substring(response.data.data[i]
  300. .workflowHistoricTasks[0].operatorName.length -
  301. 2)
  302. response.data.data[i].operatorName = response.data
  303. .data[i].workflowHistoricTasks[len].operatorName
  304. var time = new Date(response.data.data[i]
  305. .workflowHistoricTasks[len].claimTime)
  306. .getTime()
  307. response.data.data[i].updateDate = this.$u.timeFormat(
  308. time, 'mm.dd hh:MM')
  309. response.data.data[i].auditMind = response.data.data[i]
  310. .workflowHistoricTasks[len].auditMind
  311. } else {
  312. this.$set(response.data.data[i], 'status', 'question')
  313. // response.data.data[i].status='question'
  314. if (response.data.data[i].desc == '总经理助理审核') {
  315. response.data.data[i].operatorTitle = '总助'
  316. } else if (response.data.data[i].desc == '杜大光审核') {
  317. response.data.data[i].operatorTitle = '大光'
  318. } else {
  319. response.data.data[i].operatorTitle = response.data
  320. .data[i].desc.substring(0, 2)
  321. }
  322. response.data.data[i].operatorName = response.data
  323. .data[i].desc
  324. var time1 = new Date(response.data.data[i].updateDate)
  325. .getTime()
  326. response.data.data[i].updateDate = this.$u.timeFormat(
  327. time1, 'mm.dd hh:MM')
  328. response.data.data[i].auditMind = ''
  329. }
  330. }
  331. }
  332. console.log(response.data.data)
  333. this.auditList = response.data.data
  334. var time2 = new Date(this.list.updateDate).getTime()
  335. var time3 = this.$u.timeFormat(time2, 'mm.dd hh:MM')
  336. this.auditList.unshift({
  337. operatorTitle: this.list.creater.substring(0, 2),
  338. operatorName: this.list.creater,
  339. updateDate: time3,
  340. auditMind: '',
  341. desc: '发起申请',
  342. showflow: false,
  343. commonStaffs1: null,
  344. commonStaffs: null,
  345. workflowHistoricTasks: [],
  346. status: 'success'
  347. })
  348. })
  349. })
  350. }
  351. })
  352. },
  353. confirm(item) {
  354. this.list.contractNo = item[0].value
  355. },
  356. audit() {
  357. var that = this
  358. that.show2 = false
  359. uni.showModal({
  360. content: "是否确定通过审核?",
  361. showCancel: true,
  362. confirmText: '确定',
  363. success: function(res) {
  364. if (res.confirm) {
  365. uni.showLoading({
  366. title: "审核中"
  367. })
  368. // that.$api.doRequest('post', '/purchasePrice/purchasePriceEdit', that.list)
  369. // .then(res => {
  370. // if (res.data.code == 200) {
  371. that.$api.doRequest('post', '/newWorkflow/api/handle', {
  372. approved: true,
  373. auditMind: that.rejectInfo1,
  374. needReapply: true,
  375. taskId: that.list.taskId,
  376. }).then(res1 => {
  377. if (res1.data.code == 200) {
  378. that.$api.msg('审核成功');
  379. setTimeout(function() {
  380. if (this.everyCheck) {
  381. helper.setAudit(that.list)
  382. } else {
  383. uni.navigateBack()
  384. }
  385. uni.hideLoading()
  386. }, 1000);
  387. } else {
  388. that.$api.msg(res1.data.message);
  389. }
  390. })
  391. // } else {
  392. // that.$api.msg('系统异常,请联系管理员');
  393. // }
  394. // })
  395. }
  396. }
  397. })
  398. },
  399. reject() {
  400. if (!this.rejectInfo) {
  401. this.$api.msg('驳回原因不能为空!')
  402. } else {
  403. var that = this
  404. that.show1 = false
  405. uni.showModal({
  406. content: "是否确定驳回?",
  407. showCancel: true,
  408. confirmText: '确定',
  409. success: function(res) {
  410. if (res.confirm) {
  411. uni.showLoading({
  412. title: "审核中"
  413. })
  414. that.$api.doRequest('post', '/newWorkflow/api/handle', {
  415. taskId: that.list.taskId,
  416. approved: false,
  417. auditMind: that.rejectInfo,
  418. needReapply: true,
  419. }).then(res1 => {
  420. if (res1.data.code == 200) {
  421. that.$api.msg('驳回成功');
  422. setTimeout(function() {
  423. if (that.everyCheck) {
  424. helper.setAudit(that.list)
  425. } else {
  426. uni.navigateBack()
  427. }
  428. uni.hideLoading()
  429. }, 1000);
  430. } else {
  431. that.$api.msg(res1.data.message);
  432. }
  433. })
  434. }
  435. }
  436. })
  437. }
  438. }
  439. }
  440. }
  441. </script>
  442. <style scoped lang="scss">
  443. .warp {
  444. margin: 10rpx;
  445. padding: 20rpx 20rpx 330rpx 20rpx;
  446. }
  447. .content1,
  448. .content2 {
  449. border-radius: 20rpx;
  450. background: white;
  451. padding: 20rpx;
  452. .title {
  453. font-size: 28rpx;
  454. font-weight: 600;
  455. color: #333333;
  456. text-align: left;
  457. }
  458. .row {
  459. display: flex;
  460. justify-content: space-between;
  461. border-bottom: 1px solid #EEEEEE;
  462. padding: 21rpx 0;
  463. .right,
  464. input {
  465. font-size: 28rpx;
  466. color: #333333;
  467. }
  468. }
  469. }
  470. .content2 {
  471. margin-top: 20rpx;
  472. }
  473. .bottom-btn {
  474. width: 100%;
  475. position: fixed;
  476. bottom: 0;
  477. display: flex;
  478. z-index: 2;
  479. left: 0;
  480. background-color: #f8f8f8;
  481. flex-direction: column;
  482. .btn1,
  483. .btn2 {
  484. width: 100%;
  485. margin-bottom: 26rpx;
  486. border-radius: 90rpx;
  487. }
  488. .btn1 {
  489. background: white;
  490. color: #00C265;
  491. }
  492. }
  493. .submit {
  494. width: 40%;
  495. background: #22C572;
  496. border-radius: 10rpx;
  497. }
  498. .boder {
  499. border: 0;
  500. border-bottom: 0 !important;
  501. }
  502. .topInfo {
  503. height: 210rpx;
  504. background: linear-gradient(270deg, #22C572 0%, #34DE8A 100%);
  505. padding: 30rpx;
  506. .topInfo-item {
  507. height: 150rpx;
  508. background-color: #FFFFFF;
  509. border-radius: 20rpx;
  510. padding: 40rpx;
  511. .logo {
  512. width: 40rpx;
  513. height: 40rpx;
  514. margin-top: 8rpx;
  515. }
  516. .infoText {
  517. font-size: 36rpx;
  518. font-weight: 600;
  519. margin-left: 20rpx;
  520. }
  521. .infoData {
  522. color: #878C9C;
  523. font-size: 26rpx;
  524. margin-top: 10rpx;
  525. }
  526. }
  527. }
  528. .shade {
  529. position: fixed;
  530. top: 0;
  531. left: 0;
  532. height: 100%;
  533. width: 100%;
  534. background: rgba(0, 0, 0, 0.4);
  535. z-index: 3;
  536. .wrap {
  537. position: absolute;
  538. left: 0;
  539. top: 0;
  540. right: 0;
  541. bottom: 0;
  542. margin: auto;
  543. background: #fff;
  544. width: calc(100% - 198rpx);
  545. height: 700rpx;
  546. border-radius: 20rpx;
  547. .alert-top {
  548. padding: 33rpx;
  549. display: flex;
  550. justify-content: center;
  551. align-items: center;
  552. position: relative;
  553. }
  554. .title {
  555. font-size: 32rpx;
  556. font-weight: 600;
  557. color: #333333;
  558. }
  559. .close {
  560. position: absolute;
  561. right: 33rpx;
  562. }
  563. }
  564. }
  565. // .cancel,
  566. // .confirm {
  567. // position: absolute;
  568. // display: inline-block;
  569. // width: 50%;
  570. // text-align: center;
  571. // bottom: 0;
  572. // padding: 10px;
  573. // border-top: 1px solid #eee;
  574. // font-size: 34rpx;
  575. // }
  576. // .cancel {
  577. // left: 0;
  578. // border-right: 1px solid #eee;
  579. // color: #AFB3BF;
  580. // }
  581. // .confirm {
  582. // right: 0;
  583. // color: #22C572;
  584. // }
  585. .u-textarea-style {
  586. margin: 20rpx;
  587. background: #F9F9FA;
  588. border-radius: 10px;
  589. border: 1px solid #EEEEEE;
  590. padding: 10rpx 20rpx;
  591. position: relative;
  592. .right-bottom {
  593. position: absolute;
  594. right: 20rpx;
  595. bottom: 20rpx;
  596. color: #AFB3BF;
  597. }
  598. }
  599. /deep/.u-input__textarea {
  600. height: 300rpx !important;
  601. }
  602. .cancel,
  603. .confirm {
  604. position: absolute;
  605. display: inline-block;
  606. width: 50%;
  607. text-align: center;
  608. bottom: 0;
  609. padding: 10px;
  610. border-top: 1px solid #eee;
  611. font-size: 34rpx;
  612. }
  613. .cancel {
  614. left: 0;
  615. border-right: 1px solid #eee;
  616. color: #AFB3BF;
  617. }
  618. .confirm {
  619. right: 0;
  620. color: #22C572;
  621. }
  622. .content3 {
  623. background: white;
  624. margin: 20rpx 0;
  625. border-radius: 20rpx;
  626. padding: 20rpx;
  627. .row {
  628. display: flex;
  629. .left {
  630. display: flex;
  631. align-items: center;
  632. .item1 {
  633. position: relative;
  634. .item-content {
  635. background: #617AE0;
  636. width: 44px;
  637. height: 44px;
  638. border-radius: 22px;
  639. line-height: 44px;
  640. text-align: center;
  641. font-size: 15px;
  642. color: #fff;
  643. }
  644. .status {
  645. position: absolute;
  646. border-radius: 50%;
  647. padding: 0px 2px;
  648. right: -3px;
  649. bottom: -3px;
  650. background: #fff;
  651. }
  652. .status.success {
  653. border: 1px solid rgb(60, 156, 255);
  654. }
  655. .status.error {
  656. border: 1px solid rgb(245, 108, 108);
  657. }
  658. .status.question {
  659. border: 1px solid #f9ae3d;
  660. }
  661. }
  662. }
  663. .right {
  664. width: 80%;
  665. // color: #B0B1B5;
  666. margin-top: 10px;
  667. .right-content {
  668. background: #F2F3F7;
  669. margin-left: 10px;
  670. margin-top: 10px;
  671. padding: 10px;
  672. border-radius: 5px;
  673. color: #B0B1B5;
  674. }
  675. .right-item {
  676. display: flex;
  677. justify-content: space-between;
  678. .time {
  679. color: #999;
  680. }
  681. .item2 {
  682. margin-left: 20rpx;
  683. margin-top: -7px;
  684. .name {
  685. font-size: 28rpx;
  686. font-weight: 800;
  687. }
  688. .status.success {
  689. color: #6CC48C;
  690. }
  691. .status.error {
  692. color: rgb(245, 108, 108);
  693. }
  694. .status.question {
  695. color: #f9ae3d;
  696. }
  697. }
  698. }
  699. }
  700. }
  701. .row2 {
  702. display: flex;
  703. .item-content {
  704. background: #22C572;
  705. width: 30px;
  706. height: 30px;
  707. border-radius: 50%;
  708. line-height: 30px;
  709. text-align: center;
  710. font-size: 12px;
  711. color: #fff;
  712. padding: 0 2px;
  713. margin: 0 auto;
  714. }
  715. .status {
  716. position: absolute;
  717. top: 0;
  718. right: 0;
  719. }
  720. }
  721. .row-line {
  722. width: 1px;
  723. height: 30px;
  724. background: #F2F2F2;
  725. margin: 10rpx 50rpx;
  726. }
  727. .audit {
  728. margin-top: 20rpx;
  729. }
  730. }
  731. .form_view {
  732. margin: 20rpx 0;
  733. border-radius: 20rpx;
  734. background: #F9F9FA;
  735. padding: 30rpx 20rpx;
  736. .table_css td {
  737. text-align: center;
  738. border: 1rpx solid #DBD9CE;
  739. padding: 14rpx 0;
  740. }
  741. .table_css {
  742. border: 1rpx solid #DBD9CE;
  743. }
  744. }
  745. </style>