This commit is contained in:
dzc committed 2025-03-10 14:30:28 +08:00
commit 2acdb063db
4 files changed
+186 -57

No files matched your search

@@ -315,7 +315,7 @@ const handleClickLinkCode = () => linkCgPlanDialogRef.value.openLinkCodeDialog()
const getSelectedLinkCode = (selectionRows: any) => { const getSelectedLinkCode = (selectionRows: any) => {
console.log("被选择的关联数据", selectionRows) console.log("被选择的关联数据", selectionRows)
baseDataForm.linkCode = selectionRows.planCode baseDataForm.linkCode = selectionRows.inventoryCode
state.editableTableData = selectionRows.items state.editableTableData = selectionRows.items
state.erpSpuItemsMemo = selectionRows.items state.erpSpuItemsMemo = selectionRows.items
state.linkCgPlanDialogVisible = false state.linkCgPlanDialogVisible = false
+66 -49
View File
@@ -14,12 +14,6 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<!-- <el-col :span="24" class="mb20">
<el-form-item label="硬件分组" prop="hardGroupId">
<select-hard-group v-model="form.hardGroupId" />
</el-form-item>
</el-col> -->
<el-col :span="24" class="mb20"> <el-col :span="24" class="mb20">
<el-form-item label="商户类型" prop="merchantType"> <el-form-item label="商户类型" prop="merchantType">
<el-radio-group v-model="form.merchantType"> <el-radio-group v-model="form.merchantType">
@@ -30,7 +24,7 @@
<el-col :span="24" class="mb20"> <el-col :span="24" class="mb20">
<el-form-item label="商户logo" prop="logoPic"> <el-form-item label="商户logo" prop="logoPic">
<upload-img v-model:imageUrl="form.logoPic"></upload-img> <upload-img v-model:imageUrl="form.logoPic" />
</el-form-item> </el-form-item>
</el-col> </el-col>
@@ -47,15 +41,40 @@
</el-col> </el-col>
<el-col :span="24" class="mb20"> <el-col :span="24" class="mb20">
<el-form-item label="营业时间" prop="rangeDate"> <el-form-item label="营业时间:" class="my-0" />
<el-form-item class="ml-2" label="早上" prop="jobTime">
<el-time-picker <el-time-picker
v-model="form.rangeDate" v-model="jobTime.morning"
placeholder="请选择营业时间" placeholder="请选择营业时间"
is-range is-range
range-separator="至" range-separator="至"
start-placeholder="开始日期" start-placeholder="开始日期"
end-placeholder="结束日期" end-placeholder="结束日期"
value-format="HH:mm" value-format="HH-mm"
format="HH:mm"
/>
</el-form-item>
<el-form-item class="ml-2" label="中午" prop="jobTime">
<el-time-picker
v-model="jobTime.noon"
placeholder="请选择营业时间"
is-range
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="HH-mm"
format="HH:mm"
/>
</el-form-item>
<el-form-item class="ml-2" label="晚上" prop="jobTime">
<el-time-picker
v-model="jobTime.evening"
placeholder="请选择营业时间"
is-range
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="HH-mm"
format="HH:mm" format="HH:mm"
/> />
</el-form-item> </el-form-item>
@@ -79,15 +98,12 @@
import { useDict } from "/@/hooks/dict" import { useDict } from "/@/hooks/dict"
import { useMessage } from "/@/hooks/message" import { useMessage } from "/@/hooks/message"
import { getObj, addObj, putObj } from "/@/api/wallet/mch-manage" import { getObj, addObj, putObj } from "/@/api/wallet/mch-manage"
import { rule } from "/@/utils/validate"
import { parseTime } from "/@/utils/formatTime"
const emit = defineEmits(["refresh"]) const emit = defineEmits(["refresh"])
// 定义变量内容 // 定义变量内容
const dataFormRef = ref() const dataFormRef = ref()
const visible = ref(false) const visible = ref(false)
const loading = ref(false) const loading = ref(false)
//定义业务变量内容
// 定义字典 // 定义字典
const { merchant_type } = useDict("merchant_type") const { merchant_type } = useDict("merchant_type")
@@ -104,57 +120,53 @@ const form = reactive({
phone: "", phone: "",
businessTime: "", businessTime: "",
address: "", address: "",
jobStartTime: "", })
jobEndTime: "", const jobTime = reactive<{
rangeDate: [], [key: string]: string[]
hardGroupId: "", }>({
morning: [],
noon: [],
evening: [],
}) })
// 定义校验规则 // 定义校验规则
const dataRules = ref({ const dataRules = ref({
name: [{ required: true, message: "商户名不能为空", trigger: "blur" }], name: [{ required: true, message: "商户名不能为空", trigger: "blur" }],
types: [{ required: true, message: "请选择商户类型", trigger: "change" }], types: [{ required: true, message: "请选择商户类型", trigger: "blur" }],
logoPic: [{ required: true, message: "请上传商户logo", trigger: "change" }], logoPic: [{ required: true, message: "请上传商户logo", trigger: "blur" }],
swiperPic: [{ required: true, message: "请上传商户轮播图", trigger: "change" }], swiperPic: [{ required: true, message: "请上传商户轮播图", trigger: "blur" }],
rangeDate: [{ required: true, message: "请选择营业时间", trigger: "change" }], rangeDate: [{ required: true, message: "请选择营业时间", trigger: "blur" }],
deptId: [{ required: true, message: "请选择部门", trigger: "change" }], deptId: [{ required: true, message: "请选择部门", trigger: "blur" }],
merchantType: [{ required: true, message: "请选择商户类型", trigger: "change" }], // merchantType: [{ required: true, message: "请选择商户类型", trigger: "blur" }],
hardGroupId: [{ required: true, message: "请选择硬件分组", trigger: "change" }], // jobTime: [{ required: true, message: "请选择营业时间", trigger: "blur" }],
}) })
// 打开弹窗 // 打开弹窗
const openDialog = (id: string) => { const openDialog = async (id: string) => {
visible.value = true visible.value = true
form.id = "" form.id = ""
// 重置表单数据 // 重置表单数据
dataFormRef.value?.resetFields() dataFormRef.value?.resetFields()
for (const key in jobTime) {
jobTime[key] = []
}
// 获取merchantInfo信息 // 获取merchantInfo信息
if (id) { if (id) {
form.id = id form.id = id
getmerchantInfoData(id) await getmerchantInfoData(id)
} }
} }
const parseDate = (timeString: string) => {
const now = new Date()
const [hours, minutes] = timeString.split(":").map(Number)
now.setHours(hours)
now.setMinutes(minutes)
now.setSeconds(0)
now.setMilliseconds(0)
return parseTime(now, "{h}:{i}:{s}")
}
// 提交 // 提交
const onSubmit = async () => { const onSubmit = async () => {
const valid = await dataFormRef.value.validate().catch(() => {}) const valid = await dataFormRef.value.validate().catch(() => {})
if (!valid) return false if (!valid) return false
const _pa = { ...form, types: form.merchantType } const _pa = {
if (_pa.rangeDate && _pa.rangeDate.length) { ...form,
_pa.jobStartTime = parseDate(_pa.rangeDate[0]) types: form.merchantType,
_pa.jobEndTime = parseDate(_pa.rangeDate[1]) jobTime: jobTime.morning.join(",") + ";" + jobTime.noon.join(",") + ";" + jobTime.evening.join(","),
} }
try { try {
loading.value = true loading.value = true
@@ -170,20 +182,25 @@ const onSubmit = async () => {
} }
// 初始化表单数据 // 初始化表单数据
const getmerchantInfoData = (id: string) => { const getmerchantInfoData = async (id: string) => {
// 获取数据
loading.value = true loading.value = true
getObj(id) try {
.then((res: any) => { const res = await getObj(id)
if (res.code === 0) {
const data = res.data const data = res.data
const resJobTime = data.jobTime?.split(";")
Object.assign(form, data, { Object.assign(form, data, {
merchantType: data.types, merchantType: data.types,
rangeDate: [data.jobStartTime, data.jobEndTime],
}) })
}) jobTime.morning = resJobTime ? resJobTime[0]?.split(",") : []
.finally(() => { jobTime.noon = resJobTime ? resJobTime[1]?.split(",") : []
loading.value = false jobTime.evening = resJobTime ? resJobTime[2]?.split(",") : []
}) }
} catch (error: any) {
useMessage().error(error.msg)
} finally {
loading.value = false
}
} }
// 暴露变量 // 暴露变量
+20 -7
View File
@@ -58,7 +58,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="deptName" label="部门" /> <el-table-column prop="deptName" label="部门" />
<el-table-column prop="phone" label="联系电话" show-overflow-tooltip /> <el-table-column prop="phone" label="联系电话" show-overflow-tooltip :min-width="120" />
<el-table-column prop="businessTime" label="结束营业时间" show-overflow-tooltip :min-width="160"> <el-table-column prop="businessTime" label="结束营业时间" show-overflow-tooltip :min-width="160">
<template #default="{ row }"> <template #default="{ row }">
<div> <div>
@@ -71,12 +71,21 @@
<el-table-column prop="createTime" label="创建时间" show-overflow-tooltip :min-width="160" /> <el-table-column prop="createTime" label="创建时间" show-overflow-tooltip :min-width="160" />
<el-table-column label="操作" width="150"> <el-table-column label="操作" width="150">
<template #default="scope"> <template #default="scope">
<el-button icon="edit-pen" text type="primary" v-auth="'wallet_mchManage_edit'" @click="formDialogRef.openDialog(scope.row.id)" <el-button icon="edit-pen" text type="primary" v-auth="'wallet_mchManage_edit'" @click="formDialogRef.openDialog(scope.row.id)">
>编辑</el-button 编辑
> </el-button>
<el-button icon="delete" text type="primary" v-auth="'wallet_mchManage_del'" @click="handleDelete([scope.row.id])" <el-button icon="delete" text type="primary" v-auth="'wallet_mchManage_del'" @click="handleDelete([scope.row.id])">
>删除</el-button 删除
</el-button>
<el-button
icon="setting"
text
type="primary"
v-auth="'wallet_mchManage_setting'"
@click="settingDialogRef.openDialog(scope.row.id)"
> >
配置
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@@ -85,6 +94,9 @@
<!-- 编辑、新增 --> <!-- 编辑、新增 -->
<form-dialog ref="formDialogRef" @refresh="getDataList(false)" /> <form-dialog ref="formDialogRef" @refresh="getDataList(false)" />
<!-- 商户配置 -->
<Setting ref="settingDialogRef" @refresh="getDataList(false)" />
</div> </div>
</template> </template>
@@ -93,12 +105,13 @@ import { BasicTableProps, useTable } from "/@/hooks/table"
import { pageJoin, delObjs } from "/@/api/wallet/mch-manage" import { pageJoin, delObjs } from "/@/api/wallet/mch-manage"
import { useMessage, useMessageBox } from "/@/hooks/message" import { useMessage, useMessageBox } from "/@/hooks/message"
import { useDict } from "/@/hooks/dict" import { useDict } from "/@/hooks/dict"
import { parseDate } from "/@/utils/formatTime"
import FormDialog from "./form.vue" import FormDialog from "./form.vue"
import Setting from "./setting.vue"
const { merchant_type } = useDict("merchant_type") const { merchant_type } = useDict("merchant_type")
// 定义变量内容 // 定义变量内容
const formDialogRef = ref() const formDialogRef = ref()
const settingDialogRef = ref()
// 搜索变量 // 搜索变量
const queryRef = ref() const queryRef = ref()
const showSearch = ref(true) const showSearch = ref(true)
+99
View File
@@ -0,0 +1,99 @@
<template>
<el-dialog title="商户配置" width="40%" v-model="visible" :close-on-click-modal="false" draggable>
<el-form ref="dataFormRef" :model="form" :rules="dataRules" label-width="120px" v-loading="loading">
<el-row :gutter="24">
<el-col :span="18" class="mb20">
<el-form-item label="默认钱包类型" prop="defaultWalletTypeId">
<select-wallet-type v-model="form.defaultWalletTypeId" placeholder="请选择默认钱包类型" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer>
<el-button @click="visible = false">取消</el-button>
<el-button type="primary" @click="onSubmit" :disabled="loading">确认</el-button>
</template>
</el-dialog>
</template>
<script setup lang="ts" name="MerchantInfoDialog">
import { useMessage } from "/@/hooks/message"
import { getObj, putObj } from "/@/api/wallet/mch-manage"
const emit = defineEmits(["refresh"])
const dataFormRef = ref()
const visible = ref(false)
const loading = ref(false)
// 提交表单数据
const form = reactive({
id: "",
merchantType: "",
defaultWalletTypeId: "",
})
// 定义校验规则
const dataRules = ref({
defaultWalletTypeId: [{ required: true, message: "请选择默认钱包类型", trigger: "blur" }],
})
// 打开弹窗
const openDialog = (id: string) => {
if (id) {
visible.value = true
form.id = id
// 重置表单数据
dataFormRef.value?.resetFields()
getmerchantInfoData(id)
} else {
useMessage().success("商户id不存在")
}
}
// 初始化表单数据
const getmerchantInfoData = async (id: string) => {
// 获取数据
loading.value = true
try {
const res = await getObj(id)
if (res.code === 0) {
const data = res.data
Object.assign(form, data, {
merchantType: data.types,
})
}
} catch (error: any) {
useMessage().success(error)
} finally {
loading.value = false
}
}
// 提交
const onSubmit = async () => {
const valid = await dataFormRef.value.validate().catch(() => {})
if (!valid) return false
const _pa = { ...form, types: form.merchantType }
try {
loading.value = true
const res = await putObj(_pa)
if (res.code === 0) {
useMessage().success("修改成功")
visible.value = false
emit("refresh")
} else {
useMessage().error("修改失败")
}
} catch (err: any) {
useMessage().error(err.msg)
} finally {
loading.value = false
}
}
// 暴露变量
defineExpose({
openDialog,
})
</script>