物模型:查询切换模型时页码为1,查询添加名称编码参数
机构:查询切换模型时页码为1 单风机: 添加命令 控制:修改请求接口,修改调用方式 新增页面操作记录
This commit is contained in:
parent
5ee9802c4f
commit
b52765db67
@ -1,17 +1,19 @@
|
|||||||
import createAxios from '/@/utils/axios'
|
import createAxios from '/@/utils/axios'
|
||||||
|
import { CommandReqType, CommandResType } from '/@/views/backend/equipment/airBlower/type'
|
||||||
|
|
||||||
export const sendValue146Req = (data: any) => {
|
|
||||||
return createAxios({
|
export const sendCommandReq = (data: CommandReqType) => {
|
||||||
url: '/api/node/link/setPoint',
|
return createAxios<never, Promise<CommandResType>>({
|
||||||
|
url: '/api/operation/command',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: data,
|
data: data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
export const sendValue147Req = (data: any) => {
|
export const sendManualCommandReq = (data: CommandReqType) => {
|
||||||
return createAxios({
|
return createAxios<never, Promise<CommandResType>>({
|
||||||
url: '/api/node/link/command',
|
url: '/api/operation/manualCommand',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: data,
|
data: data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
9
ui/dasadmin/src/api/backend/operatingRecord/request.ts
Normal file
9
ui/dasadmin/src/api/backend/operatingRecord/request.ts
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
import createAxios from '/@/utils/axios'
|
||||||
|
import { OperatingReqType, ReturnType } from '/@/views/backend/operatingRecord/type'
|
||||||
|
export const getOperatingListReq = (data: OperatingReqType) => {
|
||||||
|
return createAxios<never, Promise<ReturnType>>({
|
||||||
|
url: '/api/operation/getEventLogList',
|
||||||
|
method: 'post',
|
||||||
|
data: data,
|
||||||
|
})
|
||||||
|
}
|
@ -106,11 +106,19 @@
|
|||||||
<el-tag class="control-tag" type="primary">{{ realTimeDataState }}</el-tag>
|
<el-tag class="control-tag" type="primary">{{ realTimeDataState }}</el-tag>
|
||||||
</div>
|
</div>
|
||||||
<div class="btnLeft">
|
<div class="btnLeft">
|
||||||
<el-button v-if="realTimeData.iturbineoperationmode !== 16" class="control-btn" type="primary">启动</el-button>
|
<el-button
|
||||||
<el-button v-else class="control-btn" type="primary">停机</el-button>
|
@click="sendCommand('setTurbineFastStart')"
|
||||||
<el-button class="control-btn" type="primary">复位</el-button>
|
v-if="realTimeData.iturbineoperationmode !== 16"
|
||||||
<el-button v-if="realTimeData.locked !== 1" class="control-btn" type="primary">锁定</el-button>
|
class="control-btn"
|
||||||
<el-button v-else class="control-btn" type="primary">解锁</el-button>
|
type="primary"
|
||||||
|
>启动</el-button
|
||||||
|
>
|
||||||
|
<el-button @click="sendCommand('setTurbineStop')" v-else class="control-btn" type="primary">停机</el-button>
|
||||||
|
<el-button @click="sendCommand('setTurbineResetStatusCode')" class="control-btn" type="primary">复位</el-button>
|
||||||
|
<el-button @click="sendManualCommand(1)" v-if="realTimeData.locked !== 1" class="control-btn" type="primary"
|
||||||
|
>锁定</el-button
|
||||||
|
>
|
||||||
|
<el-button @click="sendManualCommand(0)" v-else class="control-btn" type="primary">解锁</el-button>
|
||||||
</div>
|
</div>
|
||||||
<el-tooltip content="变桨/轮毂系统">
|
<el-tooltip content="变桨/轮毂系统">
|
||||||
<div @click="openSubSystem(1)" class="dot index-1"></div>
|
<div @click="openSubSystem(1)" class="dot index-1"></div>
|
||||||
@ -206,7 +214,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="summarize-panel-base">
|
<div class="summarize-panel-base">
|
||||||
<div>
|
<div>
|
||||||
<span class="content-number">{{ realTimeDataForSingle.windfarmmonthprodenergy }}</span>
|
<span class="content-number">{{ realTimeDataForSingle.monthprodenergy }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div><span>万kWh</span></div>
|
<div><span>万kWh</span></div>
|
||||||
<div><span>月发电量</span></div>
|
<div><span>月发电量</span></div>
|
||||||
@ -220,7 +228,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="summarize-panel-base">
|
<div class="summarize-panel-base">
|
||||||
<div>
|
<div>
|
||||||
<span class="content-number">{{ realTimeDataForSingle.windfarmyearprodenergy }}</span>
|
<span class="content-number">{{ realTimeDataForSingle.yearprodenergy }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div><span>万kWh</span></div>
|
<div><span>万kWh</span></div>
|
||||||
<div><span>年发电量</span></div>
|
<div><span>年发电量</span></div>
|
||||||
@ -314,16 +322,15 @@ import { getModelAttributeListReq } from '/@/api/backend/deviceModel/request'
|
|||||||
import { useRoute } from 'vue-router'
|
import { useRoute } from 'vue-router'
|
||||||
import Overview from './overview.vue'
|
import Overview from './overview.vue'
|
||||||
import { TableInstance } from 'element-plus'
|
import { TableInstance } from 'element-plus'
|
||||||
import { dayjs } from 'element-plus'
|
import { dayjs, ElMessage, ElMessageBox } from 'element-plus'
|
||||||
import { getRealTimeState, getCutDecimalsValue } from '/@/views/backend/equipment/airBlower/utils'
|
import { getRealTimeState, getCutDecimalsValue } from '/@/views/backend/equipment/airBlower/utils'
|
||||||
import { get } from 'sortablejs'
|
import { sendCommandReq, sendManualCommandReq } from '/@/api/backend/control/request'
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
|
|
||||||
const d = new Date()
|
|
||||||
const { t } = useI18n()
|
const { t } = useI18n()
|
||||||
let timer: any = null
|
let timer: any = null
|
||||||
let myTable = ref<TableInstance>()
|
let myTable = ref<TableInstance>()
|
||||||
const radioactiveName = ref('1')
|
|
||||||
|
|
||||||
const overviewData = reactive({
|
const overviewData = reactive({
|
||||||
iul1_690v: '-',
|
iul1_690v: '-',
|
||||||
@ -351,8 +358,8 @@ const realTimeDataForSingle = ref<any>({
|
|||||||
ipitchangle: '',
|
ipitchangle: '',
|
||||||
iwindspeed: '-',
|
iwindspeed: '-',
|
||||||
iwinddirection: '-',
|
iwinddirection: '-',
|
||||||
windfarmmonthprodenergy: '-',
|
monthprodenergy: '-',
|
||||||
windfarmyearprodenergy: '-',
|
yearprodenergy: '-',
|
||||||
})
|
})
|
||||||
|
|
||||||
const state: {
|
const state: {
|
||||||
@ -1039,11 +1046,15 @@ const createRealTimeData = async () => {
|
|||||||
const modelList: any = await getModelList()
|
const modelList: any = await getModelList()
|
||||||
const realData: any = await getRealTimeData()
|
const realData: any = await getRealTimeData()
|
||||||
realTimeData.value.iturbineoperationmode = getRealTimeState(realData)
|
realTimeData.value.iturbineoperationmode = getRealTimeState(realData)
|
||||||
|
realTimeData.value.locked = realData.locked
|
||||||
|
|
||||||
temperatureChartsData[0].value = getCutDecimalsValue(realData.itempoutdoor_1sec)
|
temperatureChartsData[0].value = getCutDecimalsValue(realData.itempoutdoor_1sec)
|
||||||
temperatureChartsData[1].value = getCutDecimalsValue(realData.itempnacelle_1sec)
|
temperatureChartsData[1].value = getCutDecimalsValue(realData.itempnacelle_1sec)
|
||||||
temperatureChartsData[2].value = getCutDecimalsValue(realData.itempoutdoor_1sec)
|
temperatureChartsData[2].value = getCutDecimalsValue(realData.itempoutdoor_1sec)
|
||||||
|
|
||||||
|
const ipitchangle = Math.min(realData.ipitchangle1, realData.ipitchangle2, realData.ipitchangle3)
|
||||||
|
realTimeDataForSingle.value.ipitchangle = ipitchangle / 1 === 0 ? ipitchangle : Math.floor(ipitchangle * 1000) / 1000
|
||||||
|
|
||||||
const overviewDatakeys: any = Object.keys(overviewData)
|
const overviewDatakeys: any = Object.keys(overviewData)
|
||||||
const sigleDataKeys: any = Object.keys(realTimeDataForSingle.value)
|
const sigleDataKeys: any = Object.keys(realTimeDataForSingle.value)
|
||||||
|
|
||||||
@ -1063,13 +1074,6 @@ const createRealTimeData = async () => {
|
|||||||
if (sigleDataKeys.includes(item.attributeCode.toLowerCase())) {
|
if (sigleDataKeys.includes(item.attributeCode.toLowerCase())) {
|
||||||
realTimeDataForSingle.value[item.attributeCode.toLowerCase()] = val === '-' ? val : val
|
realTimeDataForSingle.value[item.attributeCode.toLowerCase()] = val === '-' ? val : val
|
||||||
}
|
}
|
||||||
if (
|
|
||||||
item.attributeCode.toLowerCase() === 'ipitchangle1' ||
|
|
||||||
item.attributeCode.toLowerCase() === 'ipitchangle2' ||
|
|
||||||
item.attributeCode.toLowerCase() === 'ipitchangle3'
|
|
||||||
) {
|
|
||||||
realTimeDataForSingle.value.ipitchangle = Math.min(realTimeDataForSingle.value.ipitchangle, realVal)
|
|
||||||
}
|
|
||||||
if (overviewDatakeys.includes(item.attributeCode.toLowerCase())) {
|
if (overviewDatakeys.includes(item.attributeCode.toLowerCase())) {
|
||||||
overviewData[item.attributeCode.toLowerCase() as keyof typeof overviewData] = val === '-' ? val : val + item.unit
|
overviewData[item.attributeCode.toLowerCase() as keyof typeof overviewData] = val === '-' ? val : val + item.unit
|
||||||
}
|
}
|
||||||
@ -1359,6 +1363,58 @@ const getAllChartData = (type: ('power' | 'trend' | 'frequency')[] = ['power', '
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const sendCommand = (type: 'setTurbineFastStart' | 'setTurbineStop' | 'setTurbineResetStatusCode') => {
|
||||||
|
const sendTypeEnum = {
|
||||||
|
setTurbineFastStart: '风机快速启动指令',
|
||||||
|
setTurbineStop: '风机停机指令',
|
||||||
|
setTurbineResetStatusCode: '风机复位故障代码指令',
|
||||||
|
}
|
||||||
|
ElMessageBox.confirm('确认发送' + sendTypeEnum[type] + '吗?', '', {
|
||||||
|
confirmButtonText: '确认',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning',
|
||||||
|
}).then(() => {
|
||||||
|
const serviceName = sendTypeEnum[type]
|
||||||
|
const optDesc = serviceName + 1
|
||||||
|
sendCommandReq({
|
||||||
|
deviceId: route.query.irn as string,
|
||||||
|
serviceCode: type,
|
||||||
|
serviceName,
|
||||||
|
optDesc,
|
||||||
|
opValue: 1,
|
||||||
|
}).then((res) => {
|
||||||
|
if (res.code == 200) {
|
||||||
|
ElMessage.success('指令发送成功')
|
||||||
|
} else {
|
||||||
|
ElMessage.error('指令发送失败')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const sendManualCommand = (type: 1 | 0) => {
|
||||||
|
const serviceName = type === 0 ? '风机解锁' : '风机锁定'
|
||||||
|
ElMessageBox.confirm('确认' + serviceName + '吗?', '', {
|
||||||
|
confirmButtonText: '确认',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning',
|
||||||
|
}).then(() => {
|
||||||
|
sendManualCommandReq({
|
||||||
|
deviceId: route.query.irn as string,
|
||||||
|
serviceCode: 'Locked',
|
||||||
|
serviceName,
|
||||||
|
optDesc: serviceName + type,
|
||||||
|
opValue: type,
|
||||||
|
}).then((res) => {
|
||||||
|
if (res.code == 200) {
|
||||||
|
ElMessage.success('指令发送成功')
|
||||||
|
} else {
|
||||||
|
ElMessage.error('指令发送失败')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getAllChartData()
|
getAllChartData()
|
||||||
createScroll()
|
createScroll()
|
||||||
@ -1504,6 +1560,7 @@ onUnmounted(() => {
|
|||||||
.control-tag-left {
|
.control-tag-left {
|
||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
border-radius: 8px 0 0 0;
|
border-radius: 8px 0 0 0;
|
||||||
|
background-color: #ff4949;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.btnLeft {
|
.btnLeft {
|
||||||
|
@ -489,6 +489,11 @@ const modelContextMenu = (event: any, data: TreeNode) => {
|
|||||||
const modelNodeClick = (target: TreeNode) => {
|
const modelNodeClick = (target: TreeNode) => {
|
||||||
curContextMenuTreeData.value = JSON.parse(JSON.stringify(target))
|
curContextMenuTreeData.value = JSON.parse(JSON.stringify(target))
|
||||||
initSortData()
|
initSortData()
|
||||||
|
modelAttributeAndServiceInputValue.value = ''
|
||||||
|
if (currentPage.value !== 1) {
|
||||||
|
currentPage.value = 1
|
||||||
|
return
|
||||||
|
}
|
||||||
if (ModelTabs.value === 'attribute') {
|
if (ModelTabs.value === 'attribute') {
|
||||||
getAttributeList()
|
getAttributeList()
|
||||||
} else {
|
} else {
|
||||||
@ -632,8 +637,12 @@ const getAttributeList = ({
|
|||||||
type?: radioGroupType
|
type?: radioGroupType
|
||||||
value?: string
|
value?: string
|
||||||
} = {}) => {
|
} = {}) => {
|
||||||
|
const attributeName = modelAttributeSearchRadio.value === 'Name' ? modelAttributeAndServiceInputValue.value : undefined
|
||||||
|
const attributeCode = modelAttributeSearchRadio.value === 'Code' ? modelAttributeAndServiceInputValue.value : undefined
|
||||||
const requestData: GetModelAttributeType = {
|
const requestData: GetModelAttributeType = {
|
||||||
iotModelId: curContextMenuTreeData.value!.id!,
|
iotModelId: curContextMenuTreeData.value!.id!,
|
||||||
|
attributeName,
|
||||||
|
attributeCode,
|
||||||
pageNum: currentPage.value,
|
pageNum: currentPage.value,
|
||||||
pageSize: currentPageSize.value,
|
pageSize: currentPageSize.value,
|
||||||
orderColumn: sortData.attributeOrderColumn,
|
orderColumn: sortData.attributeOrderColumn,
|
||||||
@ -669,6 +678,7 @@ const getAttributeList = ({
|
|||||||
} else {
|
} else {
|
||||||
if (res.rows && res.rows.length === 0) {
|
if (res.rows && res.rows.length === 0) {
|
||||||
attributeTableData.value = []
|
attributeTableData.value = []
|
||||||
|
pageTotal.value = res.total
|
||||||
} else {
|
} else {
|
||||||
ElMessage.error(res.msg)
|
ElMessage.error(res.msg)
|
||||||
}
|
}
|
||||||
@ -686,8 +696,12 @@ const getServiceList = ({
|
|||||||
type?: radioGroupType
|
type?: radioGroupType
|
||||||
value?: string
|
value?: string
|
||||||
} = {}) => {
|
} = {}) => {
|
||||||
|
const serviceName = modelAttributeSearchRadio.value === 'Name' ? modelAttributeAndServiceInputValue.value : undefined
|
||||||
|
const serviceCode = modelAttributeSearchRadio.value === 'Code' ? modelAttributeAndServiceInputValue.value : undefined
|
||||||
const requestData: GetModelServiceType = {
|
const requestData: GetModelServiceType = {
|
||||||
iotModelId: curContextMenuTreeData.value!.id!,
|
iotModelId: curContextMenuTreeData.value!.id!,
|
||||||
|
serviceName,
|
||||||
|
serviceCode,
|
||||||
pageNum: currentPage.value,
|
pageNum: currentPage.value,
|
||||||
pageSize: currentPageSize.value,
|
pageSize: currentPageSize.value,
|
||||||
orderColumn: sortData.serviceOrderColumn,
|
orderColumn: sortData.serviceOrderColumn,
|
||||||
@ -711,6 +725,7 @@ const getServiceList = ({
|
|||||||
} else {
|
} else {
|
||||||
if (res.rows && res.rows.length === 0) {
|
if (res.rows && res.rows.length === 0) {
|
||||||
serviceTableData.value = []
|
serviceTableData.value = []
|
||||||
|
pageTotal.value = res.total
|
||||||
} else {
|
} else {
|
||||||
ElMessage.error(res.msg)
|
ElMessage.error(res.msg)
|
||||||
}
|
}
|
||||||
|
@ -576,6 +576,7 @@ const treeNodeClick = (nodeData: getTreeDataReturnType, node: Node) => {
|
|||||||
originData.value = [...res]
|
originData.value = [...res]
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
currentPage.value = 1
|
||||||
clickTreeMenuData.value = nodeData
|
clickTreeMenuData.value = nodeData
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,10 +8,10 @@ export type SelectTypeKeyUnionType = keyof SelectTypeObjType
|
|||||||
|
|
||||||
|
|
||||||
export type TableDataObjType = {
|
export type TableDataObjType = {
|
||||||
irn:string
|
irn: string
|
||||||
name: string
|
name: string
|
||||||
model: string
|
model: string
|
||||||
iotModelId:string
|
iotModelId: string
|
||||||
iturbineoperationmode: number
|
iturbineoperationmode: number
|
||||||
belongLine: string
|
belongLine: string
|
||||||
iwindspeed: string
|
iwindspeed: string
|
||||||
@ -37,4 +37,18 @@ export type TableColumnType = {
|
|||||||
align?: 'left' | 'right' | 'center'
|
align?: 'left' | 'right' | 'center'
|
||||||
custom?: 'header' | 'default'
|
custom?: 'header' | 'default'
|
||||||
type?: 'default' | 'selection' | 'index' | 'expand'
|
type?: 'default' | 'selection' | 'index' | 'expand'
|
||||||
|
}
|
||||||
|
|
||||||
|
export type CommandReqType = {
|
||||||
|
deviceId: string | number,
|
||||||
|
serviceCode: string,
|
||||||
|
serviceName: string,
|
||||||
|
optDesc: string,
|
||||||
|
opValue: 0 | 1
|
||||||
|
}
|
||||||
|
|
||||||
|
export type CommandResType = {
|
||||||
|
code: number,
|
||||||
|
success: boolean,
|
||||||
|
msg: string
|
||||||
}
|
}
|
@ -9,8 +9,8 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="10">
|
<el-col :span="10">
|
||||||
<div class="center">
|
<div class="center">
|
||||||
<el-form-item label="服务名" prop="serviceName">
|
<el-form-item label="服务名" prop="serviceCode">
|
||||||
<el-select v-model="serviceType147Form.serviceName" placeholder="请选择服务名">
|
<el-select v-model="serviceType147Form.serviceCode" placeholder="请选择服务名">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in deviceServiceType147List"
|
v-for="item in deviceServiceType147List"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
@ -42,8 +42,8 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="10">
|
<el-col :span="10">
|
||||||
<div class="center">
|
<div class="center">
|
||||||
<el-form-item label="服务名" prop="serviceName">
|
<el-form-item label="服务名" prop="serviceCode">
|
||||||
<el-select v-model="serviceType146Form.serviceName" placeholder="请选择服务名">
|
<el-select v-model="serviceType146Form.serviceCode" placeholder="请选择服务名">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in deviceServiceType146List"
|
v-for="item in deviceServiceType146List"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
@ -71,7 +71,7 @@
|
|||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, watch } from 'vue'
|
import { ref, watch } from 'vue'
|
||||||
import { sendValue146Req, sendValue147Req } from '/@/api/backend/control/request'
|
import { sendCommandReq } from '/@/api/backend/control/request'
|
||||||
import { ElMessage, FormInstance } from 'element-plus'
|
import { ElMessage, FormInstance } from 'element-plus'
|
||||||
import { getModelServiceListReq } from '/@/api/backend/deviceModel/request'
|
import { getModelServiceListReq } from '/@/api/backend/deviceModel/request'
|
||||||
|
|
||||||
@ -96,14 +96,14 @@ const serviceType147Ref = ref<FormInstance>()
|
|||||||
const serviceType146Ref = ref<FormInstance>()
|
const serviceType146Ref = ref<FormInstance>()
|
||||||
const serviceType147Form = ref({
|
const serviceType147Form = ref({
|
||||||
//服务名
|
//服务名
|
||||||
serviceName: '',
|
serviceCode: '',
|
||||||
//操作值
|
//操作值
|
||||||
opValue: null,
|
opValue: null,
|
||||||
})
|
})
|
||||||
|
|
||||||
const serviceType146Form = ref({
|
const serviceType146Form = ref({
|
||||||
//服务名
|
//服务名
|
||||||
serviceName: '',
|
serviceCode: '',
|
||||||
//操作值
|
//操作值
|
||||||
opValue: null,
|
opValue: null,
|
||||||
})
|
})
|
||||||
@ -128,7 +128,7 @@ const init = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const validData147 = {
|
const validData147 = {
|
||||||
serviceName: [
|
serviceCode: [
|
||||||
{
|
{
|
||||||
required: true,
|
required: true,
|
||||||
message: '请输入服务名',
|
message: '请输入服务名',
|
||||||
@ -145,7 +145,7 @@ const validData147 = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const validData146 = {
|
const validData146 = {
|
||||||
serviceName: [
|
serviceCode: [
|
||||||
{
|
{
|
||||||
required: true,
|
required: true,
|
||||||
message: '请输入服务名',
|
message: '请输入服务名',
|
||||||
@ -171,43 +171,29 @@ const submit = (type: number) => {
|
|||||||
serviceType147Ref.value?.validate((valid) => {
|
serviceType147Ref.value?.validate((valid) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
sendValue147(serviceType147Form.value)
|
sendValue(serviceType147Form.value as unknown as { serviceCode: string; opValue: number }, type)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
} else if (type === 146) {
|
} else if (type === 146) {
|
||||||
serviceType146Ref.value?.validate((valid) => {
|
serviceType146Ref.value?.validate((valid) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
sendValue146(serviceType146Form.value)
|
sendValue(serviceType146Form.value as unknown as { serviceCode: string; opValue: number }, type)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const sendValue146 = (data: any) => {
|
const sendValue = (data: { serviceCode: string; opValue: number }, type: 146 | 147) => {
|
||||||
const val = JSON.parse(JSON.stringify(data))
|
const val = JSON.parse(JSON.stringify(data))
|
||||||
val.deviceId = props.deviceId
|
val.deviceId = props.deviceId
|
||||||
console.log(val, 146)
|
|
||||||
|
|
||||||
sendValue146Req(val)
|
val.serviceName =
|
||||||
.then((res) => {
|
type === 146
|
||||||
console.log(res)
|
? deviceServiceType146List.value.find((item) => item.value === val.serviceCode)?.label
|
||||||
ElMessage.success('发送成功!')
|
: deviceServiceType147List.value.find((item) => item.value === val.serviceCode)?.label
|
||||||
})
|
val.optDesc = val.serviceName + val.opValue
|
||||||
.catch((err) => {
|
sendCommandReq(val)
|
||||||
ElMessage.error('发送失败!')
|
|
||||||
})
|
|
||||||
.finally(() => {
|
|
||||||
loading.value = false
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
const sendValue147 = (data: any) => {
|
|
||||||
const val = JSON.parse(JSON.stringify(data))
|
|
||||||
val.deviceId = props.deviceId
|
|
||||||
console.log(val, 147)
|
|
||||||
|
|
||||||
sendValue147Req(val)
|
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
console.log(res)
|
console.log(res)
|
||||||
ElMessage.success('发送成功!')
|
ElMessage.success('发送成功!')
|
||||||
@ -239,11 +225,11 @@ watch(
|
|||||||
(newVal) => {
|
(newVal) => {
|
||||||
if (newVal) {
|
if (newVal) {
|
||||||
serviceType147Form.value = {
|
serviceType147Form.value = {
|
||||||
serviceName: '',
|
serviceCode: '',
|
||||||
opValue: null,
|
opValue: null,
|
||||||
}
|
}
|
||||||
serviceType146Form.value = {
|
serviceType146Form.value = {
|
||||||
serviceName: '',
|
serviceCode: '',
|
||||||
opValue: null,
|
opValue: null,
|
||||||
}
|
}
|
||||||
serviceType147Ref.value?.resetFields()
|
serviceType147Ref.value?.resetFields()
|
||||||
|
215
ui/dasadmin/src/views/backend/operatingRecord/index.vue
Normal file
215
ui/dasadmin/src/views/backend/operatingRecord/index.vue
Normal file
@ -0,0 +1,215 @@
|
|||||||
|
<template>
|
||||||
|
<div class="operatingRecord">
|
||||||
|
<el-container class="container">
|
||||||
|
<el-header class="header">
|
||||||
|
<div class="headerPart headerPartLeft">
|
||||||
|
<span>时间</span>
|
||||||
|
<el-date-picker
|
||||||
|
v-model="datePickerValue"
|
||||||
|
type="datetimerange"
|
||||||
|
start-placeholder="开始时间"
|
||||||
|
end-placeholder="结束时间"
|
||||||
|
format="YYYY-MM-DD HH:mm:ss"
|
||||||
|
date-format="YYYY/MM/DD"
|
||||||
|
time-format="HH:mm:ss"
|
||||||
|
:shortcuts="shortcuts"
|
||||||
|
:default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)]"
|
||||||
|
></el-date-picker>
|
||||||
|
</div>
|
||||||
|
<div class="headerPart headerPartRight">
|
||||||
|
<span>风机编号</span>
|
||||||
|
<el-select v-model="windTurbinesCode">
|
||||||
|
<el-option v-for="item in attributeCodeList" :key="item.value" :value="item.value"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</div>
|
||||||
|
<el-button @click="search" :icon="Search" type="primary" class="headerBtn">查询</el-button>
|
||||||
|
</el-header>
|
||||||
|
<el-main class="main">
|
||||||
|
<el-table :data="tableData" max-height="clac(100%-120px)">
|
||||||
|
<el-table-column
|
||||||
|
v-for="item in tableColumn"
|
||||||
|
:key="item.prop"
|
||||||
|
:prop="item.prop"
|
||||||
|
:label="item.label"
|
||||||
|
align="center"
|
||||||
|
></el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</el-main>
|
||||||
|
<el-footer>
|
||||||
|
<div class="footerPart">
|
||||||
|
<el-pagination
|
||||||
|
v-model:current-page="pageSetting.current"
|
||||||
|
v-model:page-size="pageSetting.pageSize"
|
||||||
|
:total="pageSetting.total"
|
||||||
|
:page-sizes="pageSetting.pageSizes"
|
||||||
|
background
|
||||||
|
:pager-count="7"
|
||||||
|
layout="total,prev, pager, next, jumper,sizes"
|
||||||
|
@change="changePageSetting"
|
||||||
|
></el-pagination>
|
||||||
|
</div>
|
||||||
|
</el-footer>
|
||||||
|
</el-container>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { Search } from '@element-plus/icons-vue'
|
||||||
|
import { ref, reactive } from 'vue'
|
||||||
|
import { dayjs, ElMessage } from 'element-plus'
|
||||||
|
import { getOperatingListReq } from '/@/api/backend/operatingRecord/request'
|
||||||
|
import type { OperatingReqType, OperatingResType } from '/@/views/backend/operatingRecord/type'
|
||||||
|
import { getAirBlowerListReq } from '/@/api/backend/airBlower/request'
|
||||||
|
|
||||||
|
const datePickerValue = ref('')
|
||||||
|
const shortcuts = [
|
||||||
|
{
|
||||||
|
text: '今天',
|
||||||
|
value: () => {
|
||||||
|
const start = dayjs().startOf('day').toDate()
|
||||||
|
const end = dayjs().endOf('day').toDate()
|
||||||
|
return [start, end]
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '昨天',
|
||||||
|
value: () => {
|
||||||
|
const start = dayjs().subtract(1, 'day').startOf('day').toDate()
|
||||||
|
const end = dayjs().subtract(1, 'day').endOf('day').toDate()
|
||||||
|
return [start, end]
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '前三天',
|
||||||
|
value: () => {
|
||||||
|
const start = dayjs().subtract(4, 'day').startOf('day').toDate()
|
||||||
|
const end = dayjs().subtract(1, 'day').endOf('day').toDate()
|
||||||
|
return [start, end]
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
const windTurbinesCode = ref('')
|
||||||
|
const attributeCodeList = ref<{ value: string }[]>([])
|
||||||
|
|
||||||
|
const tableData = ref<OperatingResType[]>([])
|
||||||
|
const tableColumn = [
|
||||||
|
{
|
||||||
|
label: '时间',
|
||||||
|
prop: 'optTime',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '设备编号',
|
||||||
|
prop: 'name',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '操作类型',
|
||||||
|
prop: 'attributeName',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '操作详情',
|
||||||
|
prop: 'optDesc',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '操作员',
|
||||||
|
prop: 'userName',
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
const pageSetting = reactive({
|
||||||
|
current: 1,
|
||||||
|
pageSize: 20,
|
||||||
|
total: 0,
|
||||||
|
pageSizes: [20, 50, 100],
|
||||||
|
})
|
||||||
|
|
||||||
|
const changePageSetting = () => {
|
||||||
|
search()
|
||||||
|
}
|
||||||
|
|
||||||
|
const getList = (data: OperatingReqType) => {
|
||||||
|
getOperatingListReq(data).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
const data = res.data
|
||||||
|
tableData.value = data.rows
|
||||||
|
pageSetting.total = data.total
|
||||||
|
ElMessage.success('查询成功!')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const search = () => {
|
||||||
|
getList({
|
||||||
|
startTime: datePickerValue.value?.[0] ? dayjs(datePickerValue.value[0]).format('YYYY-MM-DD HH:mm:ss') : undefined,
|
||||||
|
endTime: datePickerValue.value?.[1] ? dayjs(datePickerValue.value[1]).format('YYYY-MM-DD HH:mm:ss') : undefined,
|
||||||
|
windTurbinesCode: windTurbinesCode.value,
|
||||||
|
pageNum: pageSetting.current,
|
||||||
|
pageSize: pageSetting.pageSize,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const getAirBlowerList = () => {
|
||||||
|
getAirBlowerListReq().then((res: any) => {
|
||||||
|
if (res.success) {
|
||||||
|
attributeCodeList.value = res.data.map((item: any) => {
|
||||||
|
return {
|
||||||
|
value: item.name,
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
getAirBlowerList()
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.operatingRecord {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
.container {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
.header {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
.headerPart {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
span {
|
||||||
|
display: flex;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.headerPartLeft {
|
||||||
|
:deep(.el-date-editor) {
|
||||||
|
width: 400px;
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.headerPartRight {
|
||||||
|
margin-left: 30px;
|
||||||
|
width: 286px;
|
||||||
|
span {
|
||||||
|
width: 73px;
|
||||||
|
}
|
||||||
|
:deep(.el-select__wrapper) {
|
||||||
|
width: 220px;
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.headerBtn {
|
||||||
|
margin-left: auto;
|
||||||
|
width: 100px;
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.main {
|
||||||
|
height: calc(100% - 120px);
|
||||||
|
}
|
||||||
|
.footerPart {
|
||||||
|
display: flex;
|
||||||
|
justify-content: right;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
32
ui/dasadmin/src/views/backend/operatingRecord/type.ts
Normal file
32
ui/dasadmin/src/views/backend/operatingRecord/type.ts
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
export type ReturnType = {
|
||||||
|
code: number
|
||||||
|
data: {
|
||||||
|
total: number
|
||||||
|
rows: OperatingResType[]
|
||||||
|
code: number
|
||||||
|
msg: string
|
||||||
|
}
|
||||||
|
msg: string
|
||||||
|
success: boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export type OperatingReqType = {
|
||||||
|
startTime?: string,
|
||||||
|
endTime?: string,
|
||||||
|
windTurbinesCode?: string,
|
||||||
|
userName?: string,
|
||||||
|
pageNum: number,
|
||||||
|
pageSize: number
|
||||||
|
}
|
||||||
|
|
||||||
|
export type OperatingResType = {
|
||||||
|
id: string,
|
||||||
|
userName: string,
|
||||||
|
optTime: string,
|
||||||
|
deviceId: number,
|
||||||
|
attributeCode: string,
|
||||||
|
attributeName: string,
|
||||||
|
name:string
|
||||||
|
optDesc: string
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user