registerDoctor.vue 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763
  1. <template>
  2. <view class="content">
  3. <view class="content">
  4. <view class="inner">
  5. <view class="bg">
  6. <image src="https://bjyjb-1362704775.cos.ap-chongqing.myqcloud.com/app/newImages/74645f3b57bc45b08b35e2449fdf90c7.jpg"></image>
  7. <view v-if="form.doctorType==1" class="title">医生注册</view>
  8. <view v-if="form.doctorType==1" class="desc">请填写医生资料</view>
  9. <view v-if="form.doctorType==2" class="title">药师注册</view>
  10. <view v-if="form.doctorType==2" class="desc">请填写药师资料</view>
  11. </view>
  12. <view class="my-form" >
  13. <u-form :rules="rules" :model="form" ref="uForm" labelPosition="left" errorType="toast">
  14. <u-form-item labelWidth="180rpx" borderBottom label="真实姓名" prop="doctorName">
  15. <u-input border="none" placeholder="请输入真实姓名" v-model="form.doctorName" />
  16. </u-form-item>
  17. <u-form-item labelWidth="180rpx" borderBottom label="身份证号" prop="idCard">
  18. <u-input border="none" placeholder="请输入身份证号" v-model="form.idCard" />
  19. </u-form-item>
  20. <u-form-item labelWidth="180rpx" borderBottom label="性别" prop="sex">
  21. <u-radio-group
  22. placement="row"
  23. v-model="form.sex"
  24. >
  25. <u-radio
  26. activeColor="#2583EB"
  27. :customStyle="{marginRight: '8px'}"
  28. key="1"
  29. label="男"
  30. name="1"
  31. >
  32. </u-radio>
  33. <u-radio
  34. activeColor="#2583EB"
  35. key="2"
  36. label="女"
  37. name="2"
  38. >
  39. </u-radio>
  40. </u-radio-group>
  41. </u-form-item>
  42. <u-form-item labelWidth="180rpx" prop="cityIds" @click="cityShow=true" borderBottom label="所在城市">
  43. <u-input
  44. v-model="form.cityName"
  45. disabled
  46. disabledColor="#ffffff"
  47. placeholder="请选择所在城市"
  48. border="none"
  49. ></u-input>
  50. <template #right>
  51. <u-icon
  52. name="arrow-right"
  53. ></u-icon>
  54. </template>
  55. </u-form-item>
  56. <template v-if="form.doctorType==1">
  57. <!-- <u-form-item labelWidth="180rpx" prop="hospitalId" @click="hospitalShow=true" borderBottom label="就职医院">
  58. <u-input
  59. v-model="form.hospitalName"
  60. disabled
  61. disabledColor="#ffffff"
  62. placeholder="请选择医院"
  63. border="none"
  64. ></u-input>
  65. <template #right>
  66. <u-icon
  67. name="arrow-right"
  68. ></u-icon>
  69. </template>
  70. </u-form-item> -->
  71. <u-form-item labelWidth="180rpx" prop="deptId" @click="deptShow=true" borderBottom label="所属科室">
  72. <u-input
  73. v-model="form.deptName"
  74. disabled
  75. disabledColor="#ffffff"
  76. placeholder="请选择科室"
  77. border="none"
  78. ></u-input>
  79. <template #right>
  80. <u-icon
  81. name="arrow-right"
  82. ></u-icon>
  83. </template>
  84. </u-form-item>
  85. </template>
  86. <u-form-item labelWidth="180rpx" prop="position" @click="positionShow=true" borderBottom label="职称">
  87. <u-input
  88. v-model="form.position"
  89. disabled
  90. disabledColor="#ffffff"
  91. placeholder="请选择职称"
  92. border="none"
  93. ></u-input>
  94. <template #right>
  95. <u-icon
  96. name="arrow-right"
  97. ></u-icon>
  98. </template>
  99. </u-form-item>
  100. <u-form-item labelWidth="180rpx" prop="position" @click="storeShow=true" borderBottom label="药店">
  101. <u-input
  102. v-model="form.storeName"
  103. disabled
  104. disabledColor="#ffffff"
  105. placeholder="请选择药店"
  106. border="none"
  107. ></u-input>
  108. <template #right>
  109. <u-icon
  110. name="arrow-right"
  111. ></u-icon>
  112. </template>
  113. </u-form-item>
  114. <template v-if="form.doctorType==1">
  115. <u-form-item labelWidth="180rpx" borderBottom label="擅长领域" prop="">
  116. <u--textarea v-model="form.speciality" placeholder="请输入擅长领域" count ></u--textarea>
  117. </u-form-item>
  118. <u-form-item labelWidth="180rpx" borderBottom label="个人简介" prop="introduction">
  119. <u--textarea v-model="form.introduction" placeholder="请输入个人简介" count ></u--textarea>
  120. </u-form-item>
  121. </template>
  122. <u-form-item labelWidth="180rpx" borderBottom :label="`${typeName}照片`" prop="avatar">
  123. <u-upload
  124. :fileList="fileList1"
  125. @afterRead="afterRead"
  126. @delete="deletePic"
  127. name="1"
  128. multiple
  129. :maxCount="1"
  130. >
  131. </u-upload>
  132. </u-form-item>
  133. <u-form-item labelWidth="180rpx" borderBottom label="身份证照片(正反面)" prop="idCardFrontUrl">
  134. <u-upload
  135. :fileList="fileList2"
  136. @afterRead="afterRead"
  137. @delete="deletePic"
  138. name="2"
  139. multiple
  140. :maxCount="2"
  141. >
  142. </u-upload>
  143. </u-form-item>
  144. <template v-if="form.doctorType==1">
  145. <u-form-item labelWidth="180rpx" borderBottom label="资质证编号" prop="certificateCode">
  146. <u-input border="none" placeholder="请输入资质证编号" v-model="form.certificateCode" />
  147. </u-form-item>
  148. <u-form-item labelWidth="180rpx" borderBottom label="资质证书" prop="certificateImages">
  149. <u-upload
  150. :fileList="fileList3"
  151. @afterRead="afterRead"
  152. @delete="deletePic"
  153. name="3"
  154. :maxCount="3"
  155. ></u-upload>
  156. </u-form-item>
  157. </template>
  158. <u-form-item labelWidth="180rpx" borderBottom label="注册证书编号" prop="practiseCode">
  159. <u-input border="none" placeholder="请输入注册证书编号" v-model="form.practiseCode" />
  160. </u-form-item>
  161. <u-form-item labelWidth="180rpx" borderBottom label="注册证书" prop="certificateImages">
  162. <u-upload
  163. :fileList="fileList4"
  164. @afterRead="afterRead"
  165. @delete="deletePic"
  166. name="4"
  167. :maxCount="3"
  168. ></u-upload>
  169. </u-form-item>
  170. <u-form-item labelWidth="180rpx" borderBottom label="联系电话" prop="mobile">
  171. <u-input border="none" placeholder="请输入联系电话" v-model="form.mobile" />
  172. </u-form-item>
  173. <u-form-item labelWidth="180rpx" borderBottom label="登录帐号" prop="account">
  174. <u-input border="none" placeholder="请输入登录帐号" v-model="form.account" />
  175. </u-form-item>
  176. <u-form-item labelWidth="180rpx" label="登录密码" prop="password">
  177. <u-input border="none" type="password" placeholder="请输入登录密码" v-model="form.password" />
  178. </u-form-item>
  179. </u-form>
  180. </view>
  181. <view class="agree">
  182. <u-checkbox-group
  183. v-model="checked"
  184. placement="column"
  185. >
  186. <u-checkbox
  187. activeColor="#2583EB"
  188. :customStyle="{marginRight: '8px'}"
  189. :key="1"
  190. label="同意"
  191. :name="1"
  192. >
  193. </u-checkbox>
  194. </u-checkbox-group>
  195. <text class="text" v-show="form.doctorType==1" @click="openContent('doctorRegister')" >{{`《${typeName}注册协议》`}}</text>
  196. <text class="text" v-show="form.doctorType==1" @click="openContent('doctorFiling')" >{{`《${typeName}多机构备案协议》`}}</text>
  197. <text class="text" v-show="form.doctorType==2" @click="openContent('pharmacistRegister')" >{{`《${typeName}注册协议》`}}</text>
  198. </view>
  199. <u-picker ref="cityPicker" @cancel="cityShow = false" keyName="n" @confirm="citySelect" @change="cityChangeHandler" :show="cityShow" :columns="citys"></u-picker>
  200. <u-picker ref="deptPicker" @cancel="deptShow = false" keyName="deptName" @confirm="deptSelect" :show="deptShow" :columns="depts"></u-picker>
  201. <u-picker @cancel="hospitalShow = false" keyName="hospitalName" @confirm="hospitalSelect" :show="hospitalShow" :columns="hospitals"></u-picker>
  202. <u-picker ref="positionPicker" @cancel="positionShow = false" keyName="dictLabel" @confirm="positionSelect" :show="positionShow" :columns="positions"></u-picker>
  203. <u-picker ref="storePicker" @cancel="storeShow = false" keyName="storeName" @confirm="storeSelect" :show="storeShow" :columns="stores"></u-picker>
  204. </view>
  205. <view class="btn-box">
  206. <view class="sub-btn" @click="submit()">提交</view>
  207. </view>
  208. </view>
  209. </view>
  210. </template>
  211. <script>
  212. import {getDictByKey,getHospitalList,getDepartmentList,sendSmsCode,uploadOSS,getCitys} from '@/api/common.js'
  213. import {registerDoctor} from '@/api/user.js'
  214. import { getStoreList } from '@/api/store.js'
  215. export default {
  216. data() {
  217. return {
  218. cityIndex1:0,
  219. cityIndex2:0,
  220. allCitys:[],
  221. citys:[[],[],[]],
  222. cityShow:false,
  223. depts:[[]],
  224. deptShow:false,
  225. hospitals:[[]],
  226. hospitalShow:false,
  227. positions:[[]],
  228. positionShow:false,
  229. fileList1:[],
  230. fileList2:[],
  231. fileList3:[],
  232. fileList4:[],
  233. checked:0,
  234. form:{
  235. sex:"1",
  236. introduction: '',
  237. speciality:''
  238. },
  239. rules: {
  240. doctorName: [
  241. {
  242. required: true,
  243. message: '请输入真实姓名',
  244. }
  245. ],
  246. idCard: [
  247. {
  248. required: true,
  249. message: '请输入身份证号',
  250. // 可以单个或者同时写两个触发验证方式
  251. trigger: ['change','blur'],
  252. }
  253. ],
  254. position: [
  255. {
  256. required: true,
  257. message: '请选择职务',
  258. }
  259. ],
  260. cityIds: [
  261. {
  262. required: true,
  263. message: '请选择所在城市',
  264. }
  265. ],
  266. account: [
  267. {
  268. required: true,
  269. message: '请输入帐号',
  270. }
  271. ],
  272. password: [
  273. {
  274. required: true,
  275. message: '请输入密码',
  276. }
  277. ],
  278. mobile: [
  279. {
  280. required: true,
  281. message: '请输入手机号',
  282. // 可以单个或者同时写两个触发验证方式
  283. trigger: ['change','blur'],
  284. }
  285. ],
  286. practiseCode : [
  287. {
  288. required: true,
  289. message: '请输入注册证书编号',
  290. trigger: ['change','blur'],
  291. }
  292. ]
  293. },
  294. typeName: '',
  295. storeShow: false,
  296. stores: [[]]
  297. }
  298. },
  299. onLoad(options) {
  300. this.form.doctorType=options.type;
  301. this.typeName= options.type==1 ? '医生':options.type==2 ? '药师' : ''
  302. uni.setNavigationBarTitle({
  303. title: options.type==1 ? '医生注册':options.type==2 ? '药师注册' : ''
  304. })
  305. this.getCitys()
  306. this.getHospitalList();
  307. this.getDepartmentList();
  308. this.getStoreList()
  309. if(options.type==1) {
  310. }
  311. this.getDictByKey();
  312. },
  313. onShow() {
  314. },
  315. onReady() {
  316. this.$refs.uForm.setRules(this.rules);
  317. },
  318. methods: {
  319. hospitalSelect(e){
  320. this.form.hospitalId=this.hospitals[0][e.indexs[0]].hospitalId;
  321. this.form.hospitalName=this.hospitals[0][e.indexs[0]].hospitalName;
  322. this.hospitalShow=false;
  323. },
  324. deptSelect(e){
  325. console.log(e)
  326. this.form.deptId=this.depts[0][e.indexs[0]].deptId;
  327. this.form.deptName=this.depts[0][e.indexs[0]].deptName;
  328. this.deptShow=false;
  329. },
  330. positionSelect(e){
  331. console.log(e)
  332. this.form.position=this.positions[0][e.indexs[0]].dictLabel;
  333. this.positionShow=false;
  334. },
  335. storeSelect(e){
  336. this.form.storeName=this.stores[0][e.indexs[0]].storeName;
  337. this.form.storeId=this.stores[0][e.indexs[0]].storeId;
  338. this.storeShow=false;
  339. },
  340. getDictByKey(key){
  341. var data={key:this.form.doctorType==2?"sys_pharmacist_position":"sys_doc_position"}
  342. getDictByKey(data).then(
  343. res => {
  344. if(res.code==200){
  345. this.positions[0]=res.data;
  346. }
  347. },
  348. err => {
  349. }
  350. );
  351. },
  352. openContent(type){
  353. uni.navigateTo({
  354. url:"/pages_user/agreement?type="+type
  355. })
  356. },
  357. cityChangeHandler(e) {
  358. const {
  359. columnIndex,
  360. index,
  361. // 微信小程序无法将picker实例传出来,只能通过ref操作
  362. picker = this.$refs.cityPicker
  363. } = e
  364. if(columnIndex==0){
  365. this.cityIndex1=index
  366. console.log(this.cityIndex1)
  367. //获取第二列数据
  368. var citys1 = this.allCitys[this.cityIndex1].c;
  369. console.log(citys1)
  370. picker.setColumnValues(1,citys1)
  371. this.cityIndex2=0
  372. var citys2 = this.allCitys[this.cityIndex1].c[this.cityIndex2].c;
  373. picker.setColumnValues(2,citys2)
  374. }
  375. if(columnIndex==1){
  376. this.cityIndex2=index
  377. //获取第三列数据
  378. var citys = this.allCitys[this.cityIndex1].c[this.cityIndex2].c;
  379. console.log(citys)
  380. picker.setColumnValues(2,citys)
  381. }
  382. },
  383. citySelect(e){
  384. console.log(e)
  385. this.form.cityName=e.value[0].n+">"+e.value[1].n+">"+e.value[2].n
  386. this.form.cityIds=e.value[0].v+","+e.value[1].v+","+e.value[2].v;
  387. this.cityShow=false;
  388. },
  389. getCitys(){
  390. var that=this;
  391. var data={}
  392. getCitys(data).then(
  393. res => {
  394. if(res.code==200){
  395. that.allCitys=res.data;
  396. that.citys=[[],[],[]];
  397. that.citys[0]=that.allCitys;
  398. that.citys[1]=that.allCitys[0].c;
  399. that.citys[2]=that.allCitys[0].c[0].c;
  400. console.log(that.citys)
  401. }
  402. },
  403. err => {
  404. }
  405. );
  406. },
  407. getHospitalList(){
  408. var that=this;
  409. var data={}
  410. getHospitalList(data).then(
  411. res => {
  412. if(res.code==200){
  413. that.hospitals[0]=res.data;
  414. console.log(111)
  415. console.log(that.hospitals)
  416. }
  417. },
  418. err => {
  419. }
  420. );
  421. },
  422. getDepartmentList(){
  423. var that=this;
  424. var data={}
  425. getDepartmentList(data).then(
  426. res => {
  427. if(res.code==200){
  428. that.depts[0]=res.data;
  429. }
  430. },
  431. err => {
  432. }
  433. );
  434. },
  435. getStoreList(){
  436. var that=this;
  437. var data={}
  438. getStoreList(data).then(
  439. res => {
  440. if(res.code==200){
  441. that.stores[0]=res.data;
  442. }
  443. },
  444. err => {
  445. }
  446. );
  447. },
  448. deletePic(event) {
  449. this[`fileList${event.name}`].splice(event.index, 1)
  450. },
  451. async afterRead(event) {
  452. // 当设置 multiple 为 true 时, file 为数组格式,否则为对象格式
  453. let lists = [].concat(event.file)
  454. let fileListLen = this[`fileList${event.name}`].length
  455. lists.map((item) => {
  456. this[`fileList${event.name}`].push({
  457. ...item,
  458. status: 'uploading',
  459. message: '上传中'
  460. })
  461. })
  462. for (let i = 0; i < lists.length; i++) {
  463. const result = await this.uploadFilePromise(lists[i].url)
  464. let item = this[`fileList${event.name}`][fileListLen]
  465. this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
  466. status: result.status,
  467. message: result.status == 'failed' ? '上传失败' : '',
  468. url: result.url
  469. }))
  470. fileListLen++
  471. }
  472. },
  473. getSuccessUrls(list) {
  474. if (!list || list.length === 0) return '';
  475. const hasUploading = list.some(v => v.status === 'uploading');
  476. const hasFailed = list.some(v => v.status === 'failed');
  477. if (hasUploading) {
  478. uni.showToast({ title: '请等待图片上传完成', icon: 'none' });
  479. return 'failed';
  480. }
  481. if (hasFailed) {
  482. uni.showToast({ title: '请检查是否有图片上传失败', icon: 'none' });
  483. return 'failed';
  484. }
  485. return list.filter(v => v.status === 'success').map(v => v.url).join(',');
  486. },
  487. uploadFilePromise(url) {
  488. return new Promise((resolve, reject) => {
  489. let a = uni.uploadFile({
  490. url: uni.getStorageSync('requestPath') +'/app/common/uploadOSS', // 仅为示例,非真实的接口地址
  491. filePath: url,
  492. name: 'file',
  493. success: (res) => {
  494. if(res.statusCode == 200&&JSON.parse(res.data).code == 200) {
  495. resolve({
  496. url:JSON.parse(res.data).url,
  497. status: 'success'
  498. })
  499. } else {
  500. resolve({
  501. url:url,
  502. status: 'failed'
  503. })
  504. }
  505. },
  506. fail: (res) => {
  507. resolve({
  508. url:url,
  509. status: 'failed'
  510. })
  511. }
  512. });
  513. })
  514. },
  515. register(){
  516. registerDoctor(this.form).then(
  517. res => {
  518. console.log(res)
  519. if(res.code==200){
  520. uni.showToast({
  521. icon:'none',
  522. title:res.msg,
  523. });
  524. setTimeout(function() {
  525. uni.navigateBack({
  526. delta: 1
  527. })
  528. }, 2000);
  529. }else{
  530. uni.showToast({
  531. icon:'none',
  532. title: res.msg,
  533. });
  534. }
  535. },
  536. rej => {
  537. console.log(rej)
  538. }
  539. );
  540. },
  541. submit(){
  542. var that=this;
  543. const avatar = this.getSuccessUrls(this.fileList1);
  544. if (avatar === 'failed') return;
  545. this.form.avatar = avatar;
  546. const fileList2 = this.getSuccessUrls(this.fileList2);
  547. if (fileList2 === 'failed') return;
  548. if(this.fileList2.length>0){
  549. var images=[]
  550. that.fileList2.forEach(function(item) {
  551. images.push(item.url)
  552. });
  553. if(images.length!=2){
  554. uni.showToast({
  555. icon:'none',
  556. title:"请上传身份证照片(正反面)",
  557. });
  558. return
  559. }
  560. console.log(that.fileList2,"images==",images)
  561. this.form.idCardFrontUrl=images[0];
  562. this.form.idCardBackUrl=images[1];
  563. }
  564. if(!this.form.idCardFrontUrl || !this.form.idCardBackUrl) {
  565. uni.showToast({
  566. icon:'none',
  567. title:"请上传身份证照片(正反面)",
  568. });
  569. return
  570. }
  571. if(this.fileList3.length>0){
  572. var images=[]
  573. that.fileList3.forEach(function(item) {
  574. images.push(item.url)
  575. });
  576. this.form.certificateImages=images.toString();
  577. }
  578. if(this.fileList4.length>0){
  579. var images=[]
  580. that.fileList4.forEach(function(item) {
  581. images.push(item.url)
  582. });
  583. this.form.practiseImages=images.toString();
  584. } else {
  585. uni.showToast({
  586. icon:'none',
  587. title:"请上传职业证书",
  588. });
  589. return
  590. }
  591. if(this.checked!=1){
  592. uni.showToast({
  593. icon:'none',
  594. title:"请同意协议",
  595. });
  596. return
  597. }
  598. console.log(this.form)
  599. // deptId: [
  600. // {
  601. // required: true,
  602. // message: '请选择部门'
  603. // }
  604. // ],
  605. // hospitalId: [
  606. // {
  607. // required: true,
  608. // message: '请选择医院'
  609. // }
  610. // ],
  611. this.$refs.uForm.validate().then(res => {
  612. if(that.form.doctorType == 1&& !that.form.deptId) {
  613. uni.showToast({
  614. title: '请选择科室',
  615. icon: 'none'
  616. })
  617. return
  618. }
  619. if(that.form.doctorType == 1&&!that.form.speciality) {
  620. uni.showToast({
  621. title: '请输入擅长领域',
  622. icon: 'none'
  623. })
  624. return
  625. }
  626. if(!that.form.storeId) {
  627. uni.showToast({
  628. title: '请选择药店',
  629. icon: 'none'
  630. })
  631. return
  632. }
  633. that.register()
  634. }).catch(errors => {
  635. console.log(errors)
  636. })
  637. },
  638. }
  639. }
  640. </script>
  641. <style scoped lang="scss">
  642. .content{
  643. display: flex;
  644. flex-direction: column;
  645. justify-content: flex-start;
  646. .inner{
  647. padding: 20upx 20rpx 120rpx;
  648. .bg{
  649. width: 100%;
  650. height: 300rpx;
  651. position: relative;
  652. display: flex;
  653. flex-direction: column;
  654. justify-content: center;
  655. align-items: flex-start;
  656. image{
  657. position: absolute;
  658. border-radius: 30rpx 30rpx 0rpx 0rpx;
  659. width: 100%;
  660. height: 100%;
  661. }
  662. .title{
  663. z-index: 999;
  664. padding: 0rpx 30rpx;
  665. font-size: 40upx;
  666. font-family: PingFang SC;
  667. font-weight: bold;
  668. color: #FFFFFF;
  669. }
  670. .desc{
  671. z-index: 999;
  672. padding: 0rpx 30rpx;
  673. margin-top: 20rpx;
  674. font-size: 28upx;
  675. opacity: 0.5;
  676. font-family: PingFang SC;
  677. color: #FFFFFF;
  678. }
  679. }
  680. .my-form{
  681. z-index: 1;
  682. background-color: #FFFFFF;
  683. padding: 0 30upx;
  684. input{
  685. text-align: right;
  686. }
  687. }
  688. }
  689. .agree{
  690. padding: 10rpx 20rpx;
  691. display: flex;
  692. align-items: center;
  693. justify-content: flex-start;
  694. .label{
  695. font-size: 24rpx;
  696. }
  697. .text{
  698. margin-left: 10rpx;
  699. color: royalblue;
  700. font-size: 24rpx;
  701. }
  702. }
  703. .btn-box{
  704. z-index: 9999;
  705. width: 100%;
  706. position: fixed;
  707. bottom: 0;
  708. height: 120upx;
  709. padding: 0 30upx;
  710. display: flex;
  711. align-items: center;
  712. justify-content: center;
  713. background: #FFFFFF;
  714. .sub-btn{
  715. width: 100%;
  716. height: 88upx;
  717. line-height: 88upx;
  718. text-align: center;
  719. font-size: 30upx;
  720. font-family: PingFang SC;
  721. font-weight: bold;
  722. color: #FFFFFF;
  723. background: #2583EB;
  724. border-radius: 44upx;
  725. }
  726. }
  727. }
  728. </style>