merchant.vue 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653
  1. <template>
  2. <s-layout class="set-wrap" :title="t('merchant.merchant_registration')" :bgStyle="{ color: '#FFF' }">
  3. <template v-if="state.canUse">
  4. <uni-forms :model="state.model" :rules="state.rules" validateTrigger="bind" labelPosition="left" border
  5. class="form-box" labelWidth='200' ref="merchantFormRef">
  6. <view class="bg-white ss-p-x-30">
  7. <uni-forms-item name="name" :label="t('merchant.merchant_name')" :required="!state.formStatus">
  8. <uni-easyinput v-model="state.model.name" type="name" ::placeholder="t('merchant.merchant_name')" :inputBorder="false"
  9. :placeholderStyle="placeholderStyle" :clearable="false" :disabled="state.formStatus" />
  10. </uni-forms-item>
  11. <uni-forms-item name="contact" :label="t('merchant.contact_person')" :required="!state.formStatus">
  12. <uni-easyinput v-model="state.model.contact" type="contact" :placeholder="t('merchant.enter_contact_person')"
  13. :inputBorder="false" :placeholderStyle="placeholderStyle" :clearable="false"
  14. :disabled="state.formStatus" />
  15. </uni-forms-item>
  16. <uni-forms-item name="contactNumber" :label="t('merchant.contact_phone')" :required="!state.formStatus">
  17. <uni-easyinput v-model="state.model.contactNumber" type="contactNumber" :placeholder="t('merchant.enter_contact_phone')"
  18. :inputBorder="false" :placeholderStyle="placeholderStyle" :clearable="false"
  19. :disabled="state.formStatus" />
  20. </uni-forms-item>
  21. <uni-forms-item name="legalPerson" :label="t('merchant.legal_person')" :required="!state.formStatus">
  22. <uni-easyinput v-model="state.model.legalPerson" type="legalPerson" :placeholder="t('merchant.enter_legal_person')"
  23. :inputBorder="false" :placeholderStyle="placeholderStyle" :clearable="false"
  24. :disabled="state.formStatus" />
  25. </uni-forms-item>
  26. <uni-forms-item name="legalPersonNumber" :label="t('merchant.legal_person_phone')" :required="!state.formStatus">
  27. <uni-easyinput v-model="state.model.legalPersonNumber" type="legalPersonNumber"
  28. :placeholder="t('merchant.enter_legal_person_phone')" :inputBorder="false" :placeholderStyle="placeholderStyle"
  29. :clearable="false" :disabled="state.formStatus" />
  30. </uni-forms-item>
  31. <uni-forms-item name="identityCardFront" :label="t('merchant.legal_person_id_front')" :required="!state.formStatus"
  32. :errorMessage="state.identityCardFrontError">
  33. <s-uploader v-model:url="state.model.identityCardFront" fileMediatype="image" limit="1"
  34. mode="grid" :imageStyles="{ width: '299rpx', height: '168rpx' }"
  35. :readonly="state.formStatus" />
  36. </uni-forms-item>
  37. <uni-forms-item name="identityCardReverseSide" :label="t('merchant.legal_person_id_back')" :required="!state.formStatus"
  38. :errorMessage="identityCardReverseSideError">
  39. <s-uploader v-model:url="state.model.identityCardReverseSide" fileMediatype="image" limit="1"
  40. mode="grid" :imageStyles="{ width: '299rpx', height: '168rpx' }"
  41. :readonly="state.formStatus" />
  42. </uni-forms-item>
  43. <uni-forms-item name="areaId" :label="t('merchant.location')" :required="!state.formStatus"
  44. :errorMessage="state.areaIdError">
  45. <uni-data-picker v-model="state.model.areaId" :localdata="areaTree"
  46. :readonly="state.formStatus" />
  47. </uni-forms-item>
  48. <uni-forms-item name="email" :label="t('merchant.email')" :required="!state.formStatus">
  49. <uni-easyinput v-model="state.model.email" type="email" :placeholder="t('merchant.enter_email')" :inputBorder="false"
  50. :placeholderStyle="placeholderStyle" :clearable="false" :disabled="state.formStatus" />
  51. </uni-forms-item>
  52. <uni-forms-item name="address" :label="t('merchant.office_address')">
  53. <uni-easyinput v-model="state.model.address" type="address" :placeholder="t('merchant.office_address')"
  54. :inputBorder="false" :placeholderStyle="placeholderStyle" :clearable="false"
  55. :disabled="state.formStatus" />
  56. </uni-forms-item>
  57. <uni-forms-item name="complaintsHotline" :label="t('merchant.rights_phone')">
  58. <uni-easyinput v-model="state.model.complaintsHotline" type="complaintsHotline"
  59. :placeholder="t('merchant.enter_rights_phone')" :inputBorder="false" :placeholderStyle="placeholderStyle"
  60. :clearable="false" :disabled="state.formStatus" />
  61. </uni-forms-item>
  62. <uni-forms-item name="customerServiceHotline" :label="t('merchant.customer_service_phone')" :required="!state.formStatus">
  63. <uni-easyinput v-model="state.model.customerServiceHotline" type="customerServiceHotline"
  64. :placeholder="t('merchant.enter_customer_service_phone')" :inputBorder="false" :placeholderStyle="placeholderStyle"
  65. :clearable="false" :disabled="state.formStatus" />
  66. </uni-forms-item>
  67. <uni-forms-item name="website" :label="t('merchant.website')">
  68. <uni-easyinput v-model="state.model.website" type="website" :placeholder="t('merchant.enter_website')"
  69. :inputBorder="false" :placeholderStyle="placeholderStyle" :clearable="false"
  70. :disabled="state.formStatus" />
  71. </uni-forms-item>
  72. <uni-forms-item name="bankName" :label="t('merchant.bank')" :required="!state.formStatus">
  73. <uni-easyinput v-model="state.model.bankName" type="bankName" :placeholder="t('merchant.enter_bank')"
  74. :inputBorder="false" :placeholderStyle="placeholderStyle" :clearable="false"
  75. :disabled="state.formStatus" />
  76. </uni-forms-item>
  77. <uni-forms-item name="accountName" :label="t('merchant.account_name')" :required="!state.formStatus">
  78. <uni-easyinput v-model="state.model.accountName" type="accountName" :placeholder="t('merchant.enter_account_name')"
  79. :inputBorder="false" :placeholderStyle="placeholderStyle" :clearable="false"
  80. :disabled="state.formStatus" />
  81. </uni-forms-item>
  82. <uni-forms-item name="accountNumber" :label="t('merchant.account_number')" :required="!state.formStatus">
  83. <uni-easyinput v-model="state.model.accountNumber" type="number" :placeholder="t('merchant.enter_account_number')"
  84. :inputBorder="false" :placeholderStyle="placeholderStyle" :clearable="false"
  85. :disabled="state.formStatus" />
  86. </uni-forms-item>
  87. <uni-forms-item name="logoUrl" label="Logo">
  88. <s-uploader v-model:url="state.model.logoUrl" fileMediatype="image" limit="1" mode="grid"
  89. :imageStyles="{ width: '299rpx', height: '168rpx' }" :readonly="state.formStatus" />
  90. </uni-forms-item>
  91. <uni-forms-item name="businessLicensePicture" :label="t('merchant.business_license')" :required="!state.formStatus"
  92. :errorMessage="state.businessLicensePictureError">
  93. <s-uploader v-model:url="state.model.businessLicensePicture" fileMediatype="image" limit="1"
  94. mode="grid" :imageStyles="{ width: '299rpx', height: '168rpx' }"
  95. :readonly="state.formStatus" />
  96. </uni-forms-item>
  97. <uni-forms-item name="brandLicensing" :label="t('merchant.brand_authorization')" :required="!state.formStatus"
  98. :errorMessage="state.brandLicensingError">
  99. <s-uploader v-model:url="state.model.brandLicensing" fileMediatype="image" limit="1" mode="grid"
  100. :imageStyles="{ width: '299rpx', height: '168rpx' }" :readonly="state.formStatus" />
  101. <view class="ss-m-t-20 " style="color: var(--ui-BG-Main);" @click="downloadTemplate"
  102. v-if="!state.model.brandLicensing">
  103. {{ t('merchant.download_template') }}
  104. </view>
  105. </uni-forms-item>
  106. <uni-forms-item name="otherCertificate" :label="t('merchant.other_certificates')">
  107. <s-uploader v-model:url="state.model.otherCertificate" fileMediatype="image" limit="9"
  108. mode="grid" :imageStyles="{ width: '299rpx', height: '168rpx' }"
  109. :readonly="state.formStatus" />
  110. </uni-forms-item>
  111. <uni-forms-item name="description" :label="t('merchant.introduction')" :required="!state.formStatus">
  112. <uni-easyinput v-model="state.model.description" type="description" :placeholder="t('merchant.enter_introduction')"
  113. :inputBorder="false" :placeholderStyle="placeholderStyle" :clearable="false"
  114. :disabled="state.formStatus" />
  115. </uni-forms-item>
  116. <uni-forms-item name="description" :label="t('merchant.status')" v-if="state.userApplyStatus">
  117. <uni-easyinput v-model="statusName" type="description" :inputBorder="false"
  118. :placeholderStyle="placeholderStyle" :clearable="false" :disabled="true" />
  119. </uni-forms-item>
  120. </view>
  121. </uni-forms>
  122. <su-fixed bottom placeholder bg="none">
  123. <view class="footer-box ss-p-20 ss-flex">
  124. <!-- 审核中不允许改 -->
  125. <!-- 通过后 变动 -->
  126. <!-- {{"用户是否申请过:"+state.userApplyStatus}}
  127. {{"当前状态"+state.model.checkStatus}}
  128. {{"当前状态是否能改动:" + !state.formStatus}} -->
  129. <button class="ss-rest-button btn" @tap="onSubmit" v-if="!state.userApplyStatus">{{ t('common.submit') }}</button>
  130. <template v-if="[0].includes(state.model.checkStatus)">
  131. <button class="ss-rest-button btn">{{ t('merchant.review_in_progress') }}</button>
  132. </template>
  133. <template v-if="[1,2].includes(state.model.checkStatus)">
  134. <template v-if="!state.changeIng">
  135. <button class="ss-rest-button btn-two" @tap="openList">{{ t('merchant.review_records') }}</button>
  136. <button class="ss-rest-button btn-two" @tap="onChange">{{ t('merchant.changes') }}</button>
  137. </template>
  138. <template v-else>
  139. <button class="ss-rest-button btn-two" @tap="onCancel">{{ t('common.cancel') }}</button>
  140. <button class="ss-rest-button btn-two" @tap="onSave">{{ t('merchant.save_and_submit') }}</button>
  141. </template>
  142. </template>
  143. </view>
  144. </su-fixed>
  145. </template>
  146. <template v-if="!state.canUse">
  147. <view style="position: fixed;top: 50%;left: 50%;transform: translate(-50%,-50%);text-align:center">{{ t('merchant.existing_merchant_alert',{user:userInfo.mobile}) }}
  148. </view>
  149. </template>
  150. </s-layout>
  151. </template>
  152. <script setup>
  153. import {
  154. computed,
  155. reactive,
  156. onBeforeMount,
  157. ref,
  158. unref,
  159. watch
  160. } from 'vue';
  161. import sheep from '@/sheep';
  162. import {
  163. clone
  164. } from 'lodash';
  165. import {
  166. onLoad
  167. } from '@dcloudio/uni-app';
  168. import SaleApi from '@/sheep/api/sale/sale';
  169. import AreaApi from '@/sheep/api/system/area'
  170. import {
  171. email
  172. } from '@/sheep/validate/form';
  173. import {
  174. showAuthModal
  175. } from '@/sheep/hooks/useModal';
  176. import { t } from '@/locale'
  177. const userInfo = computed(() => sheep.$store('user').userInfo);
  178. const state = reactive({
  179. canUse: true, //用户是否可以打开页面true 可以,false不行
  180. userApplyStatus: false, //用户是否已经申请过false未无 true为有
  181. formStatus: false, // 当前表单是否可以修改
  182. changeIng: false, //当前是否在修改
  183. model: {
  184. checkStatus: undefined,
  185. id: undefined,
  186. name: undefined,
  187. status: undefined,
  188. description: undefined,
  189. contact: undefined,
  190. address: undefined,
  191. contactNumber: undefined,
  192. website: undefined,
  193. createTime: undefined,
  194. complaintsHotline: undefined,
  195. customerServiceHotline: undefined,
  196. email: undefined,
  197. businessLicensePicture: undefined,
  198. expireTime: undefined,
  199. areaId: undefined,
  200. accountName: undefined,
  201. accountNumber: undefined,
  202. bankName: undefined,
  203. logoUrl: undefined,
  204. brandLicensing: undefined,
  205. otherCertificate: [],
  206. legalPerson: undefined,
  207. legalPersonNumber: undefined,
  208. identityCardFront: undefined,
  209. identityCardReverseSide: undefined,
  210. },
  211. areaIdError: '',
  212. businessLicensePictureError: '',
  213. brandLicensingError: '',
  214. identityCardFrontError: '',
  215. identityCardReverseSideError: '',
  216. rules: {
  217. name: {
  218. rules: [{
  219. required: true,
  220. errorMessage: t('merchant.merchant_name_required'),
  221. }, ],
  222. },
  223. // description: {
  224. // rules: [{
  225. // required: true,
  226. // errorMessage: t('merchant.introduction_required'),
  227. // }, ],
  228. // },
  229. contact: {
  230. rules: [{
  231. required: true,
  232. errorMessage: t('merchant.contact_required'),
  233. }, ],
  234. },
  235. contactNumber: {
  236. rules: [{
  237. required: true,
  238. errorMessage: t('merchant.contact_phone_required'),
  239. }, ],
  240. },
  241. // customerServiceHotline: {
  242. // rules: [{
  243. // required: true,
  244. // errorMessage: t('merchant.customer_service_phone_required'),
  245. // }, ],
  246. // },
  247. // email,
  248. // legalPerson: {
  249. // rules: [{
  250. // required: true,
  251. // errorMessage: t('merchant.legal_person_required'),
  252. // }, ],
  253. // },
  254. // legalPersonNumber: {
  255. // rules: [{
  256. // required: true,
  257. // errorMessage: t('merchant.legal_person_phone_required'),
  258. // }, ],
  259. // },
  260. accountName: {
  261. rules: [{
  262. required: true,
  263. errorMessage: t('merchant.account_name_required'),
  264. }, ],
  265. },
  266. accountNumber: {
  267. rules: [{
  268. required: true,
  269. errorMessage: t('merchant.account_number_required'),
  270. }, ],
  271. },
  272. bankName: {
  273. rules: [{
  274. required: true,
  275. errorMessage: t('merchant.bank_required'),
  276. }, ],
  277. },
  278. }
  279. });
  280. const placeholderStyle = 'color:#BBBBBB;font-size:28rpx;line-height:normal';
  281. const statusName = computed(() => {
  282. const status = state.model.checkStatus;
  283. if (status === 0) {
  284. return t('merchant.under_review');
  285. } else if (status === 1) {
  286. return t('merchant.approved');
  287. } else if (status === 2) {
  288. return t('merchant.rejected');
  289. } else {
  290. return '';
  291. }
  292. });
  293. // 下载模板
  294. const downloadTemplate = () => {
  295. // console.log('下载模板')
  296. const fileUrl =
  297. 'https://zxgz.newfeifan.cn/static/file/%E9%9D%9E%E7%8B%AC%E5%AE%B6%E5%93%81%E7%89%8C%E6%8E%88%E6%9D%83%E4%B9%A6.docx'
  298. // 创建并触发下载链接
  299. const a = document.createElement('a');
  300. a.href = fileUrl;
  301. a.download = t('merchant.non_exclusive_authorization') + '.docx'; // 下载文件的名称(可以修改为你希望的名称)
  302. document.body.appendChild(a);
  303. a.click();
  304. // 移除下载链接
  305. document.body.removeChild(a);
  306. }
  307. // 校验联络人是否已经申请入驻,如果已经入驻,那就不给提交
  308. const checkNumber = () => {
  309. const {
  310. data,
  311. code
  312. } = SaleApi.checkContactNumber({
  313. mobile: state.model.contactNumber
  314. });
  315. }
  316. // 提交审核
  317. const merchantFormRef = ref(null);
  318. const onSubmit = async () => {
  319. // 参数校验
  320. const validate = await unref(merchantFormRef)
  321. .validate()
  322. .catch((error) => {
  323. console.log('error: ', error);
  324. });
  325. if (!validate) {
  326. return;
  327. }
  328. // if (!state.model.areaId) {
  329. // state.areaIdError = t('merchant.select_location');
  330. // return;
  331. // }
  332. // if (!state.model.identityCardFront) {
  333. // state.identityCardFrontError = t('merchant.select_legal_person_id_front');
  334. // return;
  335. // }
  336. // if (!state.model.identityCardReverseSide) {
  337. // state.identityCardReverseSideError = t('merchant.select_legal_person_id_back');
  338. // return;
  339. // }
  340. if (!state.model.businessLicensePicture) {
  341. state.businessLicensePictureError = t('merchant.upload_business_license');
  342. return;
  343. }
  344. if (!state.model.brandLicensing) {
  345. state.brandLicensingError = t('merchant.upload_brand_authorization');
  346. return;
  347. }
  348. const {
  349. data,
  350. code
  351. } = await SaleApi.createMerchant(state.model);
  352. if (code === 0) {
  353. await getInfo()
  354. }
  355. }
  356. // 修改
  357. const onChange = () => {
  358. state.formStatus = false;
  359. state.changeIng = true;
  360. }
  361. // 取消修改
  362. const onCancel = () => {
  363. state.formStatus = true;
  364. state.changeIng = false;
  365. }
  366. const openList = () => {
  367. sheep.$router.go('/pages/public/merchantApplyList', {
  368. merchantApplyId: state.model.id
  369. })
  370. }
  371. // 保存并提交
  372. const onSave = async () => {
  373. // 参数校验
  374. const validate = await unref(merchantFormRef)
  375. .validate()
  376. .catch((error) => {
  377. console.log('error: ', error);
  378. });
  379. if (!validate) {
  380. return;
  381. }
  382. const {
  383. data,
  384. code
  385. } = await SaleApi.updateMerchant(state.model);
  386. if (code === 0) {
  387. state.formStatus = true;
  388. state.changeIng = false;
  389. await getInfo()
  390. }
  391. }
  392. // 地区树
  393. const areaTree = ref([])
  394. function format(data) {
  395. return data.map((item) => ({
  396. text: item.name, // 显示的文本
  397. value: item.id, // 值
  398. children: item.children.length ? format(item.children) : null // 子项
  399. }));
  400. }
  401. const getInfo = async () => {
  402. const {
  403. data,
  404. code
  405. } = await SaleApi.getMerchant();
  406. if (code === 0 && data) {
  407. // 如果能查到东西就证明当前用户已经申请了商户,只需要展示即可
  408. state.model = data;
  409. state.userApplyStatus = true;
  410. state.formStatus = true;
  411. } else {
  412. state.userApplyStatus = false;
  413. state.formStatus = false;
  414. }
  415. }
  416. const isLogin = computed(() => sheep.$store('user').isLogin);
  417. // 监听到在这个页面登陆,并刷新页面
  418. watch(
  419. () => isLogin.value,
  420. (newVal) => {
  421. if (newVal) {
  422. window.location.reload()
  423. }
  424. }, {
  425. deep: true, // 深度监听
  426. },
  427. );
  428. onLoad(async (options) => {
  429. if (!isLogin.value) {
  430. showAuthModal();
  431. }else{
  432. await SaleApi.checkSystemUser().then(res => {
  433. console.log(!res.data)
  434. state.canUse = !res.data;
  435. })
  436. await AreaApi.getAreaTree().then(res => {
  437. areaTree.value = format(res.data)
  438. })
  439. await getInfo();
  440. }
  441. });
  442. </script>
  443. <style lang="scss" scoped>
  444. .icon {
  445. display: flex;
  446. align-items: center;
  447. margin-right: 7rpx
  448. }
  449. .icon image {
  450. width: 35rpx;
  451. height: 35rpx;
  452. }
  453. :deep() {
  454. .file-picker__progress {
  455. height: 0 !important;
  456. }
  457. .uni-list-item__content-title {
  458. font-size: 28rpx !important;
  459. color: #333333 !important;
  460. line-height: normal !important;
  461. }
  462. .uni-icons {
  463. font-size: 40rpx !important;
  464. }
  465. .is-disabled {
  466. color: #333333;
  467. }
  468. }
  469. :deep(.disabled) {
  470. opacity: 1;
  471. }
  472. .gender-name {
  473. font-size: 28rpx;
  474. font-weight: 500;
  475. line-height: normal;
  476. color: #333333;
  477. }
  478. .title-box {
  479. font-size: 28rpx;
  480. font-weight: 500;
  481. color: #666666;
  482. line-height: 100rpx;
  483. }
  484. .btn {
  485. width: 710rpx;
  486. height: 80rpx;
  487. background: linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient));
  488. border-radius: 40rpx;
  489. font-size: 30rpx;
  490. font-weight: 500;
  491. color: $white;
  492. }
  493. .btn-two {
  494. width: 310rpx;
  495. height: 80rpx;
  496. background: linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient));
  497. border-radius: 40rpx;
  498. font-size: 30rpx;
  499. font-weight: 500;
  500. color: $white;
  501. }
  502. .radio-dark {
  503. filter: grayscale(100%);
  504. filter: gray;
  505. opacity: 0.4;
  506. }
  507. .content-img {
  508. border-radius: 50%;
  509. }
  510. .header-box-content {
  511. position: relative;
  512. width: 160rpx;
  513. height: 160rpx;
  514. overflow: hidden;
  515. border-radius: 50%;
  516. }
  517. .avatar-action {
  518. position: absolute;
  519. left: 50%;
  520. transform: translateX(-50%);
  521. bottom: 0;
  522. z-index: 1;
  523. width: 160rpx;
  524. height: 46rpx;
  525. background: rgba(#000000, 0.3);
  526. .avatar-action-btn {
  527. width: 160rpx;
  528. height: 46rpx;
  529. font-weight: 500;
  530. font-size: 24rpx;
  531. color: #ffffff;
  532. }
  533. }
  534. // 绑定项
  535. .account-list {
  536. background-color: $white;
  537. height: 100rpx;
  538. padding: 0 20rpx;
  539. .list-img {
  540. width: 40rpx;
  541. height: 40rpx;
  542. margin-right: 10rpx;
  543. }
  544. .list-name {
  545. font-size: 28rpx;
  546. color: #333333;
  547. }
  548. .info {
  549. .avatar {
  550. width: 38rpx;
  551. height: 38rpx;
  552. border-radius: 50%;
  553. overflow: hidden;
  554. }
  555. .name {
  556. font-size: 28rpx;
  557. font-weight: 400;
  558. color: $dark-9;
  559. }
  560. }
  561. .bind-box {
  562. width: 100rpx;
  563. height: 50rpx;
  564. line-height: normal;
  565. display: flex;
  566. justify-content: center;
  567. align-items: center;
  568. font-size: 24rpx;
  569. .bind-btn {
  570. width: 100%;
  571. height: 100%;
  572. border-radius: 25rpx;
  573. background: #f4f4f4;
  574. color: #999999;
  575. }
  576. .relieve-btn {
  577. width: 100%;
  578. height: 100%;
  579. border-radius: 25rpx;
  580. background: var(--ui-BG-Main-opacity-1);
  581. color: var(--ui-BG-Main);
  582. }
  583. }
  584. }
  585. .list-border {
  586. font-size: 28rpx;
  587. font-weight: 400;
  588. color: #333333;
  589. border-bottom: 2rpx solid #eeeeee;
  590. }
  591. image {
  592. width: 100%;
  593. height: 100%;
  594. }
  595. </style>