From b451bcdf065ddfdd5c46dce49e19707870cb4fa6 Mon Sep 17 00:00:00 2001 From: dongyukun <1208714201@qq.com> Date: 星期三, 16 四月 2025 09:57:58 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/views/data/ind/item/DerIndDefineForm.vue | 128 +++++++++++++++++++++++++++++------------- 1 files changed, 89 insertions(+), 39 deletions(-) diff --git a/src/views/data/ind/item/DerIndDefineForm.vue b/src/views/data/ind/item/DerIndDefineForm.vue index f16a4ea..44ef103 100644 --- a/src/views/data/ind/item/DerIndDefineForm.vue +++ b/src/views/data/ind/item/DerIndDefineForm.vue @@ -7,26 +7,6 @@ :rules="formRules" label-width="100px"> <el-row> <el-col :span="12"> - <el-form-item label="原子指标" prop="atomItem.id"> - <el-select v-model="selected" clearable placeholder="请选择原子指标" - @change="handleChange($event)"> - <el-option - v-for="item in atomItemList" - :key="item.id" - :label="item.itemNo" - :value="item.id" - /> - </el-select> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="原子指标名称" prop="atomItem.itemName"> - <el-input v-model="formData.atomItem.itemName" disabled/> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> <el-form-item label="指标编码" prop="itemNo"> <el-input v-model="formData.itemNo" disabled/> </el-form-item> @@ -39,15 +19,36 @@ </el-row> <el-row> <el-col :span="12"> - <el-form-item label="指标分类" prop="itemCategory"> - <el-select v-model="formData.itemCategory" clearable placeholder="请选择指标分类"> + <el-form-item label="原子指标" prop="atomItem.itemId"> + <el-select v-model="formData.atomItem.itemId" filterable + allow-create clearable placeholder="请选择原子指标" + @change="handleChange($event)"> <el-option - v-for="item in dataCategoryList" + v-for="item in atomItemList" :key="item.id" - :label="item.label" + :label="item.itemName" :value="item.id + ''" /> </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="原子指标编码" prop="atomItem.itemNo"> + <el-input v-model="formData.atomItem.itemNo" disabled/> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="12"> + <el-form-item label="指标分类" prop="itemCategory"> + <el-tree-select + v-model="formData.itemCategory" + :data="dataCategoryList" + :default-expanded-keys="[0]" + :props="defaultProps" + check-strictly + node-key="id" + /> </el-form-item> </el-col> <el-col :span="12"> @@ -79,23 +80,39 @@ <el-input v-model="formData.unit"/> </el-form-item> </el-col> + <el-col :span="6"> + <el-form-item label="固化标识" prop="solidifyFlag"> + <el-select v-model="formData.solidifyFlag" + clearable + filterable + allow-create + placeholder="请选择"> + <el-option + v-for="dict in getStrDictOptions(DICT_TYPE.SOLIDIFY_FLAG)" + :key="dict.value" + :label="dict.label" + :value="dict.value" + /> + </el-select> + </el-form-item> + </el-col> </el-row> <el-row> <el-col :span="6"> <el-form-item label="时间标识" prop="timeLabel"> - <el-select v-model="formData.derItem.timeLabel" clearable placeholder="请选择时间标识"> + <el-select v-model="formData.derItem.timeLabel" allow-create filterable clearable placeholder="请选择时间标识"> <el-option v-for="item in dataSetFieldList" :key="item.id" :label="item.fieldCode" - :value="item.id + ''" + :value="item.fieldCode" /> </el-select> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="时间限定" prop="timeLimit"> - <el-select v-model="formData.timeLimit" placeholder="请选择" + <el-select v-model="formData.derItem.timeLimit" placeholder="请选择" @change="handleTimeLimitChange($event)"> <el-option v-for="dict in getStrDictOptions(DICT_TYPE.IND_TIME_LIMIT)" @@ -104,6 +121,19 @@ :value="dict.value" /> </el-select> + </el-form-item> + </el-col> + <el-col :span="6" v-if="['LAST_MONTH_12','THIS_MONTH','LAST_MONTH'].includes(formData.derItem.timeLimit)"> + <el-form-item label="月周期开始日" prop="monthStart"> + <div style="display: flex;flex-direction: row;align-items: center"> + <el-input-number v-model="formData.derItem.monthStart" :min="-28" :max="28" /> + <el-tooltip content="正数代表当前月,负数代表上月。例:-26代表上月26号为本月开始日期" placement="top"> + <div style="margin-left: 4px;display: flex;align-items: center"> + <el-icon :size="20"><QuestionFilled /></el-icon> + </div> + </el-tooltip> + </div> + </el-form-item> </el-col> </el-row> @@ -130,12 +160,13 @@ <el-row> <el-col :span="24"> <el-form-item label="分析维度" prop="dimension"> - <el-select v-model="formData.derItem.dimension" clearable placeholder="请选择分析维度" multiple> + <el-select v-model="formData.derItem.dimension" filterable + allow-create clearable placeholder="请选择分析维度" multiple> <el-option v-for="item in dataSetFieldList" :key="item.id" :label="item.fieldCode" - :value="item.id + ''" + :value="item.fieldCode" /> </el-select> </el-form-item> @@ -164,6 +195,7 @@ import {PageParam} from "@/api/data/ind/item/item"; import * as CategoryApi from "@/api/data/ind/category"; import * as DataSetFieldApi from "@/api/data/ind/data/data.field"; + import {handleTree} from "@/utils/tree"; defineOptions({name: 'IndDataSetForm'}) @@ -185,8 +217,10 @@ businessType: '', timeRange: '', timeGranularity: '', + solidifyFlag:'', atomItem: { id: '', + itemId: '', itemNo: '', itemName: '', }, @@ -198,9 +232,6 @@ timeEnd: '', dimension: '' } - }) - const queryParams = ref({ - itemType: 'ATOM' }) const validateAsNumber = (rule, value, callback) => { @@ -218,13 +249,18 @@ /*"atomItem.id": [{required: true, message: '原子指标不能为空', trigger: 'blur'}]*/ }) const formRef = ref() // 表单 Ref - const dataSourceList = ref([] as DataSourceConfigApi.DataSourceConfigVO[]) const atomItemList = ref([] as ItemApi.ItemVO[]) - const selected = ref(null) const showTimeChange = ref(false) - const dataCategoryList = ref([] as CategoryApi.IndItemCategoryVO[]) const dataSetFieldList = ref([] as DataSetFieldApi.DataSetFieldVO[]) + const dataCategoryList = ref<Tree[]>([]) + const getCategoryTree = async () => { + dataCategoryList.value = [] + const res = await CategoryApi.getCategoryListAllSimple() + let category: Tree = {id: 0, label: '主类目', children: []} + category.children = handleTree(res, 'id', 'pid') + dataCategoryList.value.push(category) + } /** 打开弹窗 */ const open = async (type: string, id?: string) => { dialogVisible.value = true @@ -232,14 +268,23 @@ formType.value = type resetForm() // 加载数据源列表 - dataCategoryList.value = await CategoryApi.getCategoryListAllSimple() + await getCategoryTree() + const queryParams = reactive({ + itemType: 'ATOM' + }) atomItemList.value = await ItemApi.getItemList(queryParams) - selected.value = null // 修改时,设置数据 if (id) { formLoading.value = true try { formData.value = await ItemApi.getItem(id) + if(formData.value.derItem.dimension.length > 0){ + formData.value.derItem.dimension = formData.value.derItem.dimension.split(',') + }else { + formData.value.derItem.dimension = "" + } + showTimeChange.value = formData.value.derItem.timeLimit === 'CUSTOM' + await handleChange(formData.value.derItem.atomItemId) } finally { formLoading.value = false } @@ -258,13 +303,15 @@ formLoading.value = true try { formData.value.itemType = 'DER' - formData.value.derItem.atomItemId = formData.value.atomItem.id + formData.value.derItem.atomItemId = formData.value.atomItem.itemId if(formData.value.derItem.dimension.length > 0){ let dimension = '' for (let index in formData.value.derItem.dimension){ dimension = dimension + formData.value.derItem.dimension[index] + ',' } formData.value.derItem.dimension = dimension.substring(0, dimension.length - 1) + }else{ + formData.value.derItem.dimension = '' } const data = formData.value as ItemApi.ItemVO if (formType.value === 'create') { @@ -314,8 +361,11 @@ async function handleChange(event) { if (event !== null && event !== undefined) { const itemData = await ItemApi.getItem(event) + let a = itemData.atomItem.id + formData.value.atomItem.id = a formData.value.atomItem.itemName = itemData.itemName - formData.value.atomItem.id = itemData.atomItem.id + formData.value.atomItem.itemNo = itemData.itemNo + formData.value.atomItem.itemId = itemData.atomItem.itemId const queryParams = reactive({ dataSetId: itemData.atomItem.dataSet, }) -- Gitblit v1.9.3