registerMerchant.vue 46 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112
  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. <view style="color: red;">{{errMsg}}</view>
  55. <u-upload
  56. :fileList="fileList2"
  57. @afterRead="afterRead"
  58. @delete="deletePic"
  59. name="2"
  60. :maxCount="1"
  61. ></u-upload>
  62. </u-form-item>
  63. <u-form-item required labelWidth="auto" borderBottom label="统一社会信用代码" prop="businessCode">
  64. <u-input border="none" placeholder="请输入统一社会信用代码" v-model="form.businessCode" maxlength="100" />
  65. </u-form-item>
  66. <u-form-item required labelWidth="auto" borderBottom label="营业执照是否长期有效" prop="isBusinessLicensePermanent">
  67. <u-radio-group placement="row" v-model="form.isBusinessLicensePermanent" >
  68. <u-radio activeColor="#2583EB" :customStyle="{marginRight: '8px'}" key="1" label="是" :name="1" > </u-radio>
  69. <u-radio activeColor="#2583EB" :customStyle="{marginRight: '8px'}" key="0" label="否" :name="0" > </u-radio>
  70. </u-radio-group>
  71. </u-form-item>
  72. <template v-if="form.isBusinessLicensePermanent==0">
  73. <!-- <u-form-item required labelWidth="auto" borderBottom label="营业执照有效期" prop="businessLicenseExpireStart" @click="openCalendar(1)">
  74. <u-input disabled disabledColor="#ffffff" border="none" placeholder="请选择营业执照有效期" v-model="businessLicenseExpire" />
  75. <template #right> <u-icon name="arrow-right"></u-icon> </template>
  76. </u-form-item> -->
  77. <u-form-item :required="form.isBusinessLicensePermanent==0" labelWidth="auto" borderBottom label="营业执照有效期开始时间" prop="businessLicenseExpireStart">
  78. <picker :value="form.businessLicenseExpireStart" mode="date" fields="day" @change="pickerChange($event,'businessLicenseExpireStart')">
  79. <view class="x-f" style="justify-content: space-between;">
  80. <u-input disabled disabledColor="#ffffff" border="none" placeholder="请选择开始时间" v-model="form.businessLicenseExpireStart" />
  81. <u-icon name="arrow-right"></u-icon>
  82. </view>
  83. </picker>
  84. </u-form-item>
  85. <u-form-item :required="form.isBusinessLicensePermanent==0" labelWidth="auto" borderBottom label="营业执照有效期结束时间" prop="businessLicenseExpireEnd">
  86. <picker :value="form.businessLicenseExpireEnd" mode="date" fields="day" @change="pickerChange($event,'businessLicenseExpireEnd')">
  87. <view class="x-f" style="justify-content: space-between;">
  88. <u-input disabled disabledColor="#ffffff" border="none" placeholder="请选择结束时间" v-model="form.businessLicenseExpireEnd" />
  89. <u-icon name="arrow-right"></u-icon>
  90. </view>
  91. </picker>
  92. </u-form-item>
  93. </template>
  94. <u-form-item required labelWidth="auto" borderBottom label="经营范围" prop="businessScope">
  95. <u--textarea v-model="form.businessScope" placeholder="请输入经营范围" maxlength="2000"></u--textarea>
  96. <!-- <u-input border="none" placeholder="请输入经营范围" v-model="form.businessScope" maxlength="1000" /> -->
  97. </u-form-item>
  98. <u-form-item required labelWidth="auto" borderBottom label="药品经营许可证" prop="drugLicense">
  99. <u-upload
  100. :fileList="fileList3"
  101. @afterRead="afterRead"
  102. @delete="deletePic"
  103. name="3"
  104. :maxCount="2"
  105. ></u-upload>
  106. </u-form-item>
  107. <u-form-item required labelWidth="auto" borderBottom label="药品经营许可证编码" prop="drugCode">
  108. <u-input border="none" placeholder="请输入药品经营许可证编码" v-model="form.drugCode" maxlength="100" />
  109. </u-form-item>
  110. <!-- <u-form-item required labelWidth="auto" borderBottom label="药品经营许可证是否长期有效" prop="isDrugLicensePermanent">
  111. <u-radio-group placement="row" v-model="form.isDrugLicensePermanent" >
  112. <u-radio activeColor="#2583EB" :customStyle="{marginRight: '8px'}" key="1" label="是" :name="1" > </u-radio>
  113. <u-radio activeColor="#2583EB" :customStyle="{marginRight: '8px'}" key="0" label="否" :name="0" > </u-radio>
  114. </u-radio-group>
  115. </u-form-item> -->
  116. <template v-if="form.isDrugLicensePermanent==0">
  117. <u-form-item :required="form.isDrugLicensePermanent==0" labelWidth="auto" borderBottom label="药品经营许可证编号有效期开始时间">
  118. <!-- <u-input disabled disabledColor="#ffffff" border="none" placeholder="请选择药品经营许可证编号有效期" v-model="drugLicenseExpiry" />
  119. <template #right> <u-icon name="arrow-right"></u-icon> </template> -->
  120. <picker :value="form.drugLicenseExpiryStart" mode="date" fields="day" @change="pickerChange($event,'drugLicenseExpiryStart')">
  121. <view class="x-f" style="justify-content: space-between;">
  122. <u-input disabled disabledColor="#ffffff" border="none" placeholder="请选择开始时间" v-model="form.drugLicenseExpiryStart" />
  123. <u-icon name="arrow-right"></u-icon>
  124. </view>
  125. </picker>
  126. </u-form-item>
  127. <u-form-item :required="form.isDrugLicensePermanent==0" labelWidth="auto" borderBottom label="药品经营许可证编号有效期结束时间" prop="drugLicenseExpiryEnd">
  128. <picker :value="form.drugLicenseExpiryStart" mode="date" fields="day" @change="pickerChange($event,'drugLicenseExpiryEnd')">
  129. <view class="x-f" style="justify-content: space-between;">
  130. <u-input disabled disabledColor="#ffffff" border="none" placeholder="请选择结束时间" v-model="form.drugLicenseExpiryEnd" />
  131. <u-icon name="arrow-right"></u-icon>
  132. </view>
  133. </picker>
  134. </u-form-item>
  135. </template>
  136. <u-form-item required labelWidth="auto" borderBottom label="药品经营许可证经营范围" prop="drugLicenseBusinessScope">
  137. <u--textarea v-model="form.drugLicenseBusinessScope" placeholder="请输入药品经营许可证经营范围" maxlength="2000"></u--textarea>
  138. </u-form-item>
  139. <u-form-item required labelWidth="auto" borderBottom label="药品经营许可证范围是否包含" prop="drugScopeHasFrozen">
  140. <u-radio-group placement="row" v-model="form.drugScopeHasFrozen" >
  141. <u-radio activeColor="#2583EB" :customStyle="{marginRight: '16px'}" key="0" label="否 " name="0" > </u-radio>
  142. <u-radio activeColor="#2583EB" :customStyle="{marginRight: '16px'}" key="1" label="冷冻" name="1" > </u-radio>
  143. <u-radio activeColor="#2583EB" :customStyle="{marginRight: '16px'}" key="2" label="冷藏" name="2" > </u-radio>
  144. <u-radio activeColor="#2583EB" :customStyle="{marginRight: '16px'}" key="3" label="冷冻、冷藏" name="3" > </u-radio>
  145. </u-radio-group>
  146. </u-form-item>
  147. <u-form-item labelWidth="auto" borderBottom label="2类器械经营备案" prop="medicalDevice2">
  148. <u-upload
  149. :fileList="fileList4"
  150. @afterRead="afterRead"
  151. @delete="deletePic"
  152. name="4"
  153. :maxCount="1"
  154. ></u-upload>
  155. </u-form-item>
  156. <u-form-item labelWidth="auto" borderBottom label="2类器械经营备案编码" prop="medicalDevice2Code">
  157. <u-input border="none" placeholder="请输入2类器械经营备案编码" v-model="form.medicalDevice2Code" maxlength="100" />
  158. </u-form-item>
  159. <!-- <u-form-item labelWidth="auto" borderBottom label="2类器械经营备案是否长期有效" prop="isMedicalDevice2ExpiryPermanent">
  160. <u-radio-group placement="row" v-model="form.isMedicalDevice2ExpiryPermanent" >
  161. <u-radio activeColor="#2583EB" :customStyle="{marginRight: '8px'}" key="1" label="是" :name="1" > </u-radio>
  162. <u-radio activeColor="#2583EB" :customStyle="{marginRight: '8px'}" key="0" label="否" :name="0" > </u-radio>
  163. </u-radio-group>
  164. </u-form-item> -->
  165. <template v-if="form.isMedicalDevice2ExpiryPermanent==0">
  166. <u-form-item labelWidth="auto" borderBottom label="2类器械经营备案有效期开始时间">
  167. <picker :value="form.medicalDevice2ExpiryStart" mode="date" fields="day" @change="pickerChange($event,'medicalDevice2ExpiryStart')">
  168. <view class="x-f" style="justify-content: space-between;">
  169. <u-input disabled disabledColor="#ffffff" border="none" placeholder="请选择开始时间" v-model="form.medicalDevice2ExpiryStart" />
  170. <u-icon name="arrow-right"></u-icon>
  171. </view>
  172. </picker>
  173. </u-form-item>
  174. <u-form-item labelWidth="auto" borderBottom label="2类器械经营备案有效期结束时间" prop="medicalDevice2ExpiryEnd">
  175. <picker :value="form.medicalDevice2ExpiryEnd" mode="date" fields="day" @change="pickerChange($event,'medicalDevice2ExpiryEnd')">
  176. <view class="x-f" style="justify-content: space-between;">
  177. <u-input disabled disabledColor="#ffffff" border="none" placeholder="请选择结束时间" v-model="form.medicalDevice2ExpiryEnd" />
  178. <u-icon name="arrow-right"></u-icon>
  179. </view>
  180. </picker>
  181. </u-form-item>
  182. </template>
  183. <u-form-item labelWidth="auto" borderBottom label="2类医疗器械经营许可证营业范围" prop="medicalDevice2BusinessScope">
  184. <u--textarea v-model="form.medicalDevice2BusinessScope" placeholder="请输入2类医疗器械经营许可证营业范围" maxlength="2000"></u--textarea>
  185. </u-form-item>
  186. <!-- <u-form-item labelWidth="auto" borderBottom label="1类器械生产备案" prop="medicalDevice1">
  187. <u-upload
  188. :fileList="fileList5"
  189. @afterRead="afterRead"
  190. @delete="deletePic"
  191. name="5"
  192. :maxCount="1"
  193. ></u-upload>
  194. </u-form-item>
  195. <u-form-item labelWidth="auto" borderBottom label="1类器械生产备案编码" prop="medicalDevice1Code">
  196. <u-input border="none" placeholder="请输入1类器械生产备案编码" v-model="form.medicalDevice1Code" maxlength="100" />
  197. </u-form-item>
  198. <u-form-item labelWidth="auto" borderBottom label="1类器械生产备案是否长期有效" prop="isMedicalDevice1ExpiryPermanent">
  199. <u-radio-group placement="row" v-model="form.isMedicalDevice1ExpiryPermanent" >
  200. <u-radio activeColor="#2583EB" :customStyle="{marginRight: '8px'}" key="1" label="是" :name="1" > </u-radio>
  201. <u-radio activeColor="#2583EB" :customStyle="{marginRight: '8px'}" key="0" label="否" :name="0" > </u-radio>
  202. </u-radio-group>
  203. </u-form-item>
  204. <template v-if="form.isMedicalDevice1ExpiryPermanent==0">
  205. <u-form-item labelWidth="auto" borderBottom label="1类器械生产备案有效期开始时间" prop="medicalDevice1ExpiryStart">
  206. <picker :value="form.medicalDevice1ExpiryStart" mode="date" fields="day" @change="pickerChange($event,'medicalDevice1ExpiryStart')">
  207. <view class="x-f" style="justify-content: space-between;">
  208. <u-input disabled disabledColor="#ffffff" border="none" placeholder="请选择开始时间" v-model="form.medicalDevice1ExpiryStart" />
  209. <u-icon name="arrow-right"></u-icon>
  210. </view>
  211. </picker>
  212. </u-form-item>
  213. <u-form-item labelWidth="auto" borderBottom label="1类器械生产备案有效期结束时间" prop="medicalDevice1ExpiryEnd">
  214. <picker :value="form.medicalDevice1ExpiryEnd" mode="date" fields="day" @change="pickerChange($event,'medicalDevice1ExpiryEnd')">
  215. <view class="x-f" style="justify-content: space-between;">
  216. <u-input disabled disabledColor="#ffffff" border="none" placeholder="请选择结束时间" v-model="form.medicalDevice1ExpiryEnd" />
  217. <u-icon name="arrow-right"></u-icon>
  218. </view>
  219. </picker>
  220. </u-form-item>
  221. </template> -->
  222. <u-form-item labelWidth="auto" borderBottom label="3类器械经营许可证" prop="medicalDevice3">
  223. <u-upload
  224. :fileList="fileList6"
  225. @afterRead="afterRead"
  226. @delete="deletePic"
  227. name="6"
  228. :maxCount="1"
  229. ></u-upload>
  230. </u-form-item>
  231. <u-form-item labelWidth="auto" borderBottom label="3类器械生产备案编码" prop="medicalDevice3Code">
  232. <u-input border="none" placeholder="请输入3类器械生产备案编码" v-model="form.medicalDevice3Code" maxlength="100" />
  233. </u-form-item>
  234. <!-- <u-form-item labelWidth="auto" borderBottom label="3类器械经营许可证是否长期有效" prop="isMedicalDevice3ExpiryPermanent">
  235. <u-radio-group placement="row" v-model="form.isMedicalDevice3ExpiryPermanent" >
  236. <u-radio activeColor="#2583EB" :customStyle="{marginRight: '8px'}" key="1" label="是" :name="1" > </u-radio>
  237. <u-radio activeColor="#2583EB" :customStyle="{marginRight: '8px'}" key="0" label="否" :name="0" > </u-radio>
  238. </u-radio-group>
  239. </u-form-item> -->
  240. <template v-if="form.isMedicalDevice3ExpiryPermanent==0">
  241. <u-form-item labelWidth="auto" borderBottom label="3类器械经营许可证有效期开始时间" prop="medicalDevice3ExpiryStart">
  242. <picker :value="form.medicalDevice3ExpiryStart" mode="date" fields="day" @change="pickerChange($event,'medicalDevice3ExpiryStart')">
  243. <view class="x-f" style="justify-content: space-between;">
  244. <u-input disabled disabledColor="#ffffff" border="none" placeholder="请选择开始时间" v-model="form.medicalDevice3ExpiryStart" />
  245. <u-icon name="arrow-right"></u-icon>
  246. </view>
  247. </picker>
  248. </u-form-item>
  249. <u-form-item labelWidth="auto" borderBottom label="3类器械经营许可证有效期结束时间" prop="medicalDevice3ExpiryEnd">
  250. <picker :value="form.medicalDevice3ExpiryEnd" mode="date" fields="day" @change="pickerChange($event,'medicalDevice3ExpiryEnd')">
  251. <view class="x-f" style="justify-content: space-between;">
  252. <u-input disabled disabledColor="#ffffff" border="none" placeholder="请选择结束时间" v-model="form.medicalDevice3ExpiryEnd" />
  253. <u-icon name="arrow-right"></u-icon>
  254. </view>
  255. </picker>
  256. </u-form-item>
  257. </template>
  258. <u-form-item labelWidth="auto" borderBottom label="3类医疗器械经营许可证营业范围" prop="medicalDevice3BusinessScope">
  259. <u--textarea v-model="form.medicalDevice3BusinessScope" placeholder="请输入3类医疗器械经营许可证营业范围" maxlength="2000"></u--textarea>
  260. </u-form-item>
  261. <u-form-item labelWidth="auto" borderBottom label="食品经营许可证/备案凭证" prop="foodLicense">
  262. <u-upload
  263. :fileList="fileList7"
  264. @afterRead="afterRead"
  265. @delete="deletePic"
  266. name="7"
  267. :maxCount="3"
  268. ></u-upload>
  269. </u-form-item>
  270. <u-form-item labelWidth="auto" borderBottom label="食品经营许可证/备案凭证编码" prop="foodCode">
  271. <u-input border="none" placeholder="请输入食品经营许可证/备案凭证编码" v-model="form.foodCode" maxlength="100" />
  272. </u-form-item>
  273. <u-form-item labelWidth="auto" borderBottom label="食品经营许可证/备案凭证是否长期有效" prop="isFoodLicenseExpiryPermanent">
  274. <u-radio-group placement="row" v-model="form.isFoodLicenseExpiryPermanent" >
  275. <u-radio activeColor="#2583EB" :customStyle="{marginRight: '8px'}" key="1" label="是" :name="1" > </u-radio>
  276. <u-radio activeColor="#2583EB" :customStyle="{marginRight: '8px'}" key="0" label="否" :name="0" > </u-radio>
  277. </u-radio-group>
  278. </u-form-item>
  279. <template v-if="form.isFoodLicenseExpiryPermanent==0">
  280. <u-form-item labelWidth="auto" borderBottom label="食品经营许可证/备案凭证有效期开始时间" prop="foodLicenseExpiryStart">
  281. <picker :value="form.foodLicenseExpiryStart" mode="date" fields="day" @change="pickerChange($event,'foodLicenseExpiryStart')">
  282. <view class="x-f" style="justify-content: space-between;">
  283. <u-input disabled disabledColor="#ffffff" border="none" placeholder="请选择开始时间" v-model="form.foodLicenseExpiryStart" />
  284. <u-icon name="arrow-right"></u-icon>
  285. </view>
  286. </picker>
  287. </u-form-item>
  288. <u-form-item labelWidth="auto" borderBottom label="食品经营许可证/备案凭证有效期结束时间" prop="foodLicenseExpiryEnd">
  289. <picker :value="form.foodLicenseExpiryEnd" mode="date" fields="day" @change="pickerChange($event,'foodLicenseExpiryEnd')">
  290. <view class="x-f" style="justify-content: space-between;">
  291. <u-input disabled disabledColor="#ffffff" border="none" placeholder="请选择结束时间" v-model="form.foodLicenseExpiryEnd" />
  292. <u-icon name="arrow-right"></u-icon>
  293. </view>
  294. </picker>
  295. </u-form-item>
  296. </template>
  297. <u-form-item labelWidth="auto" borderBottom label="食品经营范围" prop="foodLicenseBusinessScope">
  298. <u--textarea v-model="form.foodLicenseBusinessScope" placeholder="请输入食品经营范围" maxlength="2000"></u--textarea>
  299. </u-form-item>
  300. <!-- <u-form-item labelWidth="auto" borderBottom label="医疗机构执业许可证" prop="medicalLicense">
  301. <u-upload
  302. :fileList="fileList8"
  303. @afterRead="afterRead"
  304. @delete="deletePic"
  305. name="8"
  306. :maxCount="1"
  307. ></u-upload>
  308. </u-form-item>
  309. <u-form-item labelWidth="auto" borderBottom label="医疗机构执业许可证编码" prop="medicalCode">
  310. <u-input border="none" placeholder="请输入医疗机构执业许可证编码" v-model="form.medicalCode" maxlength="100" />
  311. </u-form-item>
  312. <u-form-item labelWidth="auto" borderBottom label="医疗机构执业许可证是否长期有效" prop="isMedicalLicenseExpiryPermanent">
  313. <u-radio-group placement="row" v-model="form.isMedicalLicenseExpiryPermanent" >
  314. <u-radio activeColor="#2583EB" :customStyle="{marginRight: '8px'}" key="1" label="是" :name="1" > </u-radio>
  315. <u-radio activeColor="#2583EB" :customStyle="{marginRight: '8px'}" key="0" label="否" :name="0" > </u-radio>
  316. </u-radio-group>
  317. </u-form-item>
  318. <template v-if="form.isMedicalLicenseExpiryPermanent==0">
  319. <u-form-item labelWidth="auto" borderBottom label="医疗机构执业许可证有效期开始时间">
  320. <picker :value="form.medicalLicenseExpiryStart" mode="date" fields="day" @change="pickerChange($event,'medicalLicenseExpiryStart')">
  321. <view class="x-f" style="justify-content: space-between;">
  322. <u-input disabled disabledColor="#ffffff" border="none" placeholder="请选开始时间" v-model="form.medicalLicenseExpiryStart" />
  323. <u-icon name="arrow-right"></u-icon>
  324. </view>
  325. </picker>
  326. </u-form-item>
  327. <u-form-item labelWidth="auto" borderBottom label="医疗机构执业许可证有效期择结束时间" prop="medicalLicenseExpiryEnd">
  328. <picker :value="form.medicalLicenseExpiryEnd" mode="date" fields="day" @change="pickerChange($event,'medicalLicenseExpiryEnd')">
  329. <view class="x-f" style="justify-content: space-between;">
  330. <u-input disabled disabledColor="#ffffff" border="none" placeholder="请选择结束时间" v-model="form.medicalLicenseExpiryEnd" />
  331. <u-icon name="arrow-right"></u-icon>
  332. </view>
  333. </picker>
  334. </u-form-item>
  335. </template> -->
  336. <u-form-item required labelWidth="auto" borderBottom label="发货联系电话" prop="sendPhone">
  337. <u-input border="none" placeholder="请输入发货联系电话" v-model="form.sendPhone" maxlength="20" />
  338. </u-form-item>
  339. <u-form-item required labelWidth="auto" borderBottom label="配送方式" prop="shippingType">
  340. <u-radio-group placement="row" v-model="form.shippingType" >
  341. <u-radio activeColor="#2583EB" :customStyle="{marginRight: '8px'}" key="1" label="配送" name="1" > </u-radio>
  342. <u-radio activeColor="#2583EB" :customStyle="{marginRight: '8px'}" key="2" label="到店自提" name="2" > </u-radio>
  343. <u-radio activeColor="#2583EB" :customStyle="{marginRight: '8px'}" key="3" label="配送、自提" name="3" > </u-radio>
  344. </u-radio-group>
  345. </u-form-item>
  346. <u-form-item required labelWidth="auto" borderBottom label="退货联系人" prop="refundConsignee">
  347. <u-input border="none" placeholder="请输入退货联系人" v-model="form.refundConsignee" maxlength="20" />
  348. </u-form-item>
  349. <u-form-item required labelWidth="auto" borderBottom label="退货联系电话" prop="refundPhone">
  350. <u-input border="none" placeholder="请输入退货联系电话" v-model="form.refundPhone" maxlength="20" />
  351. </u-form-item>
  352. <u-form-item required labelWidth="auto" borderBottom label="退货地址" prop="refundAddress">
  353. <u-input border="none" placeholder="请输入退货地址" v-model="form.refundAddress" maxlength="100" />
  354. </u-form-item>
  355. <u-form-item required labelWidth="auto" borderBottom label="佣金类型" prop="brokerageType">
  356. <u-radio-group placement="row" v-model="form.brokerageType" >
  357. <u-radio activeColor="#2583EB" :customStyle="{marginRight: '8px'}" key="1" label="每盒" name="1" > </u-radio>
  358. <u-radio activeColor="#2583EB" :customStyle="{marginRight: '8px'}" key="2" label="总价" name="2" > </u-radio>
  359. </u-radio-group>
  360. </u-form-item>
  361. <u-form-item required labelWidth="auto" borderBottom label="登录帐号" prop="account">
  362. <u-input border="none" placeholder="请输入登录帐号" v-model="form.account" maxlength="50" />
  363. </u-form-item>
  364. </u-form>
  365. </view>
  366. <u-picker ref="cityPicker" @cancel="cityShow = false" keyName="n" @confirm="citySelect" @change="cityChangeHandler" :show="cityShow" :columns="citys"></u-picker>
  367. <u-picker ref="deptPicker" @cancel="deptShow = false" keyName="deptName" @confirm="deptSelect" :show="deptShow" :columns="depts"></u-picker>
  368. <u-picker @cancel="hospitalShow = false" keyName="hospitalName" @confirm="hospitalSelect" :show="hospitalShow" :columns="hospitals"></u-picker>
  369. <u-picker ref="positionPicker" @cancel="positionShow = false" keyName="dictLabel" @confirm="positionSelect" :show="positionShow" :columns="positions"></u-picker>
  370. <uni-calendar ref="calendar" :range="true" :insert="false" @confirm="confirmCalendar" />
  371. </view>
  372. <view class="btn-box">
  373. <view class="sub-btn" @click="submit()">提交</view>
  374. </view>
  375. </view>
  376. </view>
  377. </template>
  378. <script>
  379. import {getDictByKey,getHospitalList,getDepartmentList,sendSmsCode,uploadOSS,getCitys} from '@/api/common.js'
  380. import {storeAdd,businessLicenseCheck} from './api/shopping.js'
  381. export default {
  382. data() {
  383. return {
  384. cityIndex1:0,
  385. cityIndex2:0,
  386. allCitys:[],
  387. citys:[[],[],[]],
  388. cityShow:false,
  389. depts:[[]],
  390. deptShow:false,
  391. hospitals:[[]],
  392. hospitalShow:false,
  393. positions:[[]],
  394. positionShow:false,
  395. fileList1:[],
  396. fileList2:[],
  397. fileList3:[],
  398. fileList4:[],
  399. fileList5:[],
  400. fileList6:[],
  401. fileList7:[],
  402. fileList8:[],
  403. checked:0,
  404. form:{
  405. isBusinessLicensePermanent: 1,
  406. isDrugLicensePermanent: 0,
  407. isMedicalDevice1ExpiryPermanent: 1,
  408. isMedicalDevice2ExpiryPermanent: 1,
  409. isMedicalDevice3ExpiryPermanent: 0,
  410. isFoodLicenseExpiryPermanent: 1,
  411. isMedicalLicenseExpiryPermanent: 1,
  412. storeName:'',
  413. fullName:'',
  414. phone:'',
  415. cityIds:'',
  416. enterpriseAddress:'',
  417. legalPersonName:'',
  418. unifiedSocialCreditCode:'',
  419. logoUrl:'',
  420. businessLicense:'',
  421. businessLicenseExpireStart:'',
  422. businessLicenseExpireEnd:'',
  423. drugLicense:'',
  424. drugLicenseExpiryStart:'',
  425. drugLicenseExpiryEnd:'',
  426. medicalDevice1:'',
  427. medicalDevice1ExpiryStart:'',
  428. medicalDevice1ExpiryEnd:'',
  429. medicalDevice2:'',
  430. medicalDevice2ExpiryStart:'',
  431. medicalDevice2ExpiryEnd:'',
  432. medicalDevice3:'',
  433. medicalDevice3ExpiryStart:'',
  434. medicalDevice3ExpiryEnd:'',
  435. foodLicense:'',
  436. foodLicenseExpiryStart:'',
  437. foodLicenseExpiryEnd:'',
  438. medicalLicense:'',
  439. medicalLicenseExpiryStart:'',
  440. medicalLicenseExpiryEnd:'',
  441. businessScope:'',
  442. address:'',
  443. refundPhone:'',
  444. refundAddress:'',
  445. refundConsignee:'',
  446. brokerageType: undefined,
  447. account:'',
  448. sendPhone:'',
  449. shippingType: undefined,
  450. medicalCode: '',
  451. foodCode: '',
  452. medicalDevice3Code: '',
  453. medicalDevice2Code: '',
  454. medicalDevice1Code: '',
  455. drugCode: '',
  456. businessCode: '',
  457. medicalDevice2BusinessScope: '',
  458. medicalDevice3BusinessScope:'',
  459. drugLicenseBusinessScope: '',
  460. drugScopeHasFrozen: 0,
  461. foodLicenseBusinessScope:''
  462. },
  463. rules: {
  464. logoUrl: [{required: true, message: '请上传企业LOGO'}],
  465. storeName: [{required: true, message: '请输入店铺名称'}],
  466. fullName: [{required: true, message: '请输入企业全称'}],
  467. phone: [{required: true, message: '请输入负责人联系电话'}],
  468. cityIds: [{required: true, message: '请选择所在城市'}],
  469. enterpriseAddress: [{required: true, message: '请输入企业地址'}],
  470. legalPersonName: [{required: true, message: '请输入法人姓名'}],
  471. // unifiedSocialCreditCode: [{required: true, message: '请输入统一社会信用代码'}],
  472. businessLicense: [{required: true, message: '请上传营业执照'}],
  473. businessCode: [{required: true, message: '请输入统一社会信用代码'}],
  474. businessLicenseExpireStart: [],
  475. businessLicenseExpireEnd: [],
  476. drugLicense: [{required: true, message: '请上传药品经营许可证'}],
  477. drugLicenseBusinessScope: [{required: true, message: '请输入药品经营许可证经营范围'}],
  478. drugCode: [{required: true, message: '请输入药品经营许可证编码'}],
  479. drugScopeHasFrozen: [{required: true, message: '药品经营许可证范围是否包含'}],
  480. // drugLicenseExpiryStart: [{required: true, message: '请选择药品经营许可证编号有效期'}],
  481. // medicalDevice2: [{required: true, message: '请上传2类医疗器械备案'}],
  482. // medicalDevice2Code: [{required: true, message: '请输入2类医疗器械备案编码'}],
  483. // medicalDevice2ExpiryStart: [{required: true, message: '请选择2类医疗器械备案有效期'}],
  484. // medicalLicense: [{required: true, message: '请上传医疗机构执业许可证'}],
  485. // medicalCode: [{required: true, message: '请输入医疗机构执业许可证编码'}],
  486. // medicalLicenseExpiryStart: [{required: true, message: '请选择医疗机构执业许可证有效期'}],
  487. sendPhone: [{required: true, message: '请输入发货联系电话'}],
  488. refundPhone: [{required: true, message: '请输入退货联系电话'}],
  489. businessScope: [{required: true, message: '请输入经营范围'}],
  490. refundAddress: [{required: true, message: '请输入退货地址'}],
  491. refundConsignee: [{required: true, message: '请输入退货联系人'}],
  492. brokerageType: [{required: true, message: '请选择佣金类型'}],
  493. account: [{required: true, message: '请输入登录帐号'}],
  494. shippingType: [{required: true, message: '请选择配送方式'}],
  495. isBusinessLicensePermanent: [{required: true, message: '请选择营业执照是否长期有效'}],
  496. isDrugLicensePermanent: [{required: true, message: '请选择药品经营许可证是否长期有效'}],
  497. // isMedicalDevice2ExpiryPermanent: [{required: true, message: '请选择2类器械经营备案是否长期有效'}],
  498. // isMedicalLicenseExpiryPermanent: [{required: true, message: '请选择医疗机构执业许可证是否长期有效'}],
  499. },
  500. calendarType: 0,
  501. businessLicenseExpire:'',
  502. drugLicenseExpiry:'',
  503. medicalDevice2Expiry:'',
  504. medicalDevice1Expiry:'',
  505. medicalDevice3Expiry:'',
  506. foodLicenseExpiry:'',
  507. medicalLicenseExpiry:'',
  508. errMsg:'',
  509. }
  510. },
  511. onLoad(options) {
  512. this.form.doctorType=options.type;
  513. this.getCitys()
  514. // this.getHospitalList();
  515. // this.getDepartmentList();
  516. // this.getDictByKey("sys_doc_position");
  517. },
  518. onShow() {
  519. },
  520. onReady() {
  521. this.$refs.uForm.setRules(this.rules);
  522. },
  523. methods: {
  524. pickerChange(e,type) {
  525. this.form[type] = e.detail.value
  526. },
  527. openCalendar(calendarType){
  528. this.calendarType=calendarType
  529. this.$refs.calendar.open();
  530. },
  531. confirmCalendar(e) {
  532. if(!e.range.before||!e.range.after) {
  533. uni.showToast({
  534. title: '请选择正确的时间范围',
  535. icon: 'none'
  536. })
  537. return
  538. }
  539. if(this.calendarType==1) {
  540. this.form.businessLicenseExpireStart = e.range.before;
  541. this.form.businessLicenseExpireEnd = e.range.after;
  542. this.businessLicenseExpire = this.form.businessLicenseExpireStart+'至'+this.form.businessLicenseExpireEnd
  543. }else if(this.calendarType==2) {
  544. this.form.drugLicenseExpiryStart = e.range.before;
  545. this.form.drugLicenseExpiryEnd = e.range.after;
  546. this.drugLicenseExpiry = this.form.drugLicenseExpiryStart+'至'+this.form.drugLicenseExpiryEnd
  547. }else if(this.calendarType==3) {
  548. this.form.medicalDevice2ExpiryStart = e.range.before;
  549. this.form.medicalDevice2ExpiryEnd = e.range.after;
  550. this.medicalDevice2Expiry = this.form.medicalDevice2ExpiryStart+'至'+this.form.medicalDevice2ExpiryEnd
  551. }else if(this.calendarType==4) {
  552. this.form.medicalDevice1ExpiryStart = e.range.before;
  553. this.form.medicalDevice1ExpiryEnd = e.range.after;
  554. this.medicalDevice1Expiry = this.form.medicalDevice1ExpiryStart+'至'+this.form.medicalDevice1ExpiryEnd
  555. }else if(this.calendarType==5) {
  556. this.form.medicalDevice3ExpiryStart = e.range.before;
  557. this.form.medicalDevice3ExpiryEnd = e.range.after;
  558. this.medicalDevice3Expiry = this.form.medicalDevice3ExpiryStart+'至'+this.form.medicalDevice3ExpiryEnd
  559. }else if(this.calendarType==6) {
  560. this.form.foodLicenseExpiryStart = e.range.before;
  561. this.form.foodLicenseExpiryEnd = e.range.after;
  562. this.foodLicenseExpiry = this.form.foodLicenseExpiryStart+'至'+this.form.foodLicenseExpiryEnd
  563. }else if(this.calendarType==7) {
  564. this.form.medicalLicenseExpiryStart = e.range.before;
  565. this.form.medicalLicenseExpiryEnd = e.range.after;
  566. this.medicalLicenseExpiry = this.form.medicalLicenseExpiryStart+'至'+this.form.medicalLicenseExpiryEnd
  567. }
  568. console.log(e);
  569. },
  570. hospitalSelect(e){
  571. this.form.hospitalId=this.hospitals[0][e.indexs[0]].hospitalId;
  572. this.form.hospitalName=this.hospitals[0][e.indexs[0]].hospitalName;
  573. this.hospitalShow=false;
  574. },
  575. deptSelect(e){
  576. console.log(e)
  577. this.form.deptId=this.depts[0][e.indexs[0]].deptId;
  578. this.form.deptName=this.depts[0][e.indexs[0]].deptName;
  579. this.deptShow=false;
  580. },
  581. positionSelect(e){
  582. console.log(e)
  583. this.form.position=this.positions[0][e.indexs[0]].dictLabel;
  584. this.positionShow=false;
  585. },
  586. getDictByKey(key){
  587. var data={key:key}
  588. getDictByKey(data).then(
  589. res => {
  590. if(res.code==200){
  591. this.positions[0]=res.data;
  592. }
  593. },
  594. err => {
  595. }
  596. );
  597. },
  598. openContent(type){
  599. uni.navigateTo({
  600. url:"agreement?type="+type
  601. })
  602. },
  603. cityChangeHandler(e) {
  604. const {
  605. columnIndex,
  606. index,
  607. // 微信小程序无法将picker实例传出来,只能通过ref操作
  608. picker = this.$refs.cityPicker
  609. } = e
  610. if(columnIndex==0){
  611. this.cityIndex1=index
  612. console.log(this.cityIndex1)
  613. //获取第二列数据
  614. var citys1 = this.allCitys[this.cityIndex1].c;
  615. console.log(citys1)
  616. picker.setColumnValues(1,citys1)
  617. this.cityIndex2=0
  618. var citys2 = this.allCitys[this.cityIndex1].c[this.cityIndex2].c;
  619. picker.setColumnValues(2,citys2)
  620. }
  621. if(columnIndex==1){
  622. this.cityIndex2=index
  623. //获取第三列数据
  624. var citys = this.allCitys[this.cityIndex1].c[this.cityIndex2].c;
  625. console.log(citys)
  626. picker.setColumnValues(2,citys)
  627. }
  628. },
  629. citySelect(e){
  630. console.log(e)
  631. this.form.address=e.value[0].n+""+e.value[1].n+""+e.value[2].n
  632. this.form.cityIds=e.value[0].v+","+e.value[1].v+","+e.value[2].v;
  633. this.cityShow=false;
  634. },
  635. getCitys(){
  636. var that=this;
  637. var data={}
  638. getCitys(data).then(
  639. res => {
  640. if(res.code==200){
  641. that.allCitys=res.data;
  642. that.citys=[[],[],[]];
  643. that.citys[0]=that.allCitys;
  644. that.citys[1]=that.allCitys[0].c;
  645. that.citys[2]=that.allCitys[0].c[0].c;
  646. console.log(that.citys)
  647. }
  648. },
  649. err => {
  650. }
  651. );
  652. },
  653. getHospitalList(){
  654. var that=this;
  655. var data={}
  656. getHospitalList(data).then(
  657. res => {
  658. if(res.code==200){
  659. that.hospitals[0]=res.data;
  660. console.log(111)
  661. console.log(that.hospitals)
  662. }
  663. },
  664. err => {
  665. }
  666. );
  667. },
  668. getDepartmentList(){
  669. var that=this;
  670. var data={}
  671. getDepartmentList(data).then(
  672. res => {
  673. if(res.code==200){
  674. that.depts[0]=res.data;
  675. }
  676. },
  677. err => {
  678. }
  679. );
  680. },
  681. deletePic(event) {
  682. this[`fileList${event.name}`].splice(event.index, 1)
  683. },
  684. async afterRead(event) {
  685. // 当设置 multiple 为 true 时, file 为数组格式,否则为对象格式
  686. let lists = [].concat(event.file)
  687. let fileListLen = this[`fileList${event.name}`].length
  688. lists.map((item) => {
  689. this[`fileList${event.name}`].push({
  690. ...item,
  691. status: 'uploading',
  692. message: '上传中'
  693. })
  694. })
  695. for (let i = 0; i < lists.length; i++) {
  696. const result = await this.uploadFilePromise(lists[i].url)
  697. let item = this[`fileList${event.name}`][fileListLen]
  698. this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
  699. status: result.status,
  700. message: result.status == 'failed' ? '上传失败' : '',
  701. url: result.url
  702. }))
  703. fileListLen++
  704. if(event.name==2&&result.status=='success') {
  705. this.form.businessLicense = this.fileList2[0].url
  706. this.businessLicenseCheck()
  707. }
  708. }
  709. },
  710. getSuccessUrls(list) {
  711. if (!list || list.length === 0) return '';
  712. const hasUploading = list.some(v => v.status === 'uploading');
  713. const hasFailed = list.some(v => v.status === 'failed');
  714. if (hasUploading) {
  715. uni.showToast({ title: '请等待图片上传完成', icon: 'none' });
  716. return 'failed';
  717. }
  718. if (hasFailed) {
  719. uni.showToast({ title: '请检查是否有图片上传失败', icon: 'none' });
  720. return 'failed';
  721. }
  722. return list.filter(v => v.status === 'success').map(v => v.url).join(',');
  723. },
  724. uploadFilePromise(url) {
  725. return new Promise((resolve, reject) => {
  726. let a = uni.uploadFile({
  727. url: uni.getStorageSync('requestPath') +'/app/common/uploadOSS', // 仅为示例,非真实的接口地址
  728. filePath: url,
  729. name: 'file',
  730. success: (res) => {
  731. if(res.statusCode == 200&&JSON.parse(res.data).code == 200) {
  732. resolve({
  733. url:JSON.parse(res.data).url,
  734. status: 'success'
  735. })
  736. } else {
  737. resolve({
  738. url:url,
  739. status: 'failed'
  740. })
  741. }
  742. },
  743. fail: (res) => {
  744. resolve({
  745. url:url,
  746. status: 'failed'
  747. })
  748. }
  749. });
  750. })
  751. },
  752. register(){
  753. storeAdd(this.form).then(
  754. res => {
  755. console.log(res)
  756. if(res.code==200){
  757. uni.showToast({
  758. icon:'none',
  759. title:res.msg,
  760. });
  761. setTimeout(function() {
  762. uni.navigateBack({
  763. delta: 1
  764. })
  765. }, 2000);
  766. }else{
  767. uni.showToast({
  768. icon:'none',
  769. title: res.msg,
  770. });
  771. }
  772. },
  773. rej => {
  774. console.log(rej)
  775. }
  776. );
  777. },
  778. submit(){
  779. var that=this;
  780. const logoUrl = this.getSuccessUrls(this.fileList1);
  781. if (logoUrl === 'failed') return;
  782. this.form.logoUrl = logoUrl;
  783. const businessLicense = this.getSuccessUrls(this.fileList2);
  784. if (businessLicense === 'failed') return;
  785. this.form.businessLicense = businessLicense;
  786. const drugLicense = this.getSuccessUrls(this.fileList3);
  787. if (drugLicense === 'failed') return;
  788. this.form.drugLicense = drugLicense;
  789. const medicalDevice2 = this.getSuccessUrls(this.fileList4);
  790. if (medicalDevice2 === 'failed') return;
  791. this.form.medicalDevice2 = medicalDevice2;
  792. const medicalDevice1 = this.getSuccessUrls(this.fileList5);
  793. if (medicalDevice1 === 'failed') return;
  794. this.form.medicalDevice1 = medicalDevice1;
  795. const medicalDevice3 = this.getSuccessUrls(this.fileList6);
  796. if (medicalDevice3 === 'failed') return;
  797. this.form.medicalDevice3 = medicalDevice3;
  798. const foodLicense = this.getSuccessUrls(this.fileList7);
  799. if (foodLicense === 'failed') return;
  800. this.form.foodLicense = foodLicense;
  801. const medicalLicense = this.getSuccessUrls(this.fileList8);
  802. if (medicalLicense === 'failed') return;
  803. this.form.medicalLicense = medicalLicense;
  804. console.log(this.form)
  805. if(this.form.isBusinessLicensePermanent == 0&&!this.form.businessLicenseExpireStart) {
  806. uni.showToast({
  807. title: '请选择营业执照有效期开始时间',
  808. icon: 'none'
  809. })
  810. return
  811. }
  812. if(this.form.isBusinessLicensePermanent == 0&&!this.form.businessLicenseExpireEnd) {
  813. uni.showToast({
  814. title: '请选择营业执照有效期结束时间',
  815. icon: 'none'
  816. })
  817. return
  818. }
  819. if(this.form.isDrugLicensePermanent == 0&&!this.form.drugLicenseExpiryStart) {
  820. uni.showToast({
  821. title: '请选择药品经营许可证编号有效期开始时间',
  822. icon: 'none'
  823. })
  824. return
  825. }
  826. if(this.form.isDrugLicensePermanent == 0&&!this.form.drugLicenseExpiryEnd) {
  827. uni.showToast({
  828. title: '请选择药品经营许可证编号有效期结束时间',
  829. icon: 'none'
  830. })
  831. return
  832. }
  833. if(this.form.isMedicalDevice2ExpiryPermanent == 0&&!this.form.medicalDevice2ExpiryStart) {
  834. uni.showToast({
  835. title: '请选择2类器械经营备案有效期开始时间',
  836. icon: 'none'
  837. })
  838. return
  839. }
  840. if(this.form.isMedicalDevice2ExpiryPermanent == 0&&!this.form.medicalDevice2ExpiryEnd) {
  841. uni.showToast({
  842. title: '请选择2类器械经营备案有效期结束时间',
  843. icon: 'none'
  844. })
  845. return
  846. }
  847. if(this.form.isFoodLicenseExpiryPermanent == 0&&!this.form.foodLicenseExpiryStart) {
  848. uni.showToast({
  849. title: '请选择食品经营许可证/备案凭证有效期开始时间',
  850. icon: 'none'
  851. })
  852. return
  853. }
  854. if(this.form.isFoodLicenseExpiryPermanent == 0&&!this.form.foodLicenseExpiryEnd) {
  855. uni.showToast({
  856. title: '请选择食品经营许可证/备案凭证有效期结束时间',
  857. icon: 'none'
  858. })
  859. return
  860. }
  861. const err = this.checkDateRanges([
  862. {
  863. start: this.form.businessLicenseExpireStart,
  864. end: this.form.businessLicenseExpireEnd,
  865. msg: '营业执照有效期' ,
  866. require: this.form.isBusinessLicensePermanent == 0,
  867. },
  868. {
  869. start: this.form.drugLicenseExpiryStart,
  870. end: this.form.drugLicenseExpiryEnd,
  871. msg: '药品经营许可证编号有效期' ,
  872. require: this.form.isDrugLicensePermanent == 0,
  873. },
  874. {
  875. start: this.form.medicalDevice2ExpiryStart,
  876. end: this.form.medicalDevice2ExpiryEnd,
  877. msg: '2类器械经营备案有效期',
  878. require: this.form.isMedicalDevice2ExpiryPermanent == 0,
  879. },{
  880. start: this.form.medicalDevice3ExpiryStart,
  881. end: this.form.medicalDevice3ExpiryEnd,
  882. msg: '3类器械经营许可证有效期' ,
  883. require: false,
  884. },
  885. {
  886. start: this.form.foodLicenseExpiryStart,
  887. end: this.form.foodLicenseExpiryEnd,
  888. msg: '食品经营许可证/备案凭证有效期' ,
  889. require: this.form.isFoodLicenseExpiryPermanent == 0,
  890. }
  891. ]);
  892. if (err) {
  893. uni.showToast({ title: err, icon: 'none' });
  894. return;
  895. }
  896. // if(this.form.isMedicalLicenseExpiryPermanent == 0&&!this.form.medicalLicenseExpiryStart) {
  897. // uni.showToast({
  898. // title: '请选择医疗机构执业许可证有效期开始时间',
  899. // icon: 'none'
  900. // })
  901. // return
  902. // }
  903. // if(this.form.isMedicalLicenseExpiryPermanent == 0&&!this.form.medicalLicenseExpiryEnd) {
  904. // uni.showToast({
  905. // title: '请选择医疗机构执业许可证有效期结束时间',
  906. // icon: 'none'
  907. // })
  908. // return
  909. // }
  910. this.form.unifiedSocialCreditCode = this.form.businessCode
  911. this.$refs.uForm.validate().then(res => {
  912. if(res) {
  913. this.register()
  914. }
  915. })
  916. },
  917. checkDateRanges(list = []) {
  918. for (const { start, end, msg = '有效期', require = true, afterToday = true } of list) {
  919. // 1. require=false 且任一为空 → 跳过
  920. if (!require && (!start || !end)) continue;
  921. // 2. require=true 时缺值 → 报错
  922. if (!start || !end) return `${msg} 请选择完整时间`;
  923. // 3. 常规区间校验
  924. if (start > end) return `${msg} 开始时间不能大于结束时间`;
  925. if (afterToday) {
  926. // 今天 00:00:00.000
  927. const todayZero = new Date();
  928. todayZero.setHours(0, 0, 0, 0);
  929. // 明天 00:00:00.000
  930. const tomorrowZero = new Date(todayZero);
  931. tomorrowZero.setDate(todayZero.getDate() + 1);
  932. // 结束日期 00:00:00.000
  933. const endZero = new Date(end);
  934. endZero.setHours(0, 0, 0, 0);
  935. // 结束日期 < 明天零点 → 不合法
  936. if (endZero < tomorrowZero) return `${msg} 结束时间必须大于今天`;
  937. }
  938. }
  939. return '';
  940. },
  941. businessLicenseCheck() {
  942. businessLicenseCheck({imageUrl:this.form.businessLicense}).then(res=>{
  943. if(res.code==200) {
  944. if(res.data.flag) {
  945. this.errMsg = ''
  946. this.form.enterpriseAddress = res.data.address;
  947. this.form.legalPersonName = res.data.person;
  948. this.form.businessScope = res.data.businessStr;
  949. this.form.businessCode = res.data.regNum;
  950. } else {
  951. this.fileList2 = ''
  952. this.form.businessLicense = ''
  953. this.errMsg = '请上传正确且清晰的营业执照'
  954. uni.showToast({
  955. title: '请上传正确且清晰的营业执照',
  956. icon: 'none'
  957. })
  958. }
  959. } else {
  960. this.errMsg = ''
  961. this.fileList2 = ''
  962. this.form.businessLicense = ''
  963. uni.showToast({
  964. title: res.msg,
  965. icon: 'none'
  966. })
  967. }
  968. }).catch((err)=>{
  969. this.errMsg = ''
  970. this.fileList2 = ''
  971. this.form.businessLicense = ''
  972. uni.showToast({
  973. title: err,
  974. icon: 'none'
  975. })
  976. })
  977. }
  978. }
  979. }
  980. </script>
  981. <style scoped lang="scss">
  982. .es-ml-14 {
  983. margin-right: 14rpx;
  984. }
  985. .content{
  986. display: flex;
  987. flex-direction: column;
  988. justify-content: flex-start;
  989. .inner{
  990. padding: 20upx 20rpx 120rpx;
  991. .bg{
  992. width: 100%;
  993. height: 300rpx;
  994. position: relative;
  995. display: flex;
  996. flex-direction: column;
  997. justify-content: center;
  998. align-items: flex-start;
  999. image{
  1000. position: absolute;
  1001. border-radius: 30rpx 30rpx 0rpx 0rpx;
  1002. width: 100%;
  1003. height: 100%;
  1004. }
  1005. .title{
  1006. z-index: 999;
  1007. padding: 0rpx 30rpx;
  1008. font-size: 40upx;
  1009. font-family: PingFang SC;
  1010. font-weight: bold;
  1011. color: #FFFFFF;
  1012. }
  1013. .desc{
  1014. z-index: 999;
  1015. padding: 0rpx 30rpx;
  1016. margin-top: 20rpx;
  1017. font-size: 28upx;
  1018. opacity: 0.5;
  1019. font-family: PingFang SC;
  1020. color: #FFFFFF;
  1021. }
  1022. }
  1023. .my-form{
  1024. z-index: 1;
  1025. background-color: #FFFFFF;
  1026. padding: 0 30upx;
  1027. input{
  1028. text-align: right;
  1029. }
  1030. }
  1031. }
  1032. .agree{
  1033. padding: 10rpx 20rpx;
  1034. display: flex;
  1035. align-items: center;
  1036. justify-content: flex-start;
  1037. .label{
  1038. font-size: 24rpx;
  1039. }
  1040. .text{
  1041. margin-left: 10rpx;
  1042. color: royalblue;
  1043. font-size: 24rpx;
  1044. }
  1045. }
  1046. .btn-box{
  1047. z-index: 90;
  1048. width: 100%;
  1049. position: fixed;
  1050. bottom: 0;
  1051. height: 120upx;
  1052. padding: 0 30upx;
  1053. display: flex;
  1054. align-items: center;
  1055. justify-content: center;
  1056. background: #FFFFFF;
  1057. .sub-btn{
  1058. width: 100%;
  1059. height: 88upx;
  1060. line-height: 88upx;
  1061. text-align: center;
  1062. font-size: 30upx;
  1063. font-family: PingFang SC;
  1064. font-weight: bold;
  1065. color: #FFFFFF;
  1066. background: #2583EB;
  1067. border-radius: 44upx;
  1068. }
  1069. }
  1070. }
  1071. </style>