index.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834
  1. <template>
  2. <view class="container">
  3. <view class="step-bar">
  4. <view >
  5. <view class="h-num">
  6. <view class="head-ball" :style="currentStep == 0 ? 'background-color: #fbe362;':'background-color: #91d224;color:#FFFFFF' " >
  7. <text>1</text>
  8. </view>
  9. </view>
  10. <view class="">账号查询</view>
  11. </view>
  12. <view>
  13. <u-icon name="more-dot-fill" color="#cccccc" size="28"></u-icon>
  14. </view>
  15. <view >
  16. <view class="h-num">
  17. <view class="head-ball" :style="currentStep == 1 ? 'background-color: #fbe362;':(currentStep == 0? 'background-color: #FFFFFF' :'background-color: #91d224;color:#FFFFFF' ) " >
  18. <text>2</text>
  19. </view>
  20. </view>
  21. <view class="">信息确认</view>
  22. </view>
  23. <view>
  24. <u-icon name="more-dot-fill" color="#cccccc" size="28"></u-icon>
  25. </view>
  26. <view >
  27. <view class="h-num">
  28. <view class="head-ball" :style="currentStep == 2 ? 'background-color: #fbe362;':'background-color: #FFFFFF' " >
  29. <text>3</text>
  30. </view>
  31. </view>
  32. <view class="">账号迁移</view>
  33. </view>
  34. </view>
  35. <view class="form">
  36. <view v-if="currentStep === 0" class="h-content-wrap">
  37. <u--form labelPosition="top" :model="userInfo" :rules="rules" ref="form1">
  38. <u-form-item labelWidth="auto" labelAlign="right" label="老系统手机号" prop="phone">
  39. <u--input v-model="userInfo.phone" disabledColor="#ffffff" placeholder="填写老系统电话" border="bottom"
  40. maxlength="11"></u--input>
  41. </u-form-item>
  42. <u-form-item label="老系统会员姓名" prop="memberName" labelPosition="top" labelWidth="auto" labelAlign="right">
  43. <u--input v-model="userInfo.memberName" disabledColor="#ffffff" placeholder="填写姓名" border="bottom"
  44. maxlength="16"></u--input>
  45. </u-form-item>
  46. <u-form-item label="当前手机号" prop="phonenumber" labelWidth="auto" labelAlign="right">
  47. <u--input v-model="userInfo.phonenumber" disabledColor="#ffffff" placeholder="填写当前手机号"
  48. border="bottom" maxlength="11"></u--input>
  49. </u-form-item>
  50. <u-form-item labelWidth="auto" labelAlign="right" label="验证码" prop="smsCode" width="120">
  51. <u--input v-model="userInfo.smsCode" disabledColor="#ffffff" placeholder="请输入验证码" border="bottom"
  52. maxlength="6"></u--input>
  53. <template #right>
  54. <view class="identifying-code">
  55. <u-code ref="uCode2" @change="codeChange2" keep-running start-text="获取验证码"></u-code>
  56. <text @tap="getCode2" :text="tips2" class="u-page__code-text">{{ tips2 }}</text>
  57. </view>
  58. </template>
  59. </u-form-item>
  60. </u--form>
  61. </view>
  62. <view v-if="currentStep === 1">
  63. <view class="h-content">
  64. <view class="h-basic-info">
  65. <view class="h-value">
  66. <view class="h-name">会员编号</view>
  67. <view class="h-text">{{ userMemberInfo.memberNo }}</view>
  68. </view>
  69. <view class="h-value">
  70. <view class="h-name">会员卡号</view>
  71. <view class="h-text">{{ userMemberInfo.memberCard }}</view>
  72. </view>
  73. <view class="h-value">
  74. <view class="h-name">会员姓名</view>
  75. <view class="h-text">{{ userMemberInfo.memberName }}</view>
  76. </view>
  77. <view class="h-value">
  78. <view class="h-name">手机号码</view>
  79. <view class="h-text">{{ userMemberInfo.phone }}</view>
  80. </view>
  81. <view class="h-value">
  82. <view class="h-name">积分</view>
  83. <view class="h-text">{{ userMemberInfo.integral }}</view>
  84. </view>
  85. <view class="h-value">
  86. <view class="h-name">账户余额</view>
  87. <view class="h-text">¥{{ userMemberInfo.nowBalance }}</view>
  88. </view>
  89. </view>
  90. <view class="h-record">
  91. <!-- 导航-->
  92. <view class="service-order-tab-bar">
  93. <view class="service-order-tab-item" :class="{ active: currentServiceTab === 'orderTab1' }"
  94. @click="changeServiceTab('orderTab1')">
  95. <text :class="{ underline: currentServiceTab === 'orderTab1' }">充值记录</text>
  96. </view>
  97. <view class="service-order-tab-item" :class="{ active: currentServiceTab === 'orderTab2' }"
  98. @click="changeServiceTab('orderTab2')">
  99. <text :class="{ underline: currentServiceTab === 'orderTab2' }">消费记录</text>
  100. </view>
  101. </view>
  102. <view class="custom-line"></view>
  103. <!-- order -->
  104. <view v-if="currentServiceTab == 'orderTab1' " class="store-order-wrap">
  105. <view v-for="(item, index) in memberInfoRecords" class="store-order">
  106. <view class="h-content">
  107. <view class="h-row">
  108. <view class="h-value">
  109. <text>储值记录</text>
  110. </view>
  111. <view class="h-value">
  112. <text>+ ¥{{ item.rechargeAmount }}</text>
  113. </view>
  114. </view>
  115. <view class="h-row">
  116. <view class="h-value">
  117. <text class="h-text">{{ item.rechargeTime }}</text>
  118. </view>
  119. <view class="h-value h-name">
  120. <text class="h-text">账户余额:¥{{ item.nowBalance }}</text>
  121. </view>
  122. </view>
  123. </view>
  124. <view class="custom-line"></view>
  125. </view>
  126. </view>
  127. <view v-if="currentServiceTab == 'orderTab2'" class="store-order-wrap">
  128. <view v-for="(item, index) in memberInfoRecords" class="store-order">
  129. <view class="h-content">
  130. <view class="h-row">
  131. <view class="h-value">
  132. <text>消费记录</text>
  133. </view>
  134. <view class="h-value">
  135. <text>- ¥{{ item.consumeAmount }}</text>
  136. </view>
  137. </view>
  138. <view class="h-row">
  139. <view class="h-value">
  140. <text class="h-text">{{ item.consumeTime }}</text>
  141. </view>
  142. <!-- <view class="h-value h-name">-->
  143. <!-- <text class="h-text">账户余额:¥{{ item.nowBalance }}</text>-->
  144. <!-- </view>-->
  145. </view>
  146. </view>
  147. <view class="custom-line"></view>
  148. </view>
  149. </view>
  150. </view>
  151. </view>
  152. </view>
  153. <!-- <view v-if="currentStep === 2" class="">-->
  154. <!-- <view class="letter-commitment">-->
  155. <!-- <view class="h-title">-->
  156. <!-- <text>个人信息真实承诺书</text>-->
  157. <!-- </view>-->
  158. <!-- <view class="">-->
  159. <!-- <text>会员姓名:{{ userInfo.memberName }}</text>-->
  160. <!-- </view>-->
  161. <!-- <view class="">-->
  162. <!-- <text>老系统手机号: {{ userInfo.phone }}</text>-->
  163. <!-- </view>-->
  164. <!-- <view class="">-->
  165. <!-- <text>当前手机号: {{ userInfo.phonenumber }}</text>-->
  166. <!-- </view>-->
  167. <!-- <view class="">-->
  168. <!-- <text>为系统迁移: 本人郑重承诺</text>-->
  169. <!-- </view>-->
  170. <!-- <view class="h-content">-->
  171. <!-- <view class="" v-html="termOfService.aboutContent"></view>-->
  172. <!-- </view>-->
  173. <!-- </view>-->
  174. <!-- </view>-->
  175. </view>
  176. <view v-if="currentStep === 2" class="">
  177. <view class="h-content-step-end">
  178. <view class="h-success">
  179. <u-icon name="checkmark" color="#5dac17" size="70"></u-icon>
  180. </view>
  181. <view class="h-name">
  182. <text>账户迁移成功</text>
  183. </view>
  184. <view @click="nextStep(3)" class="h-btn">
  185. <text>确认</text>
  186. </view>
  187. </view>
  188. </view>
  189. <view v-if="currentStep == 0" class="button-group">
  190. <!-- <button @click="prevStep" :disabled="currentStep === 0">上一步</button> -->
  191. <button class="h-btn" @click="nextStep(0)" :disabled="currentStep === steps.length - 1">开始查询</button>
  192. </view>
  193. <view v-if="currentStep == 1" class="button-group">
  194. <button @click="prevStep" :disabled="currentStep === 0">上一步</button>
  195. <view class="h-btn" @click="nextStep(2)" :disabled="currentStep === steps.length - 1">
  196. <text>确认并迁移</text>
  197. </view>
  198. </view>
  199. </view>
  200. </template>
  201. <script>
  202. import signature from '../components/sign/sign';
  203. export default {
  204. components: {
  205. signature
  206. },
  207. data() {
  208. return {
  209. showCanvas: false,
  210. currentStep: 0,
  211. steps: ['账户查询', '信息确认', '账户迁移'], // 步骤条的文字内容
  212. step1Value: '',
  213. step2Value: '',
  214. step3Value: '',
  215. userInfo: {
  216. auth: true,
  217. phone: '18231041846',
  218. memberName: '赵梓熠-测试',
  219. phonenumber: '18231041846',
  220. smsCode: '',
  221. memberNo: "18902",
  222. type: 7,
  223. requstForm: true
  224. },
  225. // 服务条款对象信息
  226. termOfService: {
  227. aboutContent: "<p>会员协议会员协议会员协议会员协议会员协议会员协议</p>",
  228. aboutType: "1",
  229. createBy: "admin",
  230. createTime: "2023-07-30 08:53:17",
  231. id: "1685574269874098178",
  232. status: "0",
  233. updateBy: "admin",
  234. updateTime: "2023-07-30 21:04:51"
  235. },
  236. userMemberInfo: {
  237. memberNo: "string",
  238. pingYinCode: "string",
  239. memberName: "string",
  240. integral: 0,
  241. sex: 0,
  242. birthday: "string",
  243. phone: "string",
  244. memberPassword: "string",
  245. height: "string",
  246. weight: "string",
  247. memberCard: "string",
  248. address: "string",
  249. nowBalance: 0,
  250. totalConsumeAmount: 0,
  251. debt: 0,
  252. remarks: "string",
  253. joinTime: "string",
  254. memberStatus: 0,
  255. referencesNo: "string",
  256. consumeCycle: "string",
  257. otherInfo: "string",
  258. photoUrl: "string"
  259. },
  260. memberInfoRecords: [{
  261. orderNo: "string",
  262. memberNo: "string",
  263. memberName: "string",
  264. phone: "string",
  265. consumeAmount: 0,
  266. realPayAmount: 0,
  267. profit: 0,
  268. integral: 0,
  269. remainDebt: 0,
  270. consumeTime: "string",
  271. remarks: "string",
  272. consumeStore: "string",
  273. consumeType: "string",
  274. discountAmount: 0,
  275. bedName: "string",
  276. payInfo: "string",
  277. memberStore: "string",
  278. payType: "string"
  279. }],
  280. show: false,
  281. currentTab: 'tab1', // 当前选中的 Tab
  282. currentServiceTab: 'orderTab1', // 当前选中的 Tab
  283. defaultColor: '#CCCCCC',
  284. currentColor: '#FF0000',
  285. completedColor: '#00FF00',
  286. content: '一、本人所提供的个人信息 证明材料、证件',
  287. signType: '',
  288. signImg1: '',
  289. tips2: '',
  290. rules: {
  291. phone: [
  292. {
  293. required: true,
  294. min: 10,
  295. max: 12,
  296. message: '请输入11位电话号码',
  297. trigger: ['blur', 'change'],
  298. },
  299. {
  300. // 此为同步验证,可以直接返回true或者false,如果是异步验证,稍微不同,见下方说明
  301. validator: (rule, value, callback) => {
  302. // 调用uView自带的js验证规则,详见:https://www.uviewui.com/js/test.html
  303. return !this.$isDataEmpty(value);
  304. },
  305. message: "请认真填写电话号码",
  306. trigger: ['blur', 'change'],
  307. }
  308. ],
  309. memberName: [
  310. {
  311. required: true,
  312. message: '请输入名字',
  313. trigger: ['blur', 'change'],
  314. },
  315. ],
  316. phonenumber: [
  317. {
  318. required: true,
  319. min: 10,
  320. max: 12,
  321. message: '请输入11位电话号码',
  322. trigger: ['blur', 'change'],
  323. },
  324. {
  325. // 此为同步验证,可以直接返回true或者false,如果是异步验证,稍微不同,见下方说明
  326. validator: (rule, value, callback) => {
  327. // 调用uView自带的js验证规则,详见:https://www.uviewui.com/js/test.html
  328. return !this.$isDataEmpty(value);
  329. },
  330. message: "请认真填写电话号码",
  331. trigger: ['blur', 'change'],
  332. }
  333. ],
  334. // smsCode: {
  335. // required: true,
  336. // min: 4,
  337. // max: 6,
  338. // message: '请认真填写验证码',
  339. // trigger: ['blur', 'change'],
  340. // },
  341. },
  342. };
  343. },
  344. computed: {
  345. itemObject(num) {
  346. return (num) => ({
  347. backgroundColor: item.background,
  348. gridColumnStart: item.columnStart,
  349. gridColumnEnd: item.columnEnd,
  350. gridRowStart: item.rowStart,
  351. gridRowEnd: item.rowEnd
  352. })
  353. }
  354. },
  355. onLoad() {
  356. // 获取服务条款数据
  357. // this.getTermOfServiceByType();
  358. },
  359. onUnload() {
  360. if (this.timer) {
  361. clearTimeout(this.timer);
  362. this.timer = null;
  363. }
  364. },
  365. onReady() {
  366. this.$refs.form1.setRules(this.rules)
  367. },
  368. methods: {
  369. // 关闭签名框
  370. closeCanvas() {
  371. this.showCanvas = false;
  372. },
  373. // 选择签名类型
  374. personSing(type) {
  375. this.showCanvas = true;
  376. this.signType = type;
  377. },
  378. // 保存签名信息
  379. saveCanvasImg(path) {
  380. console.log(path)
  381. let that = this;
  382. uni.uploadFile({
  383. url: this.$host + '/resource/oss/upload', //仅为示例,非真实的接口地址
  384. filePath: path,
  385. name: 'file',
  386. header: {
  387. 'Authorization': 'Bearer ' + that.$store.state.loginState.accessToken,
  388. },
  389. success: (uploadFileRes) => {
  390. let res = JSON.parse(uploadFileRes.data)
  391. console.log(res)
  392. that.showCanvas = false;
  393. }
  394. });
  395. },
  396. codeChange2(text) {
  397. this.tips2 = text;
  398. },
  399. getCode2() {
  400. if (this.$refs.uCode2.canGetCode) {
  401. this.getSmsCode();
  402. } else {
  403. uni.$u.toast('倒计时结束后再发送');
  404. }
  405. },
  406. // 获取手机验证码
  407. getSmsCode() {
  408. // 模拟向后端请求验证码
  409. uni.showLoading({
  410. title: '正在获取验证码'
  411. })
  412. this.$api.getSmsCode({phonenumber: this.userInfo.phone, auth: true}).then((res) => {
  413. uni.hideLoading();
  414. // 这里此提示会被this.start()方法中的提示覆盖
  415. uni.$u.toast('验证码已发送');
  416. // 通知验证码组件内部开始倒计时
  417. this.$refs.uCode2.start();
  418. }).catch(() => {
  419. uni.showToast({
  420. title: "操作失败"
  421. })
  422. });
  423. },
  424. getStepClass(index) {
  425. if (index < this.currentStep) {
  426. return 'step';
  427. } else if (index === this.currentStep) {
  428. return ['step', 'active'];
  429. } else {
  430. return ['step', 'default'];
  431. }
  432. },
  433. // 查询老会员系统数据
  434. getOldMember() {
  435. // this.$api.getOldMember(this.userInfo).then((res) => {
  436. // if (!!res) {
  437. // this.userMemberInfo = res.data.data;
  438. // this.userInfo.memberNo = res.data.data.memberNo;
  439. // } else {
  440. // uni.$u.toast('未查询到数据');
  441. // }
  442. // 查询充值记录
  443. this.getOrderRechargeOldList();
  444. this.timer = setTimeout(() => {
  445. if (this.currentStep < this.steps.length - 1) {
  446. this.currentStep++;
  447. }
  448. }, 0)
  449. // }).catch((res) => {
  450. // uni.showToast({
  451. // title: "操作失败"
  452. // })
  453. // });
  454. },
  455. // 查询会员消费记录
  456. getOrderConsumeLogOld() {
  457. this.$api.getOrderConsumeLogOld(this.userInfo).then((res) => {
  458. this.memberInfoRecords = res.data.data;
  459. }).catch(() => {
  460. uni.showToast({
  461. title: "操作失败"
  462. })
  463. });
  464. },
  465. // 查询叶会员充值记录
  466. getOrderRechargeOldList() {
  467. this.$api.getOrderRechargeOldList(this.userInfo).then((res) => {
  468. this.memberInfoRecords = res.data.data;
  469. }).catch(() => {
  470. uni.showToast({
  471. title: "操作失败"
  472. })
  473. });
  474. },
  475. // 提交保存
  476. submitOldData() {
  477. console.log(this.userInfo.memberNo)
  478. this.userInfo.memberNo = '18902'
  479. this.$api.submitOldData(this.userInfo).then((res) => {
  480. console.log(res)
  481. if (this.currentStep < this.steps.length - 1) {
  482. this.currentStep++;
  483. }
  484. }).catch(() => {
  485. uni.showToast({
  486. title: "操作失败"
  487. })
  488. });
  489. },
  490. nextStep(idx) {
  491. if (idx == 0) { // 查询数据
  492. console.log(this.$refs.form1.validate(), '2222222222')
  493. this.$refs.form1.validate().then(res => {
  494. this.getOldMember();
  495. }).catch(errors => {
  496. uni.$u.toast('校验失败,请认真填写')
  497. })
  498. }
  499. if (idx == 1) { // 显示查询数据
  500. if (this.currentStep < this.steps.length - 1) {
  501. this.currentStep++;
  502. }
  503. }
  504. if (idx == 2) { // 用户签名确认
  505. this.submitOldData();
  506. }
  507. if (idx == 3) { // 迁移成功,重新设置用户数据
  508. uni.switchTab({
  509. url: '/pages/index/index',
  510. })
  511. }
  512. },
  513. prevStep() {
  514. if (this.currentStep > 0) {
  515. this.currentStep--;
  516. }
  517. },
  518. changeTab(tab) {
  519. this.currentTab = tab;
  520. },
  521. // 服务订单
  522. changeServiceTab(tab) {
  523. if (tab == 'orderTab1') {
  524. this.getOrderRechargeOldList();
  525. } else if (tab == 'orderTab2') {
  526. this.getOrderConsumeLogOld();
  527. }
  528. this.currentServiceTab = tab;
  529. },
  530. // 获取服务条款信息
  531. getTermOfServiceByType() {
  532. // 获取数据
  533. this.$api.getTermOfServiceByType({data: this.userInfo}).then((res) => {
  534. if (res.aboutContent) {
  535. this.termOfService.aboutContent = res.aboutContent
  536. } else {
  537. this.termOfService.aboutContent = "暂无信息!!!"
  538. }
  539. }).catch(() => {
  540. uni.showToast({
  541. title: "操作失败"
  542. })
  543. });
  544. },
  545. }
  546. };
  547. </script>
  548. <style scoped lang="scss">
  549. .h-content-step-end {
  550. height: 300px;
  551. text-align: center;
  552. padding-top: 60px;
  553. font-family: PingFangSC-Regular, PingFang SC;
  554. .h-success {
  555. margin: 0 auto;
  556. display: flex;
  557. justify-content: center;
  558. height: 80px;
  559. width: 80px;
  560. background: #f7fbf3;
  561. border-radius: 40px;
  562. }
  563. .h-name {
  564. margin-top: 20px;
  565. height: 22px;
  566. font-size: 14px;
  567. font-weight: 400;
  568. color: #666666;
  569. line-height: 22px;
  570. }
  571. .h-btn {
  572. margin: 0 auto;
  573. margin-top: 40px;
  574. width: 319px;
  575. height: 42px;
  576. background: #FFE05C;
  577. border-radius: 27px;
  578. display: flex;
  579. justify-content: center;
  580. align-items: center;
  581. font-size: 14px;
  582. }
  583. }
  584. .letter-commitment {
  585. padding: 12px;
  586. background: #fff;
  587. .h-title {
  588. text-align: center;
  589. font-size: 14px;
  590. }
  591. }
  592. .col-border-2 {
  593. margin-top: 12px;
  594. .sign-wrap {
  595. display: flex;
  596. justify-content: center;
  597. align-items: center;
  598. height: 120px;
  599. background: #FFFFFF;
  600. }
  601. }
  602. .sign-agree {
  603. font-size: 14px;
  604. font-weight: 400;
  605. color: #666666;
  606. line-height: 50px;
  607. text-align: center;
  608. }
  609. .h-content-wrap {
  610. background: #fff;
  611. border-radius: 20rpx;
  612. padding-left: 12px;
  613. padding-right: 12px;
  614. }
  615. .h-content {
  616. margin-bottom: 12px;
  617. background-color: #fff;
  618. .h-basic-info {
  619. padding: 12px;
  620. background: whitesmoke;
  621. border-radius: 6px;
  622. margin: 20rpx;
  623. .h-value {
  624. display: flex;
  625. font-family: PingFangSC-Regular, PingFang SC;
  626. font-size: 14px;
  627. font-weight: 400;
  628. .h-name {
  629. width: 56px;
  630. height: 22px;
  631. color: #999999;
  632. line-height: 22px;
  633. margin-right: 12px;
  634. }
  635. .h-text {
  636. height: 22px;
  637. color: #333333;
  638. line-height: 22px;
  639. }
  640. }
  641. }
  642. .h-record {
  643. margin-top: 24rpx;
  644. /* 服务订单内容*/
  645. .service-order-tab-bar {
  646. background: #FAFAFA;
  647. display: flex;
  648. justify-content: space-around;
  649. height: 50px;
  650. .service-order-tab-item {
  651. flex: 1;
  652. display: flex;
  653. align-items: center;
  654. justify-content: center;
  655. font-size: 16px;
  656. color: #333;
  657. line-height: 26px;
  658. margin: 10rpx;
  659. border-radius: 10rpx;
  660. }
  661. .service-order-tab-item.active {
  662. background-color: #fbe262;
  663. }
  664. }
  665. }
  666. }
  667. .store-order-wrap {
  668. padding: 12px;
  669. .store-order {
  670. background: #fff;
  671. padding: 10px;
  672. border-radius: 3px;
  673. font-family: PingFangSC-Regular, PingFang SC;
  674. .h-content {
  675. .h-row {
  676. display: flex;
  677. justify-content: space-between;
  678. }
  679. .h-text {
  680. font-size: 12px;
  681. font-weight: 400;
  682. color: #999999;
  683. line-height: 20px;
  684. }
  685. }
  686. }
  687. }
  688. .h-footer {
  689. text-align: right;
  690. }
  691. .signature-wrap {
  692. height: 120px;
  693. width: 300px;
  694. }
  695. .step-bar {
  696. padding: 12px;
  697. display: flex;
  698. justify-content: space-between;
  699. margin-bottom: 20px;
  700. }
  701. .step {
  702. position: relative;
  703. /* width: 100%; */
  704. // height: 40px;
  705. /* background-color: #ccc; */
  706. display: flex;
  707. align-items: center;
  708. justify-content: center;
  709. color: #fff;
  710. height: 30px;
  711. width: 30px;
  712. background: green;
  713. border-radius: 15px;
  714. margin: 0 auto;
  715. }
  716. .h-num {
  717. margin: 0 auto;
  718. }
  719. .head-ball {
  720. transform: translateX(50%);
  721. width: 60rpx;
  722. height: 60rpx;
  723. line-height: 60rpx;
  724. border-radius: 30rpx;
  725. background-color: #fbe362;
  726. text-align: center;
  727. }
  728. .step.default {
  729. color: #333;
  730. background: #fff;
  731. }
  732. .step.active {
  733. color: #333;
  734. background: #FFE05C;
  735. }
  736. .separator {
  737. position: absolute;
  738. top: 50%;
  739. left: 130%;
  740. transform: translateY(-50%);
  741. width: 50px;
  742. height: 2px;
  743. border: 1px dashed #000;
  744. }
  745. .form {
  746. margin-bottom: 20px;
  747. border-radius: 6px;
  748. }
  749. .button-group {
  750. height: 60px;
  751. position: fixed;
  752. bottom: 0px;
  753. left: 0px;
  754. right: 0px;
  755. display: flex;
  756. justify-content: space-between;
  757. background: #fff;
  758. .h-btn {
  759. margin: 0 auto;
  760. margin-top: 8px;
  761. width: 200px;
  762. height: 42px;
  763. background: #FFE05C;
  764. border-radius: 27px;
  765. display: flex;
  766. justify-content: center;
  767. align-items: center;
  768. font-size: 14px;
  769. }
  770. }
  771. .identifying-code {
  772. image {
  773. width: 80px;
  774. height: 30px;
  775. }
  776. }
  777. </style>