73c42038 by lihua

fix: 数据质量

1 parent 72a20f40
...@@ -382,7 +382,7 @@ const getQueryTreeData = ()=>{ ...@@ -382,7 +382,7 @@ const getQueryTreeData = ()=>{
382 currNodeInfo.value = {type:2,guid:dataSourceGuid,name:datasourceName} 382 currNodeInfo.value = {type:2,guid:dataSourceGuid,name:datasourceName}
383 } 383 }
384 nextTick(() => { 384 nextTick(() => {
385 treeInfo.value.currentNodeKey = currentNodeKey.value 385 treeInfo.value.currentNodeKey = <string>route.query.tableGuid || currentNodeKey.value;
386 treeInfo.value.expandedKey = expandedKey.value 386 treeInfo.value.expandedKey = expandedKey.value
387 }) 387 })
388 nodeClick({type:2,guid:dataSourceGuid,name:datasourceName}) 388 nodeClick({type:2,guid:dataSourceGuid,name:datasourceName})
......
...@@ -683,7 +683,6 @@ const download = () => { ...@@ -683,7 +683,6 @@ const download = () => {
683 <div v-show="!isWordStyle" class="header-detail"> 683 <div v-show="!isWordStyle" class="header-detail">
684 <template v-if="detailInfo.analysisReportType == 1"> 684 <template v-if="detailInfo.analysisReportType == 1">
685 <span>{{ '表名称:' + (detailInfo.qualityModelName ?? '--') }}</span> 685 <span>{{ '表名称:' + (detailInfo.qualityModelName ?? '--') }}</span>
686 <span style="margin-left: 40px;">{{ '所属主题:' + (detailInfo.subjectDomainName ?? '--') }}</span>
687 <span style="margin-left: 40px;">{{ '所属数据源:' + (detailInfo.dataSourceName ?? '--') }}</span> 686 <span style="margin-left: 40px;">{{ '所属数据源:' + (detailInfo.dataSourceName ?? '--') }}</span>
688 </template> 687 </template>
689 <span v-else-if="detailInfo.analysisReportType == 3">{{ '分组名称:' + (detailInfo.qualityModelGroupName ?? '--') 688 <span v-else-if="detailInfo.analysisReportType == 3">{{ '分组名称:' + (detailInfo.qualityModelGroupName ?? '--')
...@@ -787,7 +786,6 @@ const download = () => { ...@@ -787,7 +786,6 @@ const download = () => {
787 <div style=" height: 40px;line-height: 40px;font-size: 14px;color: #666666;"> 786 <div style=" height: 40px;line-height: 40px;font-size: 14px;color: #666666;">
788 <template v-if="detailInfo.analysisReportType == 1"> 787 <template v-if="detailInfo.analysisReportType == 1">
789 <span>{{ '表名称:' + (detailInfo.qualityModelName ?? '--') }}</span> 788 <span>{{ '表名称:' + (detailInfo.qualityModelName ?? '--') }}</span>
790 <span style="margin-left: 40px;">{{ '所属主题:' + (detailInfo.subjectDomainName ?? '--') }}</span>
791 <span style="margin-left: 40px;">{{ '所属数据源:' + (detailInfo.dataSourceName ?? '--') }}</span> 789 <span style="margin-left: 40px;">{{ '所属数据源:' + (detailInfo.dataSourceName ?? '--') }}</span>
792 </template> 790 </template>
793 <span v-else-if="detailInfo.analysisReportType == 3">{{ '分组名称:' + (detailInfo.qualityModelGroupName ?? '--') 791 <span v-else-if="detailInfo.analysisReportType == 3">{{ '分组名称:' + (detailInfo.qualityModelGroupName ?? '--')
......
...@@ -331,7 +331,7 @@ onActivated(() => { ...@@ -331,7 +331,7 @@ onActivated(() => {
331 let tab: any = userStore.tabbar.find((tab: any) => tab.fullPath === fullPath); 331 let tab: any = userStore.tabbar.find((tab: any) => tab.fullPath === fullPath);
332 if (tab) { 332 if (tab) {
333 if (route.query.detail) { 333 if (route.query.detail) {
334 tab.meta.title = `新建规则(${route.query.planName})`; 334 tab.meta.title = `方案详情-${route.query.planName}`;
335 if (fullPath === route.fullPath) { 335 if (fullPath === route.fullPath) {
336 document.title = tab.meta.title; 336 document.title = tab.meta.title;
337 } 337 }
......
...@@ -28,10 +28,8 @@ import { ...@@ -28,10 +28,8 @@ import {
28 import useDataQualityStore from "@/store/modules/dataQuality"; 28 import useDataQualityStore from "@/store/modules/dataQuality";
29 import { useValidator } from '@/hooks/useValidator'; 29 import { useValidator } from '@/hooks/useValidator';
30 import { TableColumnWidth } from '@/utils/enum'; 30 import { TableColumnWidth } from '@/utils/enum';
31 import useDataCatalogStore from "@/store/modules/dataCatalog";
32 31
33 const dataQualityStore = useDataQualityStore(); 32 const dataQualityStore = useDataQualityStore();
34 const dataCatalogStore = useDataCatalogStore();
35 33
36 const { proxy } = getCurrentInstance() as any; 34 const { proxy } = getCurrentInstance() as any;
37 const { orderNum, description } = useValidator(); 35 const { orderNum, description } = useValidator();
...@@ -411,10 +409,27 @@ const tableBtnClick = (scope, btn) => { ...@@ -411,10 +409,27 @@ const tableBtnClick = (scope, btn) => {
411 } else if (type == "delete") { 409 } else if (type == "delete") {
412 open("此操作将永久删除, 是否继续?", "warning"); 410 open("此操作将永久删除, 是否继续?", "warning");
413 } else if (type == 'locateDataCatalog') { 411 } else if (type == 'locateDataCatalog') {
414 dataCatalogStore.setLocateSubjectName(row.name); 412 // dataCatalogStore.setLocateSubjectName(row.name);
415 router.push({ 413 // router.push({
416 name: 'dataWarehouse' 414 // name: 'dataWarehouse'
417 }); 415 // });
416 if (row.dataSource == '4') {
417 router.push({
418 name: 'classifyGradeCatalogue',
419 query: {
420 databaseGuid: row.dataSourceGuid,
421 tableGuid: row.subjectGuid
422 }
423 });
424 } else {
425 router.push({
426 name: 'metadataQuery',
427 query: {
428 dataSourceGuid: row.dataSourceGuid,
429 tableGuid: row.subjectGuid
430 }
431 });
432 }
418 } 433 }
419 }; 434 };
420 435
......
...@@ -10,7 +10,7 @@ import { ...@@ -10,7 +10,7 @@ import {
10 getInventoryDsDir 10 getInventoryDsDir
11 } from '@/api/modules/dataQuality'; 11 } from '@/api/modules/dataQuality';
12 import { 12 import {
13 getMetaTreeData 13 getMetaTreeData
14 } from '@/api/modules/dataMetaService'; 14 } from '@/api/modules/dataMetaService';
15 import Table from "@/components/Table/index.vue"; 15 import Table from "@/components/Table/index.vue";
16 import Form from "@/components/Form/index.vue"; 16 import Form from "@/components/Form/index.vue";
...@@ -178,7 +178,24 @@ onBeforeMount(() => { ...@@ -178,7 +178,24 @@ onBeforeMount(() => {
178 formItems.value[0].children = panelList.value; 178 formItems.value[0].children = panelList.value;
179 } 179 }
180 if (props.smallCategoryList?.length) { 180 if (props.smallCategoryList?.length) {
181 panelList.value[2].options = props.smallCategoryList.slice(0, 6); 181 let p = formItems.value[0].default;
182 if (p) {
183 if (p.default == '1') {//规范性
184 panelList.value[2].options = props.smallCategoryList.slice(0, 6);
185 } else if (p.default == '2') {
186 panelList.value[2].options = props.smallCategoryList.slice(6, 8);
187 } else if (p.default == '3') {
188 panelList.value[2].options = props.smallCategoryList.slice(8, 13);
189 } else if (p.default == '4') {
190 panelList.value[2].options = props.smallCategoryList.slice(13, 15);
191 } else if (p.default == '5') {
192 panelList.value[2].options = props.smallCategoryList.slice(15, 18);
193 } else if (p.default == '6') {
194 panelList.value[2].options = props.smallCategoryList.slice(18, 20);
195 }
196 } else {
197 panelList.value[2].options = props.smallCategoryList.slice(0, 6);
198 }
182 panelList.value[2].default = getDefaultSmallCategory(formItems.value[0].default); 199 panelList.value[2].default = getDefaultSmallCategory(formItems.value[0].default);
183 formItems.value[0].children = panelList.value; 200 formItems.value[0].children = panelList.value;
184 } 201 }
...@@ -623,46 +640,46 @@ const submit = () => { ...@@ -623,46 +640,46 @@ const submit = () => {
623 } 640 }
624 641
625 const getSubjectTableTreeData = () => { 642 const getSubjectTableTreeData = () => {
626 if (props.dataSource == '4' || props.value.dataSource == '4') { 643 if (props.dataSource == '4' || props.value.dataSource == '4') {
627 return getInventoryDsDir().then((res: any) => { 644 return getInventoryDsDir().then((res: any) => {
628 if (res.code == proxy.$passCode) { 645 if (res.code == proxy.$passCode) {
629 contrastSubjects.value = res.data?.map(d => { 646 contrastSubjects.value = res.data?.map(d => {
630 d.parentGuid = 0; 647 d.parentGuid = 0;
631 d.guid = d.databaseGuid; 648 d.guid = d.databaseGuid;
632 d.name = d.databaseChName; 649 d.name = d.databaseChName;
633 d.label = d.databaseChName + `(${d.database})`; 650 d.label = d.databaseChName + `(${d.database})`;
634 d.children = d.children?.map(child => { 651 d.children = d.children?.map(child => {
635 child.parentGuid = d.guid; 652 child.parentGuid = d.guid;
636 child.label = child.tableChName + `(${child.tableName})`; 653 child.label = child.tableChName + `(${child.tableName})`;
637 child.guid = child.tableGuid; 654 child.guid = child.tableGuid;
638 child.isLeaf = true; 655 child.isLeaf = true;
639 child.dataServerName = d.database; 656 child.dataServerName = d.database;
640 child.dataSourceGuid = d.databaseGuid; 657 child.dataSourceGuid = d.databaseGuid;
641 child.parentGuid = d.databaseGuid; 658 child.parentGuid = d.databaseGuid;
642 return child; 659 return child;
643 }) 660 })
644 return d; 661 return d;
645 }) || []; 662 }) || [];
646 } 663 }
647 }) 664 })
648 } else { 665 } else {
649 return getMetaTreeData({ isImportCreate: 'N' }).then((res: any) => { 666 return getMetaTreeData({ isImportCreate: 'N' }).then((res: any) => {
650 if (res.code == proxy.$passCode) { 667 if (res.code == proxy.$passCode) {
651 contrastSubjects.value = res.data?.children?.map(d => { 668 contrastSubjects.value = res.data?.children?.map(d => {
652 d.parentGuid = 0; 669 d.parentGuid = 0;
653 d.label = d.name; 670 d.label = d.name;
654 d.children = d.children?.map(child => { 671 d.children = d.children?.map(child => {
655 child.label = child.name + `(${child.tableName})`; 672 child.label = child.name + `(${child.tableName})`;
656 child.isLeaf = true; 673 child.isLeaf = true;
657 child.dataServerName = child.databaseName; 674 child.dataServerName = child.databaseName;
658 child.dataSourceGuid = d.guid; 675 child.dataSourceGuid = d.guid;
659 return child; 676 return child;
660 }) 677 })
661 return d; 678 return d;
662 }) || []; 679 }) || [];
663 } 680 }
664 }) 681 })
665 } 682 }
666 // return getSubjectTableTree({}).then((res: any) => { 683 // return getSubjectTableTree({}).then((res: any) => {
667 // if (res.code == proxy.$passCode) { 684 // if (res.code == proxy.$passCode) {
668 // contrastSubjects.value = res.data || []; 685 // contrastSubjects.value = res.data || [];
...@@ -796,12 +813,11 @@ const formBtnClick = (btn) => { ...@@ -796,12 +813,11 @@ const formBtnClick = (btn) => {
796 if (field.dataRange) { 813 if (field.dataRange) {
797 f.dataRange = field.dataRange; 814 f.dataRange = field.dataRange;
798 } 815 }
816 f.startValue = field.startValue;
817 f.endValue = field.endValue;
799 if (field.startValue) { 818 if (field.startValue) {
800 if (f.dataType == 'date' || f.dataType == 'datetime') { 819 if (f.dataType == 'date' || f.dataType == 'datetime') {
801 f.dateValueRange = [field.startValue, field.endValue]; 820 f.dateValueRange = [field.startValue, field.endValue];
802 } else {
803 f.startValue = field.startValue;
804 f.endValue = field.endValue;
805 } 821 }
806 } 822 }
807 } 823 }
...@@ -1204,12 +1220,11 @@ const listItemClick = (data) => { ...@@ -1204,12 +1220,11 @@ const listItemClick = (data) => {
1204 if (field.dataRange) { 1220 if (field.dataRange) {
1205 f.dataRange = field.dataRange; 1221 f.dataRange = field.dataRange;
1206 } 1222 }
1223 f.startValue = field.startValue;
1224 f.endValue = field.endValue;
1207 if (field.startValue) { 1225 if (field.startValue) {
1208 if (f.dataType == 'date' || f.dataType == 'datetime') { 1226 if (f.dataType == 'date' || f.dataType == 'datetime') {
1209 f.dateValueRange = [field.startValue, field.endValue]; 1227 f.dateValueRange = [field.startValue, field.endValue];
1210 } else {
1211 f.startValue = field.startValue;
1212 f.endValue = field.endValue;
1213 } 1228 }
1214 } 1229 }
1215 } 1230 }
...@@ -1785,7 +1800,7 @@ const submitValueRange = () => { ...@@ -1785,7 +1800,7 @@ const submitValueRange = () => {
1785 // ElMessage.error(`表【${table}】的字段【${field.enName}】设置了值域,但范围未填写完整`); 1800 // ElMessage.error(`表【${table}】的字段【${field.enName}】设置了值域,但范围未填写完整`);
1786 // return; 1801 // return;
1787 // } 1802 // }
1788 if (field.startValue != null || field.endValue != null) { 1803 if (field.startValue || field.endValue) {
1789 ruleFields.push(field); 1804 ruleFields.push(field);
1790 } else if (field.dataRange) { 1805 } else if (field.dataRange) {
1791 ruleFields.push(field); 1806 ruleFields.push(field);
...@@ -1957,15 +1972,8 @@ const submitNormCheck = () => { ...@@ -1957,15 +1972,8 @@ const submitNormCheck = () => {
1957 ElMessage.error(`表【${table}】的字段【${field.enName}】设置了长度检验,但未选择操作符`); 1972 ElMessage.error(`表【${table}】的字段【${field.enName}】设置了长度检验,但未选择操作符`);
1958 return; 1973 return;
1959 } 1974 }
1960 if (!field.value) {
1961 if (dialogSelectSubjectTable.value.enName != table) {
1962 normCheckFormListRef.value.setSelectList(table, 'enName');
1963 }
1964 ElMessage.error(`表【${table}】的字段【${field.enName}】设置了长度检验,但未填写长度值`);
1965 return;
1966 }
1967 if (field.operator == 'between') { 1975 if (field.operator == 'between') {
1968 if (!field.value1) { 1976 if (!field.value1 && !field.value) {
1969 if (dialogSelectSubjectTable.value.enName != table) { 1977 if (dialogSelectSubjectTable.value.enName != table) {
1970 normCheckFormListRef.value.setSelectList(table, 'enName'); 1978 normCheckFormListRef.value.setSelectList(table, 'enName');
1971 } 1979 }
...@@ -1979,8 +1987,15 @@ const submitNormCheck = () => { ...@@ -1979,8 +1987,15 @@ const submitNormCheck = () => {
1979 ElMessage.error(`表【${table}】的字段【${field.enName}】设置了长度检验,介于操作符对应的数值需符合后者大于前者`); 1987 ElMessage.error(`表【${table}】的字段【${field.enName}】设置了长度检验,介于操作符对应的数值需符合后者大于前者`);
1980 return; 1988 return;
1981 } 1989 }
1982 field.configValue = field.operator + '#' + field.value + '#' + field.value1; 1990 field.configValue = field.operator + '#' + (field.value ?? "") + '#' + (field.value1 ?? "");
1983 } else { 1991 } else {
1992 if (!field.value) {
1993 if (dialogSelectSubjectTable.value.enName != table) {
1994 normCheckFormListRef.value.setSelectList(table, 'enName');
1995 }
1996 ElMessage.error(`表【${table}】的字段【${field.enName}】设置了长度检验,但未填写长度值`);
1997 return;
1998 }
1984 field.configValue = field.operator + '#' + field.value; 1999 field.configValue = field.operator + '#' + field.value;
1985 } 2000 }
1986 } 2001 }
...@@ -2016,6 +2031,18 @@ const submitNormCheck = () => { ...@@ -2016,6 +2031,18 @@ const submitNormCheck = () => {
2016 normCheckDialogVisible.value = false; 2031 normCheckDialogVisible.value = false;
2017 } 2032 }
2018 2033
2034 /** 规范检验 长度和精度的数入 */
2035 const validatePositiveInteger = (row: any, field: string) => {
2036 row[field] = row[field].replace(/\D/g, '');
2037 let value = row[field];
2038
2039 // 如果输入值为0,则将其设置为1
2040 if (value == '0') {
2041 row[field] = '1';
2042 return;
2043 }
2044 };
2045
2019 const getFormInfo = () => { 2046 const getFormInfo = () => {
2020 let formInline = ruleFormRef.value.formInline; 2047 let formInline = ruleFormRef.value.formInline;
2021 let ruleName = props.ruleTypeList.find(option => option.ruleCode == formInline.ruleCode).ruleName; 2048 let ruleName = props.ruleTypeList.find(option => option.ruleCode == formInline.ruleCode).ruleName;
...@@ -2220,21 +2247,21 @@ defineExpose({ ...@@ -2220,21 +2247,21 @@ defineExpose({
2220 <el-table-column label="值域" width="280px" align="left" fixed="right"> 2247 <el-table-column label="值域" width="280px" align="left" fixed="right">
2221 <template #default="scope"> 2248 <template #default="scope">
2222 <el-input 2249 <el-input
2223 v-show="!scope.row.dataType || scope.row.dataType == 'varchar' || scope.row.dataType == 'char' || scope.row.dataType == 'bit' || scope.row.dataType == 'json' || scope.row.dataType == 'text' || !scope.row.dataType || scope.row.dataType == 'string' || scope.row.dataType == 'numeric'" 2250 v-show="!scope.row.dataType || scope.row.dataType == 'varchar' || scope.row.dataType == 'char' || scope.row.dataType == 'bit' || scope.row.dataType == 'json' || scope.row.dataType == 'text' || !scope.row.dataType || scope.row.dataType == 'string' || scope.row.dataType == 'numeric'"
2224 v-model.trim="scope.row.dataRange" clearable placeholder="多值按照分号;分隔"> </el-input> 2251 v-model.trim="scope.row.dataRange" clearable placeholder="多值按照分号;分隔"> </el-input>
2225 <!-- <div class="range-sum" v-show="scope.row.dataType == 'datetime' || scope.row.dataType == 'date'"> 2252 <!-- <div class="range-sum" v-show="scope.row.dataType == 'datetime' || scope.row.dataType == 'date'">
2226 <el-date-picker v-model="scope.row.dateValueRange" type="daterange" range-separator="至" 2253 <el-date-picker v-model="scope.row.dateValueRange" type="daterange" range-separator="至"
2227 start-placeholder="开始日期" end-placeholder="结束日期" format="YYYY-MM-DD" value-format="YYYY-MM-DD" 2254 start-placeholder="开始日期" end-placeholder="结束日期" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
2228 :unlink-panels="false" :disabled="props.readonly" /> 2255 :unlink-panels="false" :disabled="props.readonly" />
2229 </div> --> 2256 </div> -->
2230 <div class="range-sum" 2257 <div class="range-sum"
2231 v-show="scope.row.dataType == 'datetime' || scope.row.dataType == 'date' || scope.row.dataType == 'int' || scope.row.dataType == 'decimal' || scope.row.dataType == 'tinyint' || scope.row.dataType == 'timestamp' || scope.row.dataType == 'time'"> 2258 v-show="scope.row.dataType == 'datetime' || scope.row.dataType == 'date' || scope.row.dataType == 'int' || scope.row.dataType == 'decimal' || scope.row.dataType == 'tinyint' || scope.row.dataType == 'timestamp' || scope.row.dataType == 'time'">
2232 <el-input :disabled="props.readonly" v-model.trim="scope.row.startValue" placeholder="请输入" clearable> 2259 <el-input :disabled="props.readonly" v-model.trim="scope.row.startValue" placeholder="请输入" clearable>
2233 </el-input> 2260 </el-input>
2234 <span class="text"></span> 2261 <span class="text"></span>
2235 <el-input :disabled="props.readonly" v-model.trim="scope.row.endValue" placeholder="请输入" clearable> 2262 <el-input :disabled="props.readonly" v-model.trim="scope.row.endValue" placeholder="请输入" clearable>
2236 </el-input> 2263 </el-input>
2237 </div> 2264 </div>
2238 </template> 2265 </template>
2239 </el-table-column> 2266 </el-table-column>
2240 </el-table> 2267 </el-table>
...@@ -2355,7 +2382,7 @@ defineExpose({ ...@@ -2355,7 +2382,7 @@ defineExpose({
2355 <span v-else>{{ scope.row.checkRuleName ?? '--' }}</span> 2382 <span v-else>{{ scope.row.checkRuleName ?? '--' }}</span>
2356 </template> 2383 </template>
2357 </el-table-column> 2384 </el-table-column>
2358 <el-table-column label="填写配置项" width="200px" align="left"> 2385 <el-table-column label="填写配置项" width="240px" align="left">
2359 <template #default="scope"> 2386 <template #default="scope">
2360 <span v-if="props.readonly">{{ scope.row.configValue ?? '--' }}</span> 2387 <span v-if="props.readonly">{{ scope.row.configValue ?? '--' }}</span>
2361 <span 2388 <span
...@@ -2364,7 +2391,7 @@ defineExpose({ ...@@ -2364,7 +2391,7 @@ defineExpose({
2364 <el-input v-show="scope.row.checkRule == 'custom_regular_rule'" v-model.trim="scope.row.configValue" 2391 <el-input v-show="scope.row.checkRule == 'custom_regular_rule'" v-model.trim="scope.row.configValue"
2365 clearable placeholder="请输入"> </el-input> 2392 clearable placeholder="请输入"> </el-input>
2366 <el-input v-show="scope.row.checkRule == 'precision_rule'" v-model.trim="scope.row.configValue" 2393 <el-input v-show="scope.row.checkRule == 'precision_rule'" v-model.trim="scope.row.configValue"
2367 clearable placeholder="请输入" @input="(val) => scope.row.configValue = val.replace(/\D/g, '')"> 2394 clearable :maxlength="4" placeholder="请输入" @input="validatePositiveInteger(scope.row, 'configValue')">
2368 </el-input> 2395 </el-input>
2369 <el-select v-show="scope.row.checkRule == 'date_format_rule'" v-model="scope.row.configValue" 2396 <el-select v-show="scope.row.checkRule == 'date_format_rule'" v-model="scope.row.configValue"
2370 placeholder="请选择" filterable clearable> 2397 placeholder="请选择" filterable clearable>
...@@ -2375,17 +2402,22 @@ defineExpose({ ...@@ -2375,17 +2402,22 @@ defineExpose({
2375 <div class="range-sum" v-show="scope.row.checkRule == 'length_rule'"> 2402 <div class="range-sum" v-show="scope.row.checkRule == 'length_rule'">
2376 <el-select v-model="scope.row.operator" placeholder="请选择" filterable clearable 2403 <el-select v-model="scope.row.operator" placeholder="请选择" filterable clearable
2377 :style="{ width: scope.row.operator == 'between' ? 'calc(33% - 2px)' : 'calc(50% - 4px)' }"> 2404 :style="{ width: scope.row.operator == 'between' ? 'calc(33% - 2px)' : 'calc(50% - 4px)' }">
2378 <el-option 2405 <el-option v-for="opt in [
2379 v-for="opt in [{ value: '=' }, { value: '>' }, { value: '<' }, { value: '>=' }, { value: '<=' }, { value: 'between', label: '介于' }]" 2406 { label: '大于', value: '>', },
2380 :key="opt['value']" :label="opt['label']" :value="opt['value']" /> 2407 { label: '小于', value: '<', },
2408 { label: '等于', value: '=', },
2409 { label: '大于等于', value: '>=', },
2410 { label: '小于等于', value: '<=', },
2411 { label: '介于', value: 'between', },
2412 ]" :key="opt['value']" :label="opt['label']" :value="opt['value']" />
2381 </el-select> 2413 </el-select>
2382 <el-input :disabled="props.readonly" v-model.trim="scope.row.value" placeholder="请输入" clearable 2414 <el-input :disabled="props.readonly" v-model.trim="scope.row.value" placeholder="请输入" clearable
2383 :style="{ width: scope.row.operator == 'between' ? 'calc(33% - 2px)' : 'calc(50% - 4px)' }" 2415 :style="{ width: scope.row.operator == 'between' ? 'calc(33% - 2px)' : 'calc(50% - 4px)' }"
2384 @input="(val) => scope.row.value = val.replace(/\D/g, '')"> 2416 :maxlength="4" @input="validatePositiveInteger(scope.row, 'value')">
2385 </el-input> 2417 </el-input>
2386 <el-input v-show="scope.row.operator == 'between'" :disabled="props.readonly" 2418 <el-input v-show="scope.row.operator == 'between'" :disabled="props.readonly"
2387 v-model.trim="scope.row.value1" placeholder="请输入" clearable :style="{ width: 'calc(33% - 2px)' }" 2419 v-model.trim="scope.row.value1" placeholder="请输入" clearable :style="{ width: 'calc(33% - 2px)' }"
2388 @input="(val) => scope.row.value1 = val.replace(/\D/g, '')"> 2420 :maxlength="4" @input="validatePositiveInteger(scope.row, 'value1')">
2389 </el-input> 2421 </el-input>
2390 </div> 2422 </div>
2391 </template> 2423 </template>
...@@ -2421,8 +2453,9 @@ defineExpose({ ...@@ -2421,8 +2453,9 @@ defineExpose({
2421 <el-table-column prop="contrastSubjectGuid" label="选择对比表" width="200px" align="left" show-overflow-tooltip> 2453 <el-table-column prop="contrastSubjectGuid" label="选择对比表" width="200px" align="left" show-overflow-tooltip>
2422 <template #default="scope"> 2454 <template #default="scope">
2423 <el-tree-select v-if="!props.readonly" ref="treeSelectRef" filterable clearable 2455 <el-tree-select v-if="!props.readonly" ref="treeSelectRef" filterable clearable
2424 v-model="scope.row['contrastSubjectGuid']" node-key="guid" :data="contrastSubjects" placeholder="请选择" :default-expanded-keys="defaultExpandedKeys" 2456 v-model="scope.row['contrastSubjectGuid']" node-key="guid" :data="contrastSubjects" placeholder="请选择"
2425 :auto-expand-parent="true" :default-checked-keys="[props.value.contrastSubjectGuid]" 2457 :default-expanded-keys="defaultExpandedKeys" :auto-expand-parent="true"
2458 :default-checked-keys="[props.value.contrastSubjectGuid]"
2426 :filter-node-method="contrastSubjectInputFilterMethod" :props="{ 2459 :filter-node-method="contrastSubjectInputFilterMethod" :props="{
2427 value: 'guid', 2460 value: 'guid',
2428 label: 'name', 2461 label: 'name',
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!