| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718 |
- <template>
- <div class="table-box" style="width: 100%; min-height: 100%; background-color: white">
- <div class="content">
- <div class="contentLeft">
- <!-- 商铺信息设置模块 -->
- <div class="model">
- <h3 style="font-weight: bold">基础信息:</h3>
- <el-form :model="storeInfoModel" ref="ruleFormRef1" :rules="rules" label-width="120px" class="formBox">
- <el-form-item label="图片" prop="fileList">
- <template v-if="isDisabled">
- <div
- v-for="(item, idx) in storeInfoModel.fileList"
- :key="item.url || idx"
- style="width: 150px; height: 150px; overflow: hidden; border: 1px solid rgb(0 0 0 / 10%); border-radius: 6px"
- >
- <el-image :src="item.url" style="width: 100%; height: 100%" fit="contain" />
- </div>
- </template>
- <el-upload
- v-else
- v-model:file-list="storeInfoModel.fileList"
- :action="uploadUrl"
- list-type="picture-card"
- :accept="'.jpg,.png'"
- :limit="9"
- :on-preview="handlePictureCardPreview"
- :on-remove="handleRemove"
- :on-success="handleSuccess"
- :show-file-list="true"
- >
- <el-icon>
- <Plus />
- </el-icon>
- </el-upload>
- </el-form-item>
- <el-form-item label="团购名称" prop="storeName">
- <el-input maxlength="50" v-model="storeInfoModel.storeName" placeholder="请填写团购名称" clearable />
- </el-form-item>
- <el-form-item label="开始售卖时间" prop="storeStatus">
- <el-radio-group v-model="storeInfoModel.storeStatus" class="ml-4">
- <el-radio v-for="status in storeStatusList" :value="status.value" :key="status.value">
- {{ status.label }}
- </el-radio>
- </el-radio-group>
- </el-form-item>
- <el-form-item label="" prop="startTime" v-show="storeInfoModel.storeStatus == 1">
- <el-date-picker
- v-model="storeInfoModel.startTime"
- format="YYYY/MM/DD hh:mm:ss"
- value-format="YYYY-MM-DD h:m:s"
- type="datetime"
- placeholder="请选择开始售卖时间"
- />
- </el-form-item>
- <el-form-item label="结束售卖时间" prop="endTime">
- <el-date-picker
- v-model="storeInfoModel.endTime"
- format="YYYY/MM/DD hh:mm:ss"
- value-format="YYYY-MM-DD h:m:s"
- type="datetime"
- placeholder="请选择结束售卖时间"
- />
- </el-form-item>
- <el-form-item label="库存数量" prop="storeTel">
- <el-input v-model="storeInfoModel.storeTel" maxlength="15" placeholder="请填写库存数量" clearable />
- </el-form-item>
- <el-form-item label="每人限购" prop="purchaseLimitPerPerson">
- <el-radio-group v-model="storeInfoModel.purchaseLimitPerPerson" class="ml-4">
- <el-radio v-for="status in perList" :value="status.value" :key="status.value">
- {{ status.label }}
- </el-radio>
- </el-radio-group>
- </el-form-item>
- <el-form-item label="" prop="purchaseLimit" v-show="storeInfoModel.purchaseLimitPerPerson == 1">
- <el-input v-model="storeInfoModel.purchaseLimit" maxlength="15" placeholder="请填写自定义限购数量" clearable />
- </el-form-item>
- <el-form-item label="容纳人数" prop="storeCapacity">
- <el-input-number
- type="storeCapacity"
- :disabled="isDisabled"
- v-model="storeInfoModel!.storeCapacity"
- placeholder="容纳人数"
- clearable
- :min="0"
- :max="9999999"
- />
- </el-form-item>
- <el-form-item label="门店面积" prop="storeArea">
- <el-radio-group :disabled="isDisabled" v-model="storeInfoModel!.storeArea" class="ml-4">
- <el-radio v-for="storeArea in storeAreaList" :value="storeArea.value" :key="storeArea.value">
- {{ storeArea.label }}
- </el-radio>
- </el-radio-group>
- </el-form-item>
- <!-- <el-form-item label="是否连锁" prop="isChain">-->
- <!-- <el-radio-group :disabled="isDisabled" v-model="storeInfoModel!.isChain" class="ml-4">-->
- <!-- <el-radio label="0" :value="0"> 否 </el-radio>-->
- <!-- <el-radio label="1" :value="1"> 是 </el-radio>-->
- <!-- </el-radio-group>-->
- <!-- </el-form-item>-->
- <el-form-item label="详细地址" prop="storeAddress">
- <el-input
- maxlength="100"
- :disabled="isDisabled"
- v-model="storeInfoModel!.storeAddress"
- :rows="2"
- type="textarea"
- placeholder="请输入详细地址"
- />
- </el-form-item>
- <el-form-item label="行政区域" prop="district">
- <el-cascader :props="props" :disabled="isDisabled" v-model="storeInfoModel!.district" style="width: 100%" />
- </el-form-item>
- <el-form-item label="门店简介" prop="storeBlurb">
- <el-input
- maxlength="100"
- :disabled="isDisabled"
- v-model="storeInfoModel!.storeBlurb"
- :rows="2"
- type="textarea"
- placeholder="请输入门店简介"
- />
- </el-form-item>
- </el-form>
- </div>
- <div class="model">
- <h3 style="font-weight: bold">价格:</h3>
- <el-form :model="storeInfoModel" ref="ruleFormRef2" :rules="rules" label-width="120px" class="formBox">
- <el-form-item label="原价" prop="price">
- <el-input maxlength="50" v-model="storeInfoModel.price" placeholder="请填写原价" clearable />
- </el-form-item>
- <el-form-item label="优惠价" prop="discountedPrice">
- <el-input maxlength="50" v-model="storeInfoModel.discountedPrice" placeholder="请填写优惠价" clearable />
- </el-form-item>
- </el-form>
- </div>
- </div>
- <div class="contentRight">
- <div class="model">
- <h3 style="font-weight: bold">购买须知:</h3>
- <el-form :model="storeInfoModel" ref="ruleFormRef3" :rules="rules" label-width="120px" class="formBox">
- <el-form-item label="预约规则" prop="appointmentRules">
- <el-input
- maxlength="300"
- v-model="storeInfoModel.appointmentRules"
- :rows="4"
- type="textarea"
- placeholder="请输入预约规则"
- />
- </el-form-item>
- <el-form-item label="使用规则" prop="rulesOfUse">
- <el-input
- maxlength="300"
- v-model="storeInfoModel.rulesOfUse"
- :rows="4"
- type="textarea"
- placeholder="请输入详细地址"
- />
- </el-form-item>
- <el-form-item label="适用人数" prop="numberOfPeople">
- <el-input v-model="storeInfoModel.numberOfPeople" maxlength="15" placeholder="请填写适用人数" clearable />
- </el-form-item>
- <el-form-item label="其他规则" prop="otherRules">
- <el-input
- maxlength="300"
- v-model="storeInfoModel.otherRules"
- :rows="4"
- type="textarea"
- placeholder="请输入详细地址"
- />
- </el-form-item>
- <el-form-item label="发票信息" prop="businessTypes">
- <el-checkbox-group v-model="storeInfoModel.businessTypes">
- <el-checkbox v-for="bt in businessTypes" :key="bt.value" :value="bt.value" :label="bt.label">
- {{ bt.label }}
- <el-tooltip
- class="box-item"
- effect="dark"
- content="指射箭、射击、赛车、攀岩、滑翔伞、滑雪滑冰等"
- placement="top"
- >
- <el-icon v-if="bt.label == '休闲运动'" :size="13">
- <QuestionFilled />
- </el-icon>
- </el-tooltip>
- </el-checkbox>
- </el-checkbox-group>
- </el-form-item>
- <el-form-item label="发票说明" prop="invoiceDescription">
- <el-input v-model="storeInfoModel.invoiceDescription" maxlength="15" placeholder="请填写发票说明" clearable />
- </el-form-item>
- </el-form>
- <el-button v-if="type != 'show'" type="primary" @click="handleSubmit"> 确定 </el-button>
- </div>
- </div>
- </div>
- <!--图片预览-->
- <el-dialog v-model="imagePopupVisible" title="预览" width="30%">
- <el-image style="width: 100%" :src="previewImage" fit="contain" />
- </el-dialog>
- <el-button @click="goBack"> 返回 </el-button>
- </div>
- </template>
- <script setup lang="tsx" name="useProTable">
- import { ref, reactive, computed, onMounted, nextTick } from "vue";
- import { StoreUser } from "@/api/interface";
- import { ElMessage } from "element-plus";
- import ProTable from "@/components/ProTable/index.vue";
- import ImportExcel from "@/components/ImportExcel/index.vue";
- import StoreUserDrawer from "@/views/proTable/components/StoreUserDrawer.vue";
- import { ProTableInstance, ColumnProps } from "@/components/ProTable/interface";
- import {
- CirclePlus,
- Delete,
- EditPen,
- Download,
- Upload,
- Refresh,
- Check,
- Close,
- Search,
- QuestionFilled
- } from "@element-plus/icons-vue";
- import {
- getStoreUserList,
- addStoreUser,
- editStoreUser,
- deleteStoreUser,
- resetStoreUserPassWord,
- getStoreAuditStatus,
- getBusinessSection,
- getBusinessSectionTypes,
- getUnboundAccountList,
- addBusinessSectionAndTypes,
- saveStoreInfo,
- getStoreDetail,
- editStoreInfo,
- getInputPrompt,
- getDistrict
- } from "@/api/modules/storeUser";
- import { useHandleData } from "@/hooks/useHandleData";
- import { useRouter, useRoute } from "vue-router";
- import type { UploadProps, UploadUserFile, FormInstance } from "element-plus";
- import { forEach } from "lodash";
- const imagePopupVisible = ref(false);
- const rules = reactive({
- fileList: [{ required: true, message: "请上传图片" }],
- storeName: [{ required: true, message: "请填写团购名称" }],
- storeStatus: [{ required: true, message: "请选择开始售卖时间" }],
- startTime: [{ required: true, message: "请选择开始售卖时间" }],
- endTime: [{ required: true, message: "请选择结束售卖时间" }],
- storeTel: [{ required: true, message: "请填写库存数量" }],
- purchaseLimitPerPerson: [{ required: true, message: "请选择每人限购" }],
- purchaseLimit: [{ required: true, message: "请输入每人限购" }],
- price: [{ required: true, message: "请输入原价" }],
- discountedPrice: [{ required: true, message: "请输入优惠价" }],
- appointmentRules: [{ required: true, message: "请输入预约规则" }],
- rulesOfUse: [{ required: true, message: "请输入使用规则" }],
- numberOfPeople: [{ required: true, message: "请输入适用人数" }],
- otherRules: [{ required: true, message: "请输入其他规则" }],
- businessTypes: [{ required: true, message: "请选择发票信息" }],
- invoiceDescription: [{ required: true, message: "请输入发票说明" }],
- storeContact: [{ required: true, message: "请填写联系人" }],
- name: [{ required: true, message: "请填写联系人" }],
- storePhone: [{ required: true, message: "请填写联系人电话" }],
- phone: [{ required: true, message: "请填写联系人电话" }],
- password: [{ required: true, message: "请填写密码" }],
- payPassword: [{ required: true, message: "请填写支付密码" }],
- storeCapacity: [{ required: true, message: "请填写容纳人数" }],
- isChain: [{ required: true, message: "请选择是否连锁" }],
- district: [{ required: true, message: "请选择行政区域" }],
- storeBlurb: [{ required: true, message: "请输入门店简介" }],
- storeTypeList: [{ required: true, message: "请选择经营种类" }],
- businessStatus: [{ required: true, message: "请选择门店营业状态" }],
- storePositionLongitude: [{ required: true, message: "请选择门店经度" }],
- storePositionLatitude: [{ required: true, message: "请选择门店纬度" }],
- foodLicenceExpirationTime: [{ required: true, message: "请选择门店经营许可证到期时间" }],
- storePass: [{ required: true, message: "请输入门店密码" }],
- storeArea: [{ required: true, message: "请选择门店面积" }],
- businessSection: [{ required: true, message: "请选择经营板块" }],
- userAccount: [{ required: true, message: "请选择用户账号" }],
- contractImage: [{ required: true, message: "请上传合同图片" }],
- foodLicenceImage: [{ required: true, message: "请上传食品经营许可证图片" }],
- commissionRate: [{ required: true, message: "请填写抽成比例" }],
- // createdTime: [{ required: true, message: "请选择创建时间" }],
- storeApplicationStatus: [{ required: true, message: "请填写审核状态" }]
- // reason: [{ required: true, message: "请填写拒绝原因" }],
- });
- //文件上传地址
- const uploadUrl = ref(`${import.meta.env.VITE_API_URL_STORE}/file/upload`);
- //行政区域组件
- const props: any = {
- lazy: true,
- async lazyLoad(node, resolve) {
- const { level } = node;
- try {
- let param = { adCode: node.data.adCode ? node.data.adCode : "" };
- // 调用后台接口获取数据
- const response: any = await getDistrict(param as any);
- // 转换数据格式
- const nodes = (response?.data?.districts?.[0]?.districts || []).map((item: any) => ({
- value: item.adcode,
- adCode: item.adcode,
- label: item.name,
- leaf: level >= 2 // 假设最多三级,可以根据实际需求调整
- }));
- // 返回数据
- resolve(nodes);
- } catch (error) {
- console.error("获取区域数据失败:", error);
- resolve([]);
- }
- }
- };
- const fileList = ref<UploadUserFile[]>([]);
- const router = useRouter();
- const route = useRoute();
- const InputRef = ref<any>();
- //页面操作列是否禁用
- const isDisabled = ref<boolean>(false);
- //进入页面类型(新增:add,查看:show,编辑:edit)
- //用户账号
- const userAccountModel = ref<any>({ userAccount: "" });
- //新增板块
- const storeSectionModel = ref<any>({ sectionName: "", types: [] });
- //页面展开类型
- const type = ref<string>("");
- //页面id参数
- const id = ref<string>("");
- //地址名称
- const addressName = ref<string>("");
- //查询地址名称
- const queryAddress = ref<string>("");
- //地址集合
- const addressList = ref<any[]>([]);
- //商铺信息模块
- const storeInfoModel = ref<any>({
- //店铺名称
- storeName: "",
- //容纳人数
- storeCapacity: "1",
- //门店电话
- storeTel: "",
- //门店面积
- storeArea: 1,
- //是否连锁
- isChain: 1,
- //详细地址
- storeAddress: "",
- //门店简介
- storeBlurb: "",
- //经营板块
- businessSection: "1",
- //经营种类
- businessTypes: [],
- //营业执照
- fileList: [],
- //用户账号id
- userAccount: "",
- //门店状态
- storeStatus: 1,
- purchaseLimitPerPerson: 0,
- //门店营业状态
- businessStatus: 0,
- //行政区域
- district: [],
- // 抽成比例
- commissionRate: "3",
- // 创建时间
- createdTime: "",
- // 审核状态
- storeApplicationStatus: "",
- // 拒绝原因
- reason: ""
- });
- //用户列表
- const userOptions = ref<StoreUser.UserOptions[]>([]);
- //用户经营板块对话框开启标识
- const addSectionDialogVisible = ref<boolean>(false);
- //添加板块类型开启标识
- const sectionTypeVisable = ref<boolean>(false);
- //添加板块类型值
- const sectionTypeValue = ref<string>("");
- //添加板块类型名称
- const sectionSectionName = ref<string>("");
- //添加板块类型英文值
- const businessTypeValue = ref<string>("");
- //添加板块类型名称
- const sectionSectionTypes = ref<string[]>([]);
- //营业执照图片集合
- const videoUrlList = ref<string[]>([]);
- //合同图片集合
- const contractImageList = ref<string[]>([]);
- //合同图片集合
- const foodLicenceImageList = ref<string[]>([]);
- // 门店面积列表
- const storeAreaList = ref<any[]>([
- { value: 1, label: "小于20平米" },
- { value: 2, label: "20~50平米" },
- { value: 3, label: "50~100平米" },
- { value: 4, label: "100~300平米" },
- { value: 5, label: "300~500平米" },
- { value: 6, label: "500~1000平米" },
- { value: 7, label: "大于1000平米" }
- ]);
- // 经营板块列表
- const businessSectionList = ref<any[]>([]);
- //经营种类列表
- const businessTypes = ref<any[]>([
- { value: 1, label: "提供电子发票" },
- { value: 2, label: "提供纸质发票" }
- ]);
- //获取用户列表
- const getUserOptions = async () => {
- let res: any = await getUnboundAccountList({ id: id.value } as any);
- //todo 此处修改成调用接口
- // let a = { name: "张三", id: 1 };
- // let b = { name: "李四", id: 2 };
- (res?.data || []).forEach((element: any) => {
- let addData = {
- name: `${element.phone}(${element.name ? element.name : "未知"})`,
- id: element.id
- };
- userOptions.value.push(addData);
- });
- };
- const storeStatusList = ref<any[]>([
- { value: 0, label: "审核通过后立即开始" },
- { value: 1, label: "设置售卖时间" }
- ]);
- const perList = ref<any[]>([
- { value: 0, label: "不限量" },
- { value: 1, label: "自定义限购数量" }
- ]);
- // 门店营业状态列表
- const businessStatusList = ref<any[]>([
- { value: 0, label: "正常营业" },
- { value: 1, label: "暂停营业" },
- { value: 2, label: "筹建中" },
- { value: 99, label: "永久关门" }
- ]);
- //新增经营板块
- const addSection = () => {
- addSectionDialogVisible.value = true;
- };
- //关闭新增经营板块弹窗
- const closeSection = () => {
- sectionSectionName.value = "";
- businessTypeValue.value = "";
- sectionSectionTypes.value = [];
- addSectionDialogVisible.value = false;
- };
- //删除门店经营板块分类
- const handleClose = (tag: string) => {
- storeSectionModel.value.types.splice(storeSectionModel.value.types.indexOf(tag), 1);
- };
- //新增标签
- const handleInputConfirm = () => {
- if (sectionTypeValue.value) {
- sectionSectionTypes.value.push(sectionTypeValue.value);
- }
- sectionTypeVisable.value = false;
- sectionTypeValue.value = "";
- };
- //展示新增标签input
- const showInput = () => {
- sectionTypeVisable.value = true;
- nextTick(() => {
- InputRef.value!.input!.focus();
- });
- };
- //返回上一页
- const goBack = () => {
- router.go(-1);
- };
- const handleRemove: UploadProps["onRemove"] = (uploadFile, uploadFiles) => {
- videoUrlList.value = [];
- };
- const handleSuccess = (response: any, uploadFile: UploadUserFile) => {
- ElMessage.success("图片上传成功");
- console.log(response);
- if (response.data) {
- videoUrlList.value.push(response.data);
- // videoUrl.value = response.data;
- }
- console.log("videoUrlList.value ===> ", videoUrlList.value);
- };
- const handleContractRemove: UploadProps["onRemove"] = (uploadFile, uploadFiles) => {
- contractImageList.value = [];
- (uploadFiles || []).forEach((f: any) => {
- if (f.url) contractImageList.value.push(f.url);
- });
- // storeInfoModel.value.contractImageList = storeInfoModel.value.contractImageList.filter(item => item.uid !== uploadFile.uid)
- };
- const handleContractSuccess = (response: any, uploadFile: UploadUserFile) => {
- ElMessage.success("合同上传成功");
- if (response.data) {
- contractImageList.value.push(response.data);
- }
- console.log(contractImageList.value);
- };
- const handleFoodLicenceSuccess = (response: any, uploadFile: UploadUserFile) => {
- ElMessage.success("食品经营许可上传成功");
- if (response.data) {
- foodLicenceImageList.value.push(response.data);
- }
- console.log(response);
- };
- const handleFoodLicenceRemove: UploadProps["onRemove"] = (uploadFile, uploadFiles) => {
- foodLicenceImageList.value = [];
- (uploadFiles || []).forEach((item: any) => {
- if (item.url) foodLicenceImageList.value.push(item.url);
- });
- console.log("foodLicenceImageList.value ===> ", foodLicenceImageList.value);
- };
- const getBusinessSectionList = async () => {
- let res: any = await getBusinessSection();
- let addData: any[] = [];
- (res?.data || []).forEach((element: any) => {
- addData.push({ value: element.dictId, label: element.dictDetail, parentId: element.parentId });
- });
- //默认 storeInfoModel!.businessSection 为第一个元素
- storeInfoModel.value.businessSection = addData[0].value;
- businessSectionList.value = addData;
- changeSection();
- };
- const changeSection = async () => {
- storeInfoModel.value.businessTypes = [];
- //获取经营种类
- const resType: any = await getBusinessSectionTypes({ parentId: storeInfoModel.value.businessSection } as any);
- let addData: any[] = [];
- (resType?.data || []).forEach((element: any) => {
- addData.push({ value: element.dictId, label: element.dictDetail, parentId: element.parentId });
- });
- businessTypes.value = addData;
- if (type.value == "add") {
- storeInfoModel.value.businessTypes = ["0"];
- }
- };
- // const handlePictureCardPreview: UploadProps["onPreview"] = uploadFile => {};
- const previewImage = ref("");
- const handlePictureCardPreview = (e: any) => {
- imagePopupVisible.value = true;
- previewImage.value = e.url;
- };
- const closeImagePopup = () => {
- imagePopupVisible.value = false;
- previewImage.value = "";
- };
- // 提交数据(新增/编辑)
- const ruleFormRef = ref<FormInstance>();
- const ruleFormRef2 = ref<FormInstance>();
- const ruleFormRef3 = ref<FormInstance>();
- const handleSubmit = () => {
- ruleFormRef.value!.validate(async valid => {
- if (!valid) return;
- ruleFormRef2.value!.validate(async valid2 => {
- if (!valid2) return;
- ruleFormRef3.value!.validate(async valid3 => {
- if (!valid3) return;
- if (!storeInfoModel.value.district[0] || !storeInfoModel.value.district[1] || !storeInfoModel.value.district[2]) {
- ElMessage.error("请完整选择行政区域");
- return;
- }
- let param: any = storeInfoModel.value;
- param.queryAddress = queryAddress.value;
- console.log("videoUrlList.value ===> ", videoUrlList.value);
- console.log("storeInfoModel.value ===> ", storeInfoModel.value);
- param.businessLicenseAddress = videoUrlList.value;
- param.contractImageList = handleImageResult(contractImageList.value);
- let arr = handleImageResult(foodLicenceImageList.value);
- param.foodLicenceUrl = arr.length > 0 ? arr[0] : "";
- param.createTime = null;
- param.updatedTime = null;
- param.administrativeRegionProvinceAdcode = storeInfoModel.value.district[0];
- param.administrativeRegionCityAdcode = storeInfoModel.value.district[1];
- param.administrativeRegionDistrictAdcode = storeInfoModel.value.district[2];
- if (type.value == "add") {
- let res = await saveStoreInfo(param);
- if (res.code == "200") {
- ElMessage.success("新增成功");
- router.go(-1);
- } else {
- ElMessage.error("新增失败");
- }
- } else if (type.value == "edit") {
- let res = await editStoreInfo(param);
- if (res.code == "200") {
- ElMessage.success("编辑成功");
- router.go(-1);
- } else {
- ElMessage.error("编辑失败");
- }
- }
- });
- });
- });
- };
- onMounted(async () => {
- id.value = (route.query.id as string) || "";
- type.value = (route.query.type as string) || "";
- //调用获取用户列表
- getUserOptions();
- //获取商铺经营板块
- if (type.value != "add") {
- if (type.value == "show") {
- isDisabled.value = true;
- }
- let res: any = await getStoreDetail({ id: id.value } as any);
- storeInfoModel.value = res.data as any;
- storeInfoModel.value.businessSection = storeInfoModel.value.businessSection + "";
- storeInfoModel.value.userAccount = Number(storeInfoModel.value.userAccount);
- await changeSection();
- storeInfoModel.value.businessTypes = storeInfoModel.value.businessTypesList;
- storeInfoModel.value.storePositionLongitude = storeInfoModel.value.storePosition.split(",")[0];
- storeInfoModel.value.storePositionLatitude = storeInfoModel.value.storePosition.split(",")[1];
- let district: any[] = [];
- district[0] = storeInfoModel.value.administrativeRegionProvinceAdcode;
- district[1] = storeInfoModel.value.administrativeRegionCityAdcode;
- district[2] = storeInfoModel.value.administrativeRegionDistrictAdcode;
- storeInfoModel.value.district = district;
- videoUrlList.value = (res.data as any).businessLicenseAddress || [];
- let fileList: any[] = [];
- handleImageParam((res.data as any).businessLicenseAddress || [], fileList);
- let contractImageList: any[] = [];
- handleImageParam((res.data as any).contractImageList || [], contractImageList);
- let foodLicenceImageList: any[] = [];
- handleImageParam((res.data as any).foodLicenceImageList || [], foodLicenceImageList);
- storeInfoModel.value.fileList = fileList;
- storeInfoModel.value.contractImage = contractImageList;
- storeInfoModel.value.contractImageList = contractImageList;
- (contractImageList as any).value = contractImageList as any;
- storeInfoModel.value.foodLicenceImage = foodLicenceImageList;
- storeInfoModel.value.foodLicenceImageList = foodLicenceImageList;
- }
- });
- //图片list 转换为upload 组件的参数
- const handleImageParam = (list: any[], result: any[]) => {
- (list || []).forEach((item: any) => {
- // 使用split方法以'/'为分隔符将URL拆分成数组
- const parts = item.split("/");
- // 取数组的最后一项,即图片名称
- const imageName = parts[parts.length - 1];
- result.push({
- name: imageName,
- percentage: 100,
- url: item
- });
- });
- };
- const handleImageResult = (list: any[]) => {
- let result: any[] = [];
- (list || []).forEach((item: any) => {
- if (item.uid) {
- result.push(item.url);
- } else {
- result.push(item);
- }
- });
- return result;
- };
- // 判断审核状态
- const storeApplicationStatusText = computed(() => {
- const status = storeInfoModel.value.storeApplicationStatus;
- if (status == 0) return "待审核";
- if (status == 1) return "审核通过";
- if (status == 2) return "审核拒绝";
- return "";
- });
- </script>
- <style scoped lang="scss">
- .content {
- display: flex;
- width: 98%;
- height: 98%;
- margin: auto;
- .contentLeft {
- width: 50%;
- }
- .contentRight {
- width: 50%;
- }
- }
- .model {
- margin-bottom: 50px;
- }
- .formBox {
- width: 70%;
- }
- .table-box {
- height: auto !important;
- }
- </style>
|