registerMerchant.vue 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806
  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 class="title">商家入驻</view>
  8. </view>
  9. <view class="my-form" >
  10. <u-form :rules="rules" :model="form" ref="uForm" labelPosition="top" errorType="toast">
  11. <u-form-item required labelWidth="auto" label="企业LOGO" prop="logoUrl">
  12. <u-upload
  13. :fileList="fileList1"
  14. @afterRead="afterRead"
  15. @delete="deletePic"
  16. name="1"
  17. :maxCount="1"
  18. ></u-upload>
  19. </u-form-item>
  20. <u-form-item required labelWidth="auto" borderBottom label="企业简称" prop="storeName">
  21. <u-input border="none" placeholder="请输入企业简称" v-model="form.storeName" maxlength="60" />
  22. </u-form-item>
  23. <u-form-item required labelWidth="auto" borderBottom label="企业全称" prop="fullName">
  24. <u-input border="none" placeholder="请输入企业全称" v-model="form.fullName" maxlength="60" />
  25. </u-form-item>
  26. <u-form-item required labelWidth="auto" borderBottom label="电话号码" prop="phone">
  27. <u-input border="none" placeholder="请输入电话号码;" v-model="form.phone" maxlength="20" />
  28. </u-form-item>
  29. <u-form-item required labelWidth="auto" borderBottom label="所在城市" prop="cityIds" @click="cityShow=true">
  30. <!-- <u-input border="none" placeholder="请输入所在城市" v-model="form.cityIds" /> -->
  31. <u-input
  32. v-model="form.address"
  33. disabled
  34. disabledColor="#ffffff"
  35. placeholder="请选择所在城市"
  36. border="none"
  37. ></u-input>
  38. <template #right>
  39. <u-icon
  40. name="arrow-right"
  41. ></u-icon>
  42. </template>
  43. </u-form-item>
  44. <u-form-item required labelWidth="auto" borderBottom label="企业地址" prop="enterpriseAddress">
  45. <u-input border="none" placeholder="请输入企业地址" v-model="form.enterpriseAddress" maxlength="100" />
  46. </u-form-item>
  47. <u-form-item required labelWidth="auto" borderBottom label="法人姓名" prop="legalPersonName">
  48. <u-input border="none" placeholder="请输入法人姓名" v-model="form.legalPersonName" maxlength="20" />
  49. </u-form-item>
  50. <u-form-item required labelWidth="auto" borderBottom label="统一社会信用代码" prop="unifiedSocialCreditCode">
  51. <u-input border="none" placeholder="请输入统一社会信用代码" v-model="form.unifiedSocialCreditCode" maxlength="60" />
  52. </u-form-item>
  53. <u-form-item required labelWidth="auto" borderBottom label="营业执照" prop="businessLicense">
  54. <u-upload
  55. :fileList="fileList2"
  56. @afterRead="afterRead"
  57. @delete="deletePic"
  58. name="2"
  59. :maxCount="1"
  60. ></u-upload>
  61. </u-form-item>
  62. <u-form-item required labelWidth="auto" borderBottom label="营业执照是否长期有效" prop="isBusinessLicensePermanent">
  63. <u-radio-group placement="row" v-model="form.isBusinessLicensePermanent" >
  64. <u-radio activeColor="#2583EB" :customStyle="{marginRight: '8px'}" key="1" label="是" :name="1" > </u-radio>
  65. <u-radio activeColor="#2583EB" :customStyle="{marginRight: '8px'}" key="0" label="否" :name="0" > </u-radio>
  66. </u-radio-group>
  67. </u-form-item>
  68. <template v-if="form.isBusinessLicensePermanent==0">
  69. <!-- <u-form-item required labelWidth="auto" borderBottom label="营业执照有效期" prop="businessLicenseExpireStart" @click="openCalendar(1)">
  70. <u-input disabled disabledColor="#ffffff" border="none" placeholder="请选择营业执照有效期" v-model="businessLicenseExpire" />
  71. <template #right> <u-icon name="arrow-right"></u-icon> </template>
  72. </u-form-item> -->
  73. <u-form-item :required="form.isBusinessLicensePermanent==0" labelWidth="auto" borderBottom label="营业执照有效期开始时间" prop="businessLicenseExpireStart">
  74. <picker :value="form.businessLicenseExpireStart" mode="date" fields="day" @change="pickerChange($event,'businessLicenseExpireStart')">
  75. <view class="x-f" style="justify-content: space-between;">
  76. <u-input disabled disabledColor="#ffffff" border="none" placeholder="请选择开始时间" v-model="form.businessLicenseExpireStart" />
  77. <u-icon name="arrow-right"></u-icon>
  78. </view>
  79. </picker>
  80. </u-form-item>
  81. <u-form-item :required="form.isBusinessLicensePermanent==0" labelWidth="auto" borderBottom label="营业执照有效期结束时间" prop="businessLicenseExpireEnd">
  82. <picker :value="form.businessLicenseExpireEnd" mode="date" fields="day" @change="pickerChange($event,'businessLicenseExpireEnd')">
  83. <view class="x-f" style="justify-content: space-between;">
  84. <u-input disabled disabledColor="#ffffff" border="none" placeholder="请选择结束时间" v-model="form.businessLicenseExpireEnd" />
  85. <u-icon name="arrow-right"></u-icon>
  86. </view>
  87. </picker>
  88. </u-form-item>
  89. </template>
  90. <u-form-item required labelWidth="auto" borderBottom label="经营范围" prop="businessScope">
  91. <u-input border="none" placeholder="请输入经营范围" v-model="form.businessScope" maxlength="1000" />
  92. </u-form-item>
  93. <u-form-item required labelWidth="auto" borderBottom label="药品经营许可证" prop="drugLicense">
  94. <u-upload
  95. :fileList="fileList3"
  96. @afterRead="afterRead"
  97. @delete="deletePic"
  98. name="3"
  99. :maxCount="1"
  100. ></u-upload>
  101. </u-form-item>
  102. <u-form-item required labelWidth="auto" borderBottom label="药品经营许可证编号有效期开始时间" prop="drugLicenseExpiryStart">
  103. <!-- <u-input disabled disabledColor="#ffffff" border="none" placeholder="请选择药品经营许可证编号有效期" v-model="drugLicenseExpiry" />
  104. <template #right> <u-icon name="arrow-right"></u-icon> </template> -->
  105. <picker :value="form.drugLicenseExpiryStart" mode="date" fields="day" @change="pickerChange($event,'drugLicenseExpiryStart')">
  106. <view class="x-f" style="justify-content: space-between;">
  107. <u-input disabled disabledColor="#ffffff" border="none" placeholder="请选择开始时间" v-model="form.drugLicenseExpiryStart" />
  108. <u-icon name="arrow-right"></u-icon>
  109. </view>
  110. </picker>
  111. </u-form-item>
  112. <u-form-item required labelWidth="auto" borderBottom label="药品经营许可证编号有效期结束时间" prop="drugLicenseExpiryEnd">
  113. <picker :value="form.drugLicenseExpiryStart" mode="date" fields="day" @change="pickerChange($event,'drugLicenseExpiryEnd')">
  114. <view class="x-f" style="justify-content: space-between;">
  115. <u-input disabled disabledColor="#ffffff" border="none" placeholder="请选择结束时间" v-model="form.drugLicenseExpiryEnd" />
  116. <u-icon name="arrow-right"></u-icon>
  117. </view>
  118. </picker>
  119. </u-form-item>
  120. <u-form-item required labelWidth="auto" borderBottom label="2类器械经营备案" prop="medicalDevice2">
  121. <u-upload
  122. :fileList="fileList4"
  123. @afterRead="afterRead"
  124. @delete="deletePic"
  125. name="4"
  126. :maxCount="1"
  127. ></u-upload>
  128. </u-form-item>
  129. <u-form-item required labelWidth="auto" borderBottom label="2类器械经营备案有效期开始时间" prop="medicalDevice2ExpiryStart">
  130. <picker :value="form.medicalDevice2ExpiryStart" mode="date" fields="day" @change="pickerChange($event,'medicalDevice2ExpiryStart')">
  131. <view class="x-f" style="justify-content: space-between;">
  132. <u-input disabled disabledColor="#ffffff" border="none" placeholder="请选择开始时间" v-model="form.medicalDevice2ExpiryStart" />
  133. <u-icon name="arrow-right"></u-icon>
  134. </view>
  135. </picker>
  136. </u-form-item>
  137. <u-form-item required labelWidth="auto" borderBottom label="2类器械经营备案有效期结束时间" prop="medicalDevice2ExpiryEnd">
  138. <picker :value="form.medicalDevice2ExpiryEnd" mode="date" fields="day" @change="pickerChange($event,'medicalDevice2ExpiryEnd')">
  139. <view class="x-f" style="justify-content: space-between;">
  140. <u-input disabled disabledColor="#ffffff" border="none" placeholder="请选择结束时间" v-model="form.medicalDevice2ExpiryEnd" />
  141. <u-icon name="arrow-right"></u-icon>
  142. </view>
  143. </picker>
  144. </u-form-item>
  145. <u-form-item labelWidth="auto" borderBottom label="1类器械生产备案" prop="medicalDevice1">
  146. <u-upload
  147. :fileList="fileList5"
  148. @afterRead="afterRead"
  149. @delete="deletePic"
  150. name="5"
  151. :maxCount="1"
  152. ></u-upload>
  153. </u-form-item>
  154. <u-form-item labelWidth="auto" borderBottom label="1类器械生产备案有效期开始时间" prop="medicalDevice1ExpiryStart">
  155. <picker :value="form.medicalDevice1ExpiryStart" mode="date" fields="day" @change="pickerChange($event,'medicalDevice1ExpiryStart')">
  156. <view class="x-f" style="justify-content: space-between;">
  157. <u-input disabled disabledColor="#ffffff" border="none" placeholder="请选择开始时间" v-model="form.medicalDevice1ExpiryStart" />
  158. <u-icon name="arrow-right"></u-icon>
  159. </view>
  160. </picker>
  161. </u-form-item>
  162. <u-form-item labelWidth="auto" borderBottom label="1类器械生产备案有效期结束时间" prop="medicalDevice1ExpiryEnd">
  163. <picker :value="form.medicalDevice1ExpiryEnd" mode="date" fields="day" @change="pickerChange($event,'medicalDevice1ExpiryEnd')">
  164. <view class="x-f" style="justify-content: space-between;">
  165. <u-input disabled disabledColor="#ffffff" border="none" placeholder="请选择结束时间" v-model="form.medicalDevice1ExpiryEnd" />
  166. <u-icon name="arrow-right"></u-icon>
  167. </view>
  168. </picker>
  169. </u-form-item>
  170. <u-form-item labelWidth="auto" borderBottom label="3类器械经营许可证" prop="medicalDevice3">
  171. <u-upload
  172. :fileList="fileList6"
  173. @afterRead="afterRead"
  174. @delete="deletePic"
  175. name="6"
  176. :maxCount="1"
  177. ></u-upload>
  178. </u-form-item>
  179. <u-form-item labelWidth="auto" borderBottom label="3类器械经营许可证有效期开始时间" prop="medicalDevice3ExpiryStart">
  180. <picker :value="form.medicalDevice3ExpiryStart" mode="date" fields="day" @change="pickerChange($event,'medicalDevice3ExpiryStart')">
  181. <view class="x-f" style="justify-content: space-between;">
  182. <u-input disabled disabledColor="#ffffff" border="none" placeholder="请选择开始时间" v-model="form.medicalDevice3ExpiryStart" />
  183. <u-icon name="arrow-right"></u-icon>
  184. </view>
  185. </picker>
  186. </u-form-item>
  187. <u-form-item labelWidth="auto" borderBottom label="3类器械经营许可证有效期结束时间" prop="medicalDevice3ExpiryEnd">
  188. <picker :value="form.medicalDevice3ExpiryEnd" mode="date" fields="day" @change="pickerChange($event,'medicalDevice3ExpiryEnd')">
  189. <view class="x-f" style="justify-content: space-between;">
  190. <u-input disabled disabledColor="#ffffff" border="none" placeholder="请选择结束时间" v-model="form.medicalDevice3ExpiryEnd" />
  191. <u-icon name="arrow-right"></u-icon>
  192. </view>
  193. </picker>
  194. </u-form-item>
  195. <u-form-item labelWidth="auto" borderBottom label="食品经营许可证" prop="foodLicense">
  196. <u-upload
  197. :fileList="fileList7"
  198. @afterRead="afterRead"
  199. @delete="deletePic"
  200. name="7"
  201. :maxCount="1"
  202. ></u-upload>
  203. </u-form-item>
  204. <u-form-item labelWidth="auto" borderBottom label="食品经营许可证有效期开始时间" prop="foodLicenseExpiryStart">
  205. <picker :value="form.foodLicenseExpiryStart" mode="date" fields="day" @change="pickerChange($event,'foodLicenseExpiryStart')">
  206. <view class="x-f" style="justify-content: space-between;">
  207. <u-input disabled disabledColor="#ffffff" border="none" placeholder="请选择开始时间" v-model="form.foodLicenseExpiryStart" />
  208. <u-icon name="arrow-right"></u-icon>
  209. </view>
  210. </picker>
  211. </u-form-item>
  212. <u-form-item labelWidth="auto" borderBottom label="食品经营许可证有效期结束时间" prop="foodLicenseExpiryEnd">
  213. <picker :value="form.foodLicenseExpiryEnd" mode="date" fields="day" @change="pickerChange($event,'foodLicenseExpiryEnd')">
  214. <view class="x-f" style="justify-content: space-between;">
  215. <u-input disabled disabledColor="#ffffff" border="none" placeholder="请选择结束时间" v-model="form.foodLicenseExpiryEnd" />
  216. <u-icon name="arrow-right"></u-icon>
  217. </view>
  218. </picker>
  219. </u-form-item>
  220. <u-form-item required labelWidth="auto" borderBottom label="医疗机构执业许可证" prop="medicalLicense">
  221. <u-upload
  222. :fileList="fileList8"
  223. @afterRead="afterRead"
  224. @delete="deletePic"
  225. name="8"
  226. :maxCount="1"
  227. ></u-upload>
  228. </u-form-item>
  229. <u-form-item required labelWidth="auto" borderBottom label="医疗机构执业许可证有效期开始时间" prop="medicalLicenseExpiryStart">
  230. <picker :value="form.medicalLicenseExpiryStart" mode="date" fields="day" @change="pickerChange($event,'medicalLicenseExpiryStart')">
  231. <view class="x-f" style="justify-content: space-between;">
  232. <u-input disabled disabledColor="#ffffff" border="none" placeholder="请选开始时间" v-model="form.medicalLicenseExpiryStart" />
  233. <u-icon name="arrow-right"></u-icon>
  234. </view>
  235. </picker>
  236. </u-form-item>
  237. <u-form-item required labelWidth="auto" borderBottom label="医疗机构执业许可证有效期择结束时间" prop="medicalLicenseExpiryEnd">
  238. <picker :value="form.medicalLicenseExpiryEnd" mode="date" fields="day" @change="pickerChange($event,'medicalLicenseExpiryEnd')">
  239. <view class="x-f" style="justify-content: space-between;">
  240. <u-input disabled disabledColor="#ffffff" border="none" placeholder="请选择结束时间" v-model="form.medicalLicenseExpiryEnd" />
  241. <u-icon name="arrow-right"></u-icon>
  242. </view>
  243. </picker>
  244. </u-form-item>
  245. <u-form-item required labelWidth="auto" borderBottom label="发货联系电话" prop="sendPhone">
  246. <u-input border="none" placeholder="请输入发货联系电话" v-model="form.sendPhone" maxlength="20" />
  247. </u-form-item>
  248. <u-form-item required labelWidth="auto" borderBottom label="配送方式" prop="shippingType">
  249. <u-radio-group placement="row" v-model="form.shippingType" >
  250. <u-radio activeColor="#2583EB" :customStyle="{marginRight: '8px'}" key="1" label="配送" name="1" > </u-radio>
  251. <u-radio activeColor="#2583EB" :customStyle="{marginRight: '8px'}" key="2" label="到店自提" name="2" > </u-radio>
  252. <u-radio activeColor="#2583EB" :customStyle="{marginRight: '8px'}" key="3" label="配送、自提" name="3" > </u-radio>
  253. </u-radio-group>
  254. </u-form-item>
  255. <u-form-item required labelWidth="auto" borderBottom label="退货联系人" prop="refundConsignee">
  256. <u-input border="none" placeholder="请输入退货联系人" v-model="form.refundConsignee" maxlength="20" />
  257. </u-form-item>
  258. <u-form-item required labelWidth="auto" borderBottom label="退货联系电话" prop="refundPhone">
  259. <u-input border="none" placeholder="请输入退货联系电话" v-model="form.refundPhone" maxlength="20" />
  260. </u-form-item>
  261. <u-form-item required labelWidth="auto" borderBottom label="退货地址" prop="refundAddress">
  262. <u-input border="none" placeholder="请输入退货地址" v-model="form.refundAddress" maxlength="100" />
  263. </u-form-item>
  264. <u-form-item required labelWidth="auto" borderBottom label="佣金类型" prop="brokerageType">
  265. <u-radio-group placement="row" v-model="form.brokerageType" >
  266. <u-radio activeColor="#2583EB" :customStyle="{marginRight: '8px'}" key="1" label="每盒" name="1" > </u-radio>
  267. <u-radio activeColor="#2583EB" :customStyle="{marginRight: '8px'}" key="2" label="总价" name="2" > </u-radio>
  268. </u-radio-group>
  269. </u-form-item>
  270. <u-form-item required labelWidth="auto" borderBottom label="登录帐号" prop="account">
  271. <u-input border="none" placeholder="请输入登录帐号" v-model="form.account" maxlength="50" />
  272. </u-form-item>
  273. </u-form>
  274. </view>
  275. <u-picker ref="cityPicker" @cancel="cityShow = false" keyName="n" @confirm="citySelect" @change="cityChangeHandler" :show="cityShow" :columns="citys"></u-picker>
  276. <u-picker ref="deptPicker" @cancel="deptShow = false" keyName="deptName" @confirm="deptSelect" :show="deptShow" :columns="depts"></u-picker>
  277. <u-picker @cancel="hospitalShow = false" keyName="hospitalName" @confirm="hospitalSelect" :show="hospitalShow" :columns="hospitals"></u-picker>
  278. <u-picker ref="positionPicker" @cancel="positionShow = false" keyName="dictLabel" @confirm="positionSelect" :show="positionShow" :columns="positions"></u-picker>
  279. <uni-calendar ref="calendar" :range="true" :insert="false" @confirm="confirmCalendar" />
  280. </view>
  281. <view class="btn-box">
  282. <view class="sub-btn" @click="submit()">提交</view>
  283. </view>
  284. </view>
  285. </view>
  286. </template>
  287. <script>
  288. import {getDictByKey,getHospitalList,getDepartmentList,sendSmsCode,uploadOSS,getCitys} from '@/api/common.js'
  289. import {storeAdd} from './api/shopping.js'
  290. export default {
  291. data() {
  292. return {
  293. cityIndex1:0,
  294. cityIndex2:0,
  295. allCitys:[],
  296. citys:[[],[],[]],
  297. cityShow:false,
  298. depts:[[]],
  299. deptShow:false,
  300. hospitals:[[]],
  301. hospitalShow:false,
  302. positions:[[]],
  303. positionShow:false,
  304. fileList1:[],
  305. fileList2:[],
  306. fileList3:[],
  307. fileList4:[],
  308. fileList5:[],
  309. fileList6:[],
  310. fileList7:[],
  311. fileList8:[],
  312. checked:0,
  313. form:{
  314. isBusinessLicensePermanent: 1,
  315. storeName:'',
  316. fullName:'',
  317. phone:'',
  318. cityIds:'',
  319. enterpriseAddress:'',
  320. legalPersonName:'',
  321. unifiedSocialCreditCode:'',
  322. logoUrl:'',
  323. businessLicense:'',
  324. businessLicenseExpireStart:'',
  325. businessLicenseExpireEnd:'',
  326. drugLicense:'',
  327. drugLicenseExpiryStart:'',
  328. drugLicenseExpiryEnd:'',
  329. medicalDevice1:'',
  330. medicalDevice1ExpiryStart:'',
  331. medicalDevice1ExpiryEnd:'',
  332. medicalDevice2:'',
  333. medicalDevice2ExpiryStart:'',
  334. medicalDevice2ExpiryEnd:'',
  335. medicalDevice3:'',
  336. medicalDevice3ExpiryStart:'',
  337. medicalDevice3ExpiryEnd:'',
  338. foodLicense:'',
  339. foodLicenseExpiryStart:'',
  340. foodLicenseExpiryEnd:'',
  341. medicalLicense:'',
  342. medicalLicenseExpiryStart:'',
  343. medicalLicenseExpiryEnd:'',
  344. businessScope:'',
  345. address:'',
  346. refundPhone:'',
  347. refundAddress:'',
  348. refundConsignee:'',
  349. brokerageType: undefined,
  350. account:'',
  351. sendPhone:'',
  352. shippingType: undefined,
  353. },
  354. rules: {
  355. logoUrl: [{required: true, message: '请上传企业LOGO'}],
  356. storeName: [{required: true, message: '请输入企业简称'}],
  357. fullName: [{required: true, message: '请输入企业全称'}],
  358. phone: [{required: true, message: '请输入电话号码'}],
  359. cityIds: [{required: true, message: '请选择所在城市'}],
  360. enterpriseAddress: [{required: true, message: '请输入企业地址'}],
  361. legalPersonName: [{required: true, message: '请输入法人姓名'}],
  362. unifiedSocialCreditCode: [{required: true, message: '请输入统一社会信用代码'}],
  363. businessLicense: [{required: true, message: '请上传营业执照'}],
  364. businessLicenseExpireStart: [],
  365. businessLicenseExpireEnd: [],
  366. drugLicense: [{required: true, message: '请上传药品经营许可证'}],
  367. drugLicenseExpiryStart: [{required: true, message: '请选择药品经营许可证编号有效期'}],
  368. medicalDevice2: [{required: true, message: '请上传2类医疗器械备案'}],
  369. medicalDevice2ExpiryStart: [{required: true, message: '请选择2类医疗器械备案有效期'}],
  370. medicalLicense: [{required: true, message: '请上传医疗机构执业许可证'}],
  371. medicalLicenseExpiryStart: [{required: true, message: '请选择医疗机构执业许可证有效期'}],
  372. refundPhone: [{required: true, message: '请输入退货联系电话'}],
  373. businessScope: [{required: true, message: '请输入经营范围'}],
  374. refundAddress: [{required: true, message: '请输入退货地址'}],
  375. refundConsignee: [{required: true, message: '请输入退货联系人'}],
  376. brokerageType: [{required: true, message: '请选择佣金类型'}],
  377. account: [{required: true, message: '请输入登录帐号'}],
  378. shippingType: [{required: true, message: '请选择配送方式'}],
  379. isBusinessLicensePermanent: [{required: true, message: '请选择营业执照是否长期有效'}],
  380. },
  381. calendarType: 0,
  382. businessLicenseExpire:'',
  383. drugLicenseExpiry:'',
  384. medicalDevice2Expiry:'',
  385. medicalDevice1Expiry:'',
  386. medicalDevice3Expiry:'',
  387. foodLicenseExpiry:'',
  388. medicalLicenseExpiry:''
  389. }
  390. },
  391. onLoad(options) {
  392. this.form.doctorType=options.type;
  393. this.getCitys()
  394. // this.getHospitalList();
  395. // this.getDepartmentList();
  396. // this.getDictByKey("sys_doc_position");
  397. },
  398. onShow() {
  399. },
  400. onReady() {
  401. this.$refs.uForm.setRules(this.rules);
  402. },
  403. methods: {
  404. pickerChange(e,type) {
  405. this.form[type] = e.detail.value
  406. },
  407. openCalendar(calendarType){
  408. this.calendarType=calendarType
  409. this.$refs.calendar.open();
  410. },
  411. confirmCalendar(e) {
  412. if(!e.range.before||!e.range.after) {
  413. uni.showToast({
  414. title: '请选择正确的时间范围',
  415. icon: 'none'
  416. })
  417. return
  418. }
  419. if(this.calendarType==1) {
  420. this.form.businessLicenseExpireStart = e.range.before;
  421. this.form.businessLicenseExpireEnd = e.range.after;
  422. this.businessLicenseExpire = this.form.businessLicenseExpireStart+'至'+this.form.businessLicenseExpireEnd
  423. }else if(this.calendarType==2) {
  424. this.form.drugLicenseExpiryStart = e.range.before;
  425. this.form.drugLicenseExpiryEnd = e.range.after;
  426. this.drugLicenseExpiry = this.form.drugLicenseExpiryStart+'至'+this.form.drugLicenseExpiryEnd
  427. }else if(this.calendarType==3) {
  428. this.form.medicalDevice2ExpiryStart = e.range.before;
  429. this.form.medicalDevice2ExpiryEnd = e.range.after;
  430. this.medicalDevice2Expiry = this.form.medicalDevice2ExpiryStart+'至'+this.form.medicalDevice2ExpiryEnd
  431. }else if(this.calendarType==4) {
  432. this.form.medicalDevice1ExpiryStart = e.range.before;
  433. this.form.medicalDevice1ExpiryEnd = e.range.after;
  434. this.medicalDevice1Expiry = this.form.medicalDevice1ExpiryStart+'至'+this.form.medicalDevice1ExpiryEnd
  435. }else if(this.calendarType==5) {
  436. this.form.medicalDevice3ExpiryStart = e.range.before;
  437. this.form.medicalDevice3ExpiryEnd = e.range.after;
  438. this.medicalDevice3Expiry = this.form.medicalDevice3ExpiryStart+'至'+this.form.medicalDevice3ExpiryEnd
  439. }else if(this.calendarType==6) {
  440. this.form.foodLicenseExpiryStart = e.range.before;
  441. this.form.foodLicenseExpiryEnd = e.range.after;
  442. this.foodLicenseExpiry = this.form.foodLicenseExpiryStart+'至'+this.form.foodLicenseExpiryEnd
  443. }else if(this.calendarType==7) {
  444. this.form.medicalLicenseExpiryStart = e.range.before;
  445. this.form.medicalLicenseExpiryEnd = e.range.after;
  446. this.medicalLicenseExpiry = this.form.medicalLicenseExpiryStart+'至'+this.form.medicalLicenseExpiryEnd
  447. }
  448. console.log(e);
  449. },
  450. hospitalSelect(e){
  451. this.form.hospitalId=this.hospitals[0][e.indexs[0]].hospitalId;
  452. this.form.hospitalName=this.hospitals[0][e.indexs[0]].hospitalName;
  453. this.hospitalShow=false;
  454. },
  455. deptSelect(e){
  456. console.log(e)
  457. this.form.deptId=this.depts[0][e.indexs[0]].deptId;
  458. this.form.deptName=this.depts[0][e.indexs[0]].deptName;
  459. this.deptShow=false;
  460. },
  461. positionSelect(e){
  462. console.log(e)
  463. this.form.position=this.positions[0][e.indexs[0]].dictLabel;
  464. this.positionShow=false;
  465. },
  466. getDictByKey(key){
  467. var data={key:key}
  468. getDictByKey(data).then(
  469. res => {
  470. if(res.code==200){
  471. this.positions[0]=res.data;
  472. }
  473. },
  474. err => {
  475. }
  476. );
  477. },
  478. openContent(type){
  479. uni.navigateTo({
  480. url:"agreement?type="+type
  481. })
  482. },
  483. cityChangeHandler(e) {
  484. const {
  485. columnIndex,
  486. index,
  487. // 微信小程序无法将picker实例传出来,只能通过ref操作
  488. picker = this.$refs.cityPicker
  489. } = e
  490. if(columnIndex==0){
  491. this.cityIndex1=index
  492. console.log(this.cityIndex1)
  493. //获取第二列数据
  494. var citys1 = this.allCitys[this.cityIndex1].c;
  495. console.log(citys1)
  496. picker.setColumnValues(1,citys1)
  497. this.cityIndex2=0
  498. var citys2 = this.allCitys[this.cityIndex1].c[this.cityIndex2].c;
  499. picker.setColumnValues(2,citys2)
  500. }
  501. if(columnIndex==1){
  502. this.cityIndex2=index
  503. //获取第三列数据
  504. var citys = this.allCitys[this.cityIndex1].c[this.cityIndex2].c;
  505. console.log(citys)
  506. picker.setColumnValues(2,citys)
  507. }
  508. },
  509. citySelect(e){
  510. console.log(e)
  511. this.form.address=e.value[0].n+""+e.value[1].n+""+e.value[2].n
  512. this.form.cityIds=e.value[0].v+","+e.value[1].v+","+e.value[2].v;
  513. this.cityShow=false;
  514. },
  515. getCitys(){
  516. var that=this;
  517. var data={}
  518. getCitys(data).then(
  519. res => {
  520. if(res.code==200){
  521. that.allCitys=res.data;
  522. that.citys=[[],[],[]];
  523. that.citys[0]=that.allCitys;
  524. that.citys[1]=that.allCitys[0].c;
  525. that.citys[2]=that.allCitys[0].c[0].c;
  526. console.log(that.citys)
  527. }
  528. },
  529. err => {
  530. }
  531. );
  532. },
  533. getHospitalList(){
  534. var that=this;
  535. var data={}
  536. getHospitalList(data).then(
  537. res => {
  538. if(res.code==200){
  539. that.hospitals[0]=res.data;
  540. console.log(111)
  541. console.log(that.hospitals)
  542. }
  543. },
  544. err => {
  545. }
  546. );
  547. },
  548. getDepartmentList(){
  549. var that=this;
  550. var data={}
  551. getDepartmentList(data).then(
  552. res => {
  553. if(res.code==200){
  554. that.depts[0]=res.data;
  555. }
  556. },
  557. err => {
  558. }
  559. );
  560. },
  561. deletePic(event) {
  562. this[`fileList${event.name}`].splice(event.index, 1)
  563. },
  564. async afterRead(event) {
  565. // 当设置 multiple 为 true 时, file 为数组格式,否则为对象格式
  566. let lists = [].concat(event.file)
  567. let fileListLen = this[`fileList${event.name}`].length
  568. lists.map((item) => {
  569. this[`fileList${event.name}`].push({
  570. ...item,
  571. status: 'uploading',
  572. message: '上传中'
  573. })
  574. })
  575. for (let i = 0; i < lists.length; i++) {
  576. const result = await this.uploadFilePromise(lists[i].url)
  577. let item = this[`fileList${event.name}`][fileListLen]
  578. this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
  579. status: 'success',
  580. message: '',
  581. url: result
  582. }))
  583. fileListLen++
  584. }
  585. },
  586. uploadFilePromise(url) {
  587. return new Promise((resolve, reject) => {
  588. let a = uni.uploadFile({
  589. url: uni.getStorageSync('requestPath')+'/app/common/uploadOSS',
  590. filePath: url,
  591. name: 'file',
  592. formData: {
  593. user: 'test'
  594. },
  595. success: (res) => {
  596. setTimeout(() => {
  597. console.log(JSON.parse(res.data).url)
  598. resolve(JSON.parse(res.data).url)
  599. }, 1000)
  600. }
  601. });
  602. })
  603. },
  604. register(){
  605. storeAdd(this.form).then(
  606. res => {
  607. console.log(res)
  608. if(res.code==200){
  609. uni.showToast({
  610. icon:'none',
  611. title:res.msg,
  612. });
  613. setTimeout(function() {
  614. uni.navigateBack({
  615. delta: 1
  616. })
  617. }, 2000);
  618. }else{
  619. uni.showToast({
  620. icon:'none',
  621. title: res.msg,
  622. });
  623. }
  624. },
  625. rej => {
  626. console.log(rej)
  627. }
  628. );
  629. },
  630. submit(){
  631. var that=this;
  632. if(this.fileList1.length>0){
  633. this.form.logoUrl=this.fileList1[0].url
  634. }
  635. if(this.fileList2.length>0){
  636. this.form.businessLicense=this.fileList2[0].url
  637. }
  638. if(this.fileList3.length>0){
  639. this.form.drugLicense=this.fileList3[0].url
  640. }
  641. if(this.fileList4.length>0){
  642. this.form.medicalDevice2=this.fileList4[0].url
  643. }
  644. if(this.fileList5.length>0){
  645. this.form.medicalDevice1=this.fileList5[0].url
  646. }
  647. if(this.fileList6.length>0){
  648. this.form.medicalDevice3=this.fileList6[0].url
  649. }
  650. if(this.fileList7.length>0){
  651. this.form.foodLicense=this.fileList7[0].url
  652. }
  653. if(this.fileList8.length>0){
  654. this.form.medicalLicense=this.fileList8[0].url
  655. }
  656. console.log(this.form)
  657. const requiredFlag = this.form.isBusinessLicensePermanent == 0
  658. if(requiredFlag==2&&!this.form.businessLicenseExpireStart) {
  659. uni.showToast({
  660. title: '请选择营业执照有效期开始时间',
  661. icon: 'none'
  662. })
  663. return
  664. }
  665. if(requiredFlag==2&&!this.form.businessLicenseExpireEnd) {
  666. uni.showToast({
  667. title: '请选择营业执照有效期开始时间',
  668. icon: 'none'
  669. })
  670. return
  671. }
  672. /* 关键:改的是原来就存在的数组,保证响应式 */
  673. // this.rules.businessLicenseExpireStart = requiredFlag
  674. // ? [{ required: true, message: '请选择营业执照有效期开始时间' }]
  675. // : []
  676. // this.rules.businessLicenseExpireEnd = requiredFlag
  677. // ? [{ required: true, message: '请选择营业执照有效期结束时间' }]
  678. // : []
  679. // this.$refs.uForm.setRules(this.rules);
  680. console.log("下发")
  681. // this.$nextTick(() => {
  682. this.$refs.uForm.validate().then(res => {
  683. if(res) {
  684. this.register()
  685. }
  686. })
  687. // })
  688. },
  689. }
  690. }
  691. </script>
  692. <style scoped lang="scss">
  693. .es-ml-14 {
  694. margin-right: 14rpx;
  695. }
  696. .content{
  697. display: flex;
  698. flex-direction: column;
  699. justify-content: flex-start;
  700. .inner{
  701. padding: 20upx 20rpx 120rpx;
  702. .bg{
  703. width: 100%;
  704. height: 300rpx;
  705. position: relative;
  706. display: flex;
  707. flex-direction: column;
  708. justify-content: center;
  709. align-items: flex-start;
  710. image{
  711. position: absolute;
  712. border-radius: 30rpx 30rpx 0rpx 0rpx;
  713. width: 100%;
  714. height: 100%;
  715. }
  716. .title{
  717. z-index: 999;
  718. padding: 0rpx 30rpx;
  719. font-size: 40upx;
  720. font-family: PingFang SC;
  721. font-weight: bold;
  722. color: #FFFFFF;
  723. }
  724. .desc{
  725. z-index: 999;
  726. padding: 0rpx 30rpx;
  727. margin-top: 20rpx;
  728. font-size: 28upx;
  729. opacity: 0.5;
  730. font-family: PingFang SC;
  731. color: #FFFFFF;
  732. }
  733. }
  734. .my-form{
  735. z-index: 1;
  736. background-color: #FFFFFF;
  737. padding: 0 30upx;
  738. input{
  739. text-align: right;
  740. }
  741. }
  742. }
  743. .agree{
  744. padding: 10rpx 20rpx;
  745. display: flex;
  746. align-items: center;
  747. justify-content: flex-start;
  748. .label{
  749. font-size: 24rpx;
  750. }
  751. .text{
  752. margin-left: 10rpx;
  753. color: royalblue;
  754. font-size: 24rpx;
  755. }
  756. }
  757. .btn-box{
  758. z-index: 90;
  759. width: 100%;
  760. position: fixed;
  761. bottom: 0;
  762. height: 120upx;
  763. padding: 0 30upx;
  764. display: flex;
  765. align-items: center;
  766. justify-content: center;
  767. background: #FFFFFF;
  768. .sub-btn{
  769. width: 100%;
  770. height: 88upx;
  771. line-height: 88upx;
  772. text-align: center;
  773. font-size: 30upx;
  774. font-family: PingFang SC;
  775. font-weight: bold;
  776. color: #FFFFFF;
  777. background: #2583EB;
  778. border-radius: 44upx;
  779. }
  780. }
  781. }
  782. </style>