Commit 47035afb authored by liwei's avatar liwei

基础标准页面

parent e1d83978
...@@ -32,7 +32,7 @@ import {useMessage} from "@/hooks/web/useMessage"; ...@@ -32,7 +32,7 @@ import {useMessage} from "@/hooks/web/useMessage";
import {Modal} from "ant-design-vue"; import {Modal} from "ant-design-vue";
import {useModal} from "@/components/Modal"; import {useModal} from "@/components/Modal";
import MoveFile from './moveFile.vue'; import MoveFile from './moveFile.vue';
import ResetName from './resetName.vue'; import ResetName from './MoveModal.vue';
import {router} from "@/router"; import {router} from "@/router";
import CreateTask from './createBasicStandards.vue'; import CreateTask from './createBasicStandards.vue';
import CreateFile from './createStandardsType.vue'; import CreateFile from './createStandardsType.vue';
......
<template> <template>
<BasicModal width="40%" v-bind="$attrs" @register="registerModal" :title="getTitle"> <BasicModal width="40%" v-bind="$attrs" @register="registerModal" :title="getTitle" @ok="handleSubmit">
<BasicForm @register="registerForm" /> <BasicForm @register="registerForm">
<template #formFooter>
<a-Button type="info" @click="handleDownByData" style="margin-left: 150px;border-color: #4aabfe">下载文件模版</a-Button>
</template>
</BasicForm>
</BasicModal> </BasicModal>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import {ref, computed, unref, reactive} from 'vue'; import {ref, computed, unref, reactive} from 'vue';
import { BasicModal, useModalInner } from '@/components/Modal'; import { BasicModal, useModalInner } from '@/components/Modal';
import { BasicForm, useForm } from '@/components/Form'; import { BasicForm, useForm } from '@/components/Form';
import { accountFormSchema } from './basicStandards.data'; import { importRelativeFormSchema } from './basicStandards.data';
import { getDeptList } from '@/api/system/dept/dept';
import {addUserApi,UserDetailApi,UserUpdataApi} from '@/api/system/user/user'
import { encryptTwo } from '../../../../src/utils/jsencrypt.js'
import { useMessage } from '@/hooks/web/useMessage'; import { useMessage } from '@/hooks/web/useMessage';
import {TreeData} from "@/views/system/institution/institutionData"; import { BasicUpload } from '@/components/Upload';
import { uploadApi } from '@/api/sys/upload';
import {downloadByData} from "@/utils/file/download";
defineOptions({ name: 'AccountModal' }); defineOptions({ name: 'AccountModal' });
const emit = defineEmits(['success', 'register']); const emit = defineEmits(['success', 'register']);
const { createMessage } = useMessage(); const { createMessage } = useMessage();
const isUpdate = ref(true); const getTitle = computed(() => ('导入关联关系'));
const isMove = ref(false);
const rowId = ref('');
//获取接口数据并放在下拉框里(这里是打开了一个弹框) //获取接口数据并放在下拉框里(这里是打开了一个弹框)
//初始化表单 //初始化表单
const [registerForm, { setFieldsValue, updateSchema, resetFields, validate }] = useForm({ const [registerForm, { setFieldsValue, updateSchema, resetFields, validate }] = useForm({
labelWidth: 100, labelWidth: 100,
baseColProps: { lg: 12, md: 24 }, baseColProps: { lg: 12, md: 24 },
schemas: accountFormSchema, schemas: importRelativeFormSchema,
showActionButtonGroup: false, showActionButtonGroup: false,
actionColOptions: { actionColOptions: {
span: 23, span: 23,
}, },
}); });
//初始化弹框 //初始化弹框
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => { const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
resetFields(); resetFields();
setModalProps({ confirmLoading: false }); setModalProps({ confirmLoading: false });
setModalProps({ showOkBtn: false });
isUpdate.value = !!data?.isUpdate;
isMove.value = !!data?.isMove;
if (unref(isUpdate)) {
// 获取行数据的id
rowId.value = data.record.businessId;
// 塞值
setFieldsValue({
...data.record,
});
}
const treeList = handleTree(TreeData, 'businessId',undefined,undefined,undefined)
updateSchema([
{
field: 'institutionId',
componentProps: {
treeData: treeList
},
},
]);
}); });
const getTitle = computed(() => ('查看属性')); /**下载*/
function handleDownByData() {
downloadByData('text content', '导入关联关系模版.xls');
}
/**上传事件*/
function handleChange(list: string[]) {
createMessage.success(`已上传文件${JSON.stringify(list)}`);
}
function handleTree(data, id, parentId, children, rootId) { /**提交按钮*/
id = id || 'id' function handleSubmit() {
parentId = parentId || 'parentId' createMessage.success('导入成功!')
children = children || 'children' closeModal();
rootId = rootId || Math.min.apply(Math, data.map(item => { return item[parentId] })) || 0
// 对源数据深度克隆
const cloneData = JSON.parse(JSON.stringify(data))
// 循环所有项
const treeData = cloneData.filter(father => {
const branchArr = cloneData.filter(child => {
// 返回每一项的子级数组
return father[id] === child[parentId]
})
branchArr.length > 0 ? father.children = branchArr : ''
// 返回第一层
return father[parentId] === rootId
})
return treeData !== '' ? treeData : data
} }
</script> </script>
<template> <template>
<BasicModal width="50%" v-bind="$attrs" @register="registerModal" :title="getTitle" @ok="handleSubmit"> <BasicModal width="40%" v-bind="$attrs" @register="registerModal" :title="getTitle" @ok="handleSubmit">
<BasicTable @register="registerTable"></BasicTable> <BasicForm @register="registerForm">
<template #formFooter>
<a-Button type="info" @click="handleDownByData" style="margin-left: 150px;border-color: #4aabfe">下载文件模版</a-Button>
</template>
</BasicForm>
</BasicModal> </BasicModal>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import {ref, computed, unref, reactive} from 'vue';
import { BasicModal, useModalInner } from '@/components/Modal'; import { BasicModal, useModalInner } from '@/components/Modal';
import { BasicForm, useForm } from '@/components/Form'; import { BasicForm, useForm } from '@/components/Form';
import { reactive,unref,onDeactivated,onMounted,ref } from 'vue'; import { importRelativeFormSchema } from './basicStandards.data';
import { BasicTable, useTable, TableAction } from '@/components/Table';
import { useMessage } from '@/hooks/web/useMessage'; import { useMessage } from '@/hooks/web/useMessage';
import { useModal } from '@/components/Modal'; import { BasicUpload } from '@/components/Upload';
import {addUserData, columns, searchFormSchema, TreeData} from './basicStandardsData'; import { uploadApi } from '@/api/sys/upload';
import { useGo } from '@/hooks/web/usePage'; import {downloadByData} from "@/utils/file/download";
import { downloadByData } from '@/utils/file/download'; defineOptions({ name: 'AccountModal' });
import { useRoute,onBeforeRouteLeave } from 'vue-router';
import { useFilterStore } from '@/store/modules/filterData';
import {useUserStore} from "@/store/modules/user";
import { userData } from "@/views/system/institution/institutionData";
defineOptions({ name: 'AccountManagement' }); const emit = defineEmits(['success', 'register']);
const { createMessage } = useMessage(); const { createMessage } = useMessage();
const filterStore = useFilterStore(); const getTitle = computed(() => ('导入关联关系'));
const route = useRoute(); //获取接口数据并放在下拉框里(这里是打开了一个弹框)
const go = useGo(); //初始化表单
const [registerMoveUser, { openModal: openMoveUserModal }] = useModal(); const [registerForm, { setFieldsValue, updateSchema, resetFields, validate }] = useForm({
const searchInfo = reactive<Recordable>({});
const emit = defineEmits(['success', 'register']);
const tableData = ref([])
const isAdd = ref(true)
const [registerTable, { reload, updateTableDataRecord, getSearchInfo,getForm,getRowSelection }] = useTable({
title: '添加用户',
api: async (params) => {
const response = {
pageNu: "1",
pageSize: "10",
pages: "1",
total: tableData.value.length,
code:'',
message:'',
data: [],
};
var data = []
data = tableData.value
if (params.name != undefined && params.name != '' && params.name != null){
//过滤出名字包含params.name的数据
data = data.filter((item) => item.name.includes(params.name));
}
if (params.username != undefined && params.username != '' && params.username != null){
data = data.filter((item) => item.username.includes(params.username));
}
return { ...response, data: data };
},
rowKey: 'businessId',
columns,
rowSelection: true,
formConfig: {
labelWidth: 100, labelWidth: 100,
schemas: searchFormSchema, baseColProps: { lg: 12, md: 24 },
autoSubmitOnEnter: true, schemas: importRelativeFormSchema,
}, showActionButtonGroup: false,
useSearchForm: true, actionColOptions: {
showTableSetting: false, span: 23,
bordered: true, },
handleSearchInfoFn(info) { });
return info;
},
});
//初始化弹框 //初始化弹框
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => { const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
resetFields();
setModalProps({ confirmLoading: false }); setModalProps({ confirmLoading: false });
isAdd.value = !!data?.isAdd;
});
});
/** 新增成功*/ /**下载*/
function handleSubmit() { function handleDownByData() {
const rowSelection = getRowSelection().selectedRowKeys; downloadByData('text content', '导入关联关系模版.xls');
if (rowSelection.length>0){
//已选中
//根据选中的查询用户 然后进行添加
let data = []
data = tableData.value.filter((item) => rowSelection.includes(item.businessId));
emit('success', { isAdd: unref(isAdd), values: { ...data },length: rowSelection.length });
closeModal();
} }
}
/**上传事件*/
function handleChange(list: string[]) {
createMessage.success(`已上传文件${JSON.stringify(list)}`);
}
onMounted(() => { /**提交按钮*/
function handleSubmit() {
tableData.value = addUserData createMessage.success('导入成功!')
}); closeModal();
}
</script> </script>
<template>
<BasicModal width="50%" v-bind="$attrs" @register="registerModal" :title="getTitle">
<BasicTable @register="registerTable">
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'action'">
<TableAction
:actions="[
{
label: '对比',
onClick: contrastButton.bind(null, record),
},
{
label: '撤回',
onClick: withdrawButton.bind(null, record),
},
{
// icon: 'clarity:note-edit-line',
label: '查看',
onClick: detailButton.bind(null, record),
},
]"
/>
</template>
</template>
</BasicTable>
</BasicModal>
</template>
<script lang="ts" setup>
import { BasicModal, useModalInner } from '@/components/Modal';
import { BasicForm, useForm } from '@/components/Form';
import {reactive, unref, onDeactivated, onMounted, ref, computed} from 'vue';
import { BasicTable, useTable, TableAction } from '@/components/Table';
import { useMessage } from '@/hooks/web/useMessage';
import { useModal } from '@/components/Modal';
import { searchFormSchema, versionColumns, versionData } from './basicStandardsData';
import { useGo } from '@/hooks/web/usePage';
import { downloadByData } from '@/utils/file/download';
import { useRoute,onBeforeRouteLeave } from 'vue-router';
import { useFilterStore } from '@/store/modules/filterData';
import {useUserStore} from "@/store/modules/user";
import { userData } from "@/views/system/institution/institutionData";
defineOptions({ name: 'AccountManagement' });
const { createMessage } = useMessage();
const filterStore = useFilterStore();
const route = useRoute();
const go = useGo();
const [registerMoveUser, { openModal: openMoveUserModal }] = useModal();
const searchInfo = reactive<Recordable>({});
const emit = defineEmits(['success', 'register']);
const getTitle = computed(() => ('版本管理'));
const tableData = ref([])
const isAdd = ref(true)
const [registerTable, { reload, updateTableDataRecord, getSearchInfo,getForm,getRowSelection }] = useTable({
api: async (params) => {
const response = {
pageNu: "1",
pageSize: "10",
pages: "1",
total: tableData.value.length,
code:'',
message:'',
data: [],
};
var data = []
data = tableData.value
if (params.name != undefined && params.name != '' && params.name != null){
//过滤出名字包含params.name的数据
data = data.filter((item) => item.name.includes(params.name));
}
if (params.username != undefined && params.username != '' && params.username != null){
data = data.filter((item) => item.username.includes(params.username));
}
return { ...response, data: data };
},
rowKey: 'businessId',
columns:versionColumns,
rowSelection: true,
formConfig: {
labelWidth: 100,
schemas: searchFormSchema,
autoSubmitOnEnter: true,
},
useSearchForm: true,
showTableSetting: false,
showIndexColumn: false,
bordered: true,
actionColumn: {
width: 150,
title: '操作',
dataIndex: 'action',
},
handleSearchInfoFn(info) {
return info;
},
});
//初始化弹框
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
setModalProps({ confirmLoading: false,showOkBtn:false,showCancelBtn:false });
isAdd.value = !!data?.isAdd;
});
/** 对比成功*/
function contrastButton() {
}
/** 撤回成功*/
function withdrawButton() {
}
/** 查看*/
function detailButton(record) {
console.log('record:',record)
emit('success', { values: { ...record }});
closeModal();
}
onMounted(() => {
tableData.value = versionData
});
</script>
...@@ -5,7 +5,8 @@ import {Input, Select, Tag} from "ant-design-vue"; ...@@ -5,7 +5,8 @@ import {Input, Select, Tag} from "ant-design-vue";
import { Switch } from 'ant-design-vue'; import { Switch } from 'ant-design-vue';
import {useMessage} from "@/hooks/web/useMessage"; import {useMessage} from "@/hooks/web/useMessage";
import {changeFlagApi} from "@/api/system/user/user"; import {changeFlagApi} from "@/api/system/user/user";
import {DescItem} from "@/components/Description"; // 引入开关组件 import {DescItem} from "@/components/Description";
import {uploadApi} from "@/api/sys/upload"; // 引入开关组件
type CheckedType = boolean | string | number; type CheckedType = boolean | string | number;
/**主页面列表 表头*/ /**主页面列表 表头*/
...@@ -14,7 +15,6 @@ export const columns: BasicColumn[] = [ ...@@ -14,7 +15,6 @@ export const columns: BasicColumn[] = [
title: '标准中文名称', title: '标准中文名称',
dataIndex: 'standardChineseName', dataIndex: 'standardChineseName',
width: 150, width: 150,
slots: { customRender: 'standardChineseName' },
}, },
{ {
title: '标准编号', title: '标准编号',
...@@ -25,6 +25,7 @@ export const columns: BasicColumn[] = [ ...@@ -25,6 +25,7 @@ export const columns: BasicColumn[] = [
title: '引用标准', title: '引用标准',
dataIndex: 'referenceStandard', dataIndex: 'referenceStandard',
width: 150, width: 150,
slots: { customRender: 'referenceStandard' },
}, },
{ {
title: '业务定义', title: '业务定义',
...@@ -43,7 +44,7 @@ export const columns: BasicColumn[] = [ ...@@ -43,7 +44,7 @@ export const columns: BasicColumn[] = [
}, },
]; ];
/**主页面搜索表单*/ /**主页面搜索 表单*/
export const searchFormSchema: FormSchema[] = [ export const searchFormSchema: FormSchema[] = [
{ {
field: 'standardCode', field: 'standardCode',
...@@ -74,55 +75,50 @@ export const searchFormSchema: FormSchema[] = [ ...@@ -74,55 +75,50 @@ export const searchFormSchema: FormSchema[] = [
}, },
]; ];
export const accountFormSchema: any[] = [ /**导入关联关系 表单*/
export const importRelativeFormSchema: FormSchema[] = [
{ {
field: 'fileName', field: 'file',
label: '文件名称', component: 'Upload',
component: 'Input', label: '导入文件选择',
colProps: { lg: 24, md: 24 }, rules: [{ required: true, message: '请选择上传文件' }],
componentProps: { componentProps: {
disabled: true api: uploadApi,
} },
}, labelWidth: 150,
{
field: 'location',
label: '保存位置',
component: 'Input',
colProps: { lg: 24, md: 24 },
componentProps: {
disabled: true
}
},
{
field: 'createDate',
label: '创建时间',
component: 'Input',
colProps: { lg: 24, md: 24 }, colProps: { lg: 24, md: 24 },
componentProps: {
disabled: true
}
}, },
{ {
field: 'updateDate', field: 'agreement',
label: '最近修改', component: 'RadioGroup',
component: 'Input', label: '关联关系重名',
colProps: { lg: 24, md: 24 }, colProps: { lg: 24, md: 24 },
labelWidth: 150,
componentProps: { componentProps: {
disabled: true defaultValue:'1',
} options: [
{
label: '全部放弃',
value: '1',
},
{
label: '全部替换',
value: '2',
},
],
},
}, },
]; ];
export const moveFormSchema: any[] = [
export const MoveFormSchema: any[] = [
{ {
field: 'taskId', field: 'treeId',
label: '路径', label: '路径',
component: 'TreeSelect', component: 'TreeSelect',
colProps: { lg: 24, md: 24 }, colProps: { lg: 24, md: 24 },
componentProps: { componentProps: {
fieldNames: { fieldNames: {
label: 'fileName', label: 'standardChineseName',
value: 'businessId', value: 'businessId',
}, },
getPopupContainer: () => document.body, getPopupContainer: () => document.body,
......
...@@ -7,47 +7,43 @@ import {useMessage} from "@/hooks/web/useMessage"; ...@@ -7,47 +7,43 @@ import {useMessage} from "@/hooks/web/useMessage";
import {changeFlagApi} from "@/api/system/user/user"; // 引入开关组件 import {changeFlagApi} from "@/api/system/user/user"; // 引入开关组件
type CheckedType = boolean | string | number; type CheckedType = boolean | string | number;
/**版本管理列表 表头*/
export const columns: BasicColumn[] = [ export const versionColumns: BasicColumn[] = [
{ {
title: '姓名', title: '版本ID',
dataIndex: 'name', dataIndex: 'versionId',
width: 150, width: 150,
}, },
{ {
title: '登录名', title: '版本名称',
dataIndex: 'username', dataIndex: 'versionName',
width: 150, width: 150,
}, },
{ {
title: '用户角色', title: '提交人',
dataIndex: 'roleName', dataIndex: 'submitBy',
width: 150, width: 150,
}, },
{ {
title: '创建时间', title: '提交时间',
dataIndex: 'createDate', dataIndex: 'submitDate',
width: 150,
},
{
title: '备注',
dataIndex: 'remarks',
width: 150, width: 150,
}, },
]; ];
/**版本管理弹出框 搜索表头*/
export const searchFormSchema: FormSchema[] = [ export const searchFormSchema: FormSchema[] = [
{ {
field: 'name', field: 'name',
label: '姓名', label: '',
component: 'Input', component: 'Input',
componentProps: { componentProps: {
placeholder: '请输入姓名', placeholder: '请输入版本名称',
},
colProps: { span: 7 },
},
{
field: 'username',
label: '登录名',
component: 'Input',
componentProps: {
placeholder: '请输入登录名',
}, },
colProps: { span: 7 }, colProps: { span: 7 },
}, },
...@@ -65,6 +61,10 @@ export const TreeData: any[] = [ ...@@ -65,6 +61,10 @@ export const TreeData: any[] = [
"publishStatus": "已发布", "publishStatus": "已发布",
"holderGroup": "默认工作组", "holderGroup": "默认工作组",
"standardCode": "BAS000001", "standardCode": "BAS000001",
"referenceStandard":[
{ icon: '😂', text: '数据源1' },
{ icon: '🔍', text: '数据源2' },
],
"createDate": "2024-10-24 10:04:04", "createDate": "2024-10-24 10:04:04",
"updateDate": "2024-10-24 10:04:04", "updateDate": "2024-10-24 10:04:04",
"icon": "ant-design:partition-outlined", "icon": "ant-design:partition-outlined",
...@@ -188,6 +188,9 @@ export const TreeData: any[] = [ ...@@ -188,6 +188,9 @@ export const TreeData: any[] = [
"publishStatus": "已发布", "publishStatus": "已发布",
"businessDefinition": "对外投资出资方式", "businessDefinition": "对外投资出资方式",
"standardCode": "BAS000004", "standardCode": "BAS000004",
"referenceStandard":[
{ icon: '🌐🔍', text: '数据源1' },
],
"ancestors": "0,100,102", "ancestors": "0,100,102",
"location": "/基础标准/个人工作区/对外投资出资方式", "location": "/基础标准/个人工作区/对外投资出资方式",
"holderGroup": "个人工作区", "holderGroup": "个人工作区",
...@@ -223,6 +226,9 @@ export const TreeData: any[] = [ ...@@ -223,6 +226,9 @@ export const TreeData: any[] = [
"collaborativeDepartment": "人力资源部, 技术部" "collaborativeDepartment": "人力资源部, 技术部"
}, },
{ {
"referenceStandard":[
{ icon: '🌐🔍', text: '数据源1' },
],
"businessId": 202, "businessId": 202,
"standardChineseName": "对外投资控股标志", "standardChineseName": "对外投资控股标志",
"anotherName": "对外投资控股标志", "anotherName": "对外投资控股标志",
...@@ -265,6 +271,9 @@ export const TreeData: any[] = [ ...@@ -265,6 +271,9 @@ export const TreeData: any[] = [
"collaborativeDepartment": "人力资源部, 技术部" "collaborativeDepartment": "人力资源部, 技术部"
}, },
{ {
"referenceStandard":[
{ icon: '🌐🔍', text: '数据源1' },
],
"businessId": 203, "businessId": 203,
"standardChineseName": "对外投资企业证明", "standardChineseName": "对外投资企业证明",
"anotherName": "对外投资企业证明", "anotherName": "对外投资企业证明",
...@@ -307,6 +316,9 @@ export const TreeData: any[] = [ ...@@ -307,6 +316,9 @@ export const TreeData: any[] = [
"collaborativeDepartment": "人力资源部, 技术部" "collaborativeDepartment": "人力资源部, 技术部"
}, },
{ {
"referenceStandard":[
{ icon: '🌐🔍', text: '数据源1' },
],
"businessId": 204, "businessId": 204,
"standardChineseName": "zy_basic_standard", "standardChineseName": "zy_basic_standard",
"anotherName": "zy_basic_standard", "anotherName": "zy_basic_standard",
...@@ -587,65 +599,28 @@ export const fileData: any[] = [ ...@@ -587,65 +599,28 @@ export const fileData: any[] = [
]; ];
export const addUserData: any[] = [ /**版本管理列表 数据*/
export const versionData: any[] = [
{ {
"delFlag" : "0", "versionId":"1",
"flag" : "1", "versionName":"V1",
"businessId" : 400, "submitBy":"admin",
"username" : "tianjia1", "submitDate":"2021/11/15 18:55:06",
"nickName" : "添加用户1", "remarks":"STANDARD_BASIC添加发布的第一个版"
"userType" : "1",
"name" : "添加用户1",
"roleName":"工作区访客",
"createDate": "2024-10-24 10:04:04",
"institutionId" : null,
"institutionName" : "",
"code":"123f",
"identity" : "1",
"roleIds" : null,
"roleNames" : "三级用户",
"roleList" : null,
"menuList" : [ ]
}, },
{ {
"delFlag" : "0", "versionId":"2",
"flag" : "1", "versionName":"V2",
"businessId" : 402, "submitBy":"admin",
"username" : "tianjia2", "submitDate":"2021/11/11 18:55:06",
"nickName" : "添加用户2", "remarks":"STANDARD_BASIC添加发布的第二个版"
"userType" : "1",
"name" : "添加用户2",
"roleName":"工作区访客",
"createDate": "2024-10-25 10:05:05",
"sex" : "0",
"institutionId" : null,
"institutionName" : "",
"code":"123a",
"identity" : "1",
"roleIds" : null,
"roleNames" : null,
"roleList" : null,
"menuList" : [ ]
}, },
{ {
"delFlag": "0", "versionId":"3",
"flag": "1", "versionName":"V3",
"businessId": 403, "submitBy":"admin",
"username": "tianjia3", "submitDate":"2021/11/11 18:55:06",
"nickName": "添加用户3", "remarks":"标准导入"
"userType": "1",
"name": "添加用户3",
"roleName":"工作区访客",
"createDate": "2024-10-26 10:06:06",
"sex": "1",
"institutionId": null,
"institutionName" : "",
"code":"123c",
"identity": "1",
"roleIds": null,
"roleNames": "超级管理员",
"roleList": null,
"menuList": []
}, },
]; ];
...@@ -669,3 +644,15 @@ export const personData = { ...@@ -669,3 +644,15 @@ export const personData = {
b5: '无', b5: '无',
}; };
export const treeDataListTwo = [
{
label: '默认工作组',
businessId: 1,
children: [
{ label: '默认工作组01', businessId: 2 },
{ label: '默认工作组02', businessId: 3 },
{ label: '默认工作组03', businessId: 4 },
{ label: '默认工作组04', businessId: 5 },
],
},
]
<template> <template>
<BasicModal width="40%" v-bind="$attrs" @register="registerModal" :title="getTitle" @ok="handleSubmit"> <BasicModal width="40%" v-bind="$attrs" @register="registerModal" :title="getTitle" @ok="handleSubmit">
<BasicForm @register="registerForm" /> <BasicForm @register="registerForm" />
<div class="modalRow">
<div>可见范围</div>
<div class="right">
<div class="clearAll">
清空
</div>
<div>
<a-button type="primary">添加工作组</a-button>
</div>
</div>
</div>
<div class="addDialogBG">
<div style="float: right">
<Icon icon="ant-design:delete-outlined" :size="25" :color="'#ED6F6F'" />
</div>
<TreeTwo class="w-1/4 xl:w-1/5" @select="handleSelect" />
</div>
</BasicModal> </BasicModal>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
...@@ -13,6 +30,7 @@ ...@@ -13,6 +30,7 @@
import { useMessage } from '@/hooks/web/useMessage'; import { useMessage } from '@/hooks/web/useMessage';
import {TreeData} from "@/views/dataStandards/basicStandards/basicStandardsData"; import {TreeData} from "@/views/dataStandards/basicStandards/basicStandardsData";
import {createBasicStandardsFormSchema} from './basicStandards.data'; import {createBasicStandardsFormSchema} from './basicStandards.data';
import TreeTwo from '@/views/dataStandards/basicStandards/TreeTwo.vue'
defineOptions({ name: 'AccountModal' }); defineOptions({ name: 'AccountModal' });
const emit = defineEmits(['success', 'register']); const emit = defineEmits(['success', 'register']);
...@@ -82,3 +100,28 @@ ...@@ -82,3 +100,28 @@
} }
</script> </script>
<style lang="scss" scoped>
.modalRow{
padding: 0 20px;
display: flex;
align-items: center;
justify-content: space-between;
.clearAll{
padding-right: 10px;
font-size: 16px;
}
.right{
display: flex;
align-items: center;
justify-content: space-between;
}
}
.addDialogBG{
margin: 10px;
border-radius: 10px;
padding: 20px;
background-color: #E8ECF7;
width: 98%;
height: 400px;
}
</style>
<template> <template>
<PageWrapper title="基础标准详情页" contentBackground> <div style="background-color: white">
<div style="display:flex;margin-top: 15px;margin-bottom: 15px;justify-content: space-between; align-items: center;" v-if="isShow">
<div style="margin-left: 15px;font-size: 15px;font-weight: bold">
查看版本
<Select
v-model:value="optionValue"
show-search
placeholder="请选择版本"
style="width: 200px"
:options="options"
@change="handleChange"
></Select>
</div>
<div>
<a-button type="primary" @click="editButton">版本对比</a-button>
<a-button type="primary" style="margin-left: 10px" @click="resetButton">回滚</a-button>
<a-button type="primary" style="margin-left: 10px" @click="exitButton">退出查看</a-button>
</div>
</div>
<Divider />
<div style="display: flex;justify-content: space-between; align-items: center;margin-bottom: 10px;margin-left: 12px"> <div style="display: flex;justify-content: space-between; align-items: center;margin-bottom: 10px;margin-left: 12px">
<div style="margin-top: 10px;display: flex;font-weight: bold;font-size: 25px"> <div style="margin-top: 10px;display: flex;font-weight: bold;font-size: 25px;margin-left: 10px">
{{title}} {{title}}
<div style="font-size: 15px;padding-top: 15px;padding-left: 10px"> <div style="font-size: 15px;padding-top: 15px;padding-left: 10px">
版本:v2 版本:{{optionValue}}
</div> </div>
</div> </div>
<div style="margin-top: 10px;display: flex"> <div style="margin-top: 10px;display: flex" v-if="!isShow">
<a-button type="primary" @click="editButton">编辑标准</a-button> <a-button type="primary" @click="editButton">编辑标准</a-button>
<a-button type="primary" style="margin-left: 10px" @click="versionButton">版本管理</a-button> <a-button type="primary" style="margin-left: 10px" @click="versionButton">版本管理</a-button>
</div> </div>
...@@ -19,9 +38,13 @@ ...@@ -19,9 +38,13 @@
<Divider /> <Divider />
<BasicForm @register="registerForm3" /> <BasicForm @register="registerForm3" />
<Divider /> <Divider />
</PageWrapper>
<!-- 版本管理 弹窗-->
<VersionModal @register="registerModal" @success="handleSuccess" />
</div>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { Select } from 'ant-design-vue';
import { Description } from '@/components/Description'; import { Description } from '@/components/Description';
import { PageWrapper } from '@/components/Page'; import { PageWrapper } from '@/components/Page';
import { Divider } from 'ant-design-vue'; import { Divider } from 'ant-design-vue';
...@@ -35,13 +58,17 @@ import { ...@@ -35,13 +58,17 @@ import {
} from './basicStandards.data'; } from './basicStandards.data';
import {onMounted, ref} from "vue"; import {onMounted, ref} from "vue";
import {useRoute} from "vue-router"; import {useRoute} from "vue-router";
import VersionModal from '@/views/dataStandards/basicStandards/VersionModal.vue'
import {useModal} from "@/components/Modal";
import { useMessage } from '@/hooks/web/useMessage';
const route = useRoute() const route = useRoute()
const title = ref('') const title = ref('')
const formData = ref({}) const formData = ref({})
const businessId = ref('') const businessId = ref('')
const isShow = ref(false)
const optionValue = ref('')
const [registerModal, { openModal }] = useModal();
const { createMessage, createConfirm } = useMessage();
const [registerForm1, { setFieldsValue: setFieldsValue1 }] = useForm({ const [registerForm1, { setFieldsValue: setFieldsValue1 }] = useForm({
labelWidth: 100, labelWidth: 100,
baseColProps: { lg: 12, md: 24 }, baseColProps: { lg: 12, md: 24 },
...@@ -72,6 +99,12 @@ const [registerForm3, { setFieldsValue: setFieldsValue3 }] = useForm({ ...@@ -72,6 +99,12 @@ const [registerForm3, { setFieldsValue: setFieldsValue3 }] = useForm({
}, },
}); });
const options = ref<any>([
{ value: 'V1', label: 'V1' },
{ value: 'V2', label: 'V2' },
{ value: 'V3', label: 'V3' },
]);
/**编辑标准*/ /**编辑标准*/
function editButton(record) { function editButton(record) {
router.push({ router.push({
...@@ -82,13 +115,39 @@ function editButton(record) { ...@@ -82,13 +115,39 @@ function editButton(record) {
}); });
} }
/**保存*/ /**版本管理 弹窗*/
function versionButton(record) { function versionButton(record) {
openModal(true, {
});
}
/**下拉框改变事件*/
function handleChange(value) {
}
/**回滚*/
function resetButton(value) {
createMessage.success('回滚成功!')
}
/**退出查看*/
function exitButton(record) {
isShow.value = false
optionValue.value = 'V3'
}
/**版本管理 弹出回调函数*/
function handleSuccess(record) {
optionValue.value = record.values.versionName
isShow.value = true
} }
/**初始化*/ /**初始化*/
onMounted(() => { onMounted(() => {
optionValue.value = 'V3'
businessId.value = route.query.businessId businessId.value = route.query.businessId
const data = TreeData.filter(item => item.businessId == businessId.value) const data = TreeData.filter(item => item.businessId == businessId.value)
title.value = data[0].standardChineseName title.value = data[0].standardChineseName
......
...@@ -12,6 +12,9 @@ ...@@ -12,6 +12,9 @@
</div> </div>
<Divider /> <Divider />
<BasicForm @register="registerForm1" /> <BasicForm @register="registerForm1" />
<div style="margin-left: 10px">
命名字典映射<a-button style="margin-left: 10px;border-color: #4aabfe" @click="chooseButton">选择</a-button>
</div>
<Divider /> <Divider />
<BasicForm @register="registerForm2" /> <BasicForm @register="registerForm2" />
<Divider /> <Divider />
......
...@@ -6,6 +6,8 @@ ...@@ -6,6 +6,8 @@
<a-button type="primary" @click="copyButton">复制到</a-button> <a-button type="primary" @click="copyButton">复制到</a-button>
<a-button type="primary" @click="deleteButton">删除</a-button> <a-button type="primary" @click="deleteButton">删除</a-button>
<a-button type="primary" @click="MoveButton">移动</a-button> <a-button type="primary" @click="MoveButton">移动</a-button>
<a-button type="primary" @click="ImportRelativeButton">导入关联关系</a-button>
<a-button type="primary" @click="ImportDataStandardsButton">导入数据标准</a-button>
<a-button type="primary" @click="ExportRelativeButton">导出关联关系</a-button> <a-button type="primary" @click="ExportRelativeButton">导出关联关系</a-button>
<a-button type="primary" @click="ExportDataStandardsButton">导出数据标准</a-button> <a-button type="primary" @click="ExportDataStandardsButton">导出数据标准</a-button>
<a-button type="primary" @click="batchPublishButton">批量发布</a-button> <a-button type="primary" @click="batchPublishButton">批量发布</a-button>
...@@ -50,14 +52,20 @@ ...@@ -50,14 +52,20 @@
/> />
</template> </template>
</template> </template>
<template #fileName="{ text, record }"> <template #referenceStandard="{ text, record }">
<a @click="showDetails(record)"> {{ text }}</a> <span v-for="(item, index) in text" :key="index">
{{ item.icon }}
</span>
</template> </template>
</BasicTable> </BasicTable>
<!-- 新建基础标准 弹窗--> <!-- 新建基础标准 弹窗-->
<CreateBasicStandards @register="registerCreateBasicStandardsModal" @success="handleSuccess" /> <CreateBasicStandards @register="registerCreateBasicStandardsModal" @success="handleSuccess" />
<!-- 新建标准分类 弹窗--> <!-- 新建标准分类 弹窗-->
<CreateStandardsType @register="registerCreateStandardsTypeModal" @success="handleSuccess" /> <CreateStandardsType @register="registerCreateStandardsTypeModal" @success="handleSuccess" />
<!-- 导入关联关系 弹窗-->
<ImportRelativeModal @register="registerImportRelativeModal" @success="handleSuccess" />
<!-- 移动 弹窗-->
<MoveModal @register="registerMoveModal" @success="handleSuccess" />
</PageWrapper> </PageWrapper>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
...@@ -69,11 +77,16 @@ ...@@ -69,11 +77,16 @@
import { useModal } from '@/components/Modal'; import { useModal } from '@/components/Modal';
import CreateBasicStandards from './createBasicStandards.vue'; import CreateBasicStandards from './createBasicStandards.vue';
import CreateStandardsType from './createStandardsType.vue'; import CreateStandardsType from './createStandardsType.vue';
import ImportRelativeModal from './ImportRelativeModal.vue';
import MoveModal from './MoveModal.vue';
import { columns, searchFormSchema } from './basicStandards.data'; import { columns, searchFormSchema } from './basicStandards.data';
import { useGo } from '@/hooks/web/usePage'; import { useGo } from '@/hooks/web/usePage';
import { useRoute } from 'vue-router'; import { useRoute } from 'vue-router';
import { TreeData } from "@/views/dataStandards/basicStandards/basicStandardsData"; import { TreeData } from "@/views/dataStandards/basicStandards/basicStandardsData";
import { router } from '@/router'; import { router } from '@/router';
import { demoListApi } from '@/api/demo/table';
import {exportUserList} from "@/api/system/user/user";
import {downloadByData} from "@/utils/file/download";
defineOptions({ name: 'AccountManagement' }); defineOptions({ name: 'AccountManagement' });
const { createMessage, createConfirm } = useMessage(); const { createMessage, createConfirm } = useMessage();
...@@ -81,6 +94,8 @@ ...@@ -81,6 +94,8 @@
const go = useGo(); const go = useGo();
const [registerCreateBasicStandardsModal, { openModal: openCreateBasicStandardsModal }] = useModal(); const [registerCreateBasicStandardsModal, { openModal: openCreateBasicStandardsModal }] = useModal();
const [registerCreateStandardsTypeModal, { openModal: openCreateStandardsTypeModal }] = useModal(); const [registerCreateStandardsTypeModal, { openModal: openCreateStandardsTypeModal }] = useModal();
const [registerImportRelativeModal, { openModal: openImportRelativeModal }] = useModal();
const [registerMoveModal, { openModal: openMoveModal }] = useModal();
const searchInfo = reactive<Recordable>({}); const searchInfo = reactive<Recordable>({});
const tableData = ref([]) const tableData = ref([])
const [registerTable, { reload, updateTableDataRecord, getSearchInfo,getForm,getRowSelection }] = useTable({ const [registerTable, { reload, updateTableDataRecord, getSearchInfo,getForm,getRowSelection }] = useTable({
...@@ -88,6 +103,7 @@ ...@@ -88,6 +103,7 @@
api: async (params) => { api: async (params) => {
//过滤掉tableData.value中,businessId等于100的 //过滤掉tableData.value中,businessId等于100的
var data = []; var data = [];
if (params.taskId == undefined || params.taskId == ''){ if (params.taskId == undefined || params.taskId == ''){
data = tableData.value.filter((item) => item.businessId >= 200); data = tableData.value.filter((item) => item.businessId >= 200);
}else if (params.taskId >= 200){ }else if (params.taskId >= 200){
...@@ -132,19 +148,11 @@ ...@@ -132,19 +148,11 @@
}, },
}); });
/**复制到 按钮*/
function showDetails(record) {
router.push({
path: '/commonFile/fileDetail',
query: {
fileName: record.fileName,
},
});
}
function copyButton() { function copyButton() {
openMoveModal(true, {
});
} }
/**查看详情*/ /**查看详情*/
...@@ -157,7 +165,15 @@ ...@@ -157,7 +165,15 @@
}); });
} }
function stickButton() { /**移动*/
function MoveButton() {
openMoveModal(true, {
});
}
/**批量发布*/
function batchPublishButton() {
} }
...@@ -188,6 +204,31 @@ ...@@ -188,6 +204,31 @@
}); });
} }
/**导入关联关系*/
async function ImportRelativeButton() {
openImportRelativeModal(true, {
});
}
/**导入数据标准*/
async function ImportDataStandardsButton() {
}
/**导出关联关系*/
async function ExportRelativeButton() {
const params = Object.assign({}, getSearchInfo(), getForm().getFieldsValue());
const data = await exportUserList(params);
downloadByData(data, '关联关系信息' + '.xlsx');
}
/**导出数据标准*/
async function ExportDataStandardsButton() {
const params = Object.assign({}, getSearchInfo(), getForm().getFieldsValue());
const data = await exportUserList(params);
downloadByData(data, '数据标准信息' + '.xlsx');
}
function handleSuccess({ isUpdate, values }) { function handleSuccess({ isUpdate, values }) {
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
import {ref, computed, unref, reactive} from 'vue'; import {ref, computed, unref, reactive} from 'vue';
import { BasicModal, useModalInner } from '@/components/Modal'; import { BasicModal, useModalInner } from '@/components/Modal';
import { BasicForm, useForm } from '@/components/Form'; import { BasicForm, useForm } from '@/components/Form';
import {accountFormSchema, MoveFormSchema } from './basicStandards.data'; import { moveFormSchema } from './basicStandards.data';
import { getDeptList } from '@/api/system/dept/dept'; import { getDeptList } from '@/api/system/dept/dept';
import {resetUserPwd} from '@/api/system/user/user' import {resetUserPwd} from '@/api/system/user/user'
import { useMessage } from '@/hooks/web/useMessage'; import { useMessage } from '@/hooks/web/useMessage';
...@@ -25,7 +25,7 @@ const rowData = ref([]) ...@@ -25,7 +25,7 @@ const rowData = ref([])
const [registerForm, { setFieldsValue, updateSchema, resetFields, validate }] = useForm({ const [registerForm, { setFieldsValue, updateSchema, resetFields, validate }] = useForm({
labelWidth: 100, labelWidth: 100,
baseColProps: { span: 24 }, baseColProps: { span: 24 },
schemas: MoveFormSchema, schemas: moveFormSchema,
showActionButtonGroup: false, showActionButtonGroup: false,
actionColOptions: { actionColOptions: {
span: 23, span: 23,
......
<template>
<div class="m-4 mr-0 overflow-hidden bg-white">
<BasicTree
title="工作组"
ref="treeRef"
toolbar
search
treeWrapperClassName="h-[calc(100%-35px)] overflow-auto"
:clickRowToExpand="true"
:checkable="true"
:defaultExpandAll="true"
:treeData="treeData"
:fieldNames="{ key: 'businessId', title: 'label' }"
@select="handleSelect"
/>
</div>
</template>
<script lang="ts" setup>
import {nextTick, onMounted, ref, unref} from 'vue';
import {BasicTree, TreeActionType, TreeItem} from '@/components/Tree';
import { getDeptList } from '@/api/system/dept/dept';
import {Nullable} from "@vben/types";
import {treeDataListTwo} from "./basicStandardsData";
defineOptions({ name: 'DeptTree' });
const emit = defineEmits(['select']);
const treeData = ref<TreeItem[]>([]);
const treeRef = ref<Nullable<TreeActionType>>(null);
async function fetch() {
treeData.value = treeDataListTwo
await nextTick(() => {
getTree().expandAll(true)
})
}
function getTree() {
const tree = unref(treeRef);
if (!tree) {
throw new Error('tree is null!');
}
return tree;
}
function handleSelect(keys) {
emit('select', keys[0]);
}
onMounted(() => {
fetch();
});
</script>
<style lang="scss" scoped>
.bg-white{
width: 97%;
}
::v-deep(.vben-tree){
background-color: #E8ECF7!important;
}
</style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment