Browse Source

新增提示词修改历史记录

ai_dev
zhouhaibin 2 months ago
parent
commit
2383835852
  1. 60
      src/api/modelConfiguration/ModelPromptsHistory/index.ts
  2. 160
      src/api/modelConfiguration/ModelPromptsHistory/model.ts
  3. 211
      src/views/modelConfiguration/ModelPromptsHistory/ModelPromptsHistory.data.ts
  4. 69
      src/views/modelConfiguration/ModelPromptsHistory/ModelPromptsHistoryModal.vue
  5. 128
      src/views/modelConfiguration/ModelPromptsHistory/index.vue

60
src/api/modelConfiguration/ModelPromptsHistory/index.ts

@ -0,0 +1,60 @@
import { defHttp } from '@/utils/http/axios';
import { ID, IDS, commonExport } from '@/api/base';
import { ModelPromptsHistoryVO, ModelPromptsHistoryForm, ModelPromptsHistoryQuery } from './model';
/**
*
* @param params
* @returns
*/
export function ModelPromptsHistoryList(params?: ModelPromptsHistoryQuery) {
return defHttp.get<ModelPromptsHistoryVO[]>({ url: '/productManagement/ModelPromptsHistory/list', params });
}
/**
*
* @param params
* @returns
*/
export function ModelPromptsHistoryExport(params?: ModelPromptsHistoryQuery) {
return commonExport('/productManagement/ModelPromptsHistory/export', params ?? {});
}
/**
*
* @param id id
* @returns
*/
export function ModelPromptsHistoryInfo(id: ID) {
return defHttp.get<ModelPromptsHistoryVO>({ url: '/productManagement/ModelPromptsHistory/' + id });
}
/**
*
* @param data
* @returns
*/
export function ModelPromptsHistoryAdd(data: ModelPromptsHistoryForm) {
return defHttp.postWithMsg<void>({ url: '/productManagement/ModelPromptsHistory', data });
}
/**
*
* @param data
* @returns
*/
export function ModelPromptsHistoryUpdate(data: ModelPromptsHistoryForm) {
return defHttp.putWithMsg<void>({ url: '/productManagement/ModelPromptsHistory', data });
}
/**
*
* @param id id
* @returns
*/
export function ModelPromptsHistoryRemove(id: ID | IDS) {
return defHttp.deleteWithMsg<void>({ url: '/productManagement/ModelPromptsHistory/' + id },);
}
export function ModelPromptsHistoryRestore(id: ID) {
return defHttp.postWithMsg<void>({ url: '/productManagement/ModelPromptsHistory/restore/'+id});
}

160
src/api/modelConfiguration/ModelPromptsHistory/model.ts

@ -0,0 +1,160 @@
import { BaseEntity, PageQuery } from '@/api/base';
export interface ModelPromptsHistoryVO {
/**
* id
*/
id: string | number;
/**
* id
*/
promptId: string | number;
/**
*
*/
taskRoleDesc: string;
/**
*
*/
taskName: string;
/**
*
*/
taskRegion: string;
/**
*
*/
taskIndustry: string;
/**
*
*/
context: string;
/**
*
*/
description: string;
/**
*
*/
workflow: string;
/**
*
*/
outputDesc: string;
/**
*
*/
cautions: string;
/**
*
*/
modelVersion: string;
/**
*
*/
note: string;
}
export interface ModelPromptsHistoryForm extends BaseEntity {
/**
* id
*/
id?: string | number;
/**
* id
*/
promptId?: string | number;
/**
*
*/
taskRoleDesc?: string;
/**
*
*/
taskName?: string;
/**
*
*/
taskRegion?: string;
/**
*
*/
taskIndustry?: string;
/**
*
*/
context?: string;
/**
*
*/
description?: string;
/**
*
*/
workflow?: string;
/**
*
*/
outputDesc?: string;
/**
*
*/
cautions?: string;
/**
*
*/
modelVersion?: string;
/**
*
*/
note?: string;
}
export interface ModelPromptsHistoryQuery extends PageQuery {
/**
*
*/
taskName?: string;
/**
*
*/
taskRegion?: string;
/**
*
*/
taskIndustry?: string;
/**
*
*/
params?: any;
}

211
src/views/modelConfiguration/ModelPromptsHistory/ModelPromptsHistory.data.ts

