Merge remote-tracking branch 'origin/master'

master
xs 5 months ago
commit 342274b2be

@ -57,11 +57,17 @@ export default {
this.getOption() this.getOption()
}, },
deep: true deep: true
},
defaultTableData:{
handler(a, b) {
this.getOption()
},
deep: true
} }
}, },
async mounted() { async mounted() {
this.getOption()
await this.getData() await this.getData()
this.getOption()
setInterval(async () => { setInterval(async () => {
await this.getData() await this.getData()
}, 1000*10) }, 1000*10)

@ -28,7 +28,6 @@ export default {
} }
}, },
async mounted() { async mounted() {
console.log('123123', this.defaultData)
await this.getData() await this.getData()
}, },
methods: { methods: {

@ -2,14 +2,11 @@
<div style="height: 100%"> <div style="height: 100%">
<el-row style="height: 100%"> <el-row style="height: 100%">
<el-col :span="12" style="height: 100%;overflow: auto;padding-bottom: 12px;" class="leftCol"> <el-col :span="12" style="height: 100%;overflow: auto;padding-bottom: 12px;" class="leftCol">
<div style="text-align: center">
<el-switch <div style="width: 96%;margin:0 auto">
v-model="configSwitch" <el-collapse v-model="configSwitch" accordion>
active-text="数据配置" <el-collapse-item title="图表配置" name="1">
inactive-text="图表配置"> <div style="height: 100%">
</el-switch>
</div>
<div v-show="!configSwitch" style="height: 100%">
<el-form ref="form" :model="defaultData.configForm" label-width="80px"> <el-form ref="form" :model="defaultData.configForm" label-width="80px">
<el-form-item label="字体颜色"> <el-form-item label="字体颜色">
<el-cascader <el-cascader
@ -25,6 +22,7 @@
v-for="i in Object.keys(networkData)"></el-option> v-for="i in Object.keys(networkData)"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-divider></el-divider>
<div v-for=" (item,k) in defaultData.configForm['datas']"> <div v-for=" (item,k) in defaultData.configForm['datas']">
<el-form-item label="名称"> <el-form-item label="名称">
<el-input v-model="item.name" @change="nameChange(k)"></el-input> <el-input v-model="item.name" @change="nameChange(k)"></el-input>
@ -60,9 +58,14 @@
<el-button>重置</el-button> <el-button>重置</el-button>
</div> </div>
</div> </div>
<div v-show="configSwitch"> </el-collapse-item>
<el-collapse-item title="数据配置" name="2">
<div>
<NetworkRequest :requests="defaultData.requests" @GetFinalData="getData"/> <NetworkRequest :requests="defaultData.requests" @GetFinalData="getData"/>
</div> </div>
</el-collapse-item>
</el-collapse>
</div>
</el-col> </el-col>
<el-col :span="12" style="height: 100%"> <el-col :span="12" style="height: 100%">
<div class="chart"> <div class="chart">

@ -2,14 +2,10 @@
<div style="height: 100%"> <div style="height: 100%">
<el-row style="height: 100%"> <el-row style="height: 100%">
<el-col :span="12" style="height: 100%;overflow: auto;padding-bottom: 12px;" class="leftCol"> <el-col :span="12" style="height: 100%;overflow: auto;padding-bottom: 12px;" class="leftCol">
<div style="text-align: center"> <div style="width: 96%;margin:0 auto">
<el-switch <el-collapse v-model="configSwitch" accordion>
v-model="configSwitch" <el-collapse-item title="图表配置" name="1">
active-text="数据配置" <div style="height: 100%">
inactive-text="图表配置">
</el-switch>
</div>
<div v-show="!configSwitch" style="height: 100%">
<el-form ref="form" :model="defaultData.configForm" label-width="80px"> <el-form ref="form" :model="defaultData.configForm" label-width="80px">
<el-form-item label="字体颜色"> <el-form-item label="字体颜色">
<el-cascader <el-cascader
@ -31,6 +27,7 @@
v-for="i in Object.keys(networkData)"></el-option> v-for="i in Object.keys(networkData)"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-divider></el-divider>
<div v-for=" (item,k) in defaultData.configForm['datas']"> <div v-for=" (item,k) in defaultData.configForm['datas']">
<el-form-item label="名称"> <el-form-item label="名称">
<el-input v-model="item.name" @change="nameChange(k)"></el-input> <el-input v-model="item.name" @change="nameChange(k)"></el-input>
@ -65,9 +62,14 @@
<el-button>重置</el-button> <el-button>重置</el-button>
</div> </div>
</div> </div>
<div v-show="configSwitch"> </el-collapse-item>
<el-collapse-item title="数据配置" name="2">
<div>
<NetworkRequest :requests="defaultData.requests" @GetFinalData="getData"/> <NetworkRequest :requests="defaultData.requests" @GetFinalData="getData"/>
</div> </div>
</el-collapse-item>
</el-collapse>
</div>
</el-col> </el-col>
<el-col :span="12" style="height: 100%"> <el-col :span="12" style="height: 100%">
<div class="chart"> <div class="chart">
@ -93,19 +95,9 @@ export default {
}, },
props: ['defaultData', 'isDialog', 'styleData'], props: ['defaultData', 'isDialog', 'styleData'],
watch: { watch: {
networkData: {
handler() {
this.textColorChange()
this.defaultData.configForm['datas'].forEach((i, k) => {
this.dataChange(k)
this.lineColorChange(k)
})
this.XdataChange()
},
deep: true
},
'defaultData.requests': { 'defaultData.requests': {
async handler() { async handler() {
setTimeout(async () => {
await this.getData() await this.getData()
this.textColorChange() this.textColorChange()
this.defaultData.configForm['datas'].forEach((i, k) => { this.defaultData.configForm['datas'].forEach((i, k) => {
@ -113,6 +105,7 @@ export default {
this.lineColorChange(k) this.lineColorChange(k)
}) })
this.XdataChange() this.XdataChange()
}, 200)
}, },
deep: true deep: true
}, },
@ -130,9 +123,20 @@ export default {
created() { created() {
this.$detectingNullValues(this.defaultData, ['configForm', 'textColor']) this.$detectingNullValues(this.defaultData, ['configForm', 'textColor'])
this.$detectingNullValues(this.defaultData, ['configForm', 'datas', 0]) this.$detectingNullValues(this.defaultData, ['configForm', 'datas', 0])
console.log('12312342344324323423', this.defaultData)
}, },
async mounted() { async mounted() {
this.chartData = JSON.parse(JSON.stringify(this.defaultData.chartData)) this.chartData = JSON.parse(JSON.stringify(this.defaultData.chartData))
this.chartData.series.forEach((i, k) => {
if (!this.defaultData.configForm['datas'][k]) {
console.log('add,add')
this.$set(this.defaultData.configForm['datas'], k, {
data: '',
lineColor: '',
name: ''
})
}
})
// //
await queryGlobalCfg().then(e => { await queryGlobalCfg().then(e => {
this.globalList = e this.globalList = e
@ -143,7 +147,7 @@ export default {
}, },
methods: { methods: {
addDatas() { addDatas() {
let series = JSON.parse(JSON.stringify(this.chartData.series[0])) let series = JSON.parse(JSON.stringify(this.chartData.series[0] || '{}'))
this.$set(this.chartData.series, this.defaultData.configForm['datas'].length, series) this.$set(this.chartData.series, this.defaultData.configForm['datas'].length, series)
this.$set(this.defaultData.chartData.series, this.defaultData.configForm['datas'].length, series) this.$set(this.defaultData.chartData.series, this.defaultData.configForm['datas'].length, series)
this.$set(this.defaultData.configForm['datas'], this.defaultData.configForm['datas'].length, { this.$set(this.defaultData.configForm['datas'], this.defaultData.configForm['datas'].length, {
@ -272,8 +276,8 @@ export default {
.add { .add {
display: inline-block; display: inline-block;
width: 1vw; width: 2vw;
height: 1vw; height: 2vw;
padding: 0.5vw; padding: 0.5vw;
background-color: #409EFF; background-color: #409EFF;
border-radius: 50%; border-radius: 50%;
@ -283,8 +287,8 @@ export default {
.subtract { .subtract {
display: inline-block; display: inline-block;
width: 1vw; width: 2vw;
height: 1vw; height: 2vw;
padding: 0.5vw; padding: 0.5vw;
background-color: #909399; background-color: #909399;
border-radius: 50%; border-radius: 50%;

@ -2,14 +2,10 @@
<div style="height: 100%"> <div style="height: 100%">
<el-row style="height: 100%"> <el-row style="height: 100%">
<el-col :span="12" style="height: 100%;overflow: auto;padding-bottom: 12px;" class="leftCol"> <el-col :span="12" style="height: 100%;overflow: auto;padding-bottom: 12px;" class="leftCol">
<div style="text-align: center"> <div style="width: 96%;margin:0 auto">
<el-switch <el-collapse v-model="configSwitch" accordion>
v-model="configSwitch" <el-collapse-item title="图表配置" name="1">
active-text="数据配置" <div style="height: 100%">
inactive-text="图表配置">
</el-switch>
</div>
<div v-show="!configSwitch" style="height: 100%">
<el-form ref="form" :model="defaultData.configForm" label-width="80px"> <el-form ref="form" :model="defaultData.configForm" label-width="80px">
<el-form-item label="数据"> <el-form-item label="数据">
<el-select v-model="defaultData.configForm['data']" placeholder="请选择数据" <el-select v-model="defaultData.configForm['data']" placeholder="请选择数据"
@ -39,13 +35,18 @@
<el-button>重置</el-button> <el-button>重置</el-button>
</div> </div>
</div> </div>
<div v-show="configSwitch"> </el-collapse-item>
<NetworkRequest :requests="defaultData.requests" @GetFinalData="getData"/> <el-collapse-item title="数据配置" name="2">
<div>
<NetworkRequest :requests="defaultData.requests" @GetFinalData="getData" :limit="{isDataSet:false}"/>
</div>
</el-collapse-item>
</el-collapse>
</div> </div>
</el-col> </el-col>
<el-col :span="12" style="height: 100%"> <el-col :span="12" style="height: 100%">
<div class="chart"> <div class="chart">
<ComplexChart :defaultData="chartData"></ComplexChart> <ComplexChart :defaultData="chartData" :colors="(styleData||{}).colors1"></ComplexChart>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
@ -62,19 +63,15 @@ export default {
ComplexChart, ComplexChart,
NetworkRequest NetworkRequest
}, },
props: ['defaultData', 'isDialog'], props: ['defaultData', 'isDialog', 'styleData'],
watch: { watch: {
networkData: {
handler() {
this.dataChange()
},
deep: true
},
'defaultData.requests': { 'defaultData.requests': {
async handler() { async handler() {
console.log('defaultData.requests')
setTimeout(async () => {
await this.getData() await this.getData()
this.dataChange() this.dataChange()
}, 200)
}, },
deep: true deep: true
}, },
@ -191,7 +188,6 @@ export default {
this.$set(this.chartData.dataset, 'source', data) this.$set(this.chartData.dataset, 'source', data)
console.log('this.chartData.dataset.source',this.chartData)
} }
} }
}, },
@ -200,7 +196,8 @@ export default {
<style scoped lang="less"> <style scoped lang="less">
.chart { .chart {
width: 100%; width: 100%;
height: 100%; height: 50%;
transform: translateY(50%);
} }
.notScroll { .notScroll {

@ -2,14 +2,11 @@
<div style="height: 100%"> <div style="height: 100%">
<el-row style="height: 100%"> <el-row style="height: 100%">
<el-col :span="12" style="height: 100%;overflow: auto;padding-bottom: 12px;" class="leftCol"> <el-col :span="12" style="height: 100%;overflow: auto;padding-bottom: 12px;" class="leftCol">
<div style="text-align: center">
<el-switch <div style="width: 96%;margin:0 auto">
v-model="configSwitch" <el-collapse v-model="configSwitch" accordion>
active-text="数据配置" <el-collapse-item title="图表配置" name="1">
inactive-text="图表配置"> <div style="height: 100%">
</el-switch>
</div>
<div v-show="!configSwitch" style="height: 100%">
<el-form ref="form" :model="defaultData" label-width="80px"> <el-form ref="form" :model="defaultData" label-width="80px">
<el-form-item label="表头数据"> <el-form-item label="表头数据">
<el-select <el-select
@ -18,7 +15,6 @@
filterable filterable
allow-create allow-create
default-first-option default-first-option
@change="thListChange"
placeholder="请选择表头"> placeholder="请选择表头">
<el-option <el-option
v-for="item in defaultData.th" v-for="item in defaultData.th"
@ -35,10 +31,9 @@
filterable filterable
allow-create allow-create
default-first-option default-first-option
@change="thListChange"
placeholder="请选择列数据"> placeholder="请选择列数据">
<el-option <el-option
v-for="item in defaultData.td" v-for="item in tdkeys"
:key="item" :key="item"
:label="item" :label="item"
:value="item"> :value="item">
@ -58,13 +53,19 @@
<el-button>重置</el-button> <el-button>重置</el-button>
</div> </div>
</div> </div>
<div v-show="configSwitch"> </el-collapse-item>
<el-collapse-item title="数据配置" name="2">
<div>
<NetworkRequest ref="NetworkRequest" :requests="defaultData.requests" @GetFinalData="getData"/> <NetworkRequest ref="NetworkRequest" :requests="defaultData.requests" @GetFinalData="getData"/>
</div> </div>
</el-collapse-item>
</el-collapse>
</div>
</el-col> </el-col>
<el-col :span="12" style="height: 100%"> <el-col :span="12" style="height: 100%">
<div class="chart"> <div class="chart">
<ComplexScrollTable ref="ComplexScrollTable" :defaultData="defaultData" :default-table-data="tableData"></ComplexScrollTable> <ComplexScrollTable ref="ComplexScrollTable" :defaultData="defaultData"
:default-table-data="tableData"></ComplexScrollTable>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
@ -98,13 +99,14 @@ export default {
tableData: [], tableData: [],
configSwitch: false, configSwitch: false,
networkData: {}, networkData: {},
tdkeys: [],
} }
}, },
created() { created() {
}, },
async mounted() { async mounted() {
this.dataChange()
await this.getData() await this.getData()
this.dataChange()
setInterval(async () => { setInterval(async () => {
await this.getData() await this.getData()
}, 1000 * 10) }, 1000 * 10)
@ -121,9 +123,9 @@ export default {
} }
}, },
dataChange() { dataChange() {
console.log('dataChange')
this.tableData = this.networkData[this.defaultData.tableDataKey] this.tableData = this.networkData[this.defaultData.tableDataKey]
console.log('this.tableData11',this.tableData) let keys = Object.keys(this.tableData?.[0] || {})
this.tdkeys = keys
} }
}, },
} }

@ -10,13 +10,18 @@
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="deviceModeId" v-show="true"> <el-form-item label="deviceModeId" v-show="false">
<el-input <el-input
v-model="form.deviceModeId"> v-model="form.deviceModeId">
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item label="name" v-show="false">
<el-input
v-model="form.deviceName">
</el-input>
</el-form-item>
<el-form-item label="设备属性"> <el-form-item label="设备属性">
<el-select v-model="form.functionIdentifier" placeholder="请选择"> <el-select v-model="form.functionIdentifier" placeholder="请选择" @change="functionIdentifierChange">
<el-option <el-option
v-for="item in deviceFunList" v-for="item in deviceFunList"
:key="item.functionIdentifier" :key="item.functionIdentifier"
@ -25,25 +30,10 @@
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="数据间隔"> <el-form-item label="functionIdentifierName" v-show="false">
<el-select v-model="form.interval" placeholder="请选择" @change="changeInterval"> <el-input
<el-option v-model="form.functionIdentifierName">
v-for="item in intervalOption" </el-input>
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="时间周期">
<el-date-picker
@change="timeChange"
v-model="time"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</el-form-item> </el-form-item>
</div> </div>
</template> </template>
@ -59,74 +49,39 @@ export default {
time: [], time: [],
deviceList: [], deviceList: [],
deviceFunList: [], deviceFunList: [],
intervalOption: [
{
label: '时',
value: '1',
default: 1
},
{
label: '日',
value: '2',
default: 24
},
{
label: '周',
value: '3',
default: 7
},
{
label: '月',
value: '4',
default: 30
},
{
label: '年',
value: '5',
default: 12
},
],
} }
}, },
mounted() { async mounted() {
getDeviceList().then(e => { await getDeviceList().then(e => {
this.deviceList = e.rows this.deviceList = e.rows
}) })
console.log('this.form.deviceId', this.form)
if (this.form.deviceId) {
let modelId = this.deviceList.find(v => v.deviceId === this.form.deviceId).deviceModeId
getDeviceFunctions(modelId).then(v => {
this.deviceFunList = v.data
})
}
}, },
methods: { methods: {
setDeviceId(e) { setDeviceId(e) {
let modelId = this.deviceList.find(v => v.deviceId === e).deviceModeId let modelId = this.deviceList.find(v => v.deviceId === e).deviceModeId
this.$set(this.form, 'deviceModeId', modelId) this.$set(this.form, 'deviceModeId', modelId)
console.log(modelId) this.$set(this, 'form', {
...this.form,
deviceName: this.deviceList.find(v => v.deviceId === e).deviceName,
functionIdentifier: '',
interval: '',
})
this.$set(this, 'time', [])
getDeviceFunctions(modelId).then(v => { getDeviceFunctions(modelId).then(v => {
this.deviceFunList = v.data this.deviceFunList = v.data
}) })
}, },
timeChange() { functionIdentifierChange(e) {
this.$set(this.form, 'startTime', new Date(this.time[0]).getTime()) this.$set(this.form, 'functionIdentifierName', this.deviceFunList.find(v => v.functionIdentifier === e).functionName || '')
this.$set(this.form, 'endTime', new Date(this.time[1]).getTime()) console.log('functionIdentifierNamefunctionIdentifierNamefunctionIdentifierName,', this.form)
}, },
changeInterval(e) {
let data = this.intervalOption.find(v => v.value === e)
this.$set(this.form,'intervalType',data.default)
if (e === '1') {
this.time = [this.$parseTime(new Date().getTime() - (1000 * 60 * 60 * 24)), this.$parseTime(new Date())]
}
if (e === '2') {
this.time = [this.$parseTime(new Date().getTime() - (1000 * 60 * 60 * 24)), this.$parseTime(new Date())]
}
if (e === '3') {
this.time = [this.$parseTime(new Date().getTime() - (1000 * 60 * 60 * 24 * 7)), this.$parseTime(new Date())]
}
if (e === '4') {
this.time = [this.$parseTime(new Date().getTime() - (1000 * 60 * 60 * 24 * 30)), this.$parseTime(new Date())]
}
if (e === '5') {
this.time = [this.$parseTime(new Date().getTime() - (1000 * 60 * 60 * 24 * 365)), this.$parseTime(new Date())]
}
this.$set(this.form, 'startTime', new Date(this.time[0]).getTime())
this.$set(this.form, 'endTime', new Date(this.time[1]).getTime())
}
} }
} }
</script> </script>

@ -3,6 +3,8 @@
<div style="width: 90%;margin: 0 auto "> <div style="width: 90%;margin: 0 auto ">
<div style="margin: 8px 0"> <div style="margin: 8px 0">
<el-button type="primary" @click="addRequest()"></el-button> <el-button type="primary" @click="addRequest()"></el-button>
<el-button type="primary" @click="setInterval()"></el-button>
</div> </div>
<div v-for="(i,k) in requests" style="display: inline-block;margin: 0 8px 8px 0"> <div v-for="(i,k) in requests" style="display: inline-block;margin: 0 8px 8px 0">
@ -81,13 +83,13 @@
<div style="width: calc(100% - 50px - 150px);height: 100%;display: inline-block;vertical-align: top"> <div style="width: calc(100% - 50px - 150px);height: 100%;display: inline-block;vertical-align: top">
<div style="width: 100%;height: 50%;padding-left: 12px;line-height: 25px;font-weight: 700"> <div style="width: 100%;height: 50%;padding-left: 12px;line-height: 25px;font-weight: 700">
<span> <span>
{{ i.deviceId || '设备' }} {{ i.deviceName || i.deviceId || '设备' }}
</span> </span>
</div> </div>
<div <div
style="white-space: nowrap;overflow: hidden;text-overflow: ellipsis; width: 175%;height: 50%;padding-left: 12px;line-height: 25px;font-size: 12px;color: #0009"> style="white-space: nowrap;overflow: hidden;text-overflow: ellipsis; width: 175%;height: 50%;padding-left: 12px;line-height: 25px;font-size: 12px;color: #0009">
<span> <span>
{{ i.functionIdentifier || '属性' }} {{ i.functionIdentifierName || i.functionIdentifier || '属性' }}
</span> </span>
</div> </div>
</div> </div>
@ -185,6 +187,42 @@
</span> </span>
</el-dialog> </el-dialog>
<el-dialog
title="设置设备获取数据间隔"
append-to-body
:visible.sync="setIntervalDialogVisible"
width="30%">
<el-form :model="equipmentIntervalForm" label-width="120px">
<el-form-item label="数据间隔" v-if="false">
<el-input v-model="equipmentIntervalForm.intervalType"></el-input>
</el-form-item>
<el-form-item label="数据间隔">
<el-select v-model="equipmentIntervalForm.interval" placeholder="请选择" @change="changeInterval">
<el-option
v-for="item in intervalOption"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="时间周期">
<el-date-picker
@change="timeChange"
v-model="equipmentIntervalForm.time"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="setIntervalDialogVisible = false"> </el-button>
<el-button type="primary" @click="setIntervalOk"> </el-button>
</span>
</el-dialog>
<el-dialog <el-dialog
title="网络请求" title="网络请求"
append-to-body append-to-body
@ -205,7 +243,7 @@
:visible.sync="addEquipmentFormDialogVisible" :visible.sync="addEquipmentFormDialogVisible"
width="30%"> width="30%">
<el-form :model="addEquipmentForm" label-width="120px"> <el-form :model="addEquipmentForm" label-width="120px">
<EquipmentRequest :form="addEquipmentForm"/> <EquipmentRequest :form="addEquipmentForm" v-if="addEquipmentFormDialogVisible"/>
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="addEquipmentFormDialogVisible = false"> </el-button> <el-button @click="addEquipmentFormDialogVisible = false"> </el-button>
@ -228,7 +266,7 @@
v-model="i.region" v-model="i.region"
:options="options" @change="mappingChange(i,k)"></el-cascader> :options="options" @change="mappingChange(i,k)"></el-cascader>
</el-form-item> </el-form-item>
<el-form-item label="将数据某一项集合" v-if="i.isArray"> <el-form-item label="将数据某一项集合" v-if="(!((limit||{}).isDataSet===false))&& i.isArray">
<el-select v-model="i.mapData" clearable placeholder="非必选"> <el-select v-model="i.mapData" clearable placeholder="非必选">
<el-option :label="i.label" :value="i.value" v-for="i in enumOption"></el-option> <el-option :label="i.label" :value="i.value" v-for="i in enumOption"></el-option>
</el-select> </el-select>
@ -262,7 +300,7 @@ export default {
InterfaceRequest, InterfaceRequest,
EquipmentRequest EquipmentRequest
}, },
props: ['requests'], props: ['requests', 'limit'],
data() { data() {
return { return {
value: false, value: false,
@ -271,11 +309,13 @@ export default {
networkImg, networkImg,
customizationRequestImg, customizationRequestImg,
addRequestDialogVisible: false, addRequestDialogVisible: false,
setIntervalDialogVisible: false,
addRequestFormDialogVisible: false, addRequestFormDialogVisible: false,
addEquipmentFormDialogVisible: false, addEquipmentFormDialogVisible: false,
mappingDialogVisible: false, mappingDialogVisible: false,
addRequestForm: {}, addRequestForm: {},
addEquipmentForm: {}, addEquipmentForm: {},
equipmentIntervalForm: {},
mappingForm: {}, mappingForm: {},
option: [], option: [],
enumOption: [], enumOption: [],
@ -283,17 +323,88 @@ export default {
updateIndex: 0, updateIndex: 0,
updateDeviceFlag: false, updateDeviceFlag: false,
updateDeviceIndex: 0, updateDeviceIndex: 0,
intervalOption: [
{
label: '时',
value: '1',
default: 1
},
{
label: '日',
value: '2',
default: 24
},
{
label: '周',
value: '3',
default: 7
},
{
label: '月',
value: '4',
default: 30
},
{
label: '年',
value: '5',
default: 12
},
],
} }
}, },
mounted() { mounted() {
if (!this.requests || !Array.isArray(this.requests)) { if (!this.requests || !Array.isArray(this.requests)) {
this.requests = [] this.requests = []
} }
let firstDevice = this.requests.find(e => e.type === 2)
this.$set(this, 'equipmentIntervalForm', {
intervalType: firstDevice.intervalType,
interval: firstDevice.interval,
time: [this.$parseTime(firstDevice?.startTime), this.$parseTime(firstDevice?.endTime)]
})
}, },
methods: { methods: {
addRequest() { addRequest() {
this.addRequestDialogVisible = true this.addRequestDialogVisible = true
}, },
setInterval() {
this.setIntervalDialogVisible = true
},
changeInterval(e) {
let data = this.intervalOption.find(v => v.value === e)
this.$set(this.equipmentIntervalForm, 'intervalType', data.default)
if (e === '1') {
this.equipmentIntervalForm.time = [this.$parseTime(new Date().getTime() - (1000 * 60 * 60 * 24)), this.$parseTime(new Date())]
}
if (e === '2') {
this.equipmentIntervalForm.time = [this.$parseTime(new Date().getTime() - (1000 * 60 * 60 * 24)), this.$parseTime(new Date())]
}
if (e === '3') {
this.equipmentIntervalForm.time = [this.$parseTime(new Date().getTime() - (1000 * 60 * 60 * 24 * 7)), this.$parseTime(new Date())]
}
if (e === '4') {
this.equipmentIntervalForm.time = [this.$parseTime(new Date().getTime() - (1000 * 60 * 60 * 24 * 30)), this.$parseTime(new Date())]
}
if (e === '5') {
this.equipmentIntervalForm.time = [this.$parseTime(new Date().getTime() - (1000 * 60 * 60 * 24 * 365)), this.$parseTime(new Date())]
}
this.$set(this.equipmentIntervalForm, 'startTime', new Date(this.equipmentIntervalForm.time[0]).getTime())
this.$set(this.equipmentIntervalForm, 'endTime', new Date(this.equipmentIntervalForm.time[1]).getTime())
},
timeChange() {
this.$set(this.form, 'startTime', new Date(this.time[0]).getTime())
this.$set(this.form, 'endTime', new Date(this.time[1]).getTime())
},
setIntervalOk() {
this.requests.forEach((e,k) => {
if (e.type === 2) {
this.$set(this.requests[k], 'interval', this.equipmentIntervalForm.interval)
this.$set(this.requests[k], 'intervalType', this.equipmentIntervalForm.intervalType)
this.$set(this.requests[k], 'startTime', new Date(this.equipmentIntervalForm.time[0]).getTime())
this.$set(this.requests[k], 'endTime', new Date(this.equipmentIntervalForm.time[1]).getTime())
}
})
},
subtractRequest(key) { subtractRequest(key) {
if (this.requests?.length > 1) { if (this.requests?.length > 1) {
this.$delete(this.requests, key) this.$delete(this.requests, key)
@ -327,9 +438,15 @@ export default {
this.addRequestForm = {} this.addRequestForm = {}
}, },
addEquipmentConfirm() { addEquipmentConfirm() {
console.log('123123,345345,12313',this.addEquipmentForm)
console.log('123123,345345,12313',this.requests)
if (this.updateDeviceFlag) { if (this.updateDeviceFlag) {
this.$set(this.requests, this.updateDeviceIndex, Vue.observable({ this.$set(this.requests, this.updateDeviceIndex, Vue.observable({
...this.addEquipmentForm, ...this.addEquipmentForm,
interval: this.equipmentIntervalForm.interval,
intervalType: this.equipmentIntervalForm.intervalType,
startTime: new Date(this.equipmentIntervalForm.time[0]).getTime(),
endTime: new Date(this.equipmentIntervalForm.time[1]).getTime(),
type: 2, type: 2,
connectionStatus: -1, connectionStatus: -1,
isOpen: true isOpen: true
@ -337,6 +454,10 @@ export default {
} else { } else {
this.requests.push(Vue.observable({ this.requests.push(Vue.observable({
...this.addEquipmentForm, ...this.addEquipmentForm,
interval: this.equipmentIntervalForm.interval,
intervalType: this.equipmentIntervalForm.intervalType,
startTime: new Date(this.equipmentIntervalForm.time[0]).getTime(),
endTime: new Date(this.equipmentIntervalForm.time[1]).getTime(),
type: 2, type: 2,
connectionStatus: -1, connectionStatus: -1,
isOpen: true isOpen: true
@ -358,7 +479,7 @@ export default {
this.$set(this.requests[k], 'connectionStatus', 0) this.$set(this.requests[k], 'connectionStatus', 0)
getHistoryData({ getHistoryData({
deviceModeId: i.deviceModeId, deviceModeId: i.deviceModeId,
functionIdentifier: i.functionIdentifier + '1', functionIdentifier: i.functionIdentifier,
interval: i.interval, interval: i.interval,
"sceneId": 144, "sceneId": 144,
"deviceId": i.deviceId, "deviceId": i.deviceId,
@ -472,9 +593,9 @@ export default {
}, },
async setDeviceMapping(i, k) { async setDeviceMapping(i, k) {
if (!this.requests?.[k]?.request) { if (!this.requests?.[k]?.request) {
getHistoryData({ await getHistoryData({
deviceModeId: i.deviceModeId, deviceModeId: i.deviceModeId,
functionIdentifier: i.functionIdentifier + '1', functionIdentifier: i.functionIdentifier,
interval: i.interval, interval: i.interval,
"sceneId": 144, "sceneId": 144,
"deviceId": i.deviceId, "deviceId": i.deviceId,

@ -296,7 +296,7 @@ export default {
this.dialogVisible = false this.dialogVisible = false
}, },
SelectComponentsCB(e) { SelectComponentsCB(e) {
this.$set(this.tree, this.type, e) this.$set(this.tree, this.type, JSON.parse(JSON.stringify(e)))
this.componentsDialogVisible = false this.componentsDialogVisible = false
}, },
clearCom() { clearCom() {

@ -294,7 +294,7 @@ export default {
this.dialogVisible = false this.dialogVisible = false
}, },
SelectComponentsCB(e) { SelectComponentsCB(e) {
this.$set(this.tree, this.type, e) this.$set(this.tree, this.type, JSON.parse(JSON.stringify(e)))
this.componentsDialogVisible = false this.componentsDialogVisible = false
}, },
clearCom() { clearCom() {

@ -35,7 +35,7 @@ export default {
if (Object.keys(data).length > 0) { if (Object.keys(data).length > 0) {
this.getChartData(data) this.getChartData(data)
} }
this.chartData.color = this.styleData?.colors?.length > 0 ? this.styleData.colors : ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc'] this.chartData.color = this.styleData?.colors1?.length > 0 ? this.styleData.colors1 : ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc']
this.$refs.chart?.setData(this.$clearNull(this.chartData, this.requestData) || {}) this.$refs.chart?.setData(this.$clearNull(this.chartData, this.requestData) || {})
}, },

@ -8,7 +8,7 @@ import Chart from '@/components/chart'
import Vue from "vue"; import Vue from "vue";
export default { export default {
props: ['defaultData'], props: ['defaultData', 'styleData'],
components: { components: {
Chart Chart
}, },
@ -28,13 +28,14 @@ export default {
await this.getData() await this.getData()
setInterval(async () => { setInterval(async () => {
await this.getData() await this.getData()
}, 10000) }, 60000)
}, },
methods: { methods: {
async getData() { async getData() {
this.chartData = JSON.parse(JSON.stringify(this.defaultData.chartData)) this.chartData = JSON.parse(JSON.stringify(this.defaultData.chartData))
this.chartData.color = this.styleData?.colors1?.length > 0 ? this.styleData.colors1 : ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc']
let data = await this.$getFinalData(this.defaultData.requests) let data = await this.$getFinalData(this.defaultData.requests)
console.log('chart-data',data) console.log('chart-data',this.styleData?.colors)
console.log('chart-data==--==',this.defaultData) console.log('chart-data==--==',this.defaultData)
if (Object.keys(data).length > 0) { if (Object.keys(data).length > 0) {
this.pieData = data[this.defaultData.configForm.data] this.pieData = data[this.defaultData.configForm.data]

@ -49,7 +49,7 @@ service.interceptors.request.use(config => {
const s_url = sessionObj.url; // 请求地址 const s_url = sessionObj.url; // 请求地址
const s_data = sessionObj.data; // 请求数据 const s_data = sessionObj.data; // 请求数据
const s_time = sessionObj.time; // 请求时间 const s_time = sessionObj.time; // 请求时间
const interval = 1000; // 间隔时间(ms),小于此时间视为重复提交 const interval = 100; // 间隔时间(ms),小于此时间视为重复提交
if (s_data === requestObj.data && requestObj.time - s_time < interval && s_url === requestObj.url) { if (s_data === requestObj.data && requestObj.time - s_time < interval && s_url === requestObj.url) {
const message = '数据正在处理,请勿重复提交'; const message = '数据正在处理,请勿重复提交';
console.warn(`[${s_url}]: ` + message) console.warn(`[${s_url}]: ` + message)

@ -30,7 +30,7 @@ const mappingFunction = async (data, method) => {
if (data.type === 2) { if (data.type === 2) {
let res2 = await getHistoryData({ let res2 = await getHistoryData({
deviceModeId: data.deviceModeId, deviceModeId: data.deviceModeId,
functionIdentifier: data.functionIdentifier + '1', functionIdentifier: data.functionIdentifier,
interval: data.interval, interval: data.interval,
"sceneId": 144, "sceneId": 144,
"deviceId": data.deviceId, "deviceId": data.deviceId,
@ -38,6 +38,20 @@ const mappingFunction = async (data, method) => {
endTime: data.endTime, endTime: data.endTime,
intervalType: 1 || data.intervalType, intervalType: 1 || data.intervalType,
}) })
console.log('datadata', data.interval)
if (data.interval === '5') {
res2.data.groupDeviceData.dataList = res2.data.groupDeviceData.dataList.map(e => {
return {...e, time: parseTime(e.time, '{y}-{m}')}
})
} else if (data.interval === '4' || data.interval === '3') {
res2.data.groupDeviceData.dataList = res2.data.groupDeviceData.dataList.map(e => {
return {...e, time: parseTime(e.time, '{y}-{m}-{d}')}
})
}else{
res2.data.groupDeviceData.dataList = res2.data.groupDeviceData.dataList.map(e => {
return {...e, time: parseTime(e.time, '{y}-{m}-{d} {h}:{i}:{s}')}
})
}
let returnRes = {} let returnRes = {}
method?.mappingArr?.forEach(v => { method?.mappingArr?.forEach(v => {
let res = res2.data let res = res2.data

@ -2,7 +2,7 @@
<div style="width: 100vw;height: 100vh;overflow:auto;" class="container"> <div style="width: 100vw;height: 100vh;overflow:auto;" class="container">
<div class="bindComponents" ref="container"> <div class="bindComponents" ref="container">
<div ref="scene" class="scene" <div ref="scene" class="scene"
:style="`width:${pageData.width?( pageData.width -1 +'px'):'100%'};height:${pageData.height?( pageData.height - 1+'px'):'100%'};background-image:url(${pageCfg.bg})`"> :style="`width:${pageData.width?( pageData.width -1 +'px'):'100%'};height:${pageData.height?( pageData.height - 1+'px'):'100%'};${pageCfg.isBgImg? `background-image:url(${pageCfg.bg})`:`background-color:${pageCfg.bg}`}`">
<component :is="sceneData.center" :viewFlag="true" :styleData="pageCfg.styleData" <component :is="sceneData.center" :viewFlag="true" :styleData="pageCfg.styleData"
:tree="sceneData.centerChildren"></component> :tree="sceneData.centerChildren"></component>
</div> </div>

@ -153,7 +153,7 @@
</div> </div>
<div class="bindComponents" ref="container"> <div class="bindComponents" ref="container">
<div ref="scene" class="scene" <div ref="scene" class="scene"
:style="`width:${pageData.width?( pageData.width+'px'):'100%'};height:${pageData.height?( pageData.height+'px'):'100%'};background-image:url(${pageCfg.bg})`"> :style="`width:${pageData.width?( pageData.width+'px'):'100%'};height:${pageData.height?( pageData.height+'px'):'100%'};${pageCfg.isBgImg? `background-image:url(${pageCfg.bg})`:`background-color:${pageCfg.bg}`}`">
<component :is="bindComponentsData.sceneData.center " <component :is="bindComponentsData.sceneData.center "
:styleData="pageCfg.styleData" :styleData="pageCfg.styleData"
:tree="bindComponentsData.sceneData.centerChildren"></component> :tree="bindComponentsData.sceneData.centerChildren"></component>
@ -185,9 +185,19 @@
</el-col> </el-col>
</el-form-item> </el-form-item>
<el-form-item label="画布背景" label-width="120px"> <el-form-item label="画布背景" label-width="120px">
<el-switch
v-model="pageCfg.isBgImg"
active-color="#13ce66"
inactive-color="#ff4949"
active-text="图片"
inactive-text="纯色">
</el-switch>
<br>
<el-color-picker v-if="!pageCfg.isBgImg" v-model="pageCfg.bg"></el-color-picker>
<el-upload <el-upload
v-if="pageCfg.isBgImg"
class="avatar-uploader" class="avatar-uploader"
action="dev-api/basic/hwTemplateAchieve/saveImage" :action="(process.env.NODE_ENV === 'development'?'dev-api':'prod-api')+'/basic/hwTemplateAchieve/saveImage'"
:headers="{ :headers="{
authorization:'Bearer ' + getToken() authorization:'Bearer ' + getToken()
}" }"
@ -271,6 +281,7 @@ export default {
}, },
data() { data() {
return { return {
process,
inputVisible: false, inputVisible: false,
inputValue: '', inputValue: '',
inputVisible1: false, inputVisible1: false,

@ -81,7 +81,7 @@
<el-form-item label="背景" label-width="80px"> <el-form-item label="背景" label-width="80px">
<el-upload <el-upload
class="avatar-uploader" class="avatar-uploader"
action="dev-api/basic/hwTemplateAchieve/saveImage" :action="(process.env.NODE_ENV === 'development'?'dev-api':'prod-api')+'/basic/hwTemplateAchieve/saveImage'"
:headers="{ :headers="{
authorization:'Bearer ' + getToken() authorization:'Bearer ' + getToken()
}" }"
@ -127,6 +127,7 @@ export default {
}, },
data() { data() {
return { return {
process,
load: false, load: false,
dialogTitle1: '', dialogTitle1: '',
addModelDialog: false, addModelDialog: false,
@ -151,6 +152,9 @@ export default {
tableData: [] tableData: []
} }
}, },
created() {
this.process = process
},
mounted() { mounted() {
this.queryModels() this.queryModels()
}, },

Loading…
Cancel
Save