MerchantBaseInfo.vue 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. <template>
  2. <el-form ref="formRef" :model="formData" :class="{'view':isDetail}" :rules="formRules" label-width="120px" class="overflow-auto"
  3. v-loading="formLoading" :disabled="isDetail">
  4. <el-row>
  5. <el-col :span="12">
  6. <el-form-item label="商户名称" prop="name">
  7. <el-input v-model="formData.name" placeholder="请输入商户名称" />
  8. </el-form-item>
  9. </el-col>
  10. <el-col :span="12">
  11. <el-form-item label="商户状态" prop="status">
  12. <el-radio-group v-model="formData.status">
  13. <el-radio label="1">请选择字典生成</el-radio>
  14. </el-radio-group>
  15. </el-form-item>
  16. </el-col>
  17. </el-row>
  18. <el-row>
  19. <el-col :span="12">
  20. <el-form-item label="负责人" prop="contact">
  21. <el-input v-model="formData.contact" placeholder="请输入负责人" />
  22. </el-form-item>
  23. </el-col>
  24. <el-col :span="12">
  25. <el-form-item label="所在地" prop="address">
  26. <el-input v-model="formData.address" placeholder="请输入所在地" />
  27. </el-form-item>
  28. </el-col>
  29. </el-row>
  30. <el-row>
  31. <el-col :span="12">
  32. <el-form-item label="负责人电话" prop="contactNumber">
  33. <el-input v-model="formData.contactNumber" placeholder="请输入负责人电话" />
  34. </el-form-item>
  35. </el-col>
  36. <el-col :span="12">
  37. <el-form-item label="官网" prop="website">
  38. <el-input v-model="formData.website" placeholder="请输入官网" />
  39. </el-form-item>
  40. </el-col>
  41. </el-row>
  42. <el-row>
  43. <el-col :span="12">
  44. <el-form-item label="维权电话" prop="complaintsHotline">
  45. <el-input v-model="formData.complaintsHotline" placeholder="请输入维权电话" />
  46. </el-form-item>
  47. </el-col>
  48. <el-col :span="12">
  49. <el-form-item label="客服电话" prop="customerServiceHotline">
  50. <el-input v-model="formData.customerServiceHotline" placeholder="请输入客服电话" />
  51. </el-form-item>
  52. </el-col>
  53. </el-row>
  54. <el-row>
  55. <el-col :span="12">
  56. <el-form-item label="邮箱" prop="email">
  57. <el-input v-model="formData.email" placeholder="请输入邮箱" />
  58. </el-form-item>
  59. </el-col>
  60. <el-col :span="12">
  61. <el-form-item label="服务到期时间" prop="expireTime">
  62. <el-date-picker v-model="formData.expireTime" type="date" value-format="x" placeholder="选择服务到期时间" />
  63. </el-form-item>
  64. </el-col>
  65. </el-row>
  66. <!-- {{ mobile }} -->
  67. <div v-if="mobile">
  68. <el-row>
  69. <el-col :span="12">
  70. <el-form-item label="营业执照" prop="businessLicensePicture" />
  71. </el-col>
  72. </el-row>
  73. <el-row>
  74. <el-col :span="24">
  75. <el-form-item prop="businessLicensePicture" class="businessLicensePicture">
  76. <UploadImg v-model="formData.businessLicensePicture" :limit="1" :disabled="isDetail" />
  77. </el-form-item>
  78. </el-col>
  79. </el-row>
  80. <el-row>
  81. <el-col :span="12">
  82. <el-form-item label="简介" prop="description" />
  83. </el-col>
  84. </el-row>
  85. <el-col :span="24">
  86. <el-form-item prop="description" class="description">
  87. <div v-html="formData.description"></div>
  88. </el-form-item>
  89. </el-col>
  90. </div>
  91. <div v-else>
  92. <el-row>
  93. <el-col :span="24">
  94. <el-form-item label="营业执照" prop="businessLicensePicture">
  95. <UploadImg v-model="formData.businessLicensePicture" :limit="1" :disabled="isDetail" />
  96. </el-form-item>
  97. </el-col>
  98. </el-row>
  99. <el-row>
  100. <el-col :span="24">
  101. <el-form-item label="简介" prop="description">
  102. <Editor v-model="formData.description" height="150px" :disabled="isDetail" />
  103. </el-form-item>
  104. </el-col>
  105. </el-row>
  106. </div>
  107. </el-form>
  108. </template>
  109. <script setup lang="ts">
  110. import { MerchantApi, MerchantVO } from '@/api/system/sale/merchant'
  111. import { copyValueToTarget } from '@/utils'
  112. // 从路由中引入store中的app仓库
  113. import { useAppStore } from '@/store/modules/app'
  114. const appStore = useAppStore()
  115. const mobile = computed(() => appStore.getMobile)
  116. const message = useMessage() // 消息弹窗
  117. const { t } = useI18n() // 国际化
  118. const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
  119. // const formType = ref('') // 表单的类型:create - 新增;update - 修改
  120. const formData = reactive({
  121. id: undefined,
  122. name: undefined,
  123. status: undefined,
  124. description: undefined,
  125. contact: undefined,
  126. address: undefined,
  127. contactNumber: undefined,
  128. website: undefined,
  129. complaintsHotline: undefined,
  130. customerServiceHotline: undefined,
  131. email: undefined,
  132. businessLicensePicture: undefined,
  133. expireTime: undefined
  134. })
  135. const formRules = reactive({
  136. name: [{ required: true, message: '商户名称不能为空', trigger: 'blur' }],
  137. // status: [{ required: true, message: '商户状态', trigger: 'blur' }]
  138. description: [{ required: true, message: '简介不能为空', trigger: 'blur' }],
  139. contact: [{ required: true, message: '负责人不能为空', trigger: 'blur' }],
  140. address: [{ required: true, message: '所在地不能为空', trigger: 'blur' }],
  141. contactNumber: [{ required: true, message: '负责人电话不能为空', trigger: 'blur' }],
  142. complaintsHotline: [{ required: true, message: '维权电话不能为空', trigger: 'blur' }],
  143. customerServiceHotline: [{ required: true, message: '客服电话不能为空', trigger: 'blur' }],
  144. email: [{ required: true, message: '邮箱不能为空', trigger: 'blur' }],
  145. businessLicensePicture: [{ required: true, message: '营业执照不能为空', trigger: 'blur' }],
  146. expireTime: [{ required: true, message: '服务到期时间不能为空', trigger: 'blur' }]
  147. })
  148. const formRef = ref()
  149. const props = defineProps({
  150. id: {
  151. type: Number,
  152. default: 0
  153. },
  154. "isDetail": {
  155. type: Boolean,
  156. default: false
  157. },
  158. "openType": {
  159. type: String,
  160. default: "查看"
  161. },
  162. propFormData: {
  163. type: Object,
  164. default: () => { }
  165. }
  166. });
  167. /** 将传进来的值赋值给 formData */
  168. watch(
  169. () => props.propFormData,
  170. (data) => {
  171. if (!data) {
  172. return
  173. }
  174. copyValueToTarget(formData, data)
  175. },
  176. {
  177. immediate: true
  178. }
  179. )
  180. const emit = defineEmits(['update:activeName'])
  181. const validate = async () => {
  182. if (!formRef) return
  183. try {
  184. await unref(formRef)?.validate()
  185. // 校验通过更新数据
  186. Object.assign(props.propFormData, formData)
  187. } catch (e) {
  188. message.error('基本信息不完善,请填写相关信息')
  189. emit('update:activeName', 'info')
  190. throw e // 目的截断之后的校验
  191. }
  192. }
  193. defineExpose({ validate })
  194. const updateInitialData = inject('updateInitialData');
  195. watch(formData, (data) => {
  196. try { copyValueToTarget(updateInitialData.value, formData) } catch {
  197. console.log("chakan ")
  198. }
  199. },
  200. {
  201. immediate: true
  202. }
  203. )
  204. // console.log(props)
  205. // let id = ref(props.id)
  206. // onMounted(async() => {
  207. // if (id.value) {
  208. // formLoading.value = true
  209. // try {
  210. // // formData.value = await MerchantApi.getMerchant(id.value)
  211. // } finally {
  212. // formLoading.value = false
  213. // }
  214. // }
  215. // })
  216. </script>
  217. <style src="./MerchantComponents.css"  lang="scss" scoped></style>