初始化询价智能体新仓:同步本地工程并排除密钥与 .env。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
<template>
|
||||
<BasicModal v-bind="$attrs" @register="registerModal" :title="title" @ok="handleSubmit" :width="800" destroyOnClose>
|
||||
<BasicForm @register="registerForm" />
|
||||
</BasicModal>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref, computed, unref } from 'vue';
|
||||
import { BasicModal, useModalInner } from '/@/components/Modal';
|
||||
import { BasicForm, useForm } from '/@/components/Form/index';
|
||||
import { formSchema } from './fill.rule.data';
|
||||
import { saveFillRule, updateFillRule } from './fill.rule.api';
|
||||
|
||||
//设置标题
|
||||
const title = computed(() => (!unref(isUpdate) ? '新增' : '编辑'));
|
||||
|
||||
// 声明Emits
|
||||
const emit = defineEmits(['register', 'success']);
|
||||
const isUpdate = ref(true);
|
||||
|
||||
//表单配置
|
||||
const [registerForm, { resetFields, setFieldsValue, validate, getFieldsValue }] = useForm({
|
||||
schemas: formSchema,
|
||||
showActionButtonGroup: false,
|
||||
baseColProps: { span: 12 },
|
||||
});
|
||||
|
||||
//表单赋值
|
||||
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
|
||||
//重置表单
|
||||
await resetFields();
|
||||
setModalProps({ confirmLoading: false });
|
||||
isUpdate.value = !!data?.isUpdate;
|
||||
if (unref(isUpdate)) {
|
||||
//表单赋值
|
||||
await setFieldsValue({
|
||||
...data.record,
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
//表单提交事件
|
||||
async function handleSubmit() {
|
||||
try {
|
||||
let formValue = await validate();
|
||||
setModalProps({ confirmLoading: true });
|
||||
if (isUpdate.value) {
|
||||
let allFieldsValue = getFieldsValue();
|
||||
// 编辑页面 如果表单没有父级下拉框 则提交时候 validate方法不返该值 需要手动设置
|
||||
if (!formValue.parentId && allFieldsValue.parentId) {
|
||||
formValue.parentId = allFieldsValue.parentId;
|
||||
}
|
||||
await updateFillRule(formValue);
|
||||
} else {
|
||||
await saveFillRule(formValue);
|
||||
}
|
||||
//关闭弹窗
|
||||
closeModal();
|
||||
//刷新列表
|
||||
emit('success');
|
||||
} finally {
|
||||
setModalProps({ confirmLoading: false });
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,83 @@
|
||||
import { defHttp } from '/@/utils/http/axios';
|
||||
import { Modal } from 'ant-design-vue';
|
||||
|
||||
enum Api {
|
||||
list = '/sys/fillRule/list',
|
||||
test = '/sys/fillRule/testFillRule',
|
||||
save = '/sys/fillRule/add',
|
||||
edit = '/sys/fillRule/edit',
|
||||
delete = '/sys/fillRule/delete',
|
||||
deleteBatch = '/sys/fillRule/deleteBatch',
|
||||
exportXls = '/sys/fillRule/exportXls',
|
||||
importExcel = '/sys/fillRule/importExcel',
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出地址
|
||||
*/
|
||||
export const exportUrl = Api.exportXls;
|
||||
/**
|
||||
* 导入地址
|
||||
*/
|
||||
export const importUrl = Api.importExcel;
|
||||
|
||||
/**
|
||||
* 列表查询
|
||||
* @param params
|
||||
*/
|
||||
export const getFillRuleList = (params) => {
|
||||
return defHttp.get({ url: Api.list, params });
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除
|
||||
* @param params
|
||||
* @param handleSuccess
|
||||
*/
|
||||
export const deleteFillRule = (params, handleSuccess) => {
|
||||
return defHttp.delete({ url: Api.delete, data: params }, { joinParamsToUrl: true }).then(() => {
|
||||
handleSuccess();
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
* @param params
|
||||
*/
|
||||
export const batchDeleteFillRule = (params, handleSuccess) => {
|
||||
Modal.confirm({
|
||||
title: '确认删除',
|
||||
content: '是否删除选中数据',
|
||||
okText: '确认',
|
||||
cancelText: '取消',
|
||||
onOk: () => {
|
||||
return defHttp.delete({ url: Api.deleteBatch, data: params }, { joinParamsToUrl: true }).then(() => {
|
||||
handleSuccess();
|
||||
});
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 规则功能测试
|
||||
* @param params
|
||||
*/
|
||||
export const handleTest = (params) => {
|
||||
return defHttp.get({ url: Api.test, params }, { isTransformResponse: false });
|
||||
};
|
||||
|
||||
/**
|
||||
* 保存
|
||||
* @param params
|
||||
*/
|
||||
export const saveFillRule = (params) => {
|
||||
return defHttp.post({ url: Api.save, params });
|
||||
};
|
||||
|
||||
/**
|
||||
* 更新
|
||||
* @param params
|
||||
*/
|
||||
export const updateFillRule = (params) => {
|
||||
return defHttp.put({ url: Api.edit, params });
|
||||
};
|
||||
@@ -0,0 +1,112 @@
|
||||
import { BasicColumn, FormSchema } from '/@/components/Table';
|
||||
import { duplicateCheck } from '/@/views/system/user/user.api';
|
||||
|
||||
export const columns: BasicColumn[] = [
|
||||
{
|
||||
title: '规则名称',
|
||||
dataIndex: 'ruleName',
|
||||
width: 200,
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
title: '规则编码',
|
||||
dataIndex: 'ruleCode',
|
||||
width: 200,
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
title: '规则实现类',
|
||||
dataIndex: 'ruleClass',
|
||||
width: 300,
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
title: '规则参数',
|
||||
dataIndex: 'ruleParams',
|
||||
width: 200,
|
||||
align: 'center',
|
||||
},
|
||||
];
|
||||
|
||||
export const searchFormSchema: FormSchema[] = [
|
||||
{
|
||||
field: 'ruleName',
|
||||
label: '规则名称',
|
||||
component: 'Input',
|
||||
colProps: { span: 6 },
|
||||
},
|
||||
{
|
||||
field: 'ruleCode',
|
||||
label: '规则编码',
|
||||
component: 'Input',
|
||||
colProps: { span: 6 },
|
||||
},
|
||||
];
|
||||
|
||||
export const formSchema: FormSchema[] = [
|
||||
{
|
||||
label: '',
|
||||
field: 'id',
|
||||
component: 'Input',
|
||||
show: false,
|
||||
},
|
||||
{
|
||||
field: 'ruleName',
|
||||
label: '规则名称',
|
||||
component: 'Input',
|
||||
required: true,
|
||||
colProps: { span: 24 },
|
||||
},
|
||||
{
|
||||
field: 'ruleCode',
|
||||
label: '规则编码',
|
||||
component: 'Input',
|
||||
colProps: { span: 24 },
|
||||
dynamicDisabled: ({ values }) => {
|
||||
return !!values.id;
|
||||
},
|
||||
dynamicRules: ({ model }) => {
|
||||
return [
|
||||
{
|
||||
required: true,
|
||||
validator: (_, value) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (!value) {
|
||||
return reject('请输入规则编码!');
|
||||
}
|
||||
let params = {
|
||||
tableName: 'sys_fill_rule',
|
||||
fieldName: 'rule_code',
|
||||
fieldVal: value,
|
||||
dataId: model.id,
|
||||
};
|
||||
duplicateCheck(params)
|
||||
.then((res) => {
|
||||
res.success ? resolve() : reject('规则编码已存在!');
|
||||
})
|
||||
.catch((err) => {
|
||||
reject(err.message || '校验失败');
|
||||
});
|
||||
});
|
||||
},
|
||||
},
|
||||
];
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'ruleClass',
|
||||
label: '规则实现类',
|
||||
component: 'Input',
|
||||
required: true,
|
||||
colProps: { span: 24 },
|
||||
},
|
||||
{
|
||||
field: 'ruleParams',
|
||||
label: '规则参数',
|
||||
colProps: { span: 24 },
|
||||
component: 'JAddInput',
|
||||
componentProps: {
|
||||
min: 0,
|
||||
},
|
||||
},
|
||||
];
|
||||
@@ -0,0 +1,146 @@
|
||||
<template>
|
||||
<div :class="prefixCls">
|
||||
<BasicTable @register="registerTable" :rowSelection="rowSelection">
|
||||
<!--插槽:table标题-->
|
||||
<template #tableTitle>
|
||||
<a-button preIcon="ant-design:plus-outlined" type="primary" @click="handleAdd">新增</a-button>
|
||||
<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXls"> 导出</a-button>
|
||||
<j-upload-button type="primary" preIcon="ant-design:import-outlined" @click="onImportXls">导入</j-upload-button>
|
||||
<a-dropdown v-if="selectedRowKeys.length > 0">
|
||||
<template #overlay>
|
||||
<a-menu>
|
||||
<a-menu-item key="1" @click="batchHandleDelete">
|
||||
<Icon icon="ant-design:delete-outlined"></Icon>
|
||||
<span>删除</span>
|
||||
</a-menu-item>
|
||||
</a-menu>
|
||||
</template>
|
||||
<a-button>
|
||||
<span>批量操作</span>
|
||||
<Icon icon="mdi:chevron-down"></Icon>
|
||||
</a-button>
|
||||
</a-dropdown>
|
||||
</template>
|
||||
|
||||
<!--操作栏-->
|
||||
<template #action="{ record }">
|
||||
<TableAction :actions="getTableAction(record)" :dropDownActions="getDropDownAction(record)" />
|
||||
</template>
|
||||
</BasicTable>
|
||||
<FillRuleModal @register="registerModal" @success="reload" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script name="system-fillrule" lang="ts" setup>
|
||||
import { BasicTable, TableAction } from '/@/components/Table';
|
||||
import { useListPage } from '/@/hooks/system/useListPage';
|
||||
import { getFillRuleList, exportUrl, importUrl, deleteFillRule, batchDeleteFillRule, handleTest } from '/@/views/system/fillRule/fill.rule.api';
|
||||
import { columns, searchFormSchema } from '/@/views/system/fillRule/fill.rule.data';
|
||||
import { useModal } from '/@/components/Modal';
|
||||
import { ActionItem } from '/@/components/Table';
|
||||
const [registerModal, { openModal }] = useModal();
|
||||
import FillRuleModal from '/@/views/system/fillRule/FillRuleModal.vue';
|
||||
|
||||
// 列表页面公共参数、方法
|
||||
const { prefixCls, tableContext, createMessage, createSuccessModal, onExportXls, onImportXls } = useListPage({
|
||||
designScope: 'fill-rule',
|
||||
tableProps: {
|
||||
title: '填值规则管理页面',
|
||||
api: getFillRuleList,
|
||||
columns: columns,
|
||||
showIndexColumn: true,
|
||||
formConfig: {
|
||||
schemas: searchFormSchema,
|
||||
},
|
||||
},
|
||||
exportConfig: {
|
||||
url: exportUrl,
|
||||
name: '填值规则列表',
|
||||
},
|
||||
importConfig: {
|
||||
url: importUrl,
|
||||
success: () => reload(),
|
||||
},
|
||||
});
|
||||
// 注册 ListTable
|
||||
const [registerTable, { reload }, { rowSelection, selectedRowKeys }] = tableContext;
|
||||
|
||||
/**
|
||||
* 新增事件
|
||||
*/
|
||||
function handleAdd() {
|
||||
openModal(true, {
|
||||
isUpdate: false,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑事件
|
||||
*/
|
||||
function handleEdit(record) {
|
||||
console.log('record....', record);
|
||||
openModal(true, {
|
||||
record,
|
||||
isUpdate: true,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除事件
|
||||
*/
|
||||
async function handleDelete(record) {
|
||||
console.log(12345, record);
|
||||
await deleteFillRule({ id: record.id }, reload);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除事件
|
||||
*/
|
||||
async function batchHandleDelete() {
|
||||
await batchDeleteFillRule({ ids: selectedRowKeys.value }, () => {
|
||||
selectedRowKeys.value = [];
|
||||
reload();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 功能测试
|
||||
*/
|
||||
function testRule(record) {
|
||||
let params = { ruleCode: record.ruleCode };
|
||||
handleTest(params).then((res) => {
|
||||
if (res.success) {
|
||||
createSuccessModal({
|
||||
title: '填值规则功能测试',
|
||||
content: '生成结果:' + res.result,
|
||||
});
|
||||
} else {
|
||||
createMessage.warn(res.message);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*/
|
||||
function getTableAction(record): ActionItem[] {
|
||||
return [{ label: '编辑', onClick: handleEdit.bind(null, record) }];
|
||||
}
|
||||
|
||||
/**
|
||||
* 下拉操作栏
|
||||
*/
|
||||
function getDropDownAction(record): ActionItem[] {
|
||||
return [
|
||||
{ label: '功能测试', onClick: testRule.bind(null, record) },
|
||||
{
|
||||
label: '删除',
|
||||
color: 'error',
|
||||
popConfirm: {
|
||||
title: '确认要删除吗?',
|
||||
confirm: handleDelete.bind(null, record),
|
||||
},
|
||||
},
|
||||
];
|
||||
}
|
||||
</script>
|
||||
Reference in New Issue
Block a user