服务费收取方式类型

pull/781/head
hzn 2025-05-25 17:45:18 +08:00
parent c861750e06
commit f4fb5f83a6
2 changed files with 375 additions and 375 deletions

View File

@ -1,143 +1,143 @@
<template> <template>
<Dialog :title="dialogTitle" v-model="dialogVisible"> <Dialog :title="dialogTitle" v-model="dialogVisible">
<el-form <el-form
ref="formRef" ref="formRef"
:model="formData" :model="formData"
:rules="formRules" :rules="formRules"
label-width="100px" label-width="100px"
v-loading="formLoading" v-loading="formLoading"
> >
<el-form-item label="类型" prop="type"> <el-form-item label="类型" prop="type">
<el-select v-model="formData.type" placeholder="请选择类型"> <el-select v-model="formData.type" placeholder="请选择类型">
<el-option <el-option
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_SERVICE_FEE_COLLECTION_METHOD_TYPE)" v-for="dict in getIntDictOptions(DICT_TYPE.CRM_SERVICE_FEE_COLLECTION_METHOD)"
:key="dict.value" :key="dict.value"
:label="dict.label" :label="dict.label"
:value="dict.value" :value="dict.value"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="产品明细" prop="productDetail"> <el-form-item label="产品明细" prop="productDetail">
<el-input v-model="formData.productDetail" placeholder="请输入产品明细" /> <el-input v-model="formData.productDetail" placeholder="请输入产品明细" />
</el-form-item> </el-form-item>
<el-form-item label="客单价" prop="customerPrice"> <el-form-item label="客单价" prop="customerPrice">
<el-input v-model="formData.customerPrice" placeholder="请输入客单价" /> <el-input v-model="formData.customerPrice" placeholder="请输入客单价" />
</el-form-item> </el-form-item>
<el-form-item label="单位" prop="unit"> <el-form-item label="单位" prop="unit">
<el-select v-model="formData.unit" placeholder="请选择单位"> <el-select v-model="formData.unit" placeholder="请选择单位">
<el-option <el-option
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_PRODUCT_UNIT)" v-for="dict in getIntDictOptions(DICT_TYPE.CRM_PRODUCT_UNIT)"
:key="dict.value" :key="dict.value"
:label="dict.label" :label="dict.label"
:value="dict.value" :value="dict.value"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="采购成本" prop="procurementCost"> <el-form-item label="采购成本" prop="procurementCost">
<el-input v-model="formData.procurementCost" placeholder="请输入采购成本" /> <el-input v-model="formData.procurementCost" placeholder="请输入采购成本" />
</el-form-item> </el-form-item>
<el-form-item label="客单价 - 采购成本" prop="profit"> <el-form-item label="客单价 - 采购成本" prop="profit">
<el-input v-model="formData.profit" placeholder="请输入客单价 - 采购成本" /> <el-input v-model="formData.profit" placeholder="请输入客单价 - 采购成本" />
</el-form-item> </el-form-item>
<el-form-item label="说明" prop="describe"> <el-form-item label="说明" prop="describe">
<el-input v-model="formData.describe" placeholder="请输入说明" /> <el-input v-model="formData.describe" placeholder="请输入说明" />
</el-form-item> </el-form-item>
</el-form> </el-form>
<template #footer> <template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button> <el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button>
<el-button @click="dialogVisible = false"> </el-button> <el-button @click="dialogVisible = false"> </el-button>
</template> </template>
</Dialog> </Dialog>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict' import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
import { ServiceFeeCollectionMethodApi, ServiceFeeCollectionMethodVO } from '@/api/crm/servicefeecollectionmethod' import { ServiceFeeCollectionMethodApi, ServiceFeeCollectionMethodVO } from '@/api/crm/servicefeecollectionmethod'
/** 服务费收取方式 表单 */ /** 服务费收取方式 表单 */
defineOptions({ name: 'ServiceFeeCollectionMethodForm' }) defineOptions({ name: 'ServiceFeeCollectionMethodForm' })
const { t } = useI18n() // const { t } = useI18n() //
const message = useMessage() // const message = useMessage() //
const dialogVisible = ref(false) // const dialogVisible = ref(false) //
const dialogTitle = ref('') // const dialogTitle = ref('') //
const formLoading = ref(false) // 12 const formLoading = ref(false) // 12
const formType = ref('') // create - update - const formType = ref('') // create - update -
const formData = ref({ const formData = ref({
id: undefined, id: undefined,
type: undefined, type: undefined,
productDetail: undefined, productDetail: undefined,
customerPrice: undefined, customerPrice: undefined,
unit: undefined, unit: undefined,
procurementCost: undefined, procurementCost: undefined,
profit: undefined, profit: undefined,
describe: undefined, describe: undefined,
}) })
const formRules = reactive({ const formRules = reactive({
type: [{ required: true, message: '类型不能为空', trigger: 'change' }], type: [{ required: true, message: '类型不能为空', trigger: 'change' }],
productDetail: [{ required: true, message: '产品明细不能为空', trigger: 'blur' }], productDetail: [{ required: true, message: '产品明细不能为空', trigger: 'blur' }],
customerPrice: [{ required: true, message: '客单价不能为空', trigger: 'blur' }], customerPrice: [{ required: true, message: '客单价不能为空', trigger: 'blur' }],
unit: [{ required: true, message: '单位不能为空', trigger: 'change' }], unit: [{ required: true, message: '单位不能为空', trigger: 'change' }],
procurementCost: [{ required: true, message: '采购成本不能为空', trigger: 'blur' }], procurementCost: [{ required: true, message: '采购成本不能为空', trigger: 'blur' }],
profit: [{ required: true, message: '客单价 - 采购成本不能为空', trigger: 'blur' }], profit: [{ required: true, message: '客单价 - 采购成本不能为空', trigger: 'blur' }],
describe: [{ required: true, message: '说明不能为空', trigger: 'blur' }], describe: [{ required: true, message: '说明不能为空', trigger: 'blur' }],
}) })
const formRef = ref() // Ref const formRef = ref() // Ref
/** 打开弹窗 */ /** 打开弹窗 */
const open = async (type: string, id?: number) => { const open = async (type: string, id?: number) => {
dialogVisible.value = true dialogVisible.value = true
dialogTitle.value = t('action.' + type) dialogTitle.value = t('action.' + type)
formType.value = type formType.value = type
resetForm() resetForm()
// //
if (id) { if (id) {
formLoading.value = true formLoading.value = true
try { try {
formData.value = await ServiceFeeCollectionMethodApi.getServiceFeeCollectionMethod(id) formData.value = await ServiceFeeCollectionMethodApi.getServiceFeeCollectionMethod(id)
} finally { } finally {
formLoading.value = false formLoading.value = false
} }
} }
} }
defineExpose({ open }) // open defineExpose({ open }) // open
/** 提交表单 */ /** 提交表单 */
const emit = defineEmits(['success']) // success const emit = defineEmits(['success']) // success
const submitForm = async () => { const submitForm = async () => {
// //
await formRef.value.validate() await formRef.value.validate()
// //
formLoading.value = true formLoading.value = true
try { try {
const data = formData.value as unknown as ServiceFeeCollectionMethodVO const data = formData.value as unknown as ServiceFeeCollectionMethodVO
if (formType.value === 'create') { if (formType.value === 'create') {
await ServiceFeeCollectionMethodApi.createServiceFeeCollectionMethod(data) await ServiceFeeCollectionMethodApi.createServiceFeeCollectionMethod(data)
message.success(t('common.createSuccess')) message.success(t('common.createSuccess'))
} else { } else {
await ServiceFeeCollectionMethodApi.updateServiceFeeCollectionMethod(data) await ServiceFeeCollectionMethodApi.updateServiceFeeCollectionMethod(data)
message.success(t('common.updateSuccess')) message.success(t('common.updateSuccess'))
} }
dialogVisible.value = false dialogVisible.value = false
// //
emit('success') emit('success')
} finally { } finally {
formLoading.value = false formLoading.value = false
} }
} }
/** 重置表单 */ /** 重置表单 */
const resetForm = () => { const resetForm = () => {
formData.value = { formData.value = {
id: undefined, id: undefined,
type: undefined, type: undefined,
productDetail: undefined, productDetail: undefined,
customerPrice: undefined, customerPrice: undefined,
unit: undefined, unit: undefined,
procurementCost: undefined, procurementCost: undefined,
profit: undefined, profit: undefined,
describe: undefined, describe: undefined,
} }
formRef.value?.resetFields() formRef.value?.resetFields()
} }
</script> </script>

