detail.vue 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. <template>
  2. <div style="width: 100%; min-height: 100%; background-color: white">
  3. <div class="model">续约合同管理</div>
  4. <el-form :model="storeInfoModel" label-width="120px" ref="ruleFormRef" class="formBox">
  5. <el-row>
  6. <el-col :span="9" :offset="6">
  7. <el-form-item label="联系人">
  8. <el-input :disabled="true" maxlength="50" v-model="storeInfoModel.storeUserName" />
  9. </el-form-item>
  10. <el-form-item label="身份证号码">
  11. <el-input :disabled="true" maxlength="50" v-model="storeInfoModel.idCard" />
  12. </el-form-item>
  13. <el-form-item label="联系电话">
  14. <el-input :disabled="true" maxlength="50" v-model="storeInfoModel.storePhone" />
  15. </el-form-item>
  16. <el-form-item label="商铺名称">
  17. <el-input :disabled="true" maxlength="50" v-model="storeInfoModel.storeName" />
  18. </el-form-item>
  19. <el-form-item label="经营板块">
  20. <el-input :disabled="true" maxlength="50" v-model="storeInfoModel.businessSectionName" />
  21. </el-form-item>
  22. <el-form-item label="经营种类">
  23. <el-input :disabled="true" maxlength="50" v-model="storeInfoModel.businessTypesName" />
  24. </el-form-item>
  25. <el-form-item label="门店营业状态">
  26. <el-input :disabled="true" maxlength="50" v-model="storeInfoModel.businessStatusStr" />
  27. </el-form-item>
  28. <el-form-item label="续约合同">
  29. <div style="display: flex; flex-wrap: wrap; gap: 10px">
  30. <template v-for="contractImage in storeInfoModel.renewContractImageList" :key="contractImage">
  31. <el-image
  32. :src="contractImage"
  33. style="height: 150px; cursor: pointer; border-radius: 13px"
  34. @click="handlePictureCardPreview(contractImage)"
  35. />
  36. </template>
  37. </div>
  38. </el-form-item>
  39. </el-col>
  40. <el-col :span="9">
  41. <el-form-item label="提交时间">
  42. <el-input :disabled="true" maxlength="50" v-model="storeInfoModel.updateRenewContractTime" />
  43. </el-form-item>
  44. <el-form-item label="审核状态">
  45. <el-input :disabled="true" maxlength="50" value="待审核" />
  46. </el-form-item>
  47. <!-- <el-form-item label="拒绝原因" v-if="storeInfoModel.contractReason">
  48. <el-input :disabled="true" maxlength="50" v-model="storeInfoModel.contractReason" />
  49. </el-form-item> -->
  50. </el-col>
  51. </el-row>
  52. </el-form>
  53. <div class="model">
  54. <el-button @click="goBack"> 返回 </el-button>
  55. </div>
  56. </div>
  57. <!--图片预览-->
  58. <el-dialog v-model="imagePopupVisible" title="预览" width="30%">
  59. <el-image style="width: 100%" :src="previewImage" fit="contain" />
  60. </el-dialog>
  61. </template>
  62. <script setup lang="tsx" name="ContractRenewalDetail">
  63. import { ref, onMounted } from "vue";
  64. import { StoreUser } from "@/api/interface";
  65. import { ElMessage } from "element-plus";
  66. import {
  67. getBusinessSection,
  68. getBusinessSectionTypes,
  69. getUnboundAccountList,
  70. saveStoreInfo,
  71. getStoreDetail,
  72. editStoreInfo,
  73. getInputPrompt,
  74. getDistrict
  75. } from "@/api/modules/storeUser";
  76. import { useRouter, useRoute } from "vue-router";
  77. import type { FormInstance } from "element-plus";
  78. const imagePopupVisible = ref(false);
  79. const previewImage = ref("");
  80. //文件上传地址
  81. const uploadUrl = ref(`${import.meta.env.VITE_API_URL}/file/upload`);
  82. const router = useRouter();
  83. const route = useRoute();
  84. //页面操作列是否禁用
  85. const isDisabled = ref<boolean>(false);
  86. //进入页面类型(新增:add,查看:show,编辑:edit)
  87. //页面展开类型
  88. const type = ref<String>("");
  89. //页面id参数
  90. const id = ref<String>("");
  91. //商铺信息模块
  92. const storeInfoModel = ref<StoreUser.ResStoreUserList>({
  93. //店铺名称
  94. storeName: "",
  95. //容纳人数
  96. storeCapacity: 1,
  97. //门店电话
  98. storeTel: "",
  99. //门店面积
  100. storeArea: "1",
  101. //是否连锁
  102. isChain: 1,
  103. //详细地址
  104. storeAddress: "",
  105. //门店简介
  106. storeBlurb: "",
  107. //经营板块
  108. businessSection: "1",
  109. //经营种类
  110. businessTypes: [],
  111. //营业执照
  112. fileList: [],
  113. //用户账号id
  114. userAccount: "",
  115. //门店状态
  116. storeStatus: "0",
  117. //门店营业状态
  118. businessStatus: "0",
  119. //行政区域
  120. district: []
  121. });
  122. //用户列表
  123. const userOptions = ref<StoreUser.UserOptions[]>([]);
  124. // 门店面积列表
  125. const storeAreaList = ref<any[]>([
  126. { value: 1, label: "小于20平米" },
  127. { value: 2, label: "20~50平米" },
  128. { value: 3, label: "50~100平米" },
  129. { value: 4, label: "100~300平米" },
  130. { value: 5, label: "300~500平米" },
  131. { value: 6, label: "500~1000平米" },
  132. { value: 7, label: "大于1000平米" }
  133. ]);
  134. // 经营板块列表
  135. const businessSectionList = ref<any[]>([]);
  136. //经营种类列表
  137. const businessTypes = ref<any[]>([]);
  138. // 门店状态列表
  139. const storeStatusList = ref<any[]>([
  140. { value: 0, label: "正常" },
  141. { value: 1, label: "禁用" }
  142. ]);
  143. // 门店营业状态列表
  144. const businessStatusList = ref<any[]>([
  145. { value: 0, label: "正常营业" },
  146. { value: 1, label: "暂停营业" },
  147. { value: 2, label: "筹建中" },
  148. { value: 99, label: "永久关门" }
  149. ]);
  150. //返回上一页
  151. const goBack = () => {
  152. router.go(-1);
  153. };
  154. const handlePictureCardPreview = (url: string) => {
  155. previewImage.value = url;
  156. imagePopupVisible.value = true;
  157. };
  158. // 提交数据(新增/编辑)
  159. const ruleFormRef = ref<FormInstance>();
  160. onMounted(async () => {
  161. id.value = route.query.id as string;
  162. type.value = route.query.type as string;
  163. if (type.value != "add") {
  164. if (type.value == "show") {
  165. isDisabled.value = true;
  166. }
  167. try {
  168. let res = await getStoreDetail({ id: id.value });
  169. storeInfoModel.value = res.data;
  170. } catch (error) {
  171. ElMessage.error("获取详情失败");
  172. }
  173. }
  174. });
  175. </script>
  176. <style scoped lang="scss">
  177. .content {
  178. display: flex;
  179. width: 98%;
  180. height: 98%;
  181. margin: auto;
  182. .contentLeft {
  183. width: 50%;
  184. }
  185. .contentRight {
  186. width: 50%;
  187. }
  188. }
  189. .model {
  190. padding: 20px 0;
  191. margin-left: 50%;
  192. text-align: center;
  193. transform: translate(-60%, 0);
  194. }
  195. .formBox {
  196. width: 70%;
  197. }
  198. .table-box {
  199. height: auto !important;
  200. }
  201. </style>