实现接口部分功能

This commit is contained in:
WUSIJIAN
2025-11-28 17:17:07 +08:00
parent 0ad816cc6d
commit 4c2fb2a189
11 changed files with 317 additions and 686 deletions

View File

@@ -35,8 +35,10 @@
<script lang="ts" setup>
import { ref, reactive, toRefs, nextTick } from 'vue';
import { ElMessage, type FormInstance, type FormRules } from 'element-plus';
import { addRole, editRole, getRole } from '/@/api/system/role';
import { getproductAdd, updateProduct, getproductOne } from '/@/api/customerService/product';
import Editor from '/@/components/editor/index.vue';
import { Session } from '/@/utils/storage';
import { log } from 'node:console';
/**
* 产品表单数据接口
@@ -44,10 +46,9 @@ import Editor from '/@/components/editor/index.vue';
interface ProductFormData {
id: number; // 产品ID
name: string; // 产品名称
status: number; // 状态1-启用0-禁用
listOrder: number; // 排序
remark: string; // 备注
content?: string; // 产品详情(富文本内容)
creator: '';
modifier: '';
}
/**
@@ -74,10 +75,9 @@ const state = reactive<ComponentState>({
formData: {
id: 0,
name: '',
status: 1,
listOrder: 0,
remark: '',
content: '',
creator: '',
modifier: '',
},
});
@@ -124,13 +124,11 @@ const openDialog = async (row?: ProductFormData) => {
*/
const handleEditMode = async (id: number) => {
try {
const res = await getRole(id);
if (res.data?.role) {
const res = await getproductOne({ id: id });
if (res.data) {
// 填充表单数据
state.formData = {
...res.data.role,
content: res.data.role.content || '',
};
// state.formData = res.data;
console.log(res.data, 'for');
}
} catch (error) {
console.error('获取产品详情失败:', error);
@@ -175,11 +173,14 @@ const onSubmit = async () => {
// 根据ID判断是新增还是修改
if (state.formData.id === 0) {
// 新增产品
await addRole(state.formData);
state.formData.creator = Session.get('userInfo').userNickname;
await getproductAdd(state.formData);
ElMessage.success('产品添加成功');
} else {
// 修改产品
await editRole(state.formData);
state.formData.modifier = Session.get('userInfo').userNickname;
await updateProduct(state.formData);
ElMessage.success('产品修改成功');
}

View File

@@ -43,8 +43,8 @@
<el-table-column prop="name" label="产品名称" show-overflow-tooltip />
<el-table-column prop="creator" label="创建人" show-overflow-tooltip />
<el-table-column prop="updater" label="修改人" show-overflow-tooltip />
<el-table-column prop="createdAt" label="创建时间" show-overflow-tooltip />
<el-table-column prop="updatedAt" label="修改时间" show-overflow-tooltip />
<el-table-column prop="createdAtString" label="创建时间" show-overflow-tooltip />
<el-table-column prop="updatedAtString" label="修改时间" show-overflow-tooltip />
<el-table-column label="操作" width="220">
<template #default="scope">
<el-button size="small" text type="primary" @click="onOpenEditRole(scope.row)">
@@ -82,7 +82,7 @@ import { ElMessageBox, ElMessage } from 'element-plus';
import EditRole from '/@/views/customerService/product/component/editRole.vue';
import ImportDialog from '/@/views/customerService/product/component/importDialog.vue';
import ExportDialog from '/@/views/customerService/product/component/exportDialog.vue';
import { deleteRole, getRoleList } from '/@/api/customerService/product';
import { deleteProduct, getList, getproductAdd } from '/@/api/customerService/product';
/**
* 产品数据接口
@@ -123,80 +123,6 @@ interface TableState {
/**
* 模拟产品数据
*/
const mockProductData: ProductData[] = [
{
id: 1,
status: 1,
listOrder: 0,
name: 'xxx药品',
creator: '张三',
updater: '李四',
remark: '药品描述',
dataScope: 3,
createdAt: '2022-04-01 11:38:39',
updatedAt: '2022-04-28 10:00:15',
},
{
id: 2,
status: 1,
listOrder: 0,
name: 'yyy医疗器械',
creator: '王五',
updater: '赵六',
remark: '医疗器械描述',
dataScope: 3,
createdAt: '2022-04-01 11:38:39',
updatedAt: '2022-04-28 10:01:34',
},
{
id: 3,
status: 1,
listOrder: 0,
name: 'zzz保健品',
creator: '孙七',
updater: '周八',
remark: '保健品描述',
dataScope: 3,
createdAt: '2022-04-01 11:38:39',
updatedAt: '2022-04-01 11:38:39',
},
{
id: 4,
status: 1,
listOrder: 0,
name: 'aaa化妆品',
creator: '吴九',
updater: '郑十',
remark: '化妆品描述',
dataScope: 3,
createdAt: '2022-04-01 11:38:39',
updatedAt: '2022-04-01 11:38:39',
},
{
id: 5,
status: 1,
listOrder: 0,
name: 'bbb药品',
creator: '钱一',
updater: '孙二',
remark: '药品描述',
dataScope: 2,
createdAt: '2022-04-01 11:38:39',
updatedAt: '2022-04-01 11:38:39',
},
{
id: 8,
status: 1,
listOrder: 0,
name: 'ccc医疗器械',
creator: '李三',
updater: '王四',
remark: '医疗器械描述',
dataScope: 2,
createdAt: '2022-04-01 11:38:39',
updatedAt: '2022-04-06 09:53:40',
},
];
// 响应式状态
const tableData = reactive<TableState>({
@@ -223,21 +149,11 @@ const getProductList = async () => {
try {
tableData.loading = true;
// 实际API调用 - 注释掉模拟数据后取消注释
// const res = await getRoleList(tableData.param);
// if (res.data?.list) {
// tableData.data = res.data.list;
// tableData.total = res.data.total;
// }
// 模拟数据 - 添加延迟模拟网络请求
await new Promise((resolve) => setTimeout(resolve, 500));
// 根据产品名称过滤数据
const filteredData = mockProductData.filter((item) => !tableData.param.productName || item.name.includes(tableData.param.productName));
tableData.data = filteredData;
tableData.total = filteredData.length;
const res = await getList(tableData.param);
if (res.data?.list) {
tableData.data = res.data.list;
tableData.total = res.data.total;
}
} catch (error) {
console.error('获取产品列表失败:', error);
ElMessage.error('获取产品列表失败');
@@ -312,9 +228,10 @@ const onRowDel = async (row: ProductData) => {
cancelButtonText: '取消',
type: 'warning',
});
console.log(row.id, 'row');
// 实际删除操作
// await deleteRole(row.id);
await deleteProduct({ id: row.id });
// 模拟删除成功
ElMessage.success('删除成功');