@ -0,0 +1,211 @@
import { BasicColumn } from '@/components/Table';
import { FormSchema } from '@/components/Form';
import { getDictOptions } from '@/utils/dict';
import { useRender } from '@/hooks/component/useRender';
export const formSchemas: FormSchema[] = [
{
label: '模型任务名称',
field: 'taskName',
component: 'Select',
componentProps: {
options: getDictOptions('document_task')
},
},
{
label: '模型所属区域',
field: 'taskRegion',
component: 'Select',
componentProps: {
options: getDictOptions('model_region')
},
},
{
label: '模型所属行业',
field: 'taskIndustry',
component: 'Select',
componentProps: {
options: getDictOptions('model_industry')
},
},
];
const { renderDict } = useRender();
export const columns: BasicColumn[] = [
{
title: '提示词id',
dataIndex: 'promptId',
ifShow:false
},
{
title: '模型任务名称',
dataIndex: 'taskName',
customRender: ({ value }) => renderDict(value, 'document_task'),
},
{
title: '模型所属区域',
dataIndex: 'taskRegion',
customRender: ({ value }) => renderDict(value, 'model_region'),
},
{
title: '模型所属行业',
dataIndex: 'taskIndustry',
customRender: ({ value }) => renderDict(value, 'model_industry'),
},
{
title: '任务角色描述',
dataIndex: 'taskRoleDesc',
},
{
title: '任务背景',
dataIndex: 'context',
},
{
title: '任务描述',
dataIndex: 'description',
},
{
title: '任务流程',
dataIndex: 'workflow',
},
{
title: '输出说明',
dataIndex: 'outputDesc',
},
{
title: '注意事项',
dataIndex: 'cautions',
},
{
title: '模型版本',
dataIndex: 'modelVersion',
},
{
title: '备注',
dataIndex: 'note',
},
];
export const modalSchemas: FormSchema[] = [
{
label: 'id',
field: 'id',
required: false,
component: 'Input',
show: false,
},
{
label: '提示词id',
field: 'promptId',
required: false,
component: 'Input',
show: false,
},
{
label: '模型任务名称',
field: 'taskName',
required: false,
dynamicDisabled:true,
component: 'Select',
componentProps: {
options: getDictOptions('document_task')
},
},
{
label: '模型所属区域',
field: 'taskRegion',
required: false,
dynamicDisabled:true,
component: 'Select',
componentProps: {
options: getDictOptions('model_region')
},
},
{
label: '模型所属行业',
field: 'taskIndustry',
required: false,
dynamicDisabled:true,
component: 'Select',
componentProps: {
options: getDictOptions('model_industry')
},
},
{
label: '任务角色描述',
field: 'taskRoleDesc',
required: false,
dynamicDisabled:true,
component: 'InputTextArea',
componentProps:{
rows:10,
}
},
{
label: '任务背景',
field: 'context',
required: false,
dynamicDisabled:true,
component: 'InputTextArea',
componentProps:{
rows:10,
}
},
{
label: '任务描述',
field: 'description',
required: false,
dynamicDisabled:true,
component: 'InputTextArea',
componentProps:{
rows:10,
}
},
{
label: '任务流程',
field: 'workflow',
required: false,
dynamicDisabled:true,
component: 'InputTextArea',
componentProps:{
rows:10,
}
},
{
label: '输出说明',
field: 'outputDesc',
required: false,
dynamicDisabled:true,
component: 'InputTextArea',
componentProps:{
rows:10,
}
},
{
label: '注意事项',
field: 'cautions',
required: false,
dynamicDisabled:true,
component: 'InputTextArea',
componentProps:{
rows:10,
}
},
{
label: '备注',
field: 'note',
required: false,
dynamicDisabled:true,
component: 'InputTextArea',
componentProps:{
rows:10,
}
},
{
label: '模型版本',
field: 'modelVersion',
required: false,
dynamicDisabled:true,
component: 'Input',
},
];

69
src/views/modelConfiguration/ModelPromptsHistory/ModelPromptsHistoryModal.vue

