移动端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

213 line
6.4 KiB

  1. <template>
  2. <div class="app-container" :style="{height:height+'px'}">
  3. <van-nav-bar
  4. title="个体工商户注册"
  5. left-arrow
  6. fixed
  7. placeholder
  8. @click-left="onClickLeft"
  9. />
  10. <van-form @submit="getSubmit" style="padding-bottom: 22%;">
  11. <van-field v-model="form.name" label="姓名" placeholder="请输入姓名" required :rules="[{ required:true }]"/>
  12. <van-field v-model="form.cardNum" label="身份证号" placeholder="请输入身份证号" required :rules="[{ required:true }]"/>
  13. <van-field name="radio" label="性别" :rules="[{ required:true }]" required>
  14. <template #input>
  15. <van-radio-group v-model="form.sex" direction="horizontal">
  16. <van-radio name="0">男</van-radio>
  17. <van-radio name="1">女</van-radio>
  18. </van-radio-group>
  19. </template>
  20. </van-field>
  21. <van-field
  22. v-model="nationText"
  23. is-link
  24. readonly
  25. label="民族"
  26. placeholder="点击选择民族"
  27. @click="showNation = true"
  28. />
  29. <van-popup v-model:show="showNation" position="bottom">
  30. <van-picker
  31. title="民族"
  32. show-toolbar
  33. :columns="nationOptions"
  34. @confirm="onConfirmNation"
  35. value-key="dictLabel"
  36. />
  37. <!-- @confirm="onConfirm"-->
  38. <!-- @cancel="onCancel"-->
  39. <!-- @change="onChange"-->
  40. </van-popup>
  41. <van-field v-model="form.phone" type="tel" label="手机号" placeholder="请输入手机号" required :rules="[{ required:true }]" />
  42. <van-field
  43. v-model="form.code"
  44. center
  45. clearable
  46. label="验证码"
  47. placeholder="图形验证码"
  48. required :rules="[{ required:true }]"
  49. >
  50. <template #button>
  51. <img class="code-img" :src="codeUrl" @click="getCode" />
  52. </template>
  53. </van-field>
  54. <van-field v-model="form.password" type="password" label="密码" placeholder="请输入密码" required :rules="[{ required:true }]"/>
  55. <van-field v-model="confirmPassWord" type="password" label="确认密码" placeholder="请再次输入密码" required :rules="[{ required:true }]"/>
  56. <van-field
  57. v-model="form.birthday"
  58. is-link
  59. readonly
  60. name="datetimePicker"
  61. label="出生日期"
  62. placeholder="点击选择出生日期"
  63. @click="showDate = true"
  64. />
  65. <van-popup v-model:show="showDate" position="bottom">
  66. <van-datetime-picker
  67. type="date"
  68. title="选择年月日"
  69. :min-date="minDate"
  70. :max-date="maxDate"
  71. @confirm="onConfirmBirthday"
  72. @cancel="showDate = false"
  73. />
  74. </van-popup>
  75. <van-field v-model="form.companyPosition" label="工作单位及职务" placeholder="请输入工作单位及职务" required :rules="[{ required:true }]"/>
  76. <van-field v-model="form.uniformCode" label="统一社会信用代码" placeholder="请输入统一社会信用代码" required :rules="[{ required:true }]"/>
  77. <van-field
  78. v-model="form.deptId"
  79. is-link
  80. readonly
  81. name="area"
  82. label="所在地区"
  83. placeholder="点击选择地区"
  84. @click="showArea = true"
  85. />
  86. <van-popup v-model:show="showArea" position="bottom">
  87. <van-area
  88. :area-list="deptOptions"
  89. @confirm="onConfirmAdress"
  90. @cancel="showArea = false"
  91. />
  92. </van-popup>
  93. <van-field v-model="form.zihao" label="字号名称" placeholder="请输入字号名称" required :rules="[{ required:true }]"/>
  94. <van-field v-model="form.address" label="详细地址" placeholder="请输入详细地址" required :rules="[{ required:true }]"/>
  95. <van-field v-model="form.businessType" label="经营类别" placeholder="请输入经营类别" required :rules="[{ required:true }]"/>
  96. <van-field v-model="form.businessScope" label="经营范围" placeholder="请输入经营范围" required :rules="[{ required:true }]"/>
  97. <div class="submit">
  98. <van-button round block type="info" color="#007E72" native-type="submit">立即注册</van-button>
  99. </div>
  100. </van-form>
  101. </div>
  102. </template>
  103. <script>
  104. import { getCodeImg } from "@/api/login";
  105. import { userRegister,treeselect } from "@/api/register/index";
  106. import { areaList } from '@vant/area-data';
  107. export default {
  108. name: "userRegister",
  109. data() {
  110. return {
  111. height:0,
  112. tel:'',
  113. result:'',
  114. confirmPassWord:'',
  115. areaList:areaList,
  116. showArea:false,
  117. showDate:false,
  118. showNation:false,
  119. minDate: new Date(1900, 1, 1),
  120. maxDate: new Date(),
  121. form: {
  122. sex:'0'
  123. },
  124. codeUrl:'',
  125. nationText:'',
  126. // 民族字典
  127. nationOptions: [],
  128. // 部门列表
  129. deptOptions: [],
  130. };
  131. },
  132. created() {
  133. this.getCode()
  134. this.height = document.body.clientHeight
  135. this.getDicts("nationality").then(response => {
  136. this.nationOptions = response.data;
  137. });
  138. /** 查询部门下拉树结构 */
  139. treeselect().then((response) => {
  140. this.deptOptions = response.data;
  141. });
  142. },
  143. methods: {
  144. onConfirmAdress(areaValues){
  145. this.showArea = false;
  146. this.result = areaValues
  147. .filter((item) => !!item)
  148. .map((item) => item.name)
  149. .join('/');
  150. },
  151. onConfirmBirthday(value){
  152. console.log(this.timeFormat(value))
  153. this.showDate = false;
  154. this.form.birthday = this.timeFormat(value);
  155. },
  156. onConfirmNation(value,index){
  157. this.showNation = false;
  158. this.nationText = value.dictLabel;
  159. this.form.nation = value.dictValue;
  160. },
  161. timeFormat(time) { // 时间格式化 2019-09-08
  162. let year = time.getFullYear();
  163. let month = time.getMonth() + 1;
  164. let day = time.getDate();
  165. return year + '-' + month + '-' + day
  166. },
  167. getCode() {
  168. getCodeImg().then((res) => {
  169. this.form.uuid = res.uuid;
  170. this.codeUrl = "data:image/gif;base64," + res.img;
  171. });
  172. },
  173. getSubmit(){
  174. console.log(this.form)
  175. userRegister(this.form).then((res) => {
  176. console.log(res)
  177. });
  178. }
  179. },
  180. };
  181. </script>
  182. <style scoped lang="scss">
  183. .app-container {
  184. background-color: #FFF;
  185. .code-img {
  186. width: 220px;
  187. }
  188. }
  189. .submit{
  190. position: fixed;
  191. bottom: 0;
  192. width: 100%;
  193. left: 0;
  194. background: #FFF;
  195. padding: 5% 3%;
  196. box-shadow: 0px -5px 9px #eee;
  197. p{
  198. text-align: center;
  199. margin-bottom: 0.2rem;
  200. span{
  201. color: #007E72;
  202. }
  203. }
  204. }
  205. </style>