detail.vue 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756
  1. <template>
  2. <view class="detail-page white-wrap">
  3. <view>
  4. <!-- 基础信息模块 -->
  5. <view class="section white-wrap base-info-wrap" v-if="info">
  6. <view class="title">
  7. {{ info.CompanyApprovalDetail.CompanyName }}
  8. <van-tag
  9. color="#ECF5FF"
  10. text-color="#4A83F1"
  11. style="margin-bottom:0;margin-left: 10rpx;"
  12. v-if="info.CompanyApprovalDetail.ApprovalCount>0"
  13. >
  14. 第{{ info.CompanyApprovalDetail.ApprovalCount }}次申请
  15. </van-tag>
  16. <van-tag
  17. type="warning"
  18. color="#f59a23"
  19. plain
  20. style="margin-left: 24rpx;font-weight: normal;"
  21. v-if="info.CompanyApprovalDetail.ContractSourceTag"
  22. >
  23. {{ info.CompanyApprovalDetail.ContractSourceTag }}
  24. </van-tag>
  25. </view>
  26. <view class="base-info-list">
  27. <block v-for="item in baseInfo">
  28. <view :key="item.key">
  29. <text class="lable">{{ item.key }}:</text>
  30. <text :style="{ color: item.color }" v-if="item.key==='合同期限'">{{showTermHandelr(item)}}</text>
  31. <text :style="{ color: item.color }" v-else>{{ item.val }}</text>
  32. <van-tag v-if="item.tag" color="#ECF5FF" text-color="#4A83F1" style="margin-left:5px">
  33. {{ item.tag }}
  34. </van-tag>
  35. </view>
  36. <view style="padding-left:140rpx;margin-top:-10px" v-if="item.key==='合同期限'">({{item.val|formateYear}})</view>
  37. </block>
  38. <view v-if="info && info.CompanyApprovalDetail.ApproveStatus === '驳回'">
  39. <text class="lable" style="color:#FE6B7C">驳回理由:</text>
  40. <text style="color:#FE6B7C">{{ info.CompanyApprovalDetail.ApproveRemark }}</text>
  41. </view>
  42. </view>
  43. <image :src="info.CompanyApprovalDetail.statusImg" mode="aspectFill" class="status-img"></image>
  44. <!-- view class="status-img pass-img" v-if="info.CompanyApprovalDetail.ApproveStatus==='已审批'"></view>
  45. <view class="status-img fail-img" v-if="info.CompanyApprovalDetail.ApproveStatus==='驳回'"></view> -->
  46. </view>
  47. <!-- 套餐模块 -->
  48. <view class="section white-wrap variety-wrap package-type" v-if="packageType">
  49. <view class="title setmeal">套餐类型</view>
  50. <van-tag color="#ECF5FF" text-color="#4A83F1" custom-class="package-tag">{{ packageType == 1 ? '大套餐' : '小套餐' }}</van-tag>
  51. </view>
  52. <!-- 品种模块 -->
  53. <view class="section white-wrap variety-wrap" v-if="varietyInfo">
  54. <view class="title">{{ varietyInfo.title }}</view>
  55. <view class="variety-list">
  56. <view class="variety-item flex" v-for="item in varietyInfo.list" :key="item.ClassifyName">
  57. <view class="lable">{{ item.ClassifyName }}:</view>
  58. <view class="content">
  59. <van-tag color="#ECF5FF" text-color="#4A83F1" v-for="tag in item.Items"
  60. :key="tag.ChartPermissionId" custom-class="tag">{{ tag.PermissionName }}</van-tag>
  61. </view>
  62. </view>
  63. </view>
  64. </view>
  65. <!-- 合同模块 -->
  66. <view class="section white-wrap contract-wrap" v-if="constractFiles.length !== 0">
  67. <view class="title">查看合同附件</view>
  68. <view class="contract-list">
  69. <view class="contract-item" v-for="item in constractFiles" :key="item.url"
  70. @click="preViewContract(item)">
  71. <image class="contract-img" mode="aspectFill" :src="item.img"></image>
  72. </view>
  73. </view>
  74. </view>
  75. <!-- 客户信息模块 -->
  76. <view class="section white-wrap customer-wrap" v-if="showCustomerInfo && info">
  77. <view class="title">客户信息</view>
  78. <view class="customer-main-info">
  79. <view class="customer-info-item">
  80. <text>客户名称:</text>
  81. <text>{{ info.CompanyApprovalDetail.CompanyName }}</text>
  82. </view>
  83. <view class="customer-info-item">
  84. <text>社会信用码:</text>
  85. <text>{{ info.CompanyApprovalDetail.CreditCode }}</text>
  86. </view>
  87. <view class="customer-info-item">
  88. <text>地址:</text>
  89. <text>{{ info.CompanyApprovalDetail.Address }}</text>
  90. </view>
  91. </view>
  92. <view class="customer-info-list flex">
  93. <view class="customer-info-item flex" style="width:50%">
  94. <text style="flexShrink:0">客户类型:</text>
  95. <text>{{ info.CompanyApprovalDetail.CompanyType }}</text>
  96. </view>
  97. <view class="customer-info-item flex" style="width:50%">
  98. <text style="flexShrink:0">客户状态:</text>
  99. <text>{{ info.CompanyApprovalDetail.Status }}</text>
  100. </view>
  101. <view class="customer-info-item flex" style="width:50%">
  102. <text style="flexShrink:0">客户来源:</text>
  103. <text>{{ info.CompanyApprovalDetail.Source }}</text>
  104. </view>
  105. <view class="customer-info-item flex" style="width:50%">
  106. <text style="flexShrink:0">行业:</text>
  107. <text>{{ info.CompanyApprovalDetail.IndustryName }}</text>
  108. </view>
  109. <view class="customer-info-item flex" style="width:50%">
  110. <text style="flexShrink:0">申请销售:</text>
  111. <text>{{ info.CompanyApprovalDetail.SellerName }}</text>
  112. </view>
  113. </view>
  114. </view>
  115. <!-- 流程模块 -->
  116. <view class="section process-wrap">
  117. <view class="title" style="font-size: 16px;font-weight: bold;">审批流程</view>
  118. <steps :data="info.FlowNodeList"></steps>
  119. </view>
  120. </view>
  121. <!-- 审批按钮 -->
  122. <view class="fix-bottom-wrap btns-wrap flex" v-if="info &&info.CompanyApprovalDetail.OpButton&& info.CompanyApprovalDetail.ApproveStatus === '待审批'">
  123. <button class="pass-btn" @click="handlePass">通过</button>
  124. <button class="refuse-btn" @click="handleRefuse">驳回</button>
  125. </view>
  126. <van-dialog id="van-dialog" />
  127. </view>
  128. </template>
  129. <script>
  130. import {apiCustomeDetail,apiCustomeContractDetail,apiCustomeApprove} from '@/api/approve/custome.js'
  131. import {preViewFile} from '../utils/util.js'
  132. import steps from '../components/steps.vue'
  133. import {CalculationDate} from '@/utils/calculationDate.js'
  134. export default {
  135. components:{
  136. steps
  137. },
  138. filters:{
  139. formateYear(time){
  140. let s=time.replace(/\./g, '-').split('~')[0]
  141. let e=time.replace(/\./g, '-').split('~')[1]
  142. return `有效期为 ${CalculationDate(s,e)} `;
  143. }
  144. },
  145. computed: {
  146. //是否显示客户信息模块
  147. showCustomerInfo() {
  148. if (this.info && (this.info.CompanyApprovalDetail.ApplyMethod === 2 || this.info.CompanyApprovalDetail
  149. .ApplyMethod === 4)) {
  150. return false;
  151. } else {
  152. return true;
  153. }
  154. },
  155. },
  156. data() {
  157. return {
  158. id: null,
  159. info: null,
  160. baseInfo: null, //顶部基础信息
  161. varietyInfo: null, //品种信息
  162. constractFiles: [], //合同文件
  163. packageType:'',//套餐类型
  164. };
  165. },
  166. onLoad(options) {
  167. this.id = options.id||0
  168. },
  169. onShow() {
  170. this.getDetail()
  171. },
  172. onPullDownRefresh() {
  173. this.getDetail()
  174. setTimeout(() => {
  175. uni.stopPullDownRefresh()
  176. }, 1000)
  177. },
  178. methods: {
  179. // 同意
  180. async handlePass() {
  181. const res = await apiCustomeApprove({
  182. CompanyApprovalId: Number(this.info.CompanyApprovalDetail.CompanyApprovalId),
  183. CompanyContractId: Number(this.info.CompanyApprovalDetail.CompanyContractId),
  184. CompanyId: Number(this.info.CompanyApprovalDetail.CompanyId),
  185. Remark: "",
  186. Status: 1,
  187. })
  188. if (res.code === 200) {
  189. this.$dialog.alert({
  190. title: "处理成功",
  191. confirmButtonColor: "#5890FB",
  192. }).then(() => {
  193. // on close
  194. this.getDetail()
  195. // 更新列表
  196. uni.$emit('customeApproveListUpdate',{CompanyApprovalId:this.id})
  197. });
  198. }
  199. },
  200. //拒绝
  201. handleRefuse(){
  202. const data=this.info.CompanyApprovalDetail
  203. uni.navigateTo({
  204. url:`./reason?CompanyApprovalId=${data.CompanyApprovalId}&CompanyContractId=${data.CompanyContractId}&CompanyId=${data.CompanyId}`
  205. })
  206. },
  207. // 获取审批单详情
  208. async getDetail() {
  209. const res = await apiCustomeDetail({
  210. ApprovalId: this.id
  211. })
  212. if (res.code === 200) {
  213. this.info = res.data
  214. console.log(this.info);
  215. // 初始化状态
  216. let statusImg=''
  217. switch(res.data.CompanyApprovalDetail.ApproveStatus){
  218. case '已审批':
  219. statusImg=require('../static/pass-icon.png')
  220. break;
  221. case '驳回':
  222. statusImg=require('../static/fail-icon.png')
  223. break;
  224. }
  225. this.info.CompanyApprovalDetail.statusImg=statusImg
  226. let contractInfo = null
  227. // 如果有合同id 则获取合同数据
  228. if (res.data.CompanyApprovalDetail.CompanyContractId != 0) {
  229. const contractRes = await apiCustomeContractDetail({
  230. CompanyId: res.data.CompanyApprovalDetail.CompanyId,
  231. CompanyContractId: res.data.CompanyApprovalDetail.CompanyContractId
  232. })
  233. if (contractRes.code === 200) {
  234. contractInfo = contractRes.data
  235. this.packageType = contractRes.data.PackageType
  236. }
  237. }
  238. this.initTopInfo(res.data, contractInfo)
  239. this.initVarietyInfo(res.data, contractInfo)
  240. this.initContractFiles(res.data, contractInfo)
  241. }
  242. },
  243. // 预览合同文件
  244. preViewContract(e) {
  245. if (e.type === "pdf") {
  246. preViewFile(e.url)
  247. } else {
  248. uni.previewImage({
  249. urls: [e.url]
  250. })
  251. }
  252. },
  253. // 初始化合同文件数据
  254. initContractFiles(info, contractInfo) {
  255. let arr = [];
  256. if (info && contractInfo && (info.CompanyApprovalDetail.ApplyMethod === 1 || info
  257. .CompanyApprovalDetail.ApplyMethod === 5||info
  258. .CompanyApprovalDetail.ApplyMethod === 6)) {
  259. const reg = /\.(pdf)|\.doc|\.docx$/;
  260. arr = contractInfo.ImgUrl.split("#").map((item) => {
  261. if (reg.test(item)) {
  262. return {
  263. type: "pdf",
  264. url: item,
  265. img: require("@/pages-approve/static/pdf.png"),
  266. };
  267. } else {
  268. return {
  269. type: "img",
  270. url: item,
  271. img: item,
  272. };
  273. }
  274. });
  275. }
  276. this.constractFiles = arr
  277. },
  278. // 初始化顶部数据
  279. initTopInfo(info, contractInfo) {
  280. let arr = [];
  281. //试用转正式
  282. if (info && contractInfo && info.CompanyApprovalDetail.ApplyMethod === 1) {
  283. uni.setNavigationBarTitle({
  284. title:'试用转正式'
  285. })
  286. arr = [{
  287. key: "合同编号",
  288. val: contractInfo.ContractCode,
  289. tag: contractInfo.ContractType,
  290. },
  291. {
  292. key: "合同期限",
  293. val: `${contractInfo.StartDate}~${contractInfo.EndDate}`.replace(/-/g, '.'),
  294. quarter:contractInfo.Quarter ||''
  295. },
  296. {
  297. key: "合同金额",
  298. val: contractInfo.Money+'元',
  299. color: "#FE6B7C",
  300. },
  301. {
  302. key: "付款方式",
  303. val: contractInfo.PayMethod,
  304. },
  305. {
  306. key: "付款渠道",
  307. val: contractInfo.PayChannel,
  308. },
  309. {
  310. key: "申请时间",
  311. val: info.CompanyApprovalDetail.ApprovalTime.replace(/-/g, '.'),
  312. },
  313. // {
  314. // key: "申请理由",
  315. // val: info.CompanyApprovalDetail.ApplyReasons || "无",
  316. // },
  317. ];
  318. }
  319. //冻结转试用
  320. if (info && info.CompanyApprovalDetail.ApplyMethod === 2) {
  321. uni.setNavigationBarTitle({
  322. title:'冻结转试用'
  323. })
  324. arr = [{
  325. key: "客户状态",
  326. val: info.CompanyApprovalDetail.Status,
  327. },
  328. {
  329. key: "冻结期限",
  330. val: `${info.CompanyApprovalDetail.FreezeStartDate}~${info.CompanyApprovalDetail.FreezeEndDate}`
  331. .replace(/-/g, '.'),
  332. },
  333. {
  334. key: "到期天数",
  335. val: info.CompanyApprovalDetail.FreezeExpireDays,
  336. },
  337. {
  338. key: "申请销售",
  339. val: info.CompanyApprovalDetail.ApplyRealName,
  340. },
  341. {
  342. key: "申请时间",
  343. val: info.CompanyApprovalDetail.ApprovalTime.replace(/-/g, '.'),
  344. },
  345. {
  346. key: "解冻理由",
  347. val: info.CompanyApprovalDetail.ApplyReasons,
  348. },
  349. ];
  350. }
  351. //试用延期
  352. if (info && info.CompanyApprovalDetail.ApplyMethod === 3) {
  353. uni.setNavigationBarTitle({
  354. title:'试用延期'
  355. })
  356. arr = [{
  357. key: "地址",
  358. val: info.CompanyApprovalDetail.Address,
  359. },
  360. {
  361. key: "申请时间",
  362. val: info.CompanyApprovalDetail.ApprovalTime.replace(/-/g, '.'),
  363. },
  364. {
  365. key: "申请理由",
  366. val: info.CompanyApprovalDetail.ApplyReasons,
  367. },
  368. ];
  369. }
  370. //原销售申请领取
  371. if (info && info.CompanyApprovalDetail.ApplyMethod === 4) {
  372. uni.setNavigationBarTitle({
  373. title:'原销售申请领取'
  374. })
  375. arr = [{
  376. key: "客户状态",
  377. val: info.CompanyApprovalDetail.Status,
  378. },
  379. {
  380. key: "原销售",
  381. val: info.CompanyApprovalDetail.SellerName,
  382. },
  383. {
  384. key: "申请销售",
  385. val: info.CompanyApprovalDetail.ApplyRealName,
  386. },
  387. {
  388. key: "申请时间",
  389. val: info.CompanyApprovalDetail.ApprovalTime.replace(/-/g, '.'),
  390. },
  391. {
  392. key: "申请理由",
  393. val: info.CompanyApprovalDetail.ApplyReasons,
  394. },
  395. ];
  396. }
  397. //续约申请/补充协议
  398. if (info && contractInfo && (info.CompanyApprovalDetail.ApplyMethod === 5||info.CompanyApprovalDetail.ApplyMethod===6)) {
  399. uni.setNavigationBarTitle({
  400. title:info.CompanyApprovalDetail.ApplyMethod === 5?'续约申请':'补充协议'
  401. })
  402. arr = [{
  403. key: "合同编号",
  404. val: contractInfo.ContractCode,
  405. tag: contractInfo.ContractType,
  406. },
  407. {
  408. key: "合同期限",
  409. val: `${contractInfo.StartDate}~${contractInfo.EndDate}`.replace(/-/g, '.'),
  410. quarter:contractInfo.Quarter||''
  411. },
  412. {
  413. key: "合同金额",
  414. val: contractInfo.Money+'元',
  415. color: "#FE6B7C",
  416. },
  417. {
  418. key: "付款方式",
  419. val: contractInfo.PayMethod,
  420. },
  421. {
  422. key: "付款渠道",
  423. val: contractInfo.PayChannel,
  424. },
  425. {
  426. key: "申请时间",
  427. val: info.CompanyApprovalDetail.ApprovalTime.replace(/-/g, '.'),
  428. },
  429. // {
  430. // key: "申请理由",
  431. // val: info.CompanyApprovalDetail.ApplyReasons || "无",
  432. // },
  433. ];
  434. }
  435. this.baseInfo = arr
  436. },
  437. // 初始化品种信息
  438. initVarietyInfo(info, contractInfo) {
  439. let usertype = this.$store.state.userInfo.ProductName; //用户身份类型admin,ficc,权益
  440. let arr = [];
  441. let obj = {
  442. title: "",
  443. list: [],
  444. };
  445. //试用转正式
  446. if (info && contractInfo && info.CompanyApprovalDetail.ApplyMethod === 1) {
  447. obj.title = "购买品种";
  448. arr = contractInfo.PermissionList;
  449. if (!arr) return obj;
  450. arr.forEach((item) => {
  451. let temarr = item.Items.filter((e) => {
  452. let flag = item.CheckList.includes(e.ChartPermissionId);
  453. if (flag) return e;
  454. });
  455. if (temarr.length !== 0) {
  456. obj.list.push({
  457. ClassifyName: item.ClassifyName,
  458. Items: temarr,
  459. });
  460. }
  461. });
  462. }
  463. //冻结转试用
  464. if (info && info.CompanyApprovalDetail.ApplyMethod === 2) {
  465. obj.title = "申请品种";
  466. if (usertype === "ficc") {
  467. arr = info.FiccPermissionList;
  468. } else if (usertype === "权益") {
  469. arr = info.PermissionList;
  470. } else if (usertype === "admin") {
  471. if (info.FiccPermissionList) {
  472. arr = [...info.FiccPermissionList];
  473. }
  474. if (info.PermissionList) {
  475. arr = [...info.PermissionList];
  476. }
  477. }
  478. if (!arr) return obj;
  479. arr.forEach((item) => {
  480. let temarr = item.Items.filter((e) => {
  481. let flag = item.CheckList.includes(e.ChartPermissionId);
  482. if (flag) return e;
  483. });
  484. if (temarr.length !== 0) {
  485. obj.list.push({
  486. ClassifyName: item.ClassifyName,
  487. Items: temarr,
  488. });
  489. }
  490. });
  491. }
  492. //试用延期
  493. if (info && info.CompanyApprovalDetail.ApplyMethod === 3) {
  494. obj.title = "申请品种";
  495. if (usertype === "ficc") {
  496. arr = info.FiccPermissionList;
  497. } else if (usertype === "权益") {
  498. arr = info.PermissionList;
  499. } else if (usertype === "admin") {
  500. if (info.FiccPermissionList) {
  501. arr = [...info.FiccPermissionList];
  502. }
  503. if (info.PermissionList) {
  504. arr = [...info.PermissionList];
  505. }
  506. }
  507. if (!arr) return obj;
  508. arr.forEach((item) => {
  509. let temarr = item.Items.filter((e) => {
  510. let flag = item.CheckList.includes(e.ChartPermissionId);
  511. if (flag) return e;
  512. });
  513. if (temarr.length !== 0) {
  514. obj.list.push({
  515. ClassifyName: item.ClassifyName,
  516. Items: temarr,
  517. });
  518. }
  519. });
  520. }
  521. //原销售申请领取
  522. if (info && info.CompanyApprovalDetail.ApplyMethod === 4) {
  523. obj.title = "申请品种";
  524. if (usertype === "ficc") {
  525. arr = info.FiccPermissionList;
  526. } else if (usertype === "权益") {
  527. arr = info.PermissionList;
  528. } else if (usertype === "admin") {
  529. if (info.FiccPermissionList) {
  530. arr = [...info.FiccPermissionList];
  531. }
  532. if (info.PermissionList) {
  533. arr = [...info.PermissionList];
  534. }
  535. }
  536. if (!arr) return obj;
  537. arr.forEach((item) => {
  538. let temarr = item.Items.filter((e) => {
  539. let flag = item.CheckList.includes(e.ChartPermissionId);
  540. if (flag) return e;
  541. });
  542. if (temarr.length !== 0) {
  543. obj.list.push({
  544. ClassifyName: item.ClassifyName,
  545. Items: temarr,
  546. });
  547. }
  548. });
  549. }
  550. //续约申请/补充协议
  551. if (info && contractInfo && (info.CompanyApprovalDetail.ApplyMethod === 5||info.CompanyApprovalDetail.ApplyMethod===6)) {
  552. obj.title = "购买品种";
  553. arr = contractInfo.PermissionList;
  554. if (!arr) return obj;
  555. arr.forEach((item) => {
  556. let temarr = item.Items.filter((e) => {
  557. let flag = item.CheckList.includes(e.ChartPermissionId);
  558. if (flag) return e;
  559. });
  560. if (temarr.length !== 0) {
  561. obj.list.push({
  562. ClassifyName: item.ClassifyName,
  563. Items: temarr,
  564. });
  565. }
  566. });
  567. }
  568. this.varietyInfo = obj
  569. },
  570. // 合同期限
  571. showTermHandelr(item) {
  572. let str = item.quarter? `${item.quarter}(${item.val})` : item.val
  573. return str
  574. }
  575. },
  576. }
  577. </script>
  578. <style lang="scss">
  579. .detail-page {
  580. width: 100%;
  581. min-height: 100vh;
  582. padding-bottom: calc(150rpx + constant(safe-area-inset-bottom));
  583. padding-bottom: calc(150rpx + env(safe-area-inset-bottom));
  584. }
  585. .section {
  586. padding: 30rpx 34rpx;
  587. border-bottom: 14rpx solid #f5f5f5;
  588. &:last-child {
  589. margin-bottom: 0;
  590. border: none;
  591. }
  592. .title {
  593. font-size: 16px;
  594. font-weight: bold;
  595. margin: 0 0 40rpx 0;
  596. }
  597. .setmeal {
  598. margin: 0;
  599. }
  600. .lable {
  601. color: #666;
  602. flex-shrink: 0;
  603. font-size: 14px;
  604. }
  605. }
  606. .base-info-wrap {
  607. position: relative;
  608. .title {
  609. margin: 0 0 40rpx 0;
  610. &::before {
  611. content: "";
  612. display: inline-block;
  613. width: 15px;
  614. height: 17px;
  615. background-image: url("@/static/man.png");
  616. background-size: cover;
  617. background-repeat: no-repeat;
  618. margin-right: 10rpx;
  619. position: relative;
  620. top: 4rpx;
  621. }
  622. }
  623. .base-info-list {
  624. font-size: 14px;
  625. color: #000;
  626. view {
  627. margin-bottom: 10px;
  628. display: flex;
  629. }
  630. }
  631. .status-img{
  632. position: absolute;
  633. width: 220rpx;
  634. height: 220rpx;
  635. right: 0;
  636. top: 100rpx;
  637. }
  638. }
  639. .package-type {
  640. display: flex !important;
  641. align-items: center;
  642. .package-tag {
  643. margin-left: 15rpx;
  644. }
  645. }
  646. .variety-wrap {
  647. .variety-item {
  648. padding-top: 24rpx;
  649. padding-bottom: 24rpx;
  650. border-bottom: 1px dashed rgba(112, 112, 112, 0.2);
  651. }
  652. .variety-item:first-child {
  653. padding-top: 0;
  654. }
  655. .variety-item:last-child {
  656. border-bottom: none;
  657. }
  658. .tag {
  659. margin-right: 10rpx;
  660. margin-bottom: 10rpx;
  661. }
  662. }
  663. .contract-list {
  664. display: flex;
  665. flex-wrap: wrap;
  666. .contract-img {
  667. width: 102rpx;
  668. height: 120rpx;
  669. }
  670. }
  671. .customer-main-info {
  672. padding-bottom: 40rpx;
  673. border-bottom: 1px dashed rgba(112, 112, 112, 0.2);
  674. }
  675. .customer-info-item {
  676. font-size: 14px;
  677. color: #999;
  678. margin-bottom: 20rpx;
  679. }
  680. .customer-info-list {
  681. flex-wrap: wrap;
  682. padding-top: 20rpx;
  683. }
  684. .btns-wrap {
  685. justify-content: center;
  686. button {
  687. width: 260rpx;
  688. height: 70rpx;
  689. border-radius: 28px;
  690. border: none;
  691. margin: 0 15px;
  692. font-size: 15px;
  693. color: #fff;
  694. line-height: 70rpx;
  695. }
  696. .pass-btn {
  697. background-color: #5890fb;
  698. }
  699. .refuse-btn {
  700. background-color: #f55768;
  701. }
  702. }
  703. </style>