add.vue 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298
  1. <template>
  2. <view>
  3. <scroll-view scroll-y="true">
  4. <view class="form">
  5. <view class="card">
  6. <u-form :model="model" labelWidth="200" ref="uForm">
  7. <u-form-item :required="true" prop="enterpriseName" label="企业名称">
  8. <u-input type="text" v-model="model.enterpriseName" placeholder="请填写企业名称"></u-input>
  9. </u-form-item>
  10. <u-form-item :required="true" label="法定代表人" prop="representative">
  11. <u-input type="text" v-model="model.representative" placeholder="请输入法定代表人"></u-input>
  12. </u-form-item>
  13. <u-form-item label="所属区域" :required="true" prop="residentialName">
  14. <u-input type="select" @click="residentialShow=true" :select-open="residentialShow"
  15. v-model="model.residentialName" placeholder="请选择所属区域"></u-input>
  16. </u-form-item>
  17. <u-form-item label="企业位置">
  18. <u-input disabled v-model="location" placeholder="请选择企业位置" @click="chooseLocation">
  19. </u-input>
  20. <u-icon name="map-fill" slot="right"></u-icon>
  21. </u-form-item>
  22. <u-form-item :required="true" label="详细地址" prop="region">
  23. <u-input type="text" v-model="model.region" placeholder="请输入详细地址"></u-input>
  24. </u-form-item>
  25. <u-form-item :required="true" label="统一信用代码" prop="creditCode">
  26. <u-input type="text" v-model="model.creditCode" placeholder="请输入统一信用代码"></u-input>
  27. </u-form-item>
  28. <u-form-item label="企业类型">
  29. <u-input type="select" @click="enterpriseTypeShow=true" :select-open="enterpriseTypeShow"
  30. v-model="model.enterpriseTypeName" placeholder="请选择企业类型"></u-input>
  31. </u-form-item>
  32. <u-form-item label="组织机构代码">
  33. <u-input type="text" v-model="model.organizationCode" placeholder="请输入组织机构代码"></u-input>
  34. </u-form-item>
  35. <u-form-item label="注册资金">
  36. <u-input type="text" v-model="model.registeredCapital" placeholder="请输入注册资金"></u-input>
  37. </u-form-item>
  38. <u-form-item label="注册地址">
  39. <u-input type="text" v-model="model.registeredAddress" placeholder="请输入注册地址"></u-input>
  40. </u-form-item>
  41. <u-form-item label="成立日期">
  42. <u-input v-model="model.registeredDate" type="select" @click="registeredDateShow=true" :select-open="registeredDateShow" placeholder="请输入成立日期"></u-input>
  43. </u-form-item>
  44. <u-form-item label="办公电话">
  45. <u-input v-model="model.officeNum" placeholder="请输入办公电话"></u-input>
  46. </u-form-item>
  47. <u-form-item label="企业简介">
  48. <u-input type="textarea" height="200" v-model="model.enterpriseIntroduce"
  49. placeholder="请输入企业简介">
  50. </u-input>
  51. </u-form-item>
  52. <u-form-item class="" label="请上传营业执照" label-position="top">
  53. <view class="upload-img">
  54. <view class="" @click="chooseImage">
  55. <upload-img :width="width" :height="height" :currentImage="model.businessLicense">
  56. </upload-img>
  57. <view class="text-center padding-top-20 base-color">
  58. <text class="cuIcon-camera padding-right-sm" style="font-size: 30rpx;"></text>
  59. <text v-if="$isEmpty(model.businessLicense)">请上传营业执照</text>
  60. <text style="margin-top: 40rpx;display: inline-block;" v-else>点击重新上传</text>
  61. </view>
  62. </view>
  63. </view>
  64. </u-form-item>
  65. <u-form-item class="" label="请上传公司logo" label-position="top">
  66. <view class="upload-img">
  67. <view class="" @click="chooseImage('logo')">
  68. <upload-img :width="width" :height="height" :currentImage="model.logo">
  69. </upload-img>
  70. <view class="text-center padding-top-20 base-color">
  71. <text class="cuIcon-camera padding-right-sm" style="font-size: 30rpx;"></text>
  72. <text v-if="$isEmpty(model.logo)">请上传公司logo</text>
  73. <text style="margin-top: 40rpx;display: inline-block;" v-else>点击重新上传</text>
  74. </view>
  75. </view>
  76. </view>
  77. </u-form-item>
  78. </u-form>
  79. </view>
  80. </view>
  81. <view>
  82. <view class="bg-white" style="height: 80rpx;"></view>
  83. <view class="" @click="submit" style="width: 90%;margin: 0 auto ;margin-bottom: 10%;">
  84. <view class="cu-btn round base-bg-color" style="padding: 40rpx;width: 100%;">
  85. <text class="cuIcon-add margin-right-10"></text>
  86. <text>确认提交</text>
  87. </view>
  88. </view>
  89. </view>
  90. </scroll-view>
  91. <!-- 区域 -->
  92. <u-select @confirm="residentialConfirm" label-name="name" value-name="id" v-model="residentialShow"
  93. :list="residentialList"></u-select>
  94. <!-- 企业类型 -->
  95. <u-select @confirm="enterpriseTypeConfirm" v-model="enterpriseTypeShow" :list="enterpriseTypeList"></u-select>
  96. <!-- 成立日期 -->
  97. <u-picker v-model="registeredDateShow" mode="time" :params="params" @confirm="registeredDateConfirm"></u-picker>
  98. </view>
  99. </template>
  100. <script>
  101. import uploadImg from '@/components/uploadimg/uploadImg.vue'
  102. export default {
  103. components: {
  104. uploadImg
  105. },
  106. data() {
  107. return {
  108. width: 480,
  109. height: 320,
  110. model: {
  111. enterpriseName: '',
  112. representative: '',
  113. region: '',
  114. creditCode: '',
  115. businessLicense: '',
  116. logo: ''
  117. },
  118. //区域
  119. residentialList: [],
  120. residentialShow: false,
  121. //企业位置
  122. location: '',
  123. //企业类型
  124. enterpriseTypeShow: false,
  125. enterpriseTypeList: [],
  126. //成立日期
  127. registeredDateShow: false,
  128. params: {
  129. year: true,
  130. month: true,
  131. day: true,
  132. hour: false,
  133. minute: false,
  134. second: false
  135. },
  136. rules: {
  137. enterpriseName: [{
  138. required: true,
  139. message: '请输入企业名称',
  140. trigger: ['change', 'blur'],
  141. }],
  142. representative: [{
  143. required: true,
  144. message: '请输入法定代表人',
  145. trigger: ['change', 'blur'],
  146. }],
  147. region: [{
  148. required: true,
  149. message: '请输入详细地址',
  150. trigger: ['change', 'blur'],
  151. }],
  152. creditCode: [{
  153. required: true,
  154. message: '请输入统一信用代码',
  155. trigger: ['change', 'blur'],
  156. }],
  157. residentialName: [{
  158. required: true,
  159. message: '请选择所属区域',
  160. trigger: ['change', 'blur'],
  161. }]
  162. }
  163. }
  164. },
  165. onLoad() {
  166. this.fetchResidentialList()
  167. this.fetchEnterpriseList()
  168. },
  169. onReady() {
  170. this.$refs.uForm.setRules(this.rules);
  171. },
  172. methods: {
  173. //区域列表
  174. fetchResidentialList() {
  175. let params = {
  176. agencyId: this.$cache.get('agencyId'),
  177. size: 300,
  178. }
  179. this.$api.residential.page(params).then(res => {
  180. this.residentialList = res.data.records
  181. })
  182. },
  183. residentialConfirm(e) {
  184. this.model.residentialId = e[0].value
  185. this.model.residentialName = e[0].label
  186. },
  187. //企业类型
  188. enterpriseTypeConfirm(e) {
  189. this.model.enterpriseType = e[0].value
  190. this.model.enterpriseTypeName= e[0].label
  191. },
  192. fetchEnterpriseList() {
  193. this.enterpriseTypeList = []
  194. this.$api.dict({
  195. code: 'enterprise_type'
  196. }).then(res => {
  197. res.data.forEach(item => {
  198. let obj = {
  199. label: item.dictValue,
  200. value: item.dictKey
  201. }
  202. this.enterpriseTypeList.push(obj)
  203. })
  204. })
  205. },
  206. //成立日期
  207. registeredDateConfirm(e) {
  208. this.model.registeredDate = e.year + '-' + e.month + '-' + e.day
  209. },
  210. chooseLocation() {
  211. let that = this
  212. uni.chooseLocation({
  213. success: function(res) {
  214. that.location = `经纬度:(${res.longitude},${res.latitude})`
  215. that.model.latitude = res.latitude
  216. that.model.longitude = res.longitude
  217. that.model.region = res.address
  218. }
  219. });
  220. },
  221. //上传照片
  222. async chooseImage(type) {
  223. let tempFilePaths = await this.$mpi.chooseImage()
  224. let res = await this.$api.uploadFile.submit(tempFilePaths[0])
  225. if (type == 'logo') {
  226. this.model.logo = res.data.link
  227. } else {
  228. this.model.businessLicense = res.data.link
  229. }
  230. },
  231. //提交
  232. submit() {
  233. this.$refs.uForm.validate(valid => {
  234. if (valid) {
  235. this.save()
  236. }
  237. });
  238. },
  239. async save() {
  240. let res = await this.$api.enterprise.submit(this.model)
  241. if (res.success == true) {
  242. this.$dialog.showModal('添加成功', false).then(() => {
  243. this.$util.isReloadAndBack()
  244. })
  245. }
  246. }
  247. }
  248. }
  249. </script>
  250. <style lang="scss">
  251. page {
  252. background-color: #FFFFFF;
  253. }
  254. .form {
  255. padding: 40rpx 30rpx;
  256. .tag {
  257. width: 35rpx;
  258. height: 35rpx;
  259. display: block;
  260. padding-top: 6rpx;
  261. padding-right: 10rpx;
  262. }
  263. .card {
  264. margin-top: 20rpx;
  265. padding: 0 30rpx;
  266. box-sizing: border-box;
  267. border-radius: 12rpx;
  268. box-shadow: 0 -10rpx rgba(248, 248, 248, .9), 0 10rpx rgba(248, 248, 248, .9), -10rpx 0rpx rgba(248, 248, 248, .9), 10rpx 0rpx rgba(248, 248, 248, .9);
  269. .item {
  270. padding: 30rpx 0;
  271. display: flex;
  272. justify-content: space-between;
  273. }
  274. .upload-img {
  275. padding: 50rpx 0 30rpx;
  276. display: flex;
  277. justify-content: center;
  278. align-items: center;
  279. }
  280. }
  281. }
  282. </style>