index.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795
  1. <template>
  2. <div class="register-pages">
  3. <div class="register-bos">
  4. <img class="head-img" src="@/assets/images/head.png" alt="" />
  5. <div class="register-login flex-row-between">
  6. <div></div>
  7. <div>
  8. <!-- <span>已有账号?直接</span> -->
  9. <a href="http://119.97.180.88:8050/" @click.stop target="_blank"> 已有账号?直接 </a>
  10. <a href="http://119.97.180.88:8050/" class="zhu" @click.stop target="_blank"> 登录&gt;&gt; </a>
  11. </div>
  12. </div>
  13. <div class="progress-bos">
  14. <div class="progress-bar" :class="nextNum == 1 ? 'hig1' : 'hig2'">
  15. <div>01、基本资料</div>
  16. </div>
  17. <div class="progress-bar progress-bar2" :class="nextNum == 2 ? 'hig1' : 'hig2'">
  18. <div>02、完善信息</div>
  19. </div>
  20. <div class="progress-bar progress-bar2" :class="nextNum == 3 ? 'hig1' : ''">
  21. <div>03、完成</div>
  22. </div>
  23. </div>
  24. <template v-if="nextNum == 1">
  25. <div class="form-bos">
  26. <div class="form-title flex-row-start">
  27. <div class="star">*</div>
  28. <div>姓名</div>
  29. </div>
  30. <el-input style="width: 448px" v-model="form.purchaseName" placeholder="请输入姓名" />
  31. <div class="form-tip">请输入采购人全名,方便与您联系!</div>
  32. </div>
  33. <div class="form-bos" style="margin-top: 8px">
  34. <div class="form-title flex-row-start">
  35. <div class="star">*</div>
  36. <div>手机号码</div>
  37. </div>
  38. <el-input :maxlength="11" style="width: 448px" v-model="form.purchasePhone" placeholder="请输入手机号码">
  39. <template #suffix>
  40. <span @click="sendSmsCode" :class="['code', countdown > 0 ? 'disabled' : '']">
  41. {{ codeText }}
  42. </span>
  43. </template>
  44. </el-input>
  45. </div>
  46. <div class="form-bos form-bos1">
  47. <div class="form-title flex-row-start">
  48. <div class="star">*</div>
  49. <div>验证码</div>
  50. </div>
  51. <el-input style="width: 448px" v-model="form.code" placeholder="请输入验证码" />
  52. </div>
  53. <div class="form-bos form-bos1">
  54. <div class="form-title flex-row-start">
  55. <div class="star">*</div>
  56. <div>密码</div>
  57. </div>
  58. <el-input type="password" show-password style="width: 448px" v-model="form.password" placeholder="请输入密码" />
  59. </div>
  60. <div class="form-bos form-bos1">
  61. <div class="form-title flex-row-start">
  62. <div class="star">*</div>
  63. <div>请再次输入密码</div>
  64. </div>
  65. <el-input type="password" show-password style="width: 448px" v-model="form.confirmPassword" placeholder="请输入密码" />
  66. </div>
  67. </template>
  68. <template v-if="nextNum == 2">
  69. <div class="form-head">基本信息</div>
  70. <div class="form-bos">
  71. <div class="form-title flex-row-start">
  72. <div class="star">*</div>
  73. <div>供应商名称</div>
  74. </div>
  75. <el-input style="width: 100%" v-model="form.enterpriseName" placeholder="请输入供应商名称" />
  76. </div>
  77. <div class="flex-row-start">
  78. <div class="form-bos form-bos1" style="flex: 1">
  79. <div class="form-title flex-row-start">
  80. <div class="star">*</div>
  81. <div>规模</div>
  82. </div>
  83. <el-select v-model="form.membershipSize" placeholder="请选择规模" style="width: 100%">
  84. <el-option v-for="(item, index) in enterpriseList" :key="index" :label="item.enterpriseScaleName" :value="item.id" />
  85. </el-select>
  86. </div>
  87. <div class="form-bos form-bos1" style="flex: 1">
  88. <div class="form-title flex-row-start">
  89. <div class="star">*</div>
  90. <div>固定电话</div>
  91. </div>
  92. <el-input style="width: 100%" v-model="form.fixedPhone" placeholder="请输入固定电话" />
  93. </div>
  94. </div>
  95. <div class="flex-row-start">
  96. <div class="form-bos form-bos1" style="flex: 1">
  97. <div class="form-title flex-row-start">
  98. <div class="star"></div>
  99. <div>传真</div>
  100. </div>
  101. <el-input style="width: 100%" v-model="form.fax" placeholder="请输入固定电话" />
  102. </div>
  103. <div class="form-bos form-bos1" style="flex: 1">
  104. <div class="form-title flex-row-start">
  105. <div class="star"></div>
  106. <div>网址</div>
  107. </div>
  108. <el-input style="width: 100%" v-model="form.url" placeholder="请输入网址" />
  109. </div>
  110. </div>
  111. <div class="flex-row-start">
  112. <div class="form-bos form-bos1" style="flex: 1">
  113. <div class="form-title flex-row-start">
  114. <div class="star">*</div>
  115. <div>企业邮箱</div>
  116. </div>
  117. <el-input style="width: 100%" v-model="form.mailbox" placeholder="请输入企业邮箱" />
  118. </div>
  119. <div class="form-bos form-bos1" style="flex: 1"></div>
  120. </div>
  121. <div class="form-bos form-bos1">
  122. <div class="form-title flex-row-start">
  123. <div class="star">*</div>
  124. <div>办公地址</div>
  125. </div>
  126. <el-cascader
  127. v-model="regionCodes"
  128. :options="regionData as any"
  129. placeholder="请选择省/市/区"
  130. style="width: 100%"
  131. @change="handleRegionChange"
  132. />
  133. <el-input
  134. :maxlength="50"
  135. type="textarea"
  136. :rows="2"
  137. style="width: 100%; margin-top: 10px"
  138. v-model="form.officeAddress"
  139. placeholder="请输入详细地址"
  140. show-word-limit
  141. />
  142. </div>
  143. <div class="form-head" style="margin-top: 15px">其它信息</div>
  144. <div class="form-bos">
  145. <div class="form-title flex-row-start">
  146. <div class="star">*</div>
  147. <div>年销量</div>
  148. </div>
  149. <el-input style="width: 100%" v-model="form.yearSales" placeholder="请输入年销量" />
  150. </div>
  151. <div class="form-bos form-bos1">
  152. <div class="form-title flex-row-start">
  153. <div class="star">*</div>
  154. <div>主要经营品类</div>
  155. </div>
  156. <el-checkbox-group v-model="categoryList">
  157. <el-checkbox v-for="(item, index) in productCategoryList" :key="index" :label="item.categoryName" :value="item.id" />
  158. </el-checkbox-group>
  159. </div>
  160. <div class="form-bos form-bos1">
  161. <div class="form-title flex-row-start">
  162. <div class="star">*</div>
  163. <div>供应区域</div>
  164. </div>
  165. <el-table
  166. :data="tableData"
  167. style="width: 100%"
  168. border
  169. row-class-name="static-bg-row"
  170. :header-cell-style="{
  171. color: '#1D2129',
  172. backgroundColor: '#F2F3F5',
  173. fontWeight: 'normal'
  174. }"
  175. >
  176. <el-table-column label="供应区域" minWidth="200" align="center">
  177. <template #default="scope">
  178. <el-select
  179. @change="(res) => regionChange1(res, scope)"
  180. v-model="scope.row.provinceCode"
  181. placeholder="请选择供应区域"
  182. style="width: 100%"
  183. >
  184. <el-option v-for="(item, index) in regionData" :key="index" :label="item.label" :value="item.value" />
  185. </el-select>
  186. </template>
  187. </el-table-column>
  188. <el-table-column label="供应区域" minWidth="200" align="center">
  189. <template #default="scope">
  190. <el-select
  191. @change="(res) => regionChange2(res, scope)"
  192. v-model="scope.row.cityCode"
  193. placeholder="请选择供应区域"
  194. style="width: 100%"
  195. :disabled="scope.row.disabled"
  196. >
  197. <el-option v-for="(item, index) in scope.row.children" :key="index" :label="item.label" :value="item.value" />
  198. </el-select>
  199. </template>
  200. </el-table-column>
  201. <el-table-column label="操作" width="130" align="center">
  202. <template #default="scope">
  203. <el-button type="primary" link @click="onDel(scope)">删除</el-button>
  204. </template>
  205. </el-table-column>
  206. </el-table>
  207. <el-button style="width: 100%; margin-top: 10px" @click="addTable">添加</el-button>
  208. </div>
  209. <div class="form-head" style="margin-top: 15px">营业执照及相关经营许可证</div>
  210. <div class="flex-row-start">
  211. <el-upload
  212. class="avatar-uploader"
  213. :action="action"
  214. :show-file-list="false"
  215. :on-success="handleAvatarSuccess"
  216. :before-upload="beforeAvatarUpload"
  217. >
  218. <el-icon class="avatar-uploader-icon"><Plus /></el-icon>
  219. </el-upload>
  220. <img class="upload-img" v-if="form.businessLicense" :src="form.businessLicense" />
  221. </div>
  222. </template>
  223. <template v-if="nextNum == 3">
  224. <div class="register-success flex-column-center">
  225. <img src="@/assets/images/breg.png" alt="" />
  226. <div class="success-text">您的账户还在审核中,如有疑问,请致电400-111-0027</div>
  227. <!-- <el-button @click="goLogin" type="primary">返回登录</el-button> -->
  228. <a href="http://119.97.180.88:8050/" class="zhu" @click.stop target="_blank"> 返回登录&gt;&gt; </a>
  229. </div>
  230. </template>
  231. </div>
  232. <div class="pay-foot" v-if="nextNum != 4">
  233. <div class="foot-bos">
  234. <el-button @click="previousStep" v-if="nextNum == 2" class="bnt1">返回上一步</el-button>
  235. <el-button @click="nextStep" class="bnt2" type="primary" :loading="loading">{{ nextNum == 2 ? '提交并完成注册' : '下一步' }}</el-button>
  236. </div>
  237. </div>
  238. </div>
  239. </template>
  240. <script setup lang="ts">
  241. import { smsCode, selectBusinessByCustomerName, registerCustomer, enterpriseScale, getProductCategoryList, registerSupplier } from '@/api/breg/index';
  242. import { onUnmounted } from 'vue';
  243. import { onPath } from '@/utils/siteConfig';
  244. import { regionData } from 'element-china-area-data';
  245. const nextNum = ref<any>(1);
  246. const codeText = ref<string>('发送验证码');
  247. const countdown = ref<number>(0);
  248. const timer = ref<any>(null);
  249. const enterprise = ref<any>({});
  250. const loading = ref(false);
  251. const form = ref<any>({
  252. purchaseName: '',
  253. purchasePhone: '',
  254. code: '',
  255. password: '',
  256. confirmPassword: '',
  257. enterpriseName: '',
  258. membershipSize: '',
  259. fixedPhone: '',
  260. fax: '',
  261. url: '',
  262. mailbox: '',
  263. officeProvince: '',
  264. officeCity: '',
  265. officeCounty: '',
  266. officeAddress: '',
  267. yearSales: '',
  268. operatingCategory: '',
  269. supplyAreaList: [],
  270. businessLicense: ''
  271. });
  272. const enterpriseList = ref<any>([]);
  273. const regionCodes = ref<any>([]);
  274. const productCategoryList = ref<any>([]);
  275. const categoryList = ref<any>([]);
  276. const tableData = ref<any>([{ province: '', provinceCode: '', city: '', cityCode: '', disabled: true, children: [] }]);
  277. const action = import.meta.env.VITE_APP_BASE_API + '/resource/oss/upload';
  278. console.log(regionData, '?????????');
  279. onMounted(() => {
  280. //企业规模
  281. enterpriseScale({ limit: 999 }).then((res) => {
  282. if (res.code == 200) {
  283. enterpriseList.value = res.rows;
  284. }
  285. });
  286. //企业规模
  287. getProductCategoryList({}).then((res) => {
  288. if (res.code == 200) {
  289. productCategoryList.value = res.data;
  290. }
  291. });
  292. });
  293. // 启动倒计时
  294. const startCountdown = () => {
  295. countdown.value = 60;
  296. codeText.value = `${countdown.value}s 后重新发送`;
  297. timer.value = setInterval(() => {
  298. countdown.value--;
  299. if (countdown.value > 0) {
  300. codeText.value = `${countdown.value}s 后重新发送`;
  301. } else {
  302. clearInterval(timer.value);
  303. timer.value = null;
  304. codeText.value = '发送验证码';
  305. }
  306. }, 1000);
  307. };
  308. // 获取验证码
  309. const sendSmsCode = () => {
  310. if (countdown.value > 0) return;
  311. if (validateMobile(form.value.purchasePhone)) {
  312. smsCode({ phonenumber: form.value.purchasePhone }).then((res: any) => {
  313. if (res.code == 200) {
  314. ElMessage({
  315. message: '验证码已发送',
  316. type: 'success'
  317. });
  318. startCountdown();
  319. }
  320. });
  321. } else {
  322. ElMessage({
  323. message: '请输入正确的手机号码',
  324. type: 'warning'
  325. });
  326. return;
  327. }
  328. };
  329. //选择省
  330. const regionChange1 = (res: any, scope: any) => {
  331. regionData.forEach((item: any) => {
  332. if (item.value === res) {
  333. scope.row.province = item.label;
  334. scope.row.children = item.children;
  335. scope.row.city = '';
  336. scope.row.cityCode = '';
  337. scope.row.disabled = false;
  338. }
  339. });
  340. };
  341. //选择市
  342. const regionChange2 = (res: any, scope: any) => {
  343. scope.row.children.forEach((item: any) => {
  344. if (item.value === res) {
  345. scope.row.city = item.label;
  346. }
  347. });
  348. };
  349. //新增
  350. const addTable = () => {
  351. tableData.value.push({ province: '', provinceCode: '', city: '', cityCode: '', disabled: true, children: [] });
  352. };
  353. //删除
  354. const onDel = (scope: any) => {
  355. tableData.value.splice(scope.row.$index, 1);
  356. };
  357. // 验证手机号
  358. const validateMobile = (phone: any) => {
  359. const reg = /^1[3-9]\d{9}$/;
  360. return reg.test(phone);
  361. };
  362. // 验证企业名字
  363. const validateStrict = (str: any) => {
  364. if (typeof str !== 'string') return false;
  365. const trimmed = str.trim();
  366. if (trimmed.length === 0) return false; // 去空格后为空
  367. return /^[^a-zA-Z0-9]+$/.test(trimmed);
  368. };
  369. // 处理地区选择变化
  370. const handleRegionChange = (value: string[]) => {
  371. console.log(value);
  372. if (value && value.length === 3) {
  373. // 根据选中的代码查找对应的名称
  374. // 根据编码获取名称
  375. const names: string[] = [];
  376. if (value[0]) {
  377. const province = regionData.find((item: any) => item.value === value[0]);
  378. if (province) {
  379. form.value.officeProvince = province.label;
  380. if (value[1] && province.children) {
  381. const city = province.children.find((item: any) => item.value === value[1]);
  382. if (city) {
  383. form.value.officeCity = city.label;
  384. if (value[2] && city.children) {
  385. const county = city.children.find((item: any) => item.value === value[2]);
  386. if (county) {
  387. form.value.officeCounty = county.label;
  388. }
  389. }
  390. }
  391. }
  392. }
  393. }
  394. }
  395. };
  396. //上传成功
  397. const handleAvatarSuccess = (res: any) => {
  398. if (res.code == 200) {
  399. form.value.businessLicense = res.data.url;
  400. } else {
  401. ElMessage({
  402. message: res.msg,
  403. type: 'warning'
  404. });
  405. }
  406. // console.log(res);
  407. };
  408. import type { UploadProps } from 'element-plus';
  409. const beforeAvatarUpload: UploadProps['beforeUpload'] = (rawFile) => {
  410. if (rawFile.size / 1024 / 1024 > 2) {
  411. ElMessage.error('不能大于2MB!');
  412. return false;
  413. }
  414. return true;
  415. };
  416. const nextStep = () => {
  417. if (nextNum.value == 1) {
  418. const errorMsg1 = {
  419. purchaseName: '请输入姓名',
  420. purchasePhone: '请输入手机号码',
  421. code: '请输入验证码',
  422. password: '请输入密码',
  423. confirmPassword: '请再次输入密码'
  424. };
  425. let next1 = true;
  426. Object.keys(errorMsg1).forEach((key) => {
  427. if ((form.value[key] == '' || form.value[key] == undefined || form.value[key] == null) && next1) {
  428. next1 = false;
  429. ElMessage({
  430. message: `${errorMsg1[key]}`,
  431. type: 'warning'
  432. });
  433. return;
  434. }
  435. });
  436. if (!next1) return;
  437. if (form.value.password != form.value.confirmPassword) {
  438. ElMessage({
  439. message: `密码不一致`,
  440. type: 'warning'
  441. });
  442. return;
  443. }
  444. nextNum.value = 2;
  445. } else if (nextNum.value == 2) {
  446. const errorMsg2 = {
  447. enterpriseName: '请输入供应商名称',
  448. membershipSize: '请选择规模',
  449. fixedPhone: '请输入固定电话',
  450. mailbox: '请输入企业邮箱',
  451. officeCounty: '请选择省市区',
  452. officeAddress: '请输入详细地址',
  453. yearSales: '请输入年销量',
  454. businessLicense: '请上传营业执照'
  455. };
  456. let next2 = true;
  457. Object.keys(errorMsg2).forEach((key) => {
  458. if ((form.value[key] == '' || form.value[key] == undefined || form.value[key] == null) && next2) {
  459. next2 = false;
  460. ElMessage({
  461. message: `${errorMsg2[key]}`,
  462. type: 'warning'
  463. });
  464. return;
  465. }
  466. });
  467. if (!next2) return;
  468. if (!validateStrict(form.value.enterpriseName)) {
  469. ElMessage({
  470. message: '供应商名称不能有数字或字母',
  471. type: 'warning'
  472. });
  473. return;
  474. }
  475. if (categoryList.value.length == 0) {
  476. ElMessage({
  477. message: '请选择主要经营品类',
  478. type: 'warning'
  479. });
  480. return;
  481. }
  482. form.value.operatingCategory = categoryList.value.join(',');
  483. if (tableData.value.length == 0) {
  484. ElMessage({
  485. message: '请新增供应区域',
  486. type: 'warning'
  487. });
  488. return;
  489. }
  490. form.value.supplyAreaList = [];
  491. tableData.value.forEach((item: any) => {
  492. if (item.province && item.provinceCode && item.city && item.cityCode) {
  493. form.value.supplyAreaList.push({
  494. areaCode: item.provinceCode,
  495. areaName: item.province,
  496. parentCode: 0,
  497. level: 1
  498. });
  499. form.value.supplyAreaList.push({
  500. areaCode: item.cityCode,
  501. areaName: item.city,
  502. parentCode: item.provinceCode,
  503. level: 2
  504. });
  505. }
  506. });
  507. if (form.value.supplyAreaList.length == 0) {
  508. ElMessage({
  509. message: '供应区域不能为空',
  510. type: 'warning'
  511. });
  512. return;
  513. }
  514. loading.value = true;
  515. registerSupplier(form.value).then((res: any) => {
  516. loading.value = false;
  517. if (res.code == 200) {
  518. nextNum.value = 3;
  519. }
  520. });
  521. }
  522. };
  523. //上一步
  524. const previousStep = () => {
  525. if (nextNum.value == 2) {
  526. nextNum.value = 1;
  527. }
  528. if (nextNum.value == 3) {
  529. nextNum.value = 2;
  530. }
  531. };
  532. const goLogin = () => {
  533. onPath('/login');
  534. };
  535. const radio = ref<any>(true);
  536. // 组件卸载时清除定时器
  537. onUnmounted(() => {
  538. if (timer.value) {
  539. clearInterval(timer.value);
  540. timer.value = null;
  541. }
  542. });
  543. </script>
  544. <style lang="scss" scoped>
  545. .register-pages {
  546. width: 100%;
  547. background-color: #ffffff;
  548. .register-bos {
  549. width: 1200px;
  550. margin: 0 auto;
  551. padding-top: 20px;
  552. .head-img {
  553. width: 185px;
  554. height: 90px;
  555. }
  556. .register-login {
  557. font-weight: 400;
  558. font-size: 14px;
  559. color: #101828;
  560. margin-top: 20px;
  561. padding-bottom: 10px;
  562. border-bottom: 1px solid #e5e7eb;
  563. .zhu {
  564. color: #e7000b;
  565. cursor: pointer;
  566. }
  567. }
  568. .progress-bos {
  569. padding: 20px;
  570. display: flex;
  571. margin-bottom: 24px;
  572. .progress-bar {
  573. width: 320px;
  574. height: 40px;
  575. background: #f7f8fa;
  576. font-weight: 500;
  577. font-size: 16px;
  578. line-height: 40px;
  579. padding-left: 16px;
  580. color: #4e5969;
  581. position: relative;
  582. &.hig1 {
  583. background: #e7000b;
  584. color: #ffffff;
  585. }
  586. &.hig2 {
  587. background: #ffe8e8;
  588. color: #1d2129;
  589. }
  590. }
  591. .progress-bar2 {
  592. width: 354px;
  593. }
  594. }
  595. .form-head {
  596. width: calc(100% - 40px);
  597. margin: 0 20px 10px 20px;
  598. height: 44px;
  599. background: #f7f8fa;
  600. font-weight: 500;
  601. font-size: 16px;
  602. color: #1d2129;
  603. line-height: 44px;
  604. position: relative;
  605. padding-left: 25px;
  606. &::after {
  607. content: '';
  608. width: 4px;
  609. height: 16px;
  610. background: #e7000b;
  611. position: absolute;
  612. left: 10px;
  613. top: 12px;
  614. }
  615. }
  616. .form-bos {
  617. padding: 0 20px;
  618. :deep(.el-input__wrapper) {
  619. border: none;
  620. /* 可选:去除聚焦时的高亮 */
  621. box-shadow: none;
  622. outline: none;
  623. background: #f4f6f8;
  624. }
  625. :deep(.el-select__wrapper) {
  626. border: none;
  627. /* 可选:去除聚焦时的高亮 */
  628. box-shadow: none;
  629. outline: none;
  630. background: #f4f6f8;
  631. }
  632. :deep(.el-textarea__inner) {
  633. border: none;
  634. /* 可选:去除聚焦时的高亮 */
  635. box-shadow: none;
  636. outline: none;
  637. background: #f4f6f8;
  638. }
  639. .form-title {
  640. font-size: 14px;
  641. color: #1d2129;
  642. margin-bottom: 8px;
  643. .star {
  644. width: 10px;
  645. color: #f53f3f;
  646. }
  647. }
  648. .form-tip {
  649. font-size: 12px;
  650. color: #86909c;
  651. margin-top: 4px;
  652. }
  653. .code {
  654. font-size: 14px;
  655. color: #e7000b;
  656. cursor: pointer;
  657. &.disabled {
  658. color: #999;
  659. cursor: not-allowed;
  660. }
  661. }
  662. }
  663. .form-bos1 {
  664. margin-top: 30px;
  665. }
  666. }
  667. .pay-foot {
  668. width: 100%;
  669. height: 82px;
  670. background: #ffffff;
  671. box-shadow: 0px -2px 13px 0px rgba(0, 0, 0, 0.05);
  672. margin-top: 47px;
  673. .foot-bos {
  674. width: 1200px;
  675. margin: 0 auto;
  676. padding-top: 16px;
  677. padding-left: 20px;
  678. .bnt1 {
  679. width: 120px;
  680. height: 32px;
  681. background: #f7f8fa;
  682. }
  683. .bnt2 {
  684. width: 120px;
  685. height: 32px;
  686. }
  687. }
  688. }
  689. .register-success {
  690. width: 100%;
  691. padding-bottom: 30px;
  692. img {
  693. width: 324px;
  694. }
  695. .success-text {
  696. font-weight: 400;
  697. font-size: 14px;
  698. color: #000000;
  699. margin: 20px 0 30px 0;
  700. }
  701. }
  702. :deep(.is-bordered-label) {
  703. font-weight: 400;
  704. }
  705. /* 核心代码:禁止 hover 变色 */
  706. :deep(.el-table .static-bg-row:hover > td) {
  707. background-color: inherit !important;
  708. }
  709. /* 兼容斑马纹情况 */
  710. :deep(.el-table--striped .static-bg-row:nth-child(2n):hover > td) {
  711. background-color: inherit !important;
  712. }
  713. .avatar-uploader {
  714. margin: 10px 20px;
  715. :deep(.el-upload) {
  716. width: 108px;
  717. height: 108px;
  718. background: #f2f3f5;
  719. border-radius: 2px;
  720. cursor: pointer;
  721. position: relative;
  722. overflow: hidden;
  723. }
  724. }
  725. .upload-img {
  726. width: 108px;
  727. height: 108px;
  728. border-radius: 2px;
  729. }
  730. .el-icon.avatar-uploader-icon {
  731. font-size: 28px;
  732. color: #8c939d;
  733. width: 178px;
  734. height: 178px;
  735. text-align: center;
  736. }
  737. }
  738. </style>