Commit cf12e168 authored by LiXuyang's avatar LiXuyang

Merge remote-tracking branch 'origin/master'

parents 03dae5db 594df71b
<template> <template>
<BasicModal width="50%" v-bind="$attrs" @register="registerModal" :title="getTitle"> <BasicModal width="50%" v-bind="$attrs" @register="registerModal" :title="getTitle">
<BasicTable @register="registerTable"> <BasicTable @register="registerTable">
<template #bodyCell="{ column, record }"> <template #bodyCell="{ column, record }">
<template v-if="column.key === 'action'"> <template v-if="column.key === 'action'">
...@@ -11,7 +11,11 @@ ...@@ -11,7 +11,11 @@
}, },
{ {
label: '撤回', label: '撤回',
onClick: withdrawButton.bind(null, record), popConfirm: {
title: '是否撤回该版本?',
placement: 'left',
confirm: withdrawButton.bind(null, record),
},
}, },
{ {
// icon: 'clarity:note-edit-line', // icon: 'clarity:note-edit-line',
...@@ -26,107 +30,107 @@ ...@@ -26,107 +30,107 @@
</BasicModal> </BasicModal>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { BasicModal, useModalInner } from '@/components/Modal'; import { BasicModal, useModalInner, useModal } from '@/components/Modal';
import { BasicForm, useForm } from '@/components/Form'; import { BasicForm, useForm } from '@/components/Form';
import {reactive, unref, onDeactivated, onMounted, ref, computed} from 'vue'; import { reactive, unref, onDeactivated, onMounted, ref, computed } from 'vue';
import { BasicTable, useTable, TableAction } from '@/components/Table'; 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 { searchFormSchema, versionColumns, versionData } from './basicStandardsData'; import { searchFormSchema, versionColumns, versionData } from './basicStandardsData';
import { useGo } from '@/hooks/web/usePage'; import { useGo } from '@/hooks/web/usePage';
import { downloadByData } from '@/utils/file/download'; import { downloadByData } from '@/utils/file/download';
import { useRoute,onBeforeRouteLeave } from 'vue-router'; import { useRoute, onBeforeRouteLeave } from 'vue-router';
import { useFilterStore } from '@/store/modules/filterData'; import { useFilterStore } from '@/store/modules/filterData';
import {useUserStore} from "@/store/modules/user"; import { useUserStore } from '@/store/modules/user';
import { userData } from "@/views/system/institution/institutionData"; import { userData } from '@/views/system/institution/institutionData';
import {router} from "@/router"; import { router } from '@/router';
defineOptions({ name: 'AccountManagement' }); defineOptions({ name: 'AccountManagement' });
const { createMessage } = useMessage(); const { createMessage } = useMessage();
const filterStore = useFilterStore(); const filterStore = useFilterStore();
const route = useRoute(); const route = useRoute();
const go = useGo(); const go = useGo();
const [registerMoveUser, { openModal: openMoveUserModal }] = useModal(); const [registerMoveUser, { openModal: openMoveUserModal }] = useModal();
const searchInfo = reactive<Recordable>({}); const searchInfo = reactive<Recordable>({});
const emit = defineEmits(['success', 'register']); const emit = defineEmits(['success', 'register']);
const getTitle = computed(() => ('版本管理')); const getTitle = computed(() => '版本管理');
const tableData = ref([]) const tableData = ref([]);
const isAdd = ref(true) const isAdd = ref(true);
const [registerTable, { reload, updateTableDataRecord, getSearchInfo,getForm,getRowSelection }] = useTable({ const [
api: async (params) => { registerTable,
const response = { { reload, updateTableDataRecord, getSearchInfo, getForm, getRowSelection },
pageNu: "1", ] = useTable({
pageSize: "10", api: async (params) => {
pages: "1", const response = {
total: tableData.value.length, pageNu: '1',
code:'', pageSize: '10',
message:'', pages: '1',
data: [], total: tableData.value.length,
}; code: '',
var data = [] message: '',
data = tableData.value data: [],
if (params.name != undefined && params.name != '' && params.name != null){ };
//过滤出名字包含params.name的数据 var data = [];
data = data.filter((item) => item.name.includes(params.name)); data = tableData.value;
} if (params.name != undefined && params.name != '' && params.name != null) {
if (params.username != undefined && params.username != '' && params.username != null){ //过滤出名字包含params.name的数据
data = data.filter((item) => item.username.includes(params.username)); data = data.filter((item) => item.name.includes(params.name));
} }
return { ...response, data: data }; if (params.username != undefined && params.username != '' && params.username != null) {
}, data = data.filter((item) => item.username.includes(params.username));
rowKey: 'businessId', }
columns:versionColumns, return { ...response, data: data };
rowSelection: true, },
formConfig: { rowKey: 'businessId',
labelWidth: 100, columns: versionColumns,
schemas: searchFormSchema, rowSelection: true,
autoSubmitOnEnter: true, formConfig: {
}, labelWidth: 100,
useSearchForm: true, schemas: searchFormSchema,
showTableSetting: false, autoSubmitOnEnter: true,
showIndexColumn: false, },
bordered: true, useSearchForm: true,
actionColumn: { showTableSetting: false,
width: 150, showIndexColumn: false,
title: '操作', bordered: true,
dataIndex: 'action', actionColumn: {
}, width: 150,
handleSearchInfoFn(info) { title: '操作',
return info; dataIndex: 'action',
}, },
}); handleSearchInfoFn(info) {
return info;
},
});
//初始化弹框 //初始化弹框
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => { const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
setModalProps({ confirmLoading: false,showOkBtn:false,showCancelBtn:false }); setModalProps({ confirmLoading: false, showOkBtn: false, showCancelBtn: false });
isAdd.value = !!data?.isAdd; isAdd.value = !!data?.isAdd;
}); });
/** 对比成功*/
function contrastButton() {
closeModal();
router.push({
path: '/dataStandards/basicStandards/basicStandardsContrast',
query: {
businessId: route.query.businessId,
},
});
}
/** 对比成功*/ /** 撤回成功*/
function contrastButton() { function withdrawButton() {
closeModal() createMessage.success('撤回成功!');
router.push({ }
path: '/dataStandards/basicStandards/basicStandardsContrast',
query: {
businessId:route.query.businessId,
},
});
}
/** 撤回成功*/
function withdrawButton() {
createMessage.success('撤回成功!')
}
/** 查看*/ /** 查看*/
function detailButton(record) { function detailButton(record) {
emit('success', { values: { ...record }}); emit('success', { values: { ...record } });
closeModal(); closeModal();
} }
onMounted(() => {
onMounted(() => { tableData.value = versionData;
tableData.value = versionData });
});
</script> </script>
<template> <template>
<div style="background-color: white"> <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
<div style="margin-left: 15px;font-size: 15px;font-weight: bold"> 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 <Select
v-model:value="optionValue" v-model:value="optionValue"
...@@ -10,25 +19,43 @@ ...@@ -10,25 +19,43 @@
style="width: 200px" style="width: 200px"
:options="options" :options="options"
@change="handleChange" @change="handleChange"
></Select> />
</div> </div>
<div> <div>
<a-button type="primary" @click="contrastButton">版本对比</a-button> <a-button type="primary" @click="contrastButton">版本对比</a-button>
<a-button type="primary" style="margin-left: 10px" @click="resetButton">回滚</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> <a-button type="primary" style="margin-left: 10px" @click="exitButton">退出查看</a-button>
</div> </div>
</div> </div>
<Divider /> <Divider />
<div style="display: flex;justify-content: space-between; align-items: center;margin-bottom: 10px;margin-left: 12px"> <div
<div style="margin-top: 10px;display: flex;font-weight: bold;font-size: 25px;margin-left: 10px"> style="
{{title}} display: flex;
<div style="font-size: 15px;padding-top: 15px;padding-left: 10px"> justify-content: space-between;
版本:{{optionValue}} align-items: center;
margin-bottom: 10px;
margin-left: 12px;
"
>
<div
style="
margin-top: 10px;
display: flex;
font-weight: bold;
font-size: 25px;
margin-left: 10px;
"
>
{{ title }}
<div style="font-size: 15px; padding-top: 15px; padding-left: 10px">
版本:{{ optionValue }}
</div> </div>
</div> </div>
<div style="margin-top: 10px;display: flex" v-if="!isShow"> <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>
</div> </div>
<Divider /> <Divider />
...@@ -39,151 +66,140 @@ ...@@ -39,151 +66,140 @@
<BasicForm @register="registerForm3" /> <BasicForm @register="registerForm3" />
<Divider /> <Divider />
<!-- 版本管理 弹窗--> <!-- 版本管理 弹窗-->
<VersionModal @register="registerModal" @success="handleSuccess" /> <VersionModal @register="registerModal" @success="handleSuccess" />
</div> </div>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { Select } from 'ant-design-vue'; import { Select, Divider } 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 { TreeData } from './basicStandardsData';
import {TreeData} from './basicStandardsData'; import { router } from '@/router';
import {router} from "@/router"; import { BasicForm, useForm } from '@/components/Form';
import { BasicForm, useForm } from '@/components/Form'; import { detailSchema1, detailSchema2, detailSchema3 } from './basicStandards.data';
import { import { onMounted, ref } from 'vue';
detailSchema1, import { useRoute } from 'vue-router';
detailSchema2, import VersionModal from '@/views/dataStandards/basicStandards/VersionModal.vue';
detailSchema3 import { useModal } from '@/components/Modal';
} from './basicStandards.data'; import { useMessage } from '@/hooks/web/useMessage';
import {onMounted, ref} from "vue";
import {useRoute} from "vue-router"; const route = useRoute();
import VersionModal from '@/views/dataStandards/basicStandards/VersionModal.vue' const title = ref('');
import {useModal} from "@/components/Modal"; const formData = ref({});
import { useMessage } from '@/hooks/web/useMessage'; const businessId = ref('');
const route = useRoute() const isShow = ref(false);
const title = ref('') const optionValue = ref('');
const formData = ref({}) const [registerModal, { openModal }] = useModal();
const businessId = ref('') const { createMessage, createConfirm } = useMessage();
const isShow = ref(false) const [registerForm1, { setFieldsValue: setFieldsValue1 }] = useForm({
const optionValue = ref('') labelWidth: 100,
const [registerModal, { openModal }] = useModal(); baseColProps: { lg: 12, md: 24 },
const { createMessage, createConfirm } = useMessage(); schemas: detailSchema1,
const [registerForm1, { setFieldsValue: setFieldsValue1 }] = useForm({ showActionButtonGroup: false,
labelWidth: 100, actionColOptions: {
baseColProps: { lg: 12, md: 24 }, span: 23,
schemas: detailSchema1,
showActionButtonGroup: false,
actionColOptions: {
span: 23,
},
});
const [registerForm2, { setFieldsValue: setFieldsValue2 }] = useForm({
labelWidth: 100,
baseColProps: { lg: 12, md: 24 },
schemas: detailSchema2,
showActionButtonGroup: false,
actionColOptions: {
span: 23,
},
});
const [registerForm3, { setFieldsValue: setFieldsValue3 }] = useForm({
labelWidth: 100,
baseColProps: { lg: 12, md: 24 },
schemas: detailSchema3,
showActionButtonGroup: false,
actionColOptions: {
span: 23,
},
});
const options = ref<any>([
{ value: 'V1', label: 'V1' },
{ value: 'V2', label: 'V2' },
{ value: 'V3', label: 'V3' },
]);
/**编辑标准*/
function editButton(record) {
router.push({
path: '/dataStandards/basicStandards/editDetailStandard',
query: {
businessId:businessId.value,
}, },
}); });
}
/**基本标准对比*/ const [registerForm2, { setFieldsValue: setFieldsValue2 }] = useForm({
function contrastButton(record) { labelWidth: 100,
router.push({ baseColProps: { lg: 12, md: 24 },
path: '/dataStandards/basicStandards/basicStandardsContrast', schemas: detailSchema2,
query: { showActionButtonGroup: false,
businessId:businessId.value, actionColOptions: {
span: 23,
}, },
}); });
}
/**版本管理 弹窗*/
function versionButton(record) {
openModal(true, {
const [registerForm3, { setFieldsValue: setFieldsValue3 }] = useForm({
labelWidth: 100,
baseColProps: { lg: 12, md: 24 },
schemas: detailSchema3,
showActionButtonGroup: false,
actionColOptions: {
span: 23,
},
}); });
}
/**下拉框改变事件*/ const options = ref<any>([
function handleChange(value) { { value: 'V1', label: 'V1' },
{ value: 'V2', label: 'V2' },
{ value: 'V3', label: 'V3' },
]);
/**编辑标准*/
function editButton(record) {
router.push({
path: '/dataStandards/basicStandards/editDetailStandard',
query: {
businessId: businessId.value,
},
});
}
/**基本标准对比*/
function contrastButton(record) {
router.push({
path: '/dataStandards/basicStandards/basicStandardsContrast',
query: {
businessId: businessId.value,
},
});
}
} /**版本管理 弹窗*/
function versionButton(record) {
openModal(true, {});
}
/**回滚*/ /**下拉框改变事件*/
function resetButton(value) { function handleChange(value) {}
createConfirm({
/**回滚*/
function resetButton(value) {
createConfirm({
iconType: 'warning', iconType: 'warning',
title: '确认回滚', title: '确认回滚',
content: '是否确认进行回滚?', content: '是否确认进行回滚?',
onOk() { onOk() {
createMessage.success('回滚成功!'); createMessage.success('回滚成功!');
}, },
});
}
/**退出查看*/
function exitButton(record) {
isShow.value = false;
optionValue.value = 'V3';
}
/**版本管理 弹出回调函数*/
function handleSuccess(record) {
optionValue.value = record.values.versionName;
isShow.value = true;
}
/**初始化*/
onMounted(() => {
optionValue.value = 'V3';
businessId.value = route.query.businessId;
const data = TreeData.filter((item) => item.businessId == businessId.value);
title.value = data[0].standardChineseName;
setFieldsValue1({
...data[0],
});
setFieldsValue2({
...data[0],
});
setFieldsValue3({
...data[0],
});
}); });
}
/**退出查看*/
function exitButton(record) {
isShow.value = false
optionValue.value = 'V3'
}
/**版本管理 弹出回调函数*/
function handleSuccess(record) {
optionValue.value = record.values.versionName
isShow.value = true
}
/**初始化*/
onMounted(() => {
optionValue.value = 'V3'
businessId.value = route.query.businessId
const data = TreeData.filter(item => item.businessId == businessId.value)
title.value = data[0].standardChineseName
setFieldsValue1({
...data[0]
})
setFieldsValue2({
...data[0]
})
setFieldsValue3({
...data[0]
})
});
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.desc-wrap { .desc-wrap {
padding: 16px; padding: 16px;
background-color: @component-background; background-color: @component-background;
} }
</style> </style>
<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" />
<BasicTable @register="registerTable1"/> <BasicTable @register="registerTable1" />
</BasicModal> </BasicModal>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import {ref, computed, unref, reactive} from 'vue'; import { ref, computed } 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 {relatedQualityColumns, relatedQualitySchema, relatedRelationshipColumns1} from './basicStandards.data'; import {
relatedQualityColumns,
relatedQualitySchema,
relatedRelationshipColumns1,
} from './basicStandards.data';
import { useMessage } from '@/hooks/web/useMessage'; import { useMessage } from '@/hooks/web/useMessage';
import { import {
qualityTreeData, qualityTreeData,
relatedQualityData, relatedQualityData,
relatedRelationshipsData1, relatedRelationshipsData1,
TreeData TreeData,
} from "@/views/dataStandards/basicStandards/basicStandardsData"; } from '@/views/dataStandards/basicStandards/basicStandardsData';
import { BasicTable, useTable, TableAction } from '@/components/Table'; import { BasicTable, useTable, TableAction } from '@/components/Table';
defineOptions({ name: 'AccountModal' }); defineOptions({ name: 'AccountModal' });
const emit = defineEmits(['success', 'register']); const emit = defineEmits(['success', 'register']);
const { createMessage } = useMessage(); const { createMessage } = useMessage();
const rowId = ref(''); const rowId = ref('');
const getTitle = computed(() => ('关联质量模版')); const tableData = ref([]);
const getTitle = computed(() => '关联质量模版');
//获取接口数据并放在下拉框里(这里是打开了一个弹框) //获取接口数据并放在下拉框里(这里是打开了一个弹框)
//初始化表单 //初始化表单
const [registerForm, { setFieldsValue, updateSchema, resetFields, validate }] = useForm({ const [registerForm, { setFieldsValue, getFieldsValue, updateSchema, resetFields, validate }] =
labelWidth: 100, useForm({
baseColProps: { lg: 12, md: 24 }, labelWidth: 100,
schemas: relatedQualitySchema, baseColProps: { lg: 12, md: 24 },
showActionButtonGroup: false, schemas: relatedQualitySchema,
actionColOptions: { showActionButtonGroup: false,
span: 23, actionColOptions: {
}, span: 23,
}); },
});
//初始化弹框 //初始化弹框
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => { const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
resetFields(); resetFields();
setModalProps({ confirmLoading: false }); setModalProps({ confirmLoading: false });
setFieldsValue({ setFieldsValue({
...data.record, ...data.record,
}) });
const treeList = handleTree(qualityTreeData, 'businessId',undefined,undefined,undefined) const treeList = handleTree(qualityTreeData, 'businessId', undefined, undefined, undefined);
updateSchema([ updateSchema([
{ {
field: 'QualityId', field: 'QualityId',
componentProps: { componentProps: {
treeData: treeList treeData: treeList,
}, },
}, },
]); ]);
}); });
const [registerTable1] = useTable({ const [registerTable1, { reload }] = useTable({
title: '参数配置', title: '参数配置',
api: async (params) => { api: async () => {
const response = { const response = {
pageNu: "1", pageNu: '1',
pageSize: "10", pageSize: '10',
pages: "1", pages: '1',
total: 0, total: 0,
code:'', code: '',
message:'', message: '',
data: [], data: tableData.value,
}; };
//过滤data中的数据,取出等于params.deptId的数据 //过滤data中的数据,取出等于params.deptId的数据
return { ...response,data: [] }; return { ...response };
}, },
columns:relatedQualityColumns, columns: relatedQualityColumns,
useSearchForm: false, useSearchForm: false,
showTableSetting: false, showTableSetting: false,
showIndexColumn:false, showIndexColumn: false,
pagination:false, pagination: false,
bordered: true, bordered: true,
}); });
/**确定按钮*/ /**确定按钮*/
async function handleSubmit() { async function handleSubmit() {
createMessage.success('移动成功'); createMessage.success('移动成功');
closeModal() closeModal();
} }
/**数组对象转成树*/ /**数组对象转成树*/
function handleTree(data, id, parentId, children, rootId) { function handleTree(data, id, parentId, children, rootId) {
id = id || 'id' id = id || 'id';
parentId = parentId || 'parentId' parentId = parentId || 'parentId';
children = children || 'children' children = children || 'children';
rootId = rootId || Math.min.apply(Math, data.map(item => { return item[parentId] })) || 0 rootId =
rootId ||
Math.min.apply(
Math,
data.map((item) => {
return item[parentId];
}),
) ||
0;
// 对源数据深度克隆 // 对源数据深度克隆
const cloneData = JSON.parse(JSON.stringify(data)) const cloneData = JSON.parse(JSON.stringify(data));
// 循环所有项 // 循环所有项
const treeData = cloneData.filter(father => { const treeData = cloneData.filter((father) => {
const branchArr = cloneData.filter(child => { const branchArr = cloneData.filter((child) => {
// 返回每一项的子级数组 // 返回每一项的子级数组
return father[id] === child[parentId] return father[id] === child[parentId];
}) });
branchArr.length > 0 ? father.children = branchArr : '' branchArr.length > 0 ? (father.children = branchArr) : '';
// 返回第一层 // 返回第一层
return father[parentId] === rootId return father[parentId] === rootId;
}) });
return treeData !== '' ? treeData : data return treeData !== '' ? treeData : data;
} }
</script> </script>
...@@ -283,9 +283,6 @@ export const mappingRuleConfigurationColumns: BasicColumn[] = [ ...@@ -283,9 +283,6 @@ export const mappingRuleConfigurationColumns: BasicColumn[] = [
title: '规则详情', title: '规则详情',
dataIndex: 'ruleDetail', dataIndex: 'ruleDetail',
width: 200, width: 200,
edit: true,
editable: true,
editComponent: 'Input',
}, },
{ {
title: '执行顺序', title: '执行顺序',
......
...@@ -709,7 +709,7 @@ ...@@ -709,7 +709,7 @@
const isEdit = ref(true); const isEdit = ref(true);
const version = ref('V1'); const version = ref('V1');
const isStart = ref('false'); const isStart = ref('false');
const selectedItem = ref(); const selectedItem = ref('1');
const versionOptions = [ const versionOptions = [
{ {
label: 'V1', label: 'V1',
......
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