View File

@ -1,232 +1,232 @@
<template> <template>
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form
class="-mb-15px" class="-mb-15px"
:model="queryParams" :model="queryParams"
ref="queryFormRef" ref="queryFormRef"
:inline="true" :inline="true"
label-width="68px" label-width="68px"
> >
<el-form-item label="类型" prop="type"> <el-form-item label="类型" prop="type">
<el-select <el-select
v-model="queryParams.type" v-model="queryParams.type"
placeholder="请选择类型" placeholder="请选择类型"
clearable clearable
class="!w-240px" class="!w-240px"
> >
<el-option <el-option
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_SERVICE_FEE_COLLECTION_METHOD_TYPE)" v-for="dict in getIntDictOptions(DICT_TYPE.CRM_SERVICE_FEE_COLLECTION_METHOD_TYPE)"
:key="dict.value" :key="dict.value"
:label="dict.label" :label="dict.label"
:value="dict.value" :value="dict.value"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="产品明细" prop="productDetail"> <el-form-item label="产品明细" prop="productDetail">
<el-input <el-input
v-model="queryParams.productDetail" v-model="queryParams.productDetail"
placeholder="请输入产品明细" placeholder="请输入产品明细"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="采购成本" prop="procurementCost"> <el-form-item label="采购成本" prop="procurementCost">
<el-input <el-input
v-model="queryParams.procurementCost" v-model="queryParams.procurementCost"
placeholder="请输入采购成本" placeholder="请输入采购成本"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="创建时间" prop="createTime"> <el-form-item label="创建时间" prop="createTime">
<el-date-picker <el-date-picker
v-model="queryParams.createTime" v-model="queryParams.createTime"
value-format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss"
type="daterange" type="daterange"
start-placeholder="开始日期" start-placeholder="开始日期"
end-placeholder="结束日期" end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-220px" class="!w-220px"
/> />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button> <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button> <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
<el-button <el-button
type="primary" type="primary"
plain plain
@click="openForm('create')" @click="openForm('create')"
v-hasPermi="['crm:service-fee-collection-method:create']" v-hasPermi="['crm:service-fee-collection-method:create']"
> >
<Icon icon="ep:plus" class="mr-5px" /> 新增 <Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button> </el-button>
<el-button <el-button
type="success" type="success"
plain plain
@click="handleExport" @click="handleExport"
:loading="exportLoading" :loading="exportLoading"
v-hasPermi="['crm:service-fee-collection-method:export']" v-hasPermi="['crm:service-fee-collection-method:export']"
> >
<Icon icon="ep:download" class="mr-5px" /> 导出 <Icon icon="ep:download" class="mr-5px" /> 导出
</el-button> </el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</ContentWrap> </ContentWrap>
<!-- 列表 --> <!-- 列表 -->
<ContentWrap> <ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true"> <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="主键" align="center" prop="id" /> <el-table-column label="主键" align="center" prop="id" />
<el-table-column label="类型" align="center" prop="type"> <el-table-column label="类型" align="center" prop="type">
<template #default="scope"> <template #default="scope">
<dict-tag :type="DICT_TYPE.CRM_SERVICE_FEE_COLLECTION_METHOD_TYPE" :value="scope.row.type" /> <dict-tag :type="DICT_TYPE.CRM_SERVICE_FEE_COLLECTION_METHOD" :value="scope.row.type" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="产品明细" align="center" prop="productDetail" /> <el-table-column label="产品明细" align="center" prop="productDetail" />
<el-table-column label="客单价" align="center" prop="customerPrice" /> <el-table-column label="客单价" align="center" prop="customerPrice" />
<el-table-column label="单位" align="center" prop="unit"> <el-table-column label="单位" align="center" prop="unit">
<template #default="scope"> <template #default="scope">
<dict-tag :type="DICT_TYPE.CRM_PRODUCT_UNIT" :value="scope.row.unit" /> <dict-tag :type="DICT_TYPE.CRM_PRODUCT_UNIT" :value="scope.row.unit" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="采购成本" align="center" prop="procurementCost" /> <el-table-column label="采购成本" align="center" prop="procurementCost" />
<el-table-column label="客单价 - 采购成本" align="center" prop="profit" /> <el-table-column label="客单价 - 采购成本" align="center" prop="profit" />
<el-table-column label="说明" align="center" prop="describe" /> <el-table-column label="说明" align="center" prop="describe" />
<el-table-column <el-table-column
label="创建时间" label="创建时间"
align="center" align="center"
prop="createTime" prop="createTime"
:formatter="dateFormatter" :formatter="dateFormatter"
width="180px" width="180px"
/> />
<el-table-column label="操作" align="center" min-width="120px"> <el-table-column label="操作" align="center" min-width="120px">
<template #default="scope"> <template #default="scope">
<el-button <el-button
link link
type="primary" type="primary"
@click="openForm('update', scope.row.id)" @click="openForm('update', scope.row.id)"
v-hasPermi="['crm:service-fee-collection-method:update']" v-hasPermi="['crm:service-fee-collection-method:update']"
> >
编辑 编辑
</el-button> </el-button>
<el-button <el-button
link link
type="danger" type="danger"
@click="handleDelete(scope.row.id)" @click="handleDelete(scope.row.id)"
v-hasPermi="['crm:service-fee-collection-method:delete']" v-hasPermi="['crm:service-fee-collection-method:delete']"
> >
删除 删除
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<!-- 分页 --> <!-- 分页 -->
<Pagination <Pagination
:total="total" :total="total"
v-model:page="queryParams.pageNo" v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize" v-model:limit="queryParams.pageSize"
@pagination="getList" @pagination="getList"
/> />
</ContentWrap> </ContentWrap>
<!-- 表单弹窗添加/修改 --> <!-- 表单弹窗添加/修改 -->
<ServiceFeeCollectionMethodForm ref="formRef" @success="getList" /> <ServiceFeeCollectionMethodForm ref="formRef" @success="getList" />
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict' import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
import { dateFormatter } from '@/utils/formatTime' import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download' import download from '@/utils/download'
import { ServiceFeeCollectionMethodApi, ServiceFeeCollectionMethodVO } from '@/api/crm/servicefeecollectionmethod' import { ServiceFeeCollectionMethodApi, ServiceFeeCollectionMethodVO } from '@/api/crm/servicefeecollectionmethod'
import ServiceFeeCollectionMethodForm from './ServiceFeeCollectionMethodForm.vue' import ServiceFeeCollectionMethodForm from './ServiceFeeCollectionMethodForm.vue'
/** 服务费收取方式 列表 */ /** 服务费收取方式 列表 */
defineOptions({ name: 'ServiceFeeCollectionMethod' }) defineOptions({ name: 'ServiceFeeCollectionMethod' })
const message = useMessage() // const message = useMessage() //
const { t } = useI18n() // const { t } = useI18n() //
const loading = ref(true) // const loading = ref(true) //
const list = ref<ServiceFeeCollectionMethodVO[]>([]) // const list = ref<ServiceFeeCollectionMethodVO[]>([]) //
const total = ref(0) // const total = ref(0) //
const queryParams = reactive({ const queryParams = reactive({
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10,
type: undefined, type: undefined,
productDetail: undefined, productDetail: undefined,
customerPrice: undefined, customerPrice: undefined,
unit: undefined, unit: undefined,
procurementCost: undefined, procurementCost: undefined,
profit: undefined, profit: undefined,
describe: undefined, describe: undefined,
createTime: [], createTime: [],
}) })
const queryFormRef = ref() // const queryFormRef = ref() //
const exportLoading = ref(false) // const exportLoading = ref(false) //
/** 查询列表 */ /** 查询列表 */
const getList = async () => { const getList = async () => {
loading.value = true loading.value = true
try { try {
const data = await ServiceFeeCollectionMethodApi.getServiceFeeCollectionMethodPage(queryParams) const data = await ServiceFeeCollectionMethodApi.getServiceFeeCollectionMethodPage(queryParams)
list.value = data.list list.value = data.list
total.value = data.total total.value = data.total
} finally { } finally {
loading.value = false loading.value = false
} }
} }
/** 搜索按钮操作 */ /** 搜索按钮操作 */
const handleQuery = () => { const handleQuery = () => {
queryParams.pageNo = 1 queryParams.pageNo = 1
getList() getList()
} }
/** 重置按钮操作 */ /** 重置按钮操作 */
const resetQuery = () => { const resetQuery = () => {
queryFormRef.value.resetFields() queryFormRef.value.resetFields()
handleQuery() handleQuery()
} }
/** 添加/修改操作 */ /** 添加/修改操作 */
const formRef = ref() const formRef = ref()
const openForm = (type: string, id?: number) => { const openForm = (type: string, id?: number) => {
formRef.value.open(type, id) formRef.value.open(type, id)
} }
/** 删除按钮操作 */ /** 删除按钮操作 */
const handleDelete = async (id: number) => { const handleDelete = async (id: number) => {
try { try {
// //
await message.delConfirm() await message.delConfirm()
// //
await ServiceFeeCollectionMethodApi.deleteServiceFeeCollectionMethod(id) await ServiceFeeCollectionMethodApi.deleteServiceFeeCollectionMethod(id)
message.success(t('common.delSuccess')) message.success(t('common.delSuccess'))
// //
await getList() await getList()
} catch {} } catch {}
} }
/** 导出按钮操作 */ /** 导出按钮操作 */
const handleExport = async () => { const handleExport = async () => {
try { try {
// //
await message.exportConfirm() await message.exportConfirm()
// //
exportLoading.value = true exportLoading.value = true
const data = await ServiceFeeCollectionMethodApi.exportServiceFeeCollectionMethod(queryParams) const data = await ServiceFeeCollectionMethodApi.exportServiceFeeCollectionMethod(queryParams)
download.excel(data, '服务费收取方式.xls') download.excel(data, '服务费收取方式.xls')
} catch { } catch {
} finally { } finally {
exportLoading.value = false exportLoading.value = false
} }
} }
/** 初始化 **/ /** 初始化 **/
onMounted(() => { onMounted(() => {
getList() getList()
}) })
</script> </script>