瀏覽代碼

feat: 数据源增加设备或产品的切换,指数管理添加字段增加取值方式的设置

yanglzh 5 月之前
父節點
當前提交
22e7c58ed4

+ 13 - 4
src/views/system/datahub/modeling/component/editNode.vue

@@ -42,11 +42,11 @@
 					</el-select>
 				</el-form-item>
 
-				<!-- <el-form-item label="取值方式" prop="method" v-if="ruleForm.dataType=='int' || ruleForm.dataType=='bigint' || ruleForm.dataType=='float' || ruleForm.dataType=='double'">
+				<el-form-item label="取值方式" prop="method" v-if="ruleForm.from == 2 && (ruleForm.dataType=='int' || ruleForm.dataType=='bigint' || ruleForm.dataType=='float' || ruleForm.dataType=='double')">
 					<el-select v-model="ruleForm.method"  placeholder="请选择数据类型">
 						<el-option v-for="item in methodData" :key="item.value" :label="item.label" :value="item.value" />
 					</el-select>
-				</el-form-item> -->
+				</el-form-item>
 
 
 				<el-form-item label="默认值" prop="default" v-if="ruleForm.from == 1">
@@ -103,6 +103,7 @@ interface RuleFormState {
 	nodeId: number;
 	key: string;
 	dataType: string;
+	method: string;
 	default: string;
 	isSorting: number;
 	isDesc: number;
@@ -121,12 +122,14 @@ export default defineComponent({
 	components: { Delete, Minus, Right },
 
 	setup(prop, { emit }) {
-		const editDicRef = ref();
 		const formRef = ref<HTMLElement | null>(null);
 		const state = reactive<DicState>({
 			isShowDialog: false,
 			methodData: [
 				{
+					label: '默认',
+					value: '',
+				}, {
 					label: 'max',
 					value: 'max',
 				}, {
@@ -135,6 +138,9 @@ export default defineComponent({
 				}, {
 					label: 'avg',
 					value: 'avg',
+				}, {
+					label: 'sum',
+					value: 'sum',
 				}
 			],
 			tabData: [
@@ -176,6 +182,8 @@ export default defineComponent({
 				sourceId: 0,
 				nodeId: 0,
 				name: '',
+				dataType: '',
+				method: '',
 				key: '',
 				from: 1,
 				isSorting: 0,
@@ -189,7 +197,6 @@ export default defineComponent({
 				name: [{ required: true, message: '字段节点名称不能为空', trigger: 'blur' }],
 				dataType: [{ required: true, message: '数据类型不能为空', trigger: 'blur' }],
 				value: [{ required: true, message: '字段节点取值项不能为空', trigger: 'blur' }],
-				method: [{ required: true, message: '请选择取值方式', trigger: 'blur' }],
 				isSorting: [{ required: true, message: '请选择是否参与排序', trigger: 'blur' }],
 				isDesc: [{ required: true, message: '请选择排序方式', trigger: 'blur' }],
 			},
@@ -249,6 +256,8 @@ export default defineComponent({
 				sourceId: 0,
 				nodeId: 0,
 				key: '',
+				dataType: '',
+				method: '',
 				from: 1,
 				isSorting: 0,
 				isDesc: 0,

+ 26 - 9
src/views/system/datahub/source/component/edit.vue

@@ -82,16 +82,34 @@
 				<el-button type="success" class="addbutton" @click="addParamss">增加分组</el-button>
 			</div>
 			<div v-if="formData.from == 4">
-				<el-form-item label="选择设备" prop="devconfig.deviceKey">
-					<el-select v-model="formData.devconfig.deviceKey" :rules="ruleForm['devconfig.deviceKey']" filterable placeholder="请选择设备" @change="formData.devconfig.productKey = ''">
+				<el-form-item label="设备或产品">
+					<el-radio-group v-model="deviceOrProduct" @change=";(formData.devconfig.productKey = ''), (formData.devconfig.deviceKey = '')">
+						<el-radio label="device">设备</el-radio>
+						<el-radio label="product">产品</el-radio>
+					</el-radio-group>
+				</el-form-item>
+				<el-form-item label="选择设备" v-if="deviceOrProduct == 'device'" prop="devconfig.deviceKey">
+					<el-select
+						v-model="formData.devconfig.deviceKey"
+						:rules="ruleForm['devconfig.deviceKey']"
+						filterable
+						placeholder="请选择设备"
+						@change="formData.devconfig.productKey = ''"
+					>
 						<el-option v-for="item in sourceData" :key="item.key" :label="item.name" :value="item.key">
 							<span style="float: left">{{ item.name }}</span>
 							<span style="float: right; font-size: 13px">{{ item.key }}</span>
 						</el-option>
 					</el-select>
 				</el-form-item>
-				<el-form-item label="选择产品" prop="devconfig.productKey">
-					<el-select v-model="formData.devconfig.productKey" :rules="ruleForm['devconfig.productKey']" filterable placeholder="请选择产品" @change="formData.devconfig.deviceKey = ''">
+				<el-form-item label="选择产品" v-if="deviceOrProduct == 'product'" prop="devconfig.productKey">
+					<el-select
+						v-model="formData.devconfig.productKey"
+						:rules="ruleForm['devconfig.productKey']"
+						filterable
+						placeholder="请选择产品"
+						@change="formData.devconfig.deviceKey = ''"
+					>
 						<el-option v-for="item in producList" :key="item.key" :label="item.name" :value="item.key">
 							<span style="float: left">{{ item.name }}</span>
 							<span style="float: right; font-size: 13px">{{ item.key }}</span>
@@ -201,6 +219,7 @@ import { Delete, CircleClose } from '@element-plus/icons-vue'
 const emit = defineEmits(['typeList'])
 
 const showDialog = ref(false)
+const deviceOrProduct = ref('device')
 const dialogVisible = ref(false)
 const cronShow = ref(false)
 const formRef = ref()
@@ -355,6 +374,8 @@ const ruleForm = {
 	],
 	'config.url': [ruleRequired('请求地址不能为空')],
 	'config.cronExpression': [ruleRequired('定时请求不能为空')],
+	'devconfig.deviceKey': [ruleRequired('请选择设备')],
+	'devconfig.productKey': [ruleRequired('请选择产品')],
 	'tabconfig.type': [ruleRequired('请选择数据来源')],
 	'tabconfig.host': [ruleRequired('请输入主机地址')],
 	'tabconfig.port': [ruleRequired('请输入端口号')],
@@ -398,11 +419,6 @@ const onSubmit = async () => {
 		showDialog.value = false
 		emit('typeList')
 	} else if (formData.from == 4) {
-
-		if (!formData.devconfig.deviceKey || !formData.devconfig.productKey) {
-			return ElMessage('请先选择设备或产品')
-		}
-
 		let form = {
 			sourceId: formData.sourceId ? formData.sourceId : '',
 			key: formData.key,
@@ -463,6 +479,7 @@ const openDialog = async (row: any) => {
 					formData.config = res.data.apiConfig
 					requestParams.value = res.data.apiConfig.requestParams
 				} else if (res.data.from == 4) {
+					deviceOrProduct.value = res.data.deviceConfig.deviceKey ? 'device' : 'product'
 					formData.devconfig = res.data.deviceConfig
 				} else if (res.data.from == 2) {
 					formData.tabconfig = res.data.dbConfig