优化代码结构

This commit is contained in:
WUSIJIAN
2025-12-05 15:45:14 +08:00
parent e41884fc60
commit 134ea96340
14 changed files with 67 additions and 75 deletions

View File

@@ -10,7 +10,7 @@ export function getaccountList(data: object) {
}
//添加客服账号
export function getaccountAdd(data: object) {
export function addAccount(data: object) {
return newService({
url: '/customerService/customer/service/account/add',
method: 'post',
@@ -28,7 +28,7 @@ export function updatestate(data: object) {
}
//更新账号
export function updateaccount(data: object) {
export function updateAccount(data: object) {
return newService({
url: '/customerService/customer/service/account/update',
method: 'post',

View File

@@ -1,7 +1,7 @@
import request, { newService } from '/@/utils/request';
//添加产品
export function getproductAdd(data: object) {
export function addProduct(data: object) {
return newService({
url: '/customerService/product/add',
method: 'post',

View File

@@ -9,8 +9,8 @@ export function getDataList(data: object) {
});
}
// 导出数据
export function exportProduct(data: object) {
// 导出报表
export function exportReport(data: object) {
return newService({
url: '/customerService/data/statistics/export',
responseType: 'blob',

View File

@@ -9,8 +9,8 @@ export function getscriptList(data: object) {
});
}
//获取话术列表
export function getscriptAdd(data: object) {
//增加话术
export function addScript(data: object) {
return newService({
url: '/customerService/speechcraft/add',
method: 'post',
@@ -19,7 +19,7 @@ export function getscriptAdd(data: object) {
}
//删除话术列表
export function deletescript(data: object) {
export function deleteScript(data: object) {
return newService({
url: '/customerService/speechcraft/delete',
method: 'post',
@@ -28,7 +28,7 @@ export function deletescript(data: object) {
}
//更新话术列表
export function updatescript(data: object) {
export function updateScript(data: object) {
return newService({
url: '/customerService/speechcraft/update',
method: 'post',

View File

@@ -20,8 +20,8 @@ const service: AxiosInstance = axios.create({
// 配置新建第二个 axios 实例(新功能服务)
const newService: AxiosInstance = axios.create({
baseURL: 'http://192.168.3.95:8000/',
// baseURL: 'http://192.168.3.49:8000/',
// baseURL: 'http://192.168.3.95:8000/',
baseURL: 'http://192.168.3.49:8000/',
timeout: 50000,
headers: { 'Content-Type': 'application/json' },
paramsSerializer: {
@@ -133,7 +133,7 @@ const responseErrorHandler = (error: any) => {
if (!error.response) {
if (error.message === 'Network Error') {
ElMessage.error('网络连接错误,请检查网络设置');
// ElMessage.error('网络连接错误,请检查网络设置');
} else {
// ElMessage.error('网络异常,请检查连接');
}

View File

@@ -1,5 +1,5 @@
<template>
<div class="system-edit-role-container">
<div class="account-edit-dialog">
<el-dialog :title="(formData.id ? '修改' : '添加') + '客服账号'" v-model="isShowDialog" width="769px">
<el-form ref="formRef" :model="formData" :rules="rules" size="default" label-width="90px">
<el-row :gutter="35">
@@ -38,7 +38,7 @@
<script lang="ts" setup>
import { ref, reactive, toRefs, nextTick } from 'vue';
import { ElMessage, type FormInstance, type FormRules } from 'element-plus';
import { getaccountAdd, updateaccount } from '/@/api/customerService/account';
import { addAccount, updateAccount } from '/@/api/customerService/account';
interface DialogFormData {
id?: string;
@@ -50,7 +50,7 @@ interface DialogFormData {
}
const emit = defineEmits<{
(e: 'getRoleList'): void;
(e: 'refresh'): void;
}>();
const state = reactive({
@@ -127,23 +127,17 @@ const onSubmit = async () => {
state.loading = true;
if (state.formData.id) {
// 修改操作 - 不包含状态字段
const updateData = {
id: state.formData.id,
customerServiceId: state.formData.customerServiceId,
platform: state.formData.platform,
// 注意修改时不传递status状态通过单独的开关控制\
};
await updateaccount(updateData);
// 修改操作
await updateAccount(state.formData);
ElMessage.success('修改成功');
} else {
// 新增操作
await getaccountAdd(state.formData);
await addAccount(state.formData);
ElMessage.success('添加成功');
}
closeDialog();
emit('getRoleList');
emit('refresh');
} catch (error) {
console.error('操作失败:', error);
ElMessage.error(state.formData.id ? '修改失败' : '添加失败');

View File

@@ -86,7 +86,7 @@
@pagination="getList"
/>
</el-card>
<EditAccount ref="editRoleRef" @getRoleList="getList" />
<EditAccount ref="editRoleRef" @refresh="getList" />
</div>
</template>
@@ -94,7 +94,7 @@
import { ref, reactive, onMounted } from 'vue';
import { ElMessageBox, ElMessage } from 'element-plus';
import EditAccount from './component/editAccount.vue';
import { getaccountAdd, getaccountList, updatestate } from '/@/api/customerService/account';
import { addAccount, getaccountList, updatestate } from '/@/api/customerService/account';
// 定义类型接口
interface TableDataItem {

View File

@@ -1,5 +1,5 @@
<template>
<div class="system-edit-role-container">
<div class="product-edit-dialog">
<el-dialog :title="(formData.id === 0 ? '添加' : '修改') + '产品'" v-model="isShowDialog" width="1000px">
<el-form ref="formRef" :model="formData" :rules="rules" size="default" label-width="90px">
<el-row :gutter="35">
@@ -35,7 +35,7 @@
<script lang="ts" setup>
import { ref, reactive, toRefs, nextTick } from 'vue';
import { ElMessage, type FormInstance, type FormRules } from 'element-plus';
import { getproductAdd, updateProduct } from '/@/api/customerService/product';
import { addProduct, updateProduct } from '/@/api/customerService/product';
import Editor from '/@/components/editor/index.vue';
/**
@@ -61,9 +61,9 @@ interface ComponentState {
// 定义组件事件
const emit = defineEmits<{
/**
* 获取产品列表事件 - 用于刷新父组件列表
* 刷新产品列表事件
*/
(e: 'getRoleList'): void;
(e: 'refresh'): void;
}>();
// 响应式状态
@@ -173,10 +173,8 @@ const onSubmit = async () => {
// 根据ID判断是新增还是修改
if (state.formData.id === 0) {
// 新增产品
await getproductAdd(state.formData).then((res) => {
ElMessage.success('产品添加成功');
});
await addProduct(state.formData);
ElMessage.success('产品添加成功');
} else {
// 修改产品
await updateProduct(state.formData);
@@ -185,7 +183,7 @@ const onSubmit = async () => {
// 关闭对话框并刷新列表
closeDialog();
emit('getRoleList');
emit('refresh');
} catch (error) {
console.error('提交失败:', error);
ElMessage.error(state.formData.id === 0 ? '添加失败' : '修改失败');

View File

@@ -1,22 +1,24 @@
<template>
<el-dialog title="导出产品数据" v-model="isShowDialog" width="450px" align-center>
<div class="export-content">
<div class="export-icon">
<el-icon class="icon-download"><Download /></el-icon>
<div class="product-export-dialog">
<el-dialog title="导出产品数据" v-model="isShowDialog" width="450px" align-center>
<div class="export-content">
<div class="export-icon">
<el-icon class="icon-download"><Download /></el-icon>
</div>
<p class="export-text">确定要导出产品数据吗</p>
<p class="export-tip">导出的文件将包含所有产品信息</p>
</div>
<p class="export-text">确定要导出产品数据吗</p>
<p class="export-tip">导出的文件将包含所有产品信息</p>
</div>
<template #footer>
<div class="dialog-footer">
<el-button @click="isShowDialog = false">取消</el-button>
<el-button type="primary" @click="handleExport" :loading="loading">
<el-icon><Download /></el-icon>
导出
</el-button>
</div>
</template>
</el-dialog>
<template #footer>
<div class="dialog-footer">
<el-button @click="isShowDialog = false">取消</el-button>
<el-button type="primary" @click="handleExport" :loading="loading">
<el-icon><Download /></el-icon>
导出
</el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script lang="ts" setup>

View File

@@ -92,7 +92,7 @@ import { saveAs } from 'file-saver';
import { importProduct } from '/@/api/customerService/product';
const emit = defineEmits<{
(e: 'getRoleList'): void;
(e: 'refresh'): void;
}>();
// 响应式状态
@@ -279,8 +279,7 @@ const handleCustomUpload = async (file: File) => {
};
ElMessage.success(`导入完成!失败记录:${resultData.failCount || 0}`);
emit('getRoleList');
emit('refresh');
setTimeout(() => {
if (isShowDialog.value) {
isShowDialog.value = false;

View File

@@ -87,10 +87,10 @@
</el-card>
<!-- 编辑对话框组件 -->
<EditRole ref="editRoleRef" @getRoleList="getProductList" />
<EditRole ref="editRoleRef" @refresh="getProductList" />
<!-- 导入导出对话框组件 -->
<ImportDialog ref="importDialogRef" @getRoleList="getProductList" />
<ImportDialog ref="importDialogRef" @refresh="getProductList" />
<ExportDialog ref="exportDialogRef" />
</div>
</template>

View File

@@ -1,11 +1,11 @@
<template>
<el-dialog title="导出产品数据" v-model="isShowDialog" width="450px" align-center>
<div class="export-content">
<el-dialog title="导出报表数据" v-model="isShowDialog" width="450px" align-center>
<div class="report-export-content">
<div class="export-icon">
<el-icon class="icon-download"><Download /></el-icon>
</div>
<p class="export-text">确定要导出产品数据吗</p>
<p class="export-tip">导出的文件将包含所有产品信息</p>
<p class="export-text">确定要导出报表数据吗</p>
<p class="export-tip">导出的文件将包含所有报表信息</p>
</div>
<template #footer>
<div class="dialog-footer">
@@ -23,7 +23,7 @@
import { ref } from 'vue';
import { ElMessage } from 'element-plus';
import { Download } from '@element-plus/icons-vue';
import { exportProduct } from '/@/api/customerService/report';
import { exportReport } from '/@/api/customerService/report';
const isShowDialog = ref(false);
const loading = ref(false);
@@ -46,8 +46,8 @@ const handleExport = async () => {
params.name = exportName.value;
}
// 调用导出接口 - 根据API文档这里应该返回JSON
const response = await exportProduct(params);
// 调用导出接口
const response = await exportReport(params);
console.log('导出响应:', response);

View File

@@ -1,5 +1,5 @@
<template>
<div class="system-edit-role-container">
<div class="script-edit-dialog">
<el-dialog title="" v-model="isShowDialog" width="769px" @close="onDialogClose">
<el-form ref="formRef" :model="formData" :rules="rules" size="default" label-width="90px">
<el-row :gutter="35">
@@ -32,7 +32,7 @@
import { ref, reactive, toRefs, nextTick } from 'vue';
import { ElMessage, type FormInstance, type FormRules } from 'element-plus';
import Editor from '/@/components/editor/index.vue';
import { getscriptAdd, updatescript } from '/@/api/customerService/script';
import { addScript, updateScript } from '/@/api/customerService/script';
// 定义类型接口
interface DialogRow {
@@ -45,7 +45,7 @@ interface DialogRow {
// 定义事件
const emit = defineEmits<{
(e: 'success'): void;
(e: 'refresh'): void;
}>();
// 响应式数据
@@ -149,18 +149,17 @@ const onSubmit = async () => {
if (state.formData.id === 0) {
// 新增模式
console.log(state.formData.content, '话术内容');
await getscriptAdd(state.formData);
await addScript(state.formData);
ElMessage.success('添加成功');
} else {
// 编辑模式
await updatescript(state.formData);
await updateScript(state.formData);
ElMessage.success('修改成功');
}
// 关闭对话框并刷新列表
state.isShowDialog = false;
emit('success');
emit('refresh');
} catch (error) {
console.error('提交失败:', error);
ElMessage.error('操作失败');

View File

@@ -67,7 +67,7 @@
</el-card>
<!-- 编辑组件 -->
<EditRole ref="editRoleRef" @success="handleSuccess" />
<EditRole ref="editRoleRef" @refresh="loadTableData" />
</div>
</template>
@@ -77,7 +77,7 @@ import { ElMessageBox, ElMessage } from 'element-plus';
import { FolderAdd, EditPen, DeleteFilled } from '@element-plus/icons-vue';
import EditRole from './component/editRole.vue';
import Pagination from '/@/components/pagination/index.vue';
import { getscriptList, deletescript } from '/@/api/customerService/script';
import { getscriptList, deleteScript } from '/@/api/customerService/script';
// ==================== 类型定义 ====================
interface ScriptItem {
@@ -230,7 +230,7 @@ const handleDelete = async (row: ScriptItem) => {
type: 'warning',
});
await deletescript({ id: row.id });
await deleteScript({ id: row.id });
ElMessage.success('删除成功');
// 重新加载数据