@ -0,0 +1,69 @@
<template>
<BasicModal
v-bind="$attrs"
:title="title"
@register="registerInnerModal"
@ok="handleSubmit"
@cancel="resetForm"
width="60%"
>
<BasicForm @register="registerForm" />
</BasicModal>
</template>
<script setup lang="ts">
import { BasicModal, useModalInner } from '@/components/Modal';
import { BasicForm, useForm } from '@/components/Form';
import { computed, ref, unref } from 'vue';
import { ModelPromptsHistoryInfo, ModelPromptsHistoryAdd, ModelPromptsHistoryUpdate } from '@/api/modelConfiguration/ModelPromptsHistory';
import { modalSchemas } from './ModelPromptsHistory.data';
defineOptions({ name: 'ModelPromptsHistoryModal' });
const emit = defineEmits(['register', 'reload']);
const isUpdate = ref<boolean>(false);
const title = computed<string>(() => {
return isUpdate.value ? '编辑模型提示词历史记录' : '新增模型提示词历史记录';
});
const [registerInnerModal, { modalLoading, closeModal }] = useModalInner(
async (data: { record?: Recordable; update: boolean }) => {
modalLoading(true);
const { record, update } = data;
isUpdate.value = update;
if (update && record) {
const ret = await ModelPromptsHistoryInfo(record.id);
await setFieldsValue(ret);
}
modalLoading(false);
},
);
const [registerForm, { setFieldsValue, resetForm, validate }] = useForm({
labelWidth: 100,
showActionButtonGroup: false,
baseColProps: { span: 24 },
schemas: modalSchemas,
});
async function handleSubmit() {
try {
modalLoading(true);
const data = await validate();
if (unref(isUpdate)) {
await ModelPromptsHistoryUpdate(data);
} else {
await ModelPromptsHistoryAdd(data);
}
emit('reload');
closeModal();
await resetForm();
} catch (e) {
} finally {
modalLoading(false);
}
}
</script>
<style scoped></style>

128
src/views/modelConfiguration/ModelPromptsHistory/index.vue

@ -0,0 +1,128 @@
<template>
<PageWrapper dense>
<BasicTable @register="registerTable">
<template #toolbar>
<a-button
@click="downloadExcel(ModelPromptsHistoryExport, '模型提示词历史记录数据', getForm().getFieldsValue())"
v-auth="'productManagement:ModelPromptsHistory:export'"
>导出</a-button
>
<!-- <a-button
type="primary"
danger
@click="multipleRemove(ModelPromptsHistoryRemove)"
:disabled="!selected"
v-auth="'productManagement:ModelPromptsHistory:remove'"
>删除</a-button
>
<a-button
type="primary"
@click="handleAdd"
v-auth="'productManagement:ModelPromptsHistory:add'"
>新增</a-button
> -->
</template>
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'action'">
<TableAction
stopButtonPropagation
:actions="[
{
label: '还原',
icon: IconEnum.IMPORT,
color:'success',
type: 'primary',
ghost: true,
auth: 'productManagement:ModelPromptsHistory:restore',
popConfirm: {
placement: 'left',
title: '是否还原任务名称是[' + record.taskName + ']的模型提示词',
confirm: handleRestore.bind(null, record),
}
},
{
label: '查看',
icon: IconEnum.EDIT,
type: 'primary',
ghost: true,
auth: 'productManagement:ModelPromptsHistory:query',
onClick: handleQuery.bind(null, record),
},
// {
// label: '',
// icon: IconEnum.DELETE,
// type: 'primary',
// danger: true,
// ghost: true,
// auth: 'productManagement:ModelPromptsHistory:remove',
// popConfirm: {
// placement: 'left',
// title: '[' + record.id + ']?',
// confirm: handleDelete.bind(null, record),
// },
// },
]"
/>
</template>
</template>
</BasicTable>
<ModelPromptsHistoryModal @register="registerModal" @reload="reload" />
</PageWrapper>
</template>
<script setup lang="ts">
import { PageWrapper } from '@/components/Page';
import { BasicTable, useTable, TableAction } from '@/components/Table';
import { ModelPromptsHistoryList, ModelPromptsHistoryExport, ModelPromptsHistoryRestore } from '@/api/modelConfiguration/ModelPromptsHistory';
import { downloadExcel } from '@/utils/file/download';
import { useModal } from '@/components/Modal';
import ModelPromptsHistoryModal from './ModelPromptsHistoryModal.vue';
import { formSchemas, columns } from './ModelPromptsHistory.data';
import { IconEnum } from '@/enums/appEnum';
defineOptions({ name: 'ModelPromptsHistory' });
const [registerTable, { reload, multipleRemove, selected, getForm }] = useTable({
rowSelection: {
type: 'checkbox',
},
title: '模型提示词历史记录列表',
api: ModelPromptsHistoryList,
showIndexColumn: false,
rowKey: 'id',
useSearchForm: true,
formConfig: {
schemas: formSchemas,
baseColProps: {
xs: 24,
sm: 24,
md: 24,
lg: 6,
},
},
columns: columns,
actionColumn: {
width: 200,
title: '操作',
key: 'action',
fixed: 'right',
},
});
const [registerModal, { openModal }] = useModal();
function handleQuery(record: Recordable) {
openModal(true, { record, update: true });
}
function handleAdd() {
openModal(true, { update: false });
}
async function handleRestore(record: Recordable) {
await ModelPromptsHistoryRestore(record.id);
await reload();
}
</script>
<style scoped></style>
Loading…
Cancel
Save