This commit is contained in:
lxd 2025-02-18 16:43:55 +08:00
commit 8ac316329c
6 changed files with 568 additions and 135 deletions

View File

@ -20,11 +20,21 @@ export const ExammoduleApi = {
return await request.get({ url: `/inspect/exammodule/get?id=` + id })
},
//所有体检套餐
getListExammodule: async () => {
return await request.get({ url: `/inspect/exammodule/getList` })
},
// 新增体检套餐
createExammodule: async (data: ExammoduleVO) => {
return await request.post({ url: `/inspect/exammodule/create`, data })
},
//新增体检套餐和项目
ListcreateExammodule: async (data: any) => {
return await request.post({ url: `/inspect/exammodule/Listcreate`, data })
},
// 修改体检套餐
updateExammodule: async (data: ExammoduleVO) => {
return await request.put({ url: `/inspect/exammodule/update`, data })
@ -35,6 +45,13 @@ export const ExammoduleApi = {
return await request.delete({ url: `/inspect/exammodule/delete?id=` + id })
},
// 按照套餐项目ID和套餐ID删除体检套餐项目
deleteExammoduleitemcode: async (params: { itemCode: string, examModuleID: number }) => {
return await request.delete({
url: `/inspect/exammodule/deleteitemcode?itemCode=${params.itemCode}&examModuleID=${params.examModuleID}`
})
},
// 导出体检套餐 Excel
exportExammodule: async (params) => {
return await request.download({ url: `/inspect/exammodule/export-excel`, params })

View File

@ -20,10 +20,10 @@
</el-select>
</el-form-item>
<el-form-item label="项目名称">
<el-input v-model="queryParams.projectName" placeholder="请输入名称" />
<el-input v-model="queryParams.projectName" placeholder="请输入项目名称" />
</el-form-item>
<el-form-item label="项目代号">
<el-input v-model="queryParams.projectCode" placeholder="请输入项目代" />
<el-input v-model="queryParams.projectCode" placeholder="请输入项目代" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleSearch">搜索</el-button>
@ -57,9 +57,13 @@
<el-table-column type="selection" width="55" :resizable="false" />
<el-table-column prop="itemCode" label="项目代号" :resizable="false" />
<el-table-column prop="itemName" label="检查项目名称" :resizable="false" />
<el-table-column prop="price" label="项目单价" :resizable="false" />
<el-table-column prop="discountedPrice" label="折扣价" :resizable="false" />
<el-table-column prop="discounted" label="折扣百分比" :resizable="false" />
<el-table-column prop="price" label="项目单价(元)" :resizable="false" />
<el-table-column label="折扣价(元)" :resizable="false">
<template #default="scope">
{{ calculateDiscountedPrice(scope.row.price, scope.row.discounted) }}
</template>
</el-table-column>
<el-table-column prop="discounted" label="折扣(%) " :resizable="false" />
<el-table-column prop="section" label="科室名称" :resizable="false" />
<el-table-column prop="unit" label="项目单位" :resizable="false" />
<el-table-column prop="highValue" label="取值上限" :resizable="false" />
@ -75,7 +79,7 @@
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item @click="handleEdit(scope.row.id)">编辑</el-dropdown-item>
<el-dropdown-item @click="handleDelete(scope.row)">删除</el-dropdown-item>
<el-dropdown-item @click="handleDelete(scope.row)" style="color: red;">删除</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
@ -104,7 +108,7 @@
</template>
<script setup lang="ts">
import { ref, reactive, onMounted, onBeforeMount, watch } from 'vue'
import { ref, reactive, onMounted, watch } from 'vue'
import { Plus, ArrowDown } from '@element-plus/icons-vue'
import { DepartmentApi, DepartmentVO } from '@/api/inspect/inspectdepartment/index'
import { itemsApi, itemsVO } from '@/api/inspect/inspectitems/index'
@ -315,6 +319,12 @@ watch(editDialogVisible, (newVal) => {
getTableData()
}
})
//
const calculateDiscountedPrice = (price: number, discount: number): number => {
if (!price || !discount) return 0;
return Number((price - price * (discount / 100)).toFixed(2));
}
</script>
<style scoped>

View File

@ -68,7 +68,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="折扣百分比" prop="discounted">
<el-form-item label="折扣" prop="discounted">
<el-input v-model="formData.discounted" placeholder="请输入折扣">
<template #append>%</template>
</el-input>
@ -118,12 +118,13 @@
</template>
<script setup lang="ts">
import { ref, reactive } from 'vue'
import { ref } from 'vue'
import { ElMessage } from 'element-plus'
import type { FormInstance } from 'element-plus'
import { DepartmentApi, DepartmentVO } from '@/api/inspect/inspectdepartment/index'
import { itemsApi, itemsVO } from '@/api/inspect/inspectitems/index'
import { getStrDictOptions } from '@/utils/dict'
const visible = ref(false)
const formRef = ref<FormInstance>()
const departmentOptions = ref<{ value: string; label: string }[]>([])
@ -156,7 +157,7 @@ const getDepartmentList = async () => {
try {
const data = await DepartmentApi.getListDepartment()
departmentOptions.value = data.map((item: DepartmentVO) => ({
value: item.departmentName,
value: item.id,
label: item.departmentName
}))
} catch (error) {
@ -165,7 +166,10 @@ const getDepartmentList = async () => {
}
}
//
// emit
const emit = defineEmits(['success'])
//
const handleSubmit = async () => {
if (!formRef.value) return
@ -179,11 +183,13 @@ const handleSubmit = async () => {
}
if (formData.value.section) {
const section = formData.value.section
formData.value.section = section.split('|')[0]
formData.value.sectionID = section.split('|')[1]
formData.value.sectionID = section.split('|')[0]
formData.value.section = section.split('|')[1]
}
await itemsApi.createitems(formData.value as itemsVO)
ElMessage.success('添加成功')
// success
emit('success')
handleClose()
} catch (error) {
console.error('添加失败:', error)

View File

@ -23,13 +23,12 @@
:value="item.value"
/>
</el-select>
<el-button type="primary" @click="handleSearch">搜索</el-button>
<el-button type="primary" @click="save">保存</el-button>
<el-button type="danger" @click="handleDelete">删除选中</el-button>
<el-button type="danger" @click="handleClear">清空列表</el-button>
<el-button type="primary" @click="handleSearch" style="margin-top: 10px ;margin-bottom : 10px;">搜索</el-button>
<el-button type="primary" @click="save" style="margin-top: 10px ;margin-bottom : 10px;">添加</el-button>
</div>
<el-table
ref="tableRef"
:data="tableData"
border
style="width: 100%"
@ -59,9 +58,8 @@
</template>
<script setup lang="ts">
import { ExammoduleApi } from '@/api/inspect/exammodule'
import { DepartmentApi, DepartmentVO } from '@/api/inspect/inspectdepartment/index'
import { ElMessage, ElMessageBox } from 'element-plus'
import { ElMessage } from 'element-plus'
import { itemsApi } from '@/api/inspect/inspectitems/index'
//
async function handleSearch() {
@ -80,17 +78,13 @@ async function handleSearch() {
queryParams.sectionID = searchForm.department // 使section
}
console.log('查询参数:', queryParams) //
try {
const res = await itemsApi.getitemsPage(queryParams)
console.log('查询结果:', res)
if (res) {
tableData.value = res.list || []
total.value = res.total || 0
}
} catch (error) {
console.error('查询失败:', error)
ElMessage.error('查询失败')
tableData.value = []
total.value = 0
@ -110,7 +104,6 @@ const getDepartmentList = async () => {
label: item.departmentName
}))
} catch (error) {
console.error('获取科室列表失败:', error)
ElMessage.error('获取科室列表失败')
}
}
@ -118,10 +111,21 @@ const getDepartmentList = async () => {
const currentPage = ref(1)
const pageSize = ref(10)
const total = ref(0)
const emit = defineEmits(['update:modelValue', 'save-items'])
const tableRef = ref(null)
//
const save = () => {
console.log(tableData.value)
if (selectedRows.value.length === 0) {
ElMessage.warning('请先选择要保存的项目')
return
}
emit('save-items', selectedRows.value)
emit('update:modelValue', false)
}
const handleSizeChange = (val: number) => {
pageSize.value = val
handleSearch()
@ -133,53 +137,13 @@ const handleCurrentChange = (val: number) => {
}
//
const selectedRows = ref([])
const selectedRows = ref<any[]>([])
//
const handleSelectionChange = (selection: any[]) => {
selectedRows.value = selection
}
//
const handleDelete = () => {
if (selectedRows.value.length === 0) {
ElMessage.warning('请选择要删除的数据')
return
}
ElMessageBox.confirm('确认从列表中移除选中的数据吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
//
const selectedIndices = selectedRows.value.map(row =>
tableData.value.findIndex(item => item === row)
)
//
selectedIndices.sort((a, b) => b - a).forEach(index => {
if (index !== -1) {
tableData.value.splice(index, 1)
}
})
ElMessage.success('移除成功')
}).catch(() => {})
}
const handleClear = () => {
ElMessageBox.confirm('确认清空列表数据吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
tableData.value = []
total.value = 0
ElMessage.success('清空成功')
}).catch(() => {})
}
onMounted(() => {
getDepartmentList()
})

View File

@ -20,7 +20,36 @@
:class="{ active: selectedPackage?.id === item.id }"
@click="handleSelectPackage(item)"
>
<div class="package-name">{{ item.examModuleName }}</div>
<div class="package-content">
<div class="package-name">
<template v-if="item.isEditing">
<el-input
v-model="item.examModuleName"
size="small"
@blur="saveEdit(item)"
@keyup.enter="saveEdit(item)"
@input="validateNumber($event, item)"
@click.stop
/>
</template>
<template v-else>
{{ item.examModuleName }}
</template>
</div>
<div class="package-actions">
<el-dropdown @command="(command) => handleCommand(command, item)" trigger="click" @click.stop>
<span class="el-dropdown-link">
操作<el-icon class="el-icon--right"><arrow-down /></el-icon>
</span>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item command="edit">编辑</el-dropdown-item>
<el-dropdown-item command="delete" class="delete-item" divided>删除</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
</div>
</div>
</div>
</div>
</div>
@ -31,41 +60,28 @@
<el-button type="primary" @click="handleAdd">
<el-icon><Plus /></el-icon>
</el-button>
<el-button type="primary" @click="handleDelete">
<el-icon><Delete /></el-icon>
</el-button>
<el-button type="primary" @click="openDrawer">
<el-icon><Plus /></el-icon>
</el-button>
<el-button type="primary" @click="handleSubmit">
<el-button type="danger" @click="handleDeleteSelected">
<el-icon><Delete /></el-icon>
</el-button>
<el-button
type="success"
@click="handleSubmit"
:disabled="!isSubmitEnabled"
>
<el-icon><Upload /></el-icon>
</el-button>
</div>
<div class="search-form">
<el-form :inline="true" :model="searchForm">
<el-form-item label="套餐编号" required>
<el-input v-model="searchForm.name" placeholder="请输入" style="width: 200px" />
</el-form-item>
<el-form-item label="套餐名称" required>
<el-input v-model="searchForm.name" placeholder="请输入" style="width: 200px" />
</el-form-item>
</el-form>
</div>
<el-table :data="tableData" border style="width: 100%">
<el-table :data="tableData" border style="width: 100%" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" />
<el-table-column prop="name" label="名称" />
<el-table-column prop="name" label="基础项目名称" />
<el-table-column prop="price" label="销售价(元)" />
<el-table-column prop="discount" label="折扣(%)" />
<el-table-column prop="discountPrice" label="折扣价(元)" />
<el-table-column prop="address" label="检查地址" />
<el-table-column label="操作" width="180">
<template #default="scope">
<el-button type="primary" size="small" @click="handleEdit(scope.row)">编辑</el-button>
<el-button type="danger" size="small" @click="handleDelete(scope.row)">删除</el-button>
</template>
</el-table-column>
<el-table-column prop="moduleName" label="项目单元" />
</el-table>
<div class="pagination-container">
@ -90,7 +106,7 @@
size="30%"
:destroy-on-close="true"
>
<Drawer/>
<Drawer @save-items="handleSaveItems"/>
</el-drawer>
</div>
</div>
@ -100,11 +116,13 @@
<script setup>
import { ref, reactive, onMounted, computed } from 'vue'
import { Plus, Delete, Upload, Search, Picture, PictureFilled } from '@element-plus/icons-vue'
import { Plus, Delete, Upload, Search, Picture, PictureFilled, ArrowDown } from '@element-plus/icons-vue'
import NewPackage from './new.vue'
import { ExammoduleApi } from '@/api/inspect/exammodule'
import { ElMessage } from 'element-plus'
import Drawer from './drawer.vue'
import { itemsApi } from '@/api/inspect/inspectitems'
import { ElMessageBox } from 'element-plus'
//
const searchKeyword = ref('')
// type
@ -140,30 +158,86 @@ const filteredPackageList = computed(() => {
)
})
//
//
const getPackageList = async () => {
try {
const res = await ExammoduleApi.getExammodulePage({
pageNo: 1,
pageSize: 100
})
// res.list
if (res?.list) {
packageList.value = res.list
} else {
const res = await ExammoduleApi.getListExammodule()
if (res) {
// examModuleID
const groupedPackages = {}
res.forEach(item => {
if (item.examModuleID && item.examModuleID.toString().trim() !== '') {
if (!groupedPackages[item.examModuleID]) {
groupedPackages[item.examModuleID] = {
...item,
itemCodes: item.itemCode ? [item.itemCode] : []
}
} else if (item.itemCode) {
groupedPackages[item.examModuleID].itemCodes.push(item.itemCode)
}
}
})
packageList.value = Object.values(groupedPackages)
} else {
packageList.value = []
console.warn('获取套餐列表数据结构异常:', res)
}
} catch (error) {
console.error('获取套餐列表失败:', error)
packageList.value = []
}
}
//
const handleSelectPackage = (item) => {
//
const handleSelectPackage = async (item) => {
selectedPackage.value = item
//
hasDataChanged.value = false //
try {
// itemCodes itemCodes
if (!item.itemCodes || item.itemCodes.length === 0) {
tableData.value = []
return
}
//
const itemDetails = []
for (const itemCode of item.itemCodes) {
const itemDetail = await itemsApi.getitemsPage({
itemCode: itemCode,
pageNo: 1,
pageSize: 1
})
if (itemDetail?.list?.[0]) {
itemDetails.push({
name: itemDetail.list[0].itemName,
price: itemDetail.list[0].price,
discount: itemDetail.list[0].discount,
discountPrice: itemDetail.list[0].discountPrice,
moduleName: itemDetail.list[0].moduleName
})
}
}
tableData.value = itemDetails
} catch (error) {
console.error('加载套餐项目失败:', error)
ElMessage.error('加载套餐项目失败')
tableData.value = []
}
}
//
const getItemDetail = async (itemCode) => {
try {
//
const response = await itemsApi.getItems({
itemCode: itemCode
})
return response
} catch (error) {
console.error('获取项目详情失败:', error)
return null
}
}
//
@ -187,20 +261,208 @@ const refreshList = async () => {
await getPackageList() //
}
const handleDelete = (row) => {
//
const handleDelete = async () => {
if (!selectedPackage.value) {
ElMessage.warning('请先选择要删除的套餐')
return
}
try {
await ElMessageBox.confirm('确定要删除该套餐吗?此操作将删除该套餐下的所有项目。', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
// examModuleID
const res = await ExammoduleApi.getExammodulePage({
examModuleID: selectedPackage.value.examModuleID,
pageNo: 1,
pageSize: 100
})
if (res?.list) {
//
const deletePromises = res.list.map(item =>
ExammoduleApi.deleteExammodule(item.id)
)
await Promise.all(deletePromises)
}
ElMessage.success('删除成功')
//
await getPackageList()
//
selectedPackage.value = null
tableData.value = []
} catch (error) {
if (error !== 'cancel') {
console.error('删除失败:', error)
ElMessage.error('删除失败')
}
}
}
const handleAddItem = () => {
//
}
const handleSubmit = () => {
//
//
const isSubmitEnabled = computed(() => {
return tableData.value.length > 0 && selectedPackage.value && hasDataChanged.value
})
//
const hasDataChanged = ref(false)
// handleSaveItems
const handleSaveItems = async (items) => {
if (!selectedPackage.value) {
ElMessage.warning('请先选择套餐')
return
}
//
const newItems = items.map(item => ({
name: item.itemName,
price: item.price,
discount: item.discount,
discountPrice: item.discountPrice,
moduleName: item.moduleName
}))
//
const existingNames = tableData.value.map(item => item.name)
const uniqueItems = newItems.filter(item => !existingNames.includes(item.name))
if (uniqueItems.length === 0) {
ElMessage.warning('所选项目已存在')
return
}
//
tableData.value = [...tableData.value, ...uniqueItems]
hasDataChanged.value = true //
drawer.value = false
ElMessage.success('项目添加成功')
}
const handleEdit = (row) => {
//
const multipleSelection = ref([])
//
const handleSelectionChange = (selection) => {
multipleSelection.value = selection
}
//
const handleDeleteSelected = async () => {
if (multipleSelection.value.length === 0) {
ElMessage.warning('请先选择要删除的项目')
return
}
try {
await ElMessageBox.confirm('确定要删除选中的项目吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
//
for (const item of multipleSelection.value) {
// itemCode
const itemsRes = await itemsApi.getitemsPage({
itemName: item.name,
pageNo: 1,
pageSize: 1
})
if (!itemsRes?.list?.[0]) {
ElMessage.warning(`未找到项目"${item.name}"的信息`)
continue
}
const itemCode = itemsRes.list[0].itemCode
//
await ExammoduleApi.deleteExammoduleitemcode({
itemCode: itemCode,
examModuleID: selectedPackage.value.examModuleID
})
//
tableData.value = tableData.value.filter(row => row.name !== item.name)
}
//
multipleSelection.value = []
//
await getPackageList()
//
if (selectedPackage.value) {
const updatedPackage = packageList.value.find(p => p.examModuleID === selectedPackage.value.examModuleID)
if (updatedPackage) {
await handleSelectPackage(updatedPackage)
}
}
hasDataChanged.value = true //
ElMessage.success('删除成功')
} catch (error) {
if (error !== 'cancel') {
console.error('删除失败:', error)
ElMessage.error('删除失败')
}
}
}
const validateNumber = (value, item) => {
if (value) {
//
item.examModuleName = value.replace(/\D/g, '')
}
}
const saveEdit = async (item) => {
if (!item.examModuleName.trim()) {
item.examModuleName = item.originalName
item.isEditing = false
ElMessage.warning('套餐名称不能为空')
return
}
try {
await ExammoduleApi.updateExammodule({
examModuleName: item.examModuleName,
examModuleID: item.examModuleID
})
ElMessage.success('更新成功')
item.isEditing = false
await getPackageList()
const updatedPackage = packageList.value.find(p => p.examModuleID === item.examModuleID)
if (updatedPackage) {
selectedPackage.value = updatedPackage
await handleSelectPackage(updatedPackage)
}
} catch (error) {
console.error('更新失败:', error)
item.examModuleName = item.originalName
item.isEditing = false
ElMessage.error('更新失败')
}
}
const drawer = ref(false)
const openDrawer = () => {
drawer.value = true
}
//
@ -214,10 +476,143 @@ const handleCurrentChange = (val) => {
getPackageList()
}
const drawer = ref(false)
// handleSubmit
const handleSubmit = async () => {
if (!selectedPackage.value) {
ElMessage.warning('请先选择套餐')
return
}
const openDrawer = () => {
drawer.value = true
if (tableData.value.length === 0) {
ElMessage.warning('请先添加项目')
return
}
try {
// itemCode
if (!selectedPackage.value.itemCodes || selectedPackage.value.itemCodes.length === 0) {
await ExammoduleApi.deleteExammodule(selectedPackage.value.id)
}
//
const bindList = []
// ID
for (const item of tableData.value) {
// ID
const itemsRes = await itemsApi.getitemsPage({
itemName: item.name,
pageNo: 1,
pageSize: 1
})
if (!itemsRes?.list?.[0]) {
ElMessage.warning(`未找到项目"${item.name}"的信息`)
continue
}
//
const itemCode = itemsRes.list[0].itemCode
if (!selectedPackage.value.itemCodes?.includes(itemCode)) {
//
bindList.push({
id: null,
examModuleName: selectedPackage.value.examModuleName,
examModuleID: selectedPackage.value.examModuleID,
itemCode: itemCode
})
}
}
//
if (bindList.length > 0) {
await ExammoduleApi.ListcreateExammodule(bindList)
ElMessage.success('提交成功')
} else {
ElMessage.success('数据已更新')
}
//
await getPackageList()
//
if (selectedPackage.value) {
const updatedPackage = packageList.value.find(p => p.examModuleID === selectedPackage.value.examModuleID)
if (updatedPackage) {
await handleSelectPackage(updatedPackage)
}
}
hasDataChanged.value = false //
} catch (error) {
console.error('提交失败:', error)
ElMessage.error('提交失败')
}
}
const handleEdit = async () => {
if (!selectedPackage.value) {
ElMessage.warning('请先选择要编辑的套餐')
return
}
try {
const { value: newName } = await ElMessageBox.prompt('请输入新的套餐名称', '编辑套餐', {
confirmButtonText: '确定',
cancelButtonText: '取消',
inputValue: selectedPackage.value.examModuleName
})
if (newName.trim() === '') {
ElMessage.warning('套餐名称不能为空')
return
}
// examModuleID
const res = await ExammoduleApi.getExammodulePage({
examModuleID: selectedPackage.value.examModuleID,
pageNo: 1,
pageSize: 100
})
if (res?.list) {
//
const updatePromises = res.list.map(item =>
ExammoduleApi.updateExammodule({
id: item.id,
examModuleName: newName,
examModuleID: selectedPackage.value.examModuleID
})
)
await Promise.all(updatePromises)
ElMessage.success('更新成功')
//
await getPackageList()
const updatedPackage = packageList.value.find(p => p.examModuleID === selectedPackage.value.examModuleID)
if (updatedPackage) {
selectedPackage.value = updatedPackage
await handleSelectPackage(updatedPackage)
}
}
} catch (error) {
if (error !== 'cancel') {
console.error('更新失败:', error)
ElMessage.error('更新失败')
}
}
}
//
const handleCommand = (command, item) => {
switch (command) {
case 'edit':
handleEdit(item)
break
case 'delete':
handleDelete(item)
break
}
}
</script>
@ -237,8 +632,9 @@ const openDrawer = () => {
border-radius: 4px;
padding: 10px;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
height: 90%;
overflow-y: auto;
height: 90vh; /* 设置固定高度 */
display: flex;
flex-direction: column;
}
.panel-title {
@ -317,9 +713,25 @@ const openDrawer = () => {
/* 添加套餐列表样式 */
.package-list {
flex: 1;
overflow-y: auto; /* 启用垂直滚动 */
margin-top: 10px;
}
/* 自定义滚动条样式 */
.package-list::-webkit-scrollbar {
width: 6px;
}
.package-list::-webkit-scrollbar-thumb {
background-color: #dcdfe6;
border-radius: 3px;
}
.package-list::-webkit-scrollbar-track {
background-color: #f5f7fa;
}
.package-item {
padding: 10px;
border-bottom: 1px solid #eee;
@ -346,6 +758,10 @@ const openDrawer = () => {
color: #333;
}
.package-name .el-input {
margin: -5px 0;
}
.drawer-content {
padding: 20px;
}
@ -391,4 +807,29 @@ const openDrawer = () => {
color: #606266;
line-height: 1.6;
}
.package-content {
display: flex;
justify-content: space-between;
align-items: center;
}
.package-actions {
margin-left: 10px;
}
.el-dropdown-link {
cursor: pointer;
color: #409EFF;
display: flex;
align-items: center;
}
.el-dropdown-link:hover {
opacity: 0.8;
}
.delete-item {
color: #F56C6C !important;
}
</style>

View File

@ -55,7 +55,6 @@ const formData = reactive({
packageName: '',
examModuleName: '',
examModuleID: 0,
itemCode: ''
})
const handlePackageCodeInput = (value) => {
@ -75,22 +74,6 @@ const rules = {
}
},
trigger: 'blur'
},
{
validator: async (rule, value, callback) => {
if (!value) return callback()
const result = await ExammoduleApi.createExammodule({
examModuleName: formData.packageName,
examModuleID: Number(value),
itemCode: value,
})
if (result === 999) {
callback(new Error('套餐编号已存在'))
} else {
callback()
}
},
trigger: 'blur'
}
],
packageName: [{ required: true, message: '请输入套餐名称', trigger: 'blur' }]
@ -116,6 +99,18 @@ const handleSubmit = async () => {
if (!newPackageRef.value) return
try {
await newPackageRef.value.validate()
//
const result = await ExammoduleApi.createExammodule({
examModuleName: formData.packageName,
examModuleID: Number(formData.packageCode),
})
if (result === 999) {
ElMessage.error('套餐编号已存在')
return
}
ElMessage.success('新增套餐成功')
visible.value = false
emit('refresh-list')