Merge remote-tracking branch 'origin/main' into main

# Conflicts:
#	src/views/reporting/RepTemplate/components/Write.vue
main
zhangxiaodi1 9 months ago
commit b55a799331

@ -47,8 +47,8 @@ export const exportTemplateApi = (params: any) => {
return request.doExport({ url: '/RepTemplate/sdi/reporting/RepTemplate/RepTemplateExportXls', params });
};
/** 获取某个字典 */
export const getCsckCheckType = ({ paramName, systemCode }): Promise<IResponse> => {
/** 获取报告分类 */
export const getCategory = ({ paramName, systemCode }): Promise<IResponse> => {
return request.postJson({
url: '/param/spi/param/systemparam',
data: {

@ -53,4 +53,4 @@ export type FormModel = {
tDescription?: string
/** 所属机构 */
organCode?: string
}
}

@ -1818,7 +1818,16 @@ export const asyncRouterMap: AppRouteRecordRaw[] = [
name: 'indexClassManage',
menuId: 'indexClassManage',
meta: {
title: '指标分类管理',
title: '指标分类管理'
}
},
{
path: 'indexSearchServiceMs',
component: () => import('@/views/dataset/IndexSearchServiceMs/IndexSearchServiceMs.vue'),
name: 'IndexSearchServiceMs',
menuId: 'indexSearchServiceMs',
meta: {
title: '指标查询',
alwaysShow: true,
type:"ybt",
sort:4,

@ -27,8 +27,11 @@ import { ContentWrap } from '@/components/ContentWrap'
import Write from './components/Write.vue'
import Detail from './components/Detail.vue'
import { Dialog } from '@/components/Dialog'
import router from '@/router'
defineOptions({
name: 'IndexSearchServiceMs',
});
const { t } = useI18n()
const ids = ref<string[]>([])
@ -55,6 +58,10 @@ const { tableRegister, tableState, tableMethods } = useTable({
const { loading, dataList, total, currentPage, pageSize } = tableState
const { getList, refresh } = tableMethods
const lookRule = async (row: any) => {
router.push(`/dataset/indexSearchServiceMs`)
};
const tableColumns = reactive<TableColumn[]>([
{
field: 'selection',
@ -92,6 +99,9 @@ const tableColumns = reactive<TableColumn[]>([
default: (data: any) => {
return (
<>
<ElLink type="primary" underline={false} onClick={() => action(data.row, 'edit')}>
{t('tableDemo.edit')}
</ElLink>
<ElPopconfirm
title={t('common.delTableMsg')}
width={200}
@ -108,7 +118,7 @@ const tableColumns = reactive<TableColumn[]>([
}}
onConfirm={() => delData(data.row)}
></ElPopconfirm>
<ElLink type="primary" underline={false} onClick={() => action(data.row, 'detail')}>
<ElLink type="primary" underline={false} onClick={() => lookRule(data.row)}>
{'查询'}
</ElLink>
</>

@ -23,27 +23,33 @@ const { setValues, getFormData, getElFormExpose } = formMethods
const formSchema = reactive<FormSchema[]>([
{
field: 'dicid',
label: '分类编号'
label: '分类编号',
component: 'Input',
},
{
field: 'dicname',
label: '分类名称'
label: '分类名称',
component: 'Input',
},
{
field: 'dicvalue',
label: '分类值'
label: '分类值',
component: 'Input',
},
{
field: 'parentname',
label: '上级分类'
label: '上级分类',
component: 'Input',
},
{
field: 'description',
label: '分类描述'
label: '分类描述',
component: 'Input',
},
{
field: 'status',
label: '分类状态'
label: '分类状态',
component: 'Input',
}
])

@ -19,7 +19,7 @@ import RuleConfig from './components/Ruleconfig.vue'
import Write from './components/Write.vue'
import { Dialog } from '@/components/Dialog'
import { getWidth } from '@/utils';
import { method } from 'lodash-es'
import { INDEX_CATAGOTY_LIST } from './constants'
const { t } = useI18n()
/**
@ -197,7 +197,9 @@ const indexDefineSearchSchema = reactive<FormSchema[]>([
{
field: 'tCategory',
label: '指标计算类型',
componentProps: {},
componentProps: {
options:INDEX_CATAGOTY_LIST
},
component: 'Select'
},
{

@ -0,0 +1,11 @@
//指标计算类型
export const INDEX_CATAGOTY_LIST = [
{
value:"1",
label:"自动"
},
{
value:"0",
label:"手动"
},
]

@ -23,6 +23,9 @@ import { useValidator } from '@/hooks/web/useValidator'
import { getLoginOrganCodeByUserInfo } from '@/utils/auth'
import { getOrganTree } from '@/api/common'
defineOptions({
name: 'IndexSearchServiceMs',
});
const { t } = useI18n()
const { required } = useValidator();
@ -64,11 +67,11 @@ const tableColumns = reactive<TableColumn[]>([
},
{
field: 'createTime',
label: '机构'
label: '机构名称'
},
{
field: 'tName',
label: '日期'
label: '数据日期'
},
{
field: 'tCategory',
@ -84,16 +87,17 @@ const searchSchema = reactive<FormSchema[]>([
{
field: 'orgCode',
label: '机构',
colProps: { span: 100 },
componentProps: {
checkStrictly: true,
nodeKey: 'id',
props: { children: 'childs', label: 'nodeName' },
nodeKey: 'key',
props: { children: 'childrens', label: 'value' },
filterable: true,
multiple: true,
collapseTags: true,
showCheckbox: true,
// style: { minWidth: '300px' },
style: 'width: 100%',
style: { minWidth: '200px' },
//style: 'width: 100%',
checkOnClickNode: true,
},
component: 'TreeSelect',
@ -111,10 +115,13 @@ const searchSchema = reactive<FormSchema[]>([
},
},
{
field: 'tName',
field: 'Datadate',
label: '日期',
componentProps: {},
component: 'Input',
componentProps: {
type: 'date',
valueFormat: 'YYYYMMDD',
},
component: 'DatePicker',
formItemProps: {
rules: [required()],
},
@ -223,7 +230,7 @@ const onSelectionChange = (selection: TableData[]) => {
disabled.value = selection.length === 0
}
const onContextMenu = (row: any, column: any, cell: HTMLTableCellElement, event: Event) => {
console.log(row,column,cell,event);
}
@ -248,14 +255,7 @@ const onContextMenu = (row: any, column: any, cell: HTMLTableCellElement, event:
@register="tableRegister"
@refresh="refresh"
@cell-contextmenu="onContextMenu"
>
<template #buttons>
<ElButton type="primary" @click="AddAction">{{ t('tableDemo.add') }}</ElButton>
<ElButton :loading="delLoading" type="primary" :disabled="disabled" @click="delDataBatch()">
{{ t('tableDemo.del') }}
</ElButton>
</template>
</Table>
/>
</ContentWrap>
<Dialog v-model="dialogVisible" :title="dialogTitle">

@ -17,10 +17,17 @@ import { FormSchema } from '@/components/Form'
import { ContentWrap } from '@/components/ContentWrap'
import Write from './components/Write.vue'
import { Dialog } from '@/components/Dialog'
import { getWidth } from '@/utils';
import { getWidth, transfDictList } from '@/utils';
import Detail from './components/Detail.vue'
import { useValidator } from '@/hooks/web/useValidator'
import { getOrganTree } from '@/api/common'
import { getLoginOrganCodeByUserInfo } from '@/utils/auth'
import { getCategory } from '@/api/reporting/RepTemplate/RepTemplate'
const { t } = useI18n()
const { t } = useI18n();
const { required } = useValidator();
//
const loginOrganCode = getLoginOrganCodeByUserInfo();
const ids = ref<string[]>([])
@ -92,29 +99,64 @@ const tableColumns = reactive<TableColumn[]>([
const searchSchema = reactive<FormSchema[]>([
{
field: 'createTime',
label: '生成时间',
componentProps: {type: 'daterange'},
component: 'DatePicker'
field: 'organCode',
label: '机构',
colProps: { span: 100 },
componentProps: {
checkStrictly: true,
nodeKey: 'key',
props: { children: 'childrens', label: 'value' },
filterable: true,
multiple: true,
collapseTags: true,
showCheckbox: true,
style: { minWidth: '200px' },
//style: 'width: 100%',
checkOnClickNode: true,
},
component: 'TreeSelect',
optionApi: async () => {
const res = await getOrganTree({
treeid: '1',
systemCode: 'portal',
loginOrganCode,
});
return res.body.result;
},
value: loginOrganCode,
formItemProps: {
rules: [required()],
},
},
{
field: 'tName',
label: '报告名称',
componentProps: {},
component: 'Input'
field: 'dataDate',
label: '日期',
componentProps: {
type: 'date',
valueFormat: 'YYYYMMDD',
},
component: 'DatePicker',
formItemProps: {
rules: [required()],
},
},
{
field: 'tCategory',
label: '报告分类',
componentProps: {},
component: 'Select'
optionApi: async () => {
const res = await getCategory({ paramName: 'reportingType_param', systemCode: 'ordb' });
return transfDictList(res.body.result);
},
value: '1',
component: 'Select'
},
{
field: 'organCode',
label: '所属机构',
field: 'tName',
label: '报告名称',
componentProps: {},
component: 'Select'
component: 'Input'
}
])
const searchParams = ref({})

@ -7,19 +7,21 @@ import {
delRepTemplateApi,
exportTemplateApi,
queryRepTemplateApi,
getCategory,
} from '@/api/reporting/RepTemplate/RepTemplate'
import { TableData } from '@/api/reporting/RepTemplate/RepTemplate/types'
import { useTable } from '@/hooks/web/useTable'
import { useI18n } from '@/hooks/web/useI18n'
import { Table, TableColumn } from '@/components/Table'
import { ElButton, ElLink, ElLoading, ElPopconfirm, ElMessage } from 'element-plus'
import { ElButton, ElLink, ElLoading, ElPopconfirm, ElMessage, ElTag } from 'element-plus'
import { Search } from '@/components/Search'
import { FormSchema } from '@/components/Form'
import { ContentWrap } from '@/components/ContentWrap'
import Write from './components/Write.vue'
import { Dialog } from '@/components/Dialog'
import { getWidth } from '@/utils';
import { getWidth, transfDictList } from '@/utils';
import Detail from './components/Detail.vue'
import { REPORTING_TATUS_LIST } from './constants'
const { t } = useI18n()
@ -75,10 +77,6 @@ const tableColumns = reactive<TableColumn[]>([
field: 'uploadUser',
label: '上传人'
},
{
field: 'tStatus',
label: '状态'
},
{
field: 'tVersion',
label: '版本'
@ -95,6 +93,19 @@ const tableColumns = reactive<TableColumn[]>([
field: 'tDescription',
label: '描述'
},
{
field: 'tStatus',
label: '状态',
formatter:(row:Recordable,_:TableColumn) =>{
const state=REPORTING_TATUS_LIST.find((item)=>item.value===row.tStatus)
if(state&&state.value =='1'){
return <ElTag type="primary">{state.label}</ElTag>
}
else{
return <ElTag type="info">停用</ElTag>
}
}
},
{
field: 'action',
label: t('tableDemo.action'),
@ -131,17 +142,15 @@ const tableColumns = reactive<TableColumn[]>([
].map(item => ({ minWidth: item.label ? getWidth(item.label) : 120, ...item }) as TableColumn))
const searchSchema = reactive<FormSchema[]>([
{
field: 'tName',
label: '名称',
componentProps: {},
component: 'Input'
},
{
field: 'tCategory',
label: '报告分类',
componentProps: {},
component: 'Select'
component: 'Select',
optionApi: async () => {
const res = await getCategory({ paramName: 'reportingType_param', systemCode: 'ordb' });
return transfDictList(res.body.result);
},
value: '1'
},
{
field: 'createUser',
@ -149,6 +158,12 @@ const searchSchema = reactive<FormSchema[]>([
componentProps: {},
component: 'Input'
},
{
field: 'tName',
label: '名称',
componentProps: {},
component: 'Input'
},
{
field: 'createTime',
label: '上传时间',
@ -249,7 +264,6 @@ const disabled = ref(true)
const onSelectionChange = (selection: TableData[]) => {
disabled.value = selection.length === 0
}
</script>
<template>

@ -1,153 +1,147 @@
<script setup lang="tsx">
import { Form, FormSchema } from '@/components/Form'
import { useForm } from '@/hooks/web/useForm'
import { PropType, reactive, watch } from 'vue'
import { useValidator } from '@/hooks/web/useValidator'
import { ElButton, ElMessage, ElMessageBox } from 'element-plus';
import { Form, FormSchema } from '@/components/Form'
import { useForm } from '@/hooks/web/useForm'
import { PropType, reactive, watch } from 'vue'
import { useValidator } from '@/hooks/web/useValidator'
import { ElButton, ElMessage, ElMessageBox } from 'element-plus';
let fileChoose = null;
const { required } = useValidator()
const props = defineProps({
currentRow: {
type: Object as PropType<any>,
default: () => null
},
actionType: {
type: String,
default: 'add'
}
})
const { required } = useValidator()
const { formRegister, formMethods } = useForm()
const { setValues, getFormData, getElFormExpose } = formMethods
const props = defineProps({
currentRow: {
type: Object as PropType<any>,
default: () => null
},
actionType: {
type: String,
default: 'add'
}
})
const formSchema = reactive < FormSchema[] > ([
{
field: 'tId',
label: '编号',
component: 'Input',
hidden: true
},
{
field: 'tCategory',
label: '报告分类',
component: 'Select',
componentProps: {
const { formRegister, formMethods } = useForm()
const { setValues, getFormData, getElFormExpose } = formMethods
},
const formSchema = reactive<FormSchema[]>([
{
field: 'tId',
label: '编号',
component: 'Input',
hidden: true
},
{
field: 'tCategory',
label: '报告分类',
component: 'Select',
componentProps: {
},
{
field: 'createUser',
label: '编写人',
component: 'Input',
componentProps: {
},
},
{
field: 'createUser',
label: '编写人',
component: 'Input',
componentProps: {
},
{
field: 'tVersion',
label: '报告版本',
component: 'Input',
componentProps: {
},
},
{
field: 'tVersion',
label: '报告版本',
component: 'Input',
componentProps: {
},
{
field: 'tStatus',
label: '报告状态',
component: 'Select',
componentProps: {
},
},
{
field: 'tStatus',
label: '报告状态',
component: 'Select',
componentProps: {
},
{
field: 'tDescription',
label: '报告描述',
component: 'Input',
colProps: { span: 24 },
componentProps: {
type: 'textarea'
},
},
{
field: 'tDescription',
label: '报告描述',
component: 'Input',
colProps: { span: 24 },
componentProps: {
type: 'textarea'
},
{
field: 'organCode',
label: '报告模版',
component: 'Upload',
colProps: { span: 160 },
componentProps: {
limit: 1,
drag: true,
accept: ".doc,.docx",
action: null,
autoUpload:false,
multiple: false,
fileList: [],
onPreview: (uploadFile) => {
console.log(uploadFile)
},
onRemove: (file) => {
console.log(file)
},
beforeRemove: (uploadFile) => {
return ElMessageBox.confirm(`Cancel the transfer of ${uploadFile.name} ?`).then(
() => true,
() => false
)
},
onExceed: (files, uploadFiles) => {
ElMessage.warning(
`The limit is 1, you selected ${files.length} files this time, add up to ${files.length + uploadFiles.length
} 总共`
)
},
slots: {
default: () => <div class="el-upload"><div class="el-upload__text">拖曳报告模版到这里或<em>上传报告模版</em></div></div>,
tip: () => <div class="el-upload__tip">doc,docx文件</div>,
file: (file) => {
fileChoose = file.file.raw;
console.log(file, "file信息");
}
}
},
{
field: 'organCode',
label: '报告模版',
component: 'Upload',
colProps: { span: 160 },
componentProps: {
limit: 1,
drag:true,
accept:".doc,.docx",
action: 'https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15',
multiple: true,
onPreview: (uploadFile) => {
console.log(uploadFile)
},
onRemove: (file) => {
console.log(file)
},
beforeRemove: (uploadFile) => {
return ElMessageBox.confirm(`Cancel the transfer of ${uploadFile.name} ?`).then(
() => true,
() => false
)
},
}
])
onExceed: (files, uploadFiles) => {
ElMessage.warning(
`The limit is 1, you selected ${files.length} files this time, add up to ${
files.length + uploadFiles.length
} 总共`
)
},
slots: {
default: () =><div class="el-upload"><div class="el-upload__text">拖曳报告模版到这里或<em>上传报告模版</em></div></div>,
tip: () => <div class="el-upload__tip">doc,docx文件</div>
}
},
}
])
const rules = reactive({
const rules = reactive({
})
const submit = async () => {
const elForm = await getElFormExpose()
const valid = await elForm?.validate().catch((err) => {
console.log(err)
})
const submit = async () => {
const elForm = await getElFormExpose()
const valid = await elForm?.validate().catch((err) => {
console.log(err)
})
if (valid) {
const formData = await getFormData()
formData.file = fileChoose;
console.log(formData);
return formData
}
if (valid) {
const formData = await getFormData()
return formData
}
}
watch(
() => props.currentRow,
(currentRow) => {
if (!currentRow) return
setValues(currentRow)
},
{
deep: true,
immediate: true
}
)
watch(
() => props.currentRow,
(currentRow) => {
if (!currentRow) return
setValues(currentRow)
},
{
deep: true,
immediate: true
}
)
defineExpose({
submit
})
defineExpose({
submit
})
</script>
<template>
<Form :rules="rules" @register="formRegister" :schema="formSchema" />
</template>
</template>

@ -0,0 +1,11 @@
//报告状态选择列表
export const REPORTING_STATUS_LIST = [
{
value:"1",
label:"启用"
},
{
value:"0",
label:"停用"
},
]
Loading…
Cancel
Save