create.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830
  1. <template>
  2. <!-- 注册 -->
  3. <view class="app" :style="'width: '+boxWidth+'px;height: '+boxHeight+'px'">
  4. <navbar title="创建群聊" :showLeft="true" :bgColor="'transparent'" :place="false">
  5. </navbar>
  6. <view class="main">
  7. <view class="form-box">
  8. <view class="form">
  9. <uv-form class="login-form" labelPosition="left" :errorType="'toast'" :model="formData"
  10. :rules="rules" ref="form" label-width="5rem">
  11. <view class="form-item">
  12. <uv-form-item v-if="formData.pay_type==1" clearable label="上传群头像" label-width="5rem">
  13. <template v-slot:right>
  14. <uv-upload class="upload" :action="uploadConfig.url" :header="uploadConfig.header"
  15. :accept="'image'" @afterRead="afterRead" @delete="deletePic"
  16. imageMode="scaleToFill‌" width="3.25rem" height="3.25rem"
  17. :file-list="fileList.image" name="" multiple :maxCount="1" uploadText="上传">
  18. </uv-upload>
  19. </template>
  20. </uv-form-item>
  21. </view>
  22. <view class="form-item">
  23. <uv-form-item prop="title" clearable label="群名称" label-width="5rem">
  24. <uv-input v-model="formData.title" type="text" placeholder="请输入群名称" border="none"
  25. inputAlign="right" maxlength="100">
  26. </uv-input>
  27. </uv-form-item>
  28. <uv-form-item label="地区" @click="showCityPopup()" label-width="5rem">
  29. <uv-input v-model="formData.area" disabled color="var(--color)" disabledColor="#ffffff"
  30. placeholder="请选择" border="none" inputAlign="right">
  31. </uv-input>
  32. <template v-slot:right>
  33. <uv-icon name="arrow-right" color="#b1b6bd"></uv-icon>
  34. </template>
  35. </uv-form-item>
  36. </view>
  37. <view class="form-item">
  38. <uv-form-item label="邀请群成员入群" @click="showUserPopup()" label-width="7rem">
  39. <uv-input v-model="formData.users" disabled color="var(--color)" disabledColor="#ffffff"
  40. placeholder="去邀请" border="none" inputAlign="right">
  41. </uv-input>
  42. <template v-slot:right>
  43. <uv-icon name="arrow-right" color="#999"></uv-icon>
  44. </template>
  45. </uv-form-item>
  46. </view>
  47. <view class="form-item">
  48. <view class="input-box">
  49. <view class="label">
  50. 群简介
  51. </view>
  52. <uv-textarea v-model="formData.content" placeholder="请输入群简介" count border="none"
  53. maxlength="500"></uv-textarea>
  54. </view>
  55. </view>
  56. <view class="form-item">
  57. <view class="tips-box">
  58. <view class="tips">
  59. 驳回原因
  60. </view>
  61. <view class="remark">
  62. 1、发布后不可删除,每个人仅能发布5个交流群
  63. </view>
  64. </view>
  65. </view>
  66. <view class="form-item">
  67. <uv-form-item prop="fee" clearable label="群聊费用" label-width="5rem">
  68. <uv-input v-model="formData.fee" type="number" border="none" placeholder="请输入加入群聊的费用"
  69. inputAlign="right" maxlength="10">
  70. </uv-input>
  71. <template v-slot:right>
  72. <uv-icon name="" size="20"></uv-icon>
  73. </template>
  74. </uv-form-item>
  75. </view>
  76. <view class="form-submit">
  77. <uv-button class="btn" throttleTime="1200" size="normal" shape="circle"
  78. :customStyle="{height:'3.25rem',fontWeight: '500',marginBottom: '.75rem'}"
  79. color="linear-gradient(to right, var(--button-color), var(--button-color1))"
  80. :loading="submitLoading" loadingText="提交中..." @click="submit">发布
  81. </uv-button>
  82. <view class="agree-box">
  83. <uv-checkbox-group placement="row">
  84. <view class="checkbox-box">
  85. <uv-checkbox activeColor="var(--icon-color)" size="1rem" inactiveColor="#999"
  86. name="agree" shape="circle" :name="1" @change="changAgree">
  87. <view class="agree">
  88. 发布信息即表示您同意<text class="text"
  89. @click.stop="agreeTo('/pages/agree/index?id=1')">《发布须知》</text>
  90. </view>
  91. </uv-checkbox>
  92. </view>
  93. </uv-checkbox-group>
  94. </view>
  95. </view>
  96. </uv-form>
  97. </view>
  98. </view>
  99. </view>
  100. <!-- 地址 -->
  101. <pickerCity ref="pickerCity" @confirm="pickerCity"></pickerCity>
  102. <!-- 有效时间 -->
  103. <!-- <uv-action-sheet ref="dayTypes" :actions="expDaysList" round="8" cancelText="取消" title="请选择有效时间"
  104. @select="selectTime" style="z-index:10096;">
  105. </uv-action-sheet> -->
  106. <!-- 有效时间 -->
  107. <uv-picker ref="pickerTime" :columns="[expDaysList]" keyName="title" @confirm="selectTime"
  108. confirmColor="var(--color)"></uv-picker>
  109. <showModal ref="uvModal"></showModal>
  110. <uv-loading-icon class="loading" :show="loading" textSize="30rpx" color="var(--color)"
  111. :customStyle="{position:'absolute',top:'50%',left:0,right:0}"></uv-loading-icon>
  112. </view>
  113. </template>
  114. <script>
  115. import {
  116. getToken,
  117. } from '../../config/cache';
  118. import navbar from "../../components/navbar.vue"
  119. import showModal from "../../components/showModal.vue"
  120. import pickerCity from "../../components/pickerCity.vue"
  121. export default {
  122. components: {
  123. navbar,
  124. showModal,
  125. pickerCity
  126. },
  127. data() {
  128. return {
  129. loading: false,
  130. submitLoading: false,
  131. boxHeight: 800,
  132. boxWidth: 360,
  133. leftIconStyle: {
  134. width: '1.5rem',
  135. height: '1.5rem'
  136. },
  137. agree: false,
  138. payTypes: [{
  139. id: 1,
  140. name: '图片'
  141. },
  142. {
  143. id: 2,
  144. name: '其他信息'
  145. },
  146. ],
  147. expDaysList: [{
  148. title: '长期',
  149. value: 9999
  150. }, {
  151. title: '30天',
  152. value: 30
  153. }, {
  154. title: '7天',
  155. value: 7
  156. }],
  157. cateList: [],
  158. cateInfo: {
  159. id: 0,
  160. name: '全部',
  161. list: [],
  162. },
  163. userInfo: {
  164. id: 0,
  165. },
  166. defaultCityList: [0, 0, 0],
  167. formData: {
  168. id: 0,
  169. req_type: 1, //1 供应, 2需求, 3群聊
  170. req_type_str: '供应',
  171. exp_days: 9999,
  172. exp_days_str: '长期',
  173. info_type: '',
  174. info_type_str: '',
  175. pay_type: 1,
  176. pay_type_str: '图片',
  177. fee: '',
  178. cate_id: '',
  179. area: '',
  180. province_id: '',
  181. city_id: '',
  182. district_id: '',
  183. image: '',
  184. images: [],
  185. content: '',
  186. project_descr: '',
  187. phone: '',
  188. state: 1,
  189. secret_info: [],
  190. action: 'add'
  191. },
  192. rules: {
  193. title: [{
  194. required: true,
  195. message: '请填写标题',
  196. // blur和change事件触发检验
  197. trigger: ['blur', 'change'],
  198. }],
  199. project_descr: [{
  200. required: true,
  201. message: '请填写信息内容',
  202. // blur和change事件触发检验
  203. trigger: ['blur', 'change'],
  204. }],
  205. info_type: [{
  206. required: true,
  207. message: '请选择类型',
  208. // blur和change事件触发检验
  209. trigger: ['blur', 'change'],
  210. }],
  211. },
  212. fileList: {
  213. images: [],
  214. payImages: [],
  215. },
  216. uploadConfig: {
  217. url: this.baseUrl + '/v1/user/uploadImg',
  218. header: {
  219. token: getToken()
  220. }
  221. },
  222. }
  223. },
  224. onLoad(e) {
  225. const windowInfo = uni.getWindowInfo();
  226. this.boxHeight = windowInfo.windowHeight
  227. this.boxWidth = windowInfo.windowWidth
  228. this.formData.id = typeof(e.id) != 'undefined' ? e.id : 0;
  229. this.formData.action = typeof(e.action) != 'undefined' && e.action ? e.action : 'add';
  230. this.init();
  231. },
  232. onHide() {
  233. this.$refs.uvModal.close();
  234. },
  235. onPullDownRefresh() {
  236. uni.stopPullDownRefresh()
  237. },
  238. methods: {
  239. async init() {
  240. this.getInfo();
  241. if (this.formData.action == 'edit') {
  242. if (this.formData.id <= 0) {
  243. uni.showToast({
  244. title: '参数错误',
  245. icon: 'none',
  246. success() {
  247. setTimeout(function() {
  248. uni.navigateBack(-1);
  249. }, 1200)
  250. }
  251. })
  252. return false;
  253. }
  254. await this.getInfoDetail();
  255. }
  256. this.getCateList();
  257. },
  258. changAgree(e) {
  259. this.agree = e;
  260. },
  261. // 查看协议
  262. agreeTo(url) {
  263. this.agree = false;
  264. uni.navigateTo({
  265. url: url
  266. })
  267. },
  268. // 类型
  269. selectType(e) {
  270. this.formData.info_type_str = e.name
  271. this.formData.info_type = e.id
  272. this.cateInfo = e;
  273. let subCate = this.cateInfo && typeof(this.cateInfo['list']) != 'undefined' ? this.cateInfo[
  274. 'list'][0] : {
  275. sub_id: 0
  276. };
  277. this.formData.cate_id = subCate.sub_id;
  278. },
  279. showTimePicker() {
  280. const timestamp = (new Date().getTime()) / 1000;
  281. if (this.formData.id > 0 && this.formData.end_time > timestamp) {
  282. uni.showToast({
  283. title: '当前信息未过期无法修改',
  284. icon: 'none'
  285. })
  286. return false;
  287. }
  288. this.$refs.pickerTime.open();
  289. },
  290. // 选择有效时间
  291. selectTime(e) {
  292. let data = typeof(e.value[0]) != 'undefined' ? e.value[0] : {};
  293. if (data) {
  294. this.formData.exp_days = data.value;
  295. this.formData.exp_days_str = data.title;
  296. }
  297. },
  298. // 付费类型
  299. selectPayType(e) {
  300. this.formData.pay_type = e.id;
  301. if (e.id == 1 && this.userInfo.qrcode) {
  302. this.formData.image = this.userInfo.qrcode
  303. this.fileList.payImages = [{
  304. status: 'success',
  305. message: '',
  306. url: this.formData.image
  307. }]
  308. this.formData.secret_info = [{
  309. name: 'qrcode',
  310. value: this.userInfo.qrcode
  311. }]
  312. }
  313. },
  314. showCityPopup() {
  315. this.$refs.pickerCity.open(this.defaultCityList);
  316. },
  317. // 地址
  318. pickerCity(region) {
  319. this.formData.area = region.value.map(item => item?.name).join('/')
  320. this.formData.province_id = region.value[0].code + '0000'
  321. this.formData.city_id = region.value[1]?.code + '00'
  322. this.formData.district_id = region.value[2]?.code
  323. },
  324. // 用户信息
  325. async getInfo() {
  326. this.loading = true;
  327. this.userInfo = await this.$request.apiGetUserInfo(this, true);
  328. this.loading = false;
  329. this.loaded = true;
  330. if (!this.userInfo || this.userInfo.id <= 0) {
  331. this.$refs.uvModal.open({
  332. title: '提示',
  333. content: '您暂未登录,请先登录~',
  334. confirmText: '立即登录',
  335. confirmColor: "#15B3B2",
  336. confirm: function(e) {
  337. uni.navigateTo({
  338. url: '/pages/login/login'
  339. })
  340. }
  341. });
  342. return false;
  343. }
  344. },
  345. // 详情
  346. async getInfoDetail() {
  347. const res = await this.$request.api('/index/infoDetail', {
  348. id: this.formData.id,
  349. type: 1,
  350. });
  351. if (res.code == 200) {
  352. this.formData = Object.assign(this.formData, res.data);
  353. this.formData.image = this.formData.secret_info ? this.formData.secret_info[0].value : '';
  354. let exp_days = this.formData.exp_days;
  355. let exp_data = this.expDaysList.find(item => item.value === exp_days);
  356. this.formData.exp_days_str = typeof(exp_data['title']) != 'undefined' ? exp_data['title'] : '长期';
  357. this.fileList['images'] = this.formData.images;
  358. this.fileList['payImages'] = this.formData.secret_info;
  359. this.defaultCityList = [this.formData.province_id, this.formData.city_id, 0];
  360. //console.log(this.formData)
  361. } else if (res.code == 510) {
  362. this.$refs.uvModal.open({
  363. title: '提示',
  364. content: '您暂未登录,请先登录~',
  365. confirmText: '立即登录',
  366. confirmColor: "#15B3B2",
  367. confirm: function(e) {
  368. uni.navigateTo({
  369. url: '/pages/login/login'
  370. })
  371. }
  372. });
  373. }
  374. },
  375. // 分类
  376. async getCateList() {
  377. let _this = this
  378. const res = await this.$request.api('/index/infoCate', {});
  379. if (res.code == 200) {
  380. this.cateList = res.data;
  381. this.cateInfo = {
  382. id: 0,
  383. name: '全部',
  384. list: []
  385. }
  386. if (this.cateList.length > 0) {
  387. this.cateList = this.cateList.splice(0, 2);
  388. this.cateList.forEach((item, k) => {
  389. if (_this.formData.info_type == item.id) {
  390. _this.cateInfo = item;
  391. item.color = '#15B3B2';
  392. } else {
  393. item.color = '#303133';
  394. }
  395. })
  396. }
  397. if (this.cateInfo['list'].length > 0) {
  398. this.cateInfo['list'].forEach((item, k) => {
  399. if (item.sub_id == _this.formData.cate_id || (_this.formData.cate_id == 0 && k ==
  400. 0)) {
  401. _this.formData.cate_id = item.sub_id;
  402. }
  403. })
  404. }
  405. } else if (res.code == 510) {
  406. this.$refs.uvModal.open({
  407. title: '提示',
  408. content: '您暂未登录,请先登录~',
  409. confirmText: '立即登录',
  410. confirmColor: "#15B3B2",
  411. confirm: function(e) {
  412. uni.navigateTo({
  413. url: '/pages/login/login'
  414. })
  415. }
  416. });
  417. }
  418. },
  419. // 保存草稿
  420. draftSave() {
  421. this.formData.state = 2;
  422. this.$refs.form.validate().then(res => {
  423. this._submit();
  424. }).catch(errors => {
  425. })
  426. },
  427. // 提交
  428. submit() {
  429. this.formData.state = 1;
  430. this.$refs.form.validate().then(res => {
  431. this._submit();
  432. }).catch(errors => {
  433. })
  434. },
  435. // 提交处理
  436. async _submit() {
  437. let _this = this
  438. if (!this.formData.cate_id) {
  439. uni.showToast({
  440. title: '请选择内容分类',
  441. icon: 'none'
  442. })
  443. return false;
  444. }
  445. if (!this.formData.title) {
  446. uni.showToast({
  447. title: '请填写标题',
  448. icon: 'none'
  449. })
  450. return false;
  451. }
  452. if (!this.formData.content) {
  453. uni.showToast({
  454. title: '请填写发布内容',
  455. icon: 'none'
  456. })
  457. return false;
  458. }
  459. if (!this.formData.info_type) {
  460. uni.showToast({
  461. title: '请选择类型',
  462. icon: 'none'
  463. })
  464. return false;
  465. }
  466. if (!this.formData.area) {
  467. uni.showToast({
  468. title: '请选择地区',
  469. icon: 'none'
  470. })
  471. return false;
  472. }
  473. if (this.formData.fee <= 0) {
  474. uni.showToast({
  475. title: '费用不能为0',
  476. icon: 'none'
  477. })
  478. return false;
  479. }
  480. if (this.formData.pay_type == 1 && !this.formData.image) {
  481. uni.showToast({
  482. title: '请上传收款码',
  483. icon: 'none'
  484. })
  485. return false;
  486. }
  487. if (this.formData.pay_type == 2) {
  488. if (!this.formData.project_descr) {
  489. uni.showToast({
  490. title: '请填写隐私信息',
  491. icon: 'none'
  492. })
  493. return false;
  494. }
  495. this.formData.secret_info = [{
  496. value: this.formData.project_descr,
  497. name: 'other_info'
  498. }]
  499. }
  500. if (!this.agree && this.formData.state == 1) {
  501. uni.showToast({
  502. title: '请阅读并勾选发布须知',
  503. icon: 'none'
  504. })
  505. return false;
  506. }
  507. _this.loading = true
  508. _this.submitLoading = this.formData.state == 1 ? true : false;
  509. const res = await this.$request.api('/user/infoManage', this.formData);
  510. _this.loading = false
  511. _this.submitLoading = false
  512. if (res.code == 200) {
  513. if (this.formData.id <= 0) {
  514. this.formData.project_descr = '';
  515. this.formData.content = '';
  516. this.formData.pay_type = 1;
  517. this.formData.title = '';
  518. this.formData.fee = '';
  519. this.formData.image = [];
  520. this.formData.secret_info = [];
  521. this.formData.images = [];
  522. this.fileList.images = [];
  523. this.fileList.payImages = [];
  524. }
  525. uni.showToast({
  526. title: _this.formData.state == 2 ? '保存成功' : res.msg,
  527. icon: 'none',
  528. success() {
  529. if (_this.formData.state == 1) {
  530. setTimeout(function() {
  531. uni.navigateBack(-1)
  532. }, 1200)
  533. }
  534. }
  535. })
  536. } else if (res.code == 510) {
  537. this.$refs.uvModal.open({
  538. title: '提示',
  539. content: '您暂未登录,请先登录~',
  540. confirmText: '立即登录',
  541. confirmColor: "#15B3B2",
  542. confirm: function(e) {
  543. uni.navigateTo({
  544. url: '/pages/login/login'
  545. })
  546. }
  547. });
  548. return false;
  549. } else {
  550. let msg = typeof(res.msg) != 'undefined' ? res.msg : '请求失败'
  551. uni.showToast({
  552. title: msg,
  553. icon: 'none'
  554. })
  555. }
  556. },
  557. // 删除图片
  558. deletePic(event) {
  559. this.fileList[event.name].splice(event.index, 1)
  560. this.formData.images.splice(event.index, 1)
  561. },
  562. // 预读图片
  563. async afterRead(event) {
  564. let _this = this
  565. let lists = [].concat(event.file)
  566. let fileListLen = this.fileList[event.name].length
  567. lists.map((item) => {
  568. _this.fileList[event.name].push({
  569. ...item,
  570. status: 'uploading',
  571. message: '上传中'
  572. })
  573. })
  574. for (let i = 0; i < lists.length; i++) {
  575. const result = await this.uploadFilePromise(event.name, lists[i].url)
  576. let item = this.fileList[event.name][fileListLen]
  577. this.fileList[event.name].splice(fileListLen, 1, Object.assign(item, {
  578. status: 'success',
  579. message: '',
  580. url: result
  581. }))
  582. fileListLen++
  583. }
  584. },
  585. uploadFilePromise(name, url) {
  586. let _this = this
  587. _this.loading = true
  588. return new Promise((resolve, reject) => {
  589. let system = {
  590. uuid: uni.getSystemInfoSync().deviceId,
  591. sys_time: (Date.parse(new Date()) / 1000),
  592. };
  593. let a = uni.uploadFile({
  594. url: _this.uploadConfig.url,
  595. filePath: url,
  596. name: 'image',
  597. header: _this.uploadConfig.header,
  598. success: (res) => {
  599. _this.loading = false
  600. const response = JSON.parse(res.data)
  601. const data = response.data
  602. if (name == 'images') {
  603. _this.formData[name].push(data.image_url);
  604. } else if (_this.formData.pay_type == 1 && name == 'payImages') {
  605. _this.formData.image = data.image_url;
  606. _this.formData.secret_info = [{
  607. name: 'qrcode',
  608. value: data.image_url
  609. }];
  610. }
  611. resolve(data.image_url)
  612. }
  613. });
  614. })
  615. },
  616. }
  617. }
  618. </script>
  619. <style lang="scss" scoped>
  620. page {
  621. height: 100%;
  622. width: 100%;
  623. }
  624. .app {
  625. height: 100%;
  626. }
  627. .main {
  628. margin: 4rem .75rem;
  629. position: relative;
  630. .form-box {
  631. position: relative;
  632. z-index: 2;
  633. height: 100%;
  634. padding-top: 1.75rem;
  635. .form {
  636. position: relative;
  637. z-index: 2;
  638. padding: 1rem 0rem 1rem;
  639. .uv-form-item--left__content__label {
  640. color: #060518;
  641. }
  642. .form-item {
  643. margin: .75rem 0;
  644. background-color: #fff;
  645. border-radius: 1rem;
  646. ::v-deep .uv-form-item {
  647. padding: 0.25rem .75rem;
  648. margin-bottom: .5rem;
  649. }
  650. .type-box {
  651. display: flex;
  652. flex-direction: row;
  653. align-items: center;
  654. justify-content: flex-end;
  655. .type {
  656. min-width: 1rem;
  657. text-align: center;
  658. padding: 0.1rem .5rem;
  659. border: .05rem solid #F9F9F9;
  660. font-size: .75rem;
  661. color: #999;
  662. background-color: #F9F9F9;
  663. border-radius: 2rem;
  664. margin-right: .5rem;
  665. &.selected {
  666. border-color: var(--color);
  667. background-color: #E7FFFB;
  668. color: var(--color);
  669. }
  670. }
  671. }
  672. .input-box {
  673. padding: .75rem;
  674. font-size: 0.875rem;
  675. .label {
  676. color: #000;
  677. padding-bottom: 0.75rem;
  678. }
  679. .cate-box {
  680. display: flex;
  681. flex-direction: row;
  682. align-items: center;
  683. width: 100%;
  684. .cate {
  685. min-width: 1rem;
  686. text-align: center;
  687. padding: 0.1rem .2rem;
  688. border: .05rem solid #F9F9F9;
  689. background-color: #F9F9F9;
  690. font-size: .75rem;
  691. color: #999;
  692. border-radius: .5rem;
  693. margin-right: .25rem;
  694. &.selected {
  695. border-color: var(--color);
  696. background-color: #E7FFFB;
  697. color: var(--color);
  698. }
  699. }
  700. }
  701. .uv-textarea {
  702. padding: 0;
  703. font-size: 0.875rem !important;
  704. ::v-deep .uv-textarea__field {
  705. font-size: 0.875rem;
  706. }
  707. }
  708. }
  709. }
  710. .upload-box {
  711. display: flex;
  712. flex-direction: row;
  713. align-items: center;
  714. justify-content: space-between;
  715. ::v-deep .uv-form-item__body {
  716. padding: 0;
  717. .uv-upload__button {
  718. background-color: #fff;
  719. padding: .5rem;
  720. }
  721. }
  722. }
  723. .form-submit {
  724. margin: 1.25rem 2rem 1.25rem;
  725. }
  726. }
  727. }
  728. .agree-box {
  729. padding: .5rem 1.75rem;
  730. // background-color: #FFFAEE;
  731. ::v-deep .uv-checkbox-group {
  732. justify-content: center;
  733. .checkbox-box {
  734. display: flex;
  735. flex-direction: row;
  736. align-items: inherit;
  737. justify-content: center;
  738. :first-child {
  739. align-items: center;
  740. flex-direction: row;
  741. // margin-top: 4rpx;
  742. .uv-checkbox__label-wrap {
  743. flex-shrink: inherit;
  744. }
  745. }
  746. :nth-child(1) {
  747. flex-shrink: inherit;
  748. }
  749. .agree {
  750. color: #ADADAD;
  751. font-size: .75rem;
  752. .text {
  753. color: #F48431;
  754. }
  755. }
  756. }
  757. }
  758. }
  759. }
  760. </style>