修改辽宁反馈问题

This commit is contained in:
guanj
2026-06-23 21:27:15 +08:00
parent ed60e2b7f3
commit 070e404bbb
20 changed files with 2369 additions and 2260 deletions

6
.env.LN Normal file
View File

@@ -0,0 +1,6 @@
# 辽宁嵌入
NODE_ENV = LN
VITE_NAME="LN"
# 电网一张图 地图图层
VITE_NARIMAP=null
VITE_NRGISCOMMON=null

View File

@@ -8,12 +8,14 @@
"dev:jibei": "vite --mode jibei", "dev:jibei": "vite --mode jibei",
"dev:hainan": "vite --mode hainan", "dev:hainan": "vite --mode hainan",
"dev:qujing": "vite --mode qujing", "dev:qujing": "vite --mode qujing",
"dev:LN": "vite --mode LN",
"dev:LNqr": "vite --mode LNqr", "dev:LNqr": "vite --mode LNqr",
"dev:removeMode": "vite --mode removeMode", "dev:removeMode": "vite --mode removeMode",
"build": "vite build --mode dev", "build": "vite build --mode dev",
"build:jibei": "vite build --mode jibei", "build:jibei": "vite build --mode jibei",
"build:hainan": "vite build --mode hainan", "build:hainan": "vite build --mode hainan",
"build:qujing": "vite build --mode qujing", "build:qujing": "vite build --mode qujing",
"build:LN": "vite build --mode LN",
"build:LNqr": "vite build --mode LNqr", "build:LNqr": "vite build --mode LNqr",
"build:removeMode": "vite build --mode removeMode", "build:removeMode": "vite build --mode removeMode",
"preview": "vite preview" "preview": "vite preview"

View File

@@ -126,7 +126,8 @@ const prop = defineProps({
width: { type: [String, Number] }, width: { type: [String, Number] },
height: { type: [String, Number] }, height: { type: [String, Number] },
timeKey: { type: [String, Number] }, timeKey: { type: [String, Number] },
timeValue: { type: Object } timeValue: { type: Object },
searchKey: { type: [String, Number] }
}) })
const headerHeight = ref(57) const headerHeight = ref(57)
@@ -347,22 +348,22 @@ onMounted(() => {
tableStore.index() tableStore.index()
}) })
watch( watch(
() => prop.timeKey, () => prop.searchKey,
val => { val => {
tableStore.index() tableStore.index()
} }
) )
watch( // watch(
() => prop.timeValue, // () => prop.timeValue,
val => { // val => {
tableStore.index() // tableStore.index()
}, // },
{ // {
deep: true // deep: true
} // }
) // )
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '@/assets/font/iconfont.css'; @import '@/assets/font/iconfont.css';

View File

@@ -122,7 +122,8 @@ const prop = defineProps({
width: { type: [String, Number] }, width: { type: [String, Number] },
height: { type: [String, Number] }, height: { type: [String, Number] },
timeKey: { type: [String, Number] }, timeKey: { type: [String, Number] },
timeValue: { type: Object } timeValue: { type: Object },
searchKey: { type: [String, Number] }
}) })
const headerHeight = ref(57) const headerHeight = ref(57)
@@ -329,22 +330,22 @@ onMounted(() => {
tableStore.index() tableStore.index()
}) })
watch( watch(
() => prop.timeKey, () => prop.searchKey,
val => { val => {
tableStore.index() tableStore.index()
} }
) )
watch( // watch(
() => prop.timeValue, // () => prop.timeValue,
val => { // val => {
tableStore.index() // tableStore.index()
}, // },
{ // {
deep: true // deep: true
} // }
) // )
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '@/assets/font/iconfont.css'; @import '@/assets/font/iconfont.css';

View File

@@ -7,7 +7,8 @@
@selectChange="selectChange" @selectChange="selectChange"
datePicker datePicker
v-if="fullscreen" v-if="fullscreen"
></TableHeader> >
</TableHeader>
<div <div
class="monitoringPoints" class="monitoringPoints"
:style="{ :style="{
@@ -120,7 +121,8 @@ const prop = defineProps({
width: { type: [String, Number] }, width: { type: [String, Number] },
height: { type: [String, Number] }, height: { type: [String, Number] },
timeKey: { type: [String, Number] }, timeKey: { type: [String, Number] },
timeValue: { type: Object } timeValue: { type: Object },
searchKey: { type: [String, Number] }
}) })
const headerHeight = ref(57) const headerHeight = ref(57)
@@ -328,22 +330,22 @@ onMounted(() => {
tableStore.index() tableStore.index()
}) })
watch( watch(
() => prop.timeKey, () => prop.searchKey,
val => { val => {
tableStore.index() tableStore.index()
} }
) )
watch( // watch(
() => prop.timeValue, // () => prop.timeValue,
val => { // val => {
tableStore.index() // tableStore.index()
}, // },
{ // {
deep: true // deep: true
} // }
) // )
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '@/assets/font/iconfont.css'; @import '@/assets/font/iconfont.css';

View File

@@ -150,7 +150,8 @@ const prop = defineProps({
width: { type: [String, Number] }, width: { type: [String, Number] },
height: { type: [String, Number] }, height: { type: [String, Number] },
timeKey: { type: [String, Number] }, timeKey: { type: [String, Number] },
timeValue: { type: Object } timeValue: { type: Object },
searchKey: { type: [String, Number] }
}) })
const headerHeight = ref(57) const headerHeight = ref(57)
@@ -233,7 +234,7 @@ const tableStore: any = new TableStore({
if (tableStore.table.params.statisticalType.name == '终端厂家') { if (tableStore.table.params.statisticalType.name == '终端厂家') {
return k.count != 0 return k.count != 0
} else { } else {
return !k.citName.includes('上送') return !k.name.includes('上送')
} }
}) })
} }
@@ -246,22 +247,28 @@ onMounted(() => {
tableStore.index() tableStore.index()
}) })
watch( watch(
() => prop.timeKey, () => prop.searchKey,
val => { val => {
tableStore.index() tableStore.index()
} }
) )
watch( // watch(
() => prop.timeValue, // () => prop.timeKey,
// val => {
// tableStore.index()
// }
// )
// watch(
// () => prop.timeValue,
val => { // val => {
tableStore.index() // tableStore.index()
}, // },
{ // {
deep: true // deep: true
} // }
) // )
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '@/assets/font/iconfont.css'; @import '@/assets/font/iconfont.css';

View File

@@ -1,22 +1,22 @@
<template> <template>
<div style="width: 540px"> <div :style="{ width: isMinuteData ? '750px' : '610px' }">
<el-select v-model="interval" style="min-width: 90px; width: 90px; margin-right: 10px" @change="timeChange"> <el-select v-model="interval" style="min-width: 90px; width: 90px; margin-right: 10px" @change="timeChange">
<el-option v-for="item in timeOptions" :key="item.value" :label="item.label" :value="item.value" /> <el-option v-for="item in timeOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select> </el-select>
<el-date-picker <el-date-picker
v-model="timeValue" v-model="timeValue"
type="daterange" :type="pickerType"
:disabled="disabledPicker" :disabled="disabledPicker"
:disabled-date="isFutureDate" :disabled-date="isFutureDate"
style="width: 220px; margin-right: 10px" :style="{ width: isMinuteData ? '360px' : '220px', marginRight: '10px' }"
unlink-panels unlink-panels
:clearable="false" :clearable="false"
range-separator="" range-separator=""
start-placeholder="开始日期" :start-placeholder="isMinuteData ? '开始时间' : '开始日期'"
end-placeholder="结束日期" :end-placeholder="isMinuteData ? '结束时间' : '结束日期'"
value-format="YYYY-MM-DD" :value-format="pickerValueFormat"
:shortcuts="shortcuts" :shortcuts="isMinuteData ? undefined : shortcuts"
/> />
<el-button :disabled="backDisabled" type="primary" :icon="DArrowLeft" @click="preClick"></el-button> <el-button :disabled="backDisabled" type="primary" :icon="DArrowLeft" @click="preClick"></el-button>
<el-button type="primary" :icon="VideoPause" @click="nowTime">当前</el-button> <el-button type="primary" :icon="VideoPause" @click="nowTime">当前</el-button>
@@ -26,18 +26,41 @@
<script lang="ts" setup> <script lang="ts" setup>
import { DArrowLeft, VideoPause, DArrowRight } from '@element-plus/icons-vue' import { DArrowLeft, VideoPause, DArrowRight } from '@element-plus/icons-vue'
import { ref, onMounted, nextTick, watch } from 'vue' import { ref, onMounted, computed, watch } from 'vue'
interface Props { interface Props {
nextFlag?: boolean nextFlag?: boolean
theCurrentTime?: boolean theCurrentTime?: boolean
isStatisticData?: number | string
} }
const props = withDefaults(defineProps<Props>(), { const props = withDefaults(defineProps<Props>(), {
nextFlag: false, nextFlag: false,
theCurrentTime: false theCurrentTime: false,
isStatisticData: 1
}) })
const isMinuteData = computed(() => Number(props.isStatisticData) === 0)
const pickerType = computed(() => (isMinuteData.value ? 'datetimerange' : 'daterange'))
const pickerValueFormat = computed(() => (isMinuteData.value ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD'))
const toDatePart = (value: string) => (value?.includes(' ') ? value.split(' ')[0] : value)
const toMinuteStart = (date: string) => `${toDatePart(date)} 00:00:00`
const toMinuteEnd = (date: string) => `${toDatePart(date)} 23:59:59`
const normalizeRange = (start: string, end: string) => {
if (!isMinuteData.value) {
return [toDatePart(start), toDatePart(end)]
}
return [toMinuteStart(start), toMinuteEnd(end)]
}
const setRangeValue = (start: string, end: string) => {
timeValue.value = normalizeRange(start, end)
}
const interval = ref(3) const interval = ref(3)
const timeFlag = ref(1) const timeFlag = ref(1)
const count = ref(0) const count = ref(0)
@@ -95,13 +118,13 @@ const timeChange = (e: number) => {
if (e == 1) { if (e == 1) {
disabledPicker.value = true disabledPicker.value = true
timeValue.value = [setTime(1), setTime()] setRangeValue(setTime(1), setTime())
} else if (e == 2) { } else if (e == 2) {
disabledPicker.value = true disabledPicker.value = true
timeValue.value = [setTime(2), setTime()] setRangeValue(setTime(2), setTime())
} else if (e == 3) { } else if (e == 3) {
disabledPicker.value = true disabledPicker.value = true
timeValue.value = [setTime(3), setTime()] setRangeValue(setTime(3), setTime())
} else if (e == 4) { } else if (e == 4) {
let year = parseInt(setTime().substring(0, 4)) let year = parseInt(setTime().substring(0, 4))
let month = parseInt(setTime().substring(5, 7)) let month = parseInt(setTime().substring(5, 7))
@@ -111,12 +134,12 @@ const timeChange = (e: number) => {
var dayOfWeek = start.getDay() == 0 ? 7 : start.getDay() - 1 // 如果为周日则置为7天 var dayOfWeek = start.getDay() == 0 ? 7 : start.getDay() - 1 // 如果为周日则置为7天
disabledPicker.value = true disabledPicker.value = true
timeValue.value = [setTime(0, dayOfWeek), setTime(0, -6 + dayOfWeek)] setRangeValue(setTime(0, dayOfWeek), setTime(0, -6 + dayOfWeek))
} else if (e == 5) { } else if (e == 5) {
disabledPicker.value = false disabledPicker.value = false
backDisabled.value = true backDisabled.value = true
preDisabled.value = props.nextFlag ? false : true preDisabled.value = props.nextFlag ? false : true
timeValue.value = [setTime(), setTime()] setRangeValue(setTime(), setTime())
} }
if (e == 1 || e == 2) { if (e == 1 || e == 2) {
timeFlag.value = 0 timeFlag.value = 0
@@ -186,7 +209,7 @@ const preClick = () => {
startTime = year + '-01-01' startTime = year + '-01-01'
endTime = year + '-12-31' endTime = year + '-12-31'
} }
timeValue.value = [startTime, endTime] setRangeValue(startTime, endTime)
// 判断向后键的状态 // 判断向后键的状态
// var temp = NowgetEndTime() // var temp = NowgetEndTime()
@@ -415,16 +438,27 @@ const next = () => {
} }
if (!props.nextFlag) { if (!props.nextFlag) {
if ( if (
new Date(endTime + ' 00:00:00').getTime() >= new Date(toDatePart(endTime) + ' 00:00:00').getTime() >=
new Date(window.XEUtils.toDateString(new Date(), 'yyyy-MM-dd ') + ' 00:00:00').getTime() new Date(window.XEUtils.toDateString(new Date(), 'yyyy-MM-dd ') + ' 00:00:00').getTime()
) { ) {
preDisabled.value = props.nextFlag ? false : true preDisabled.value = props.nextFlag ? false : true
} }
} }
timeValue.value = [startTime, endTime] setRangeValue(startTime, endTime)
} }
watch(
() => props.isStatisticData,
() => {
if (timeValue.value?.length === 2) {
setRangeValue(timeValue.value[0], timeValue.value[1])
} else {
timeChange(interval.value)
}
}
)
const setTime = (flag = 0, e = 0) => { const setTime = (flag = 0, e = 0) => {
let dd = window.XEUtils.toDateString(new Date().getTime() - e * 3600 * 1000 * 24, 'dd') let dd = window.XEUtils.toDateString(new Date().getTime() - e * 3600 * 1000 * 24, 'dd')

View File

@@ -3,13 +3,14 @@
<div class="table-header ba-scroll-style"> <div class="table-header ba-scroll-style">
<el-form style="flex: 1; height: 32px; display: flex; flex-wrap: wrap" ref="headerForm" @submit.prevent="" <el-form style="flex: 1; height: 32px; display: flex; flex-wrap: wrap" ref="headerForm" @submit.prevent=""
@keyup.enter="onComSearch" label-position="left" :inline="true"> @keyup.enter="onComSearch" label-position="left" :inline="true">
<el-form-item v-if="datePicker" style="grid-column: span 2; max-width: 630px"> <el-form-item v-if="datePicker" style="grid-column: span 2; "
:style="{ maxWidth: isStatisticData == 0 ? '750px' : '610px' }">
<template #label> <template #label>
<el-checkbox v-if="showTimeAll" v-model="timeAll" label="统计时间" /> <el-checkbox v-if="showTimeAll" v-model="timeAll" label="统计时间" />
<span v-else>{{ dateLabel }}</span> <span v-else>{{ dateLabel }}</span>
</template> </template>
<DatePicker ref="datePickerRef" v-if="timeAll" :nextFlag="nextFlag" <DatePicker ref="datePickerRef" v-if="timeAll" :nextFlag="nextFlag" :theCurrentTime="theCurrentTime"
:theCurrentTime="theCurrentTime"></DatePicker> :isStatisticData="isStatisticData"></DatePicker>
</el-form-item> </el-form-item>
<el-form-item label="区域" v-if="area"> <el-form-item label="区域" v-if="area">
@@ -72,6 +73,7 @@ interface Props {
showExport?: boolean //导出控制 showExport?: boolean //导出控制
showTimeAll?: boolean //控制时间是否显示 showTimeAll?: boolean //控制时间是否显示
dateLabel?: string //设置时间名称 dateLabel?: string //设置时间名称
isStatisticData?: number | string // 0分钟数据 1统计数据
} }
const props = withDefaults(defineProps<Props>(), { const props = withDefaults(defineProps<Props>(), {
@@ -83,7 +85,8 @@ const props = withDefaults(defineProps<Props>(), {
showReset: true, showReset: true,
showExport: false, showExport: false,
showTimeAll: false, showTimeAll: false,
dateLabel: '统计日期' dateLabel: '统计日期',
isStatisticData: 1
}) })
// 动态计算table高度 // 动态计算table高度
const resizeObserver = new ResizeObserver(entries => { const resizeObserver = new ResizeObserver(entries => {

View File

@@ -37,21 +37,21 @@ const setupAll = async () => {
const app = createApp(App) const app = createApp(App)
//开启离线地图 //开启离线地图
app.use(BaiduMapOffline, { // app.use(BaiduMapOffline, {
offline: true, // offline: true,
offlineConfig: { // offlineConfig: {
imgext: '.png', // imgext: '.png',
customstyle: '', // customstyle: '',
tiles_dir: '', // tiles_dir: '',
tiles_hybrid: '', // tiles_hybrid: '',
tiles_self: '', // tiles_self: '',
tiles_v_dir: '', // tiles_v_dir: '',
tiles_satellite_dir: '', // tiles_satellite_dir: '',
tiles_road_dir: '', // tiles_road_dir: '',
tiles_v_road_dir: '', // tiles_v_road_dir: '',
home: './plugin/offline/' // home: './plugin/offline/'
} // }
}) // })
app.use(BaiduMap, { app.use(BaiduMap, {
// ak: 'Yp57V71dkOPiXjiN8VdcFRsVELzlVNKK', // ak: 'Yp57V71dkOPiXjiN8VdcFRsVELzlVNKK',
ak: 'RpQi6WNFZ9tseKzhdwOQsXwFsoVntnsN', ak: 'RpQi6WNFZ9tseKzhdwOQsXwFsoVntnsN',

View File

@@ -53,82 +53,23 @@ const calculateValue = (o: number, value: number, num: number, isMin: boolean) =
export const yMethod = (arr: any) => { export const yMethod = (arr: any) => {
let num = 0.2 let num = 0.2
let numList = dataProcessing(arr) let numList = dataProcessing(arr)
let maxValue = 0 if (numList.length === 0) {
let minValue = 0 return [0, 0]
let max = 0 }
const maxValue = Math.max(...numList)
const minValue = Math.min(...numList)
let min = 0 let min = 0
maxValue = Math.max(...numList) let max = 0
minValue = Math.min(...numList)
const o = maxValue - minValue == 0 ? maxValue : maxValue - minValue
min = calculateValue(o, minValue, num, true)
max = calculateValue(o, maxValue, num, false) // 一正一负时各自按绝对值范围计算,不用 max - min 作为跨度
// if (-100 >= minValue) { if (maxValue > 0 && minValue < 0) {
// min = Math.floor((minValue + num * minValue) / 100) * 100 min = calculateValue(Math.abs(minValue), minValue, num, true)
// } else if (-10 >= minValue && minValue > -100) { max = calculateValue(Math.abs(maxValue), maxValue, num, false)
// min = Math.floor((minValue + num * minValue) / 10) * 10 } else {
// } else if (-1 >= minValue && minValue > -10) { const o = maxValue - minValue === 0 ? maxValue : maxValue - minValue
// min = Math.floor(minValue + num * minValue) min = calculateValue(o, minValue, num, true)
// } else if (0 > minValue && minValue > -1) { max = calculateValue(o, maxValue, num, false)
// min = parseFloat((minValue + num * minValue).toFixed(1)) }
// } else if (minValue == 0) {
// min = 0
// } else if (0 < minValue && minValue < 1) {
// min = parseFloat((minValue - num * minValue).toFixed(1))
// } else if (1 <= minValue && minValue < 10) {
// min = Math.floor(minValue - num * minValue)
// } else if (10 <= minValue && minValue < 100) {
// min = Math.floor((minValue - num * minValue) / 10) * 10
// } else if (100 <= minValue) {
// min = Math.floor((minValue - num * minValue) / 100) * 100
// }
// if (-100 >= maxValue) {
// max = Math.ceil((maxValue - num * maxValue) / 100) * 100
// } else if (-10 >= maxValue && maxValue > -100) {
// max = Math.ceil((maxValue - num * maxValue) / 10) * 10
// } else if (-1 >= maxValue && maxValue > -10) {
// max = Math.ceil(maxValue - num * maxValue)
// } else if (0 > maxValue && maxValue > -1) {
// max = parseFloat((maxValue - num * maxValue).toFixed(1))
// } else if (maxValue == 0) {
// max = 0
// } else if (0 < maxValue && maxValue < 1) {
// max = parseFloat((maxValue + num * maxValue).toFixed(1))
// } else if (1 <= maxValue && maxValue < 10) {
// max = Math.ceil(maxValue + num * maxValue)
// } else if (10 <= maxValue && maxValue < 100) {
// max = Math.ceil((maxValue + num * maxValue) / 10) * 10
// } else if (100 <= maxValue) {
// max = Math.ceil((maxValue + num * maxValue) / 100) * 100
// }
// if (maxValue > 1000 || minValue < -1000) {
// max = Math.ceil(maxValue / 100) * 100
// if (minValue == 0) {
// min = 0
// } else {
// min = Math.floor(minValue / 100) * 100
// }
// } else if (maxValue < 60 && minValue > 40) {
// max = 60
// min = 40
// } else if (maxValue == minValue && maxValue < 10 && minValue > 0) {
// max = Math.ceil(maxValue / 10) * 10
// min = Math.floor(minValue / 10) * 10
// } else if (maxValue == minValue && maxValue != 0 && minValue != 0) {
// max = Math.ceil(maxValue / 10 + 1) * 10
// min = Math.floor(minValue / 10 - 1) * 10
// } else {
// max = Math.ceil(maxValue / 10) * 10
// min = Math.floor(minValue / 10) * 10
// }
// if (maxValue > 0 && maxValue < 1) {
// max = 1
// } else if (max == 0 && minValue > -1 && minValue < 0) {
// min = -1
// }
return [min, max] return [min, max]
} }

View File

@@ -111,7 +111,7 @@ function createAxios<Data = any, T = ApiPromise<Data>>(
if ( if (
config.url == '/user-boot/user/generateSm2Key' || config.url == '/user-boot/user/generateSm2Key' ||
config.url == '/pqs-auth/oauth/token' || config.url == '/pqs-auth/oauth/token' ||
config.url == '/pqs-auth/oauth/lnLogin'|| config.url == '/pqs-auth/oauth/lnLogin' ||
config.url == '/pqs-auth/oauth/lnRefreshToken' config.url == '/pqs-auth/oauth/lnRefreshToken'
) { ) {
config.headers.Authorization = 'Basic bmpjbjpuamNucHFz' config.headers.Authorization = 'Basic bmpjbjpuamNucHFz'
@@ -148,23 +148,26 @@ function createAxios<Data = any, T = ApiPromise<Data>>(
if (!window.tokenRefreshing) { if (!window.tokenRefreshing) {
window.tokenRefreshing = true window.tokenRefreshing = true
if(IS_LN_VERSION){ if (IS_LN_VERSION) {
//辽宁版本 //辽宁版本
return lnRefreshTokenTo().then(res => { return lnRefreshTokenTo()
adminInfo.setToken(res.data.access_token, 'auth') .then(res => {
adminInfo.setToken(res.data.refresh_token, 'refresh') adminInfo.setToken(res.data.access_token, 'auth')
window.requests.forEach(cb => cb(res.data.access_token)) adminInfo.setToken(res.data.refresh_token, 'refresh')
window.requests = [] window.requests.forEach(cb => cb(res.data.access_token))
window.requests = []
return Axios(response.config) return Axios(response.config)
}).catch(err => { })
// refresh_token + CAS 都过期 → 重新走CAS登录 .catch(err => {
window.location.href = '/api/pqs-auth/oauth/lnCheck' // refresh_token + CAS 都过期 → 重新走CAS登录
return Promise.reject(err) window.location.href = '/api/pqs-auth/oauth/lnCheck'
}).finally(() => { return Promise.reject(err)
})
.finally(() => {
window.tokenRefreshing = false window.tokenRefreshing = false
}) })
}else { } else {
//通用版本 //通用版本
return refreshToken() return refreshToken()
.then(res => { .then(res => {
@@ -185,7 +188,6 @@ function createAxios<Data = any, T = ApiPromise<Data>>(
window.tokenRefreshing = false window.tokenRefreshing = false
}) })
} }
} else { } else {
return new Promise(resolve => { return new Promise(resolve => {
// 用函数形式将 resolve 存入,等待刷新后再执行 // 用函数形式将 resolve 存入,等待刷新后再执行
@@ -211,7 +213,7 @@ function createAxios<Data = any, T = ApiPromise<Data>>(
loginExpireTimer = null // 执行后清空定时器 loginExpireTimer = null // 执行后清空定时器
}, 100) // 可根据实际情况调整延迟时间 }, 100) // 可根据实际情况调整延迟时间
return Promise.reject(response.data) return Promise.reject(response.data)
} else if (response.data.code == 'A0121') { } else if (response.data.code == 'A0121') {
//统一认证过期 //统一认证过期
const casLogoutUrl = const casLogoutUrl =
'http://privilege-epri.dcloud.ln.dc.sgcc.com.cn/cas/login?service=http://PQMonitoring.dcloud.ln.dc.sgcc.com.cn' 'http://privilege-epri.dcloud.ln.dc.sgcc.com.cn/cas/login?service=http://PQMonitoring.dcloud.ln.dc.sgcc.com.cn'

View File

@@ -110,7 +110,8 @@ export default class SocketService {
} }
} else { } else {
this.callBackMapping['message']!({ Flag: false }) this.callBackMapping['message']!({ Flag: false })
// ElMessage.error(event.data) if(event.data == 'connect')return
ElMessage.error(event.data)
} }
} }

View File

@@ -491,7 +491,7 @@ const makeUpSubmit = () => {
}, 500) }, 500)
} }
const socket = async (form: any) => { const socket = async (form: any) => {
const url = (localStorage.getItem('WebSocketUrl2') || 'null')//'ws://192.168.1.68:10405/api/recell/' const url = (localStorage.getItem('WebSocketUrl2') || 'null')//'ws://192.168.1.68:10405/api/recell/')
logList.value = [] logList.value = []
await dataSocket.socketServe.connect(`${url}${adminInfo.id}`) await dataSocket.socketServe.connect(`${url}${adminInfo.id}`)
setTimeout(() => { setTimeout(() => {

View File

@@ -12,6 +12,7 @@
</el-form-item> </el-form-item>
</template> </template>
<template v-slot:operation> <template v-slot:operation>
<el-button type="primary" icon="el-icon-Search" @click="Search">查询</el-button>
<el-button type="primary" icon="el-icon-Download" @click="exportTemplate">导出</el-button> <el-button type="primary" icon="el-icon-Download" @click="exportTemplate">导出</el-button>
</template> </template>
</TableHeader> </TableHeader>
@@ -51,6 +52,7 @@
:interval="datePickerRef?.interval" :interval="datePickerRef?.interval"
:w="item.w" :w="item.w"
:h="item.h" :h="item.h"
:searchKey="searchKey"
/> />
<div v-else class="pd10">组件加载失败...</div> <div v-else class="pd10">组件加载失败...</div>
</div> </div>
@@ -114,6 +116,7 @@ const layout: any = ref([
// path: '/src/views/pqs/runManage/assessment/components/uese/index.vue' // path: '/src/views/pqs/runManage/assessment/components/uese/index.vue'
// }, // },
]) ])
const searchKey = ref(0)
const layoutCopy: any = ref([]) const layoutCopy: any = ref([])
const flag = ref(true) const flag = ref(true)
// 组件映射 // 组件映射
@@ -293,6 +296,10 @@ const fetchLayoutData = async () => {
// 可以添加错误提示逻辑 // 可以添加错误提示逻辑
} }
} }
const Search = () => {
searchKey.value += 1
}
// 导出 // 导出
const exportTemplate = () => { const exportTemplate = () => {
console.log(123) console.log(123)

View File

@@ -10,8 +10,14 @@
></PointTree> ></PointTree>
</pane> </pane>
<pane style="background: #fff" :style="height"> <pane style="background: #fff" :style="height">
<TableHeader ref="TableHeaderRef" datePicker @selectChange="selectChange"> <TableHeader ref="TableHeaderRef" datePicker :isStatisticData="isStatisticData" @selectChange="selectChange">
<template v-slot:select> <template v-slot:select>
<el-form-item >
<el-radio-group v-model="isStatisticData" @change="onStatisticDataChange">
<el-radio-button value="1">统计数据</el-radio-button>
<el-radio-button value="0">分钟数据</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item label="模板策略"> <el-form-item label="模板策略">
<el-select v-model="Template" @change="changetype" placeholder="请选择模版" value-key="id"> <el-select v-model="Template" @change="changetype" placeholder="请选择模版" value-key="id">
<el-option <el-option
@@ -22,22 +28,10 @@
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="报表类型"> <!-- <el-form-item label="报表类型">
<el-input readonly type="text" value="分析报表"></el-input> <el-input readonly type="text" value="分析报表"></el-input>
<!-- <el-select-->
<!-- :disabled="true"--> </el-form-item> -->
<!-- v-model="reportForm"-->
<!-- :popper-append-to-body="false"-->
<!-- placeholder="请选择报表类型"-->
<!-- >-->
<!-- <el-option-->
<!-- v-for="item in reportFormList"-->
<!-- :key="item.value"-->
<!-- :label="item.label"-->
<!-- :value="item.value"-->
<!-- ></el-option>-->
<!-- </el-select>-->
</el-form-item>
</template> </template>
<template #operation> <template #operation>
<el-button icon="el-icon-Download" type="primary" @click="exportEvent">导出excel</el-button> <el-button icon="el-icon-Download" type="primary" @click="exportEvent">导出excel</el-button>
@@ -85,6 +79,7 @@ const dotList: any = ref({})
const Template: any = ref({}) const Template: any = ref({})
const reportForm: any = ref('') const reportForm: any = ref('')
const name = ref('') const name = ref('')
const isStatisticData = ref('1')
const templatePolicy: any = ref([]) const templatePolicy: any = ref([])
const reportFormList: any = ref([ const reportFormList: any = ref([
{ {
@@ -108,6 +103,11 @@ const tableStore = new TableStore({
tableStore.table.params.tempId = Template.value.id tableStore.table.params.tempId = Template.value.id
tableStore.table.params.lineId = dotList.value.id tableStore.table.params.lineId = dotList.value.id
name.value = dotList.value.name name.value = dotList.value.name
if (Number(isStatisticData.value) === 0) {
tableStore.table.params.isStatisticData = 0
} else {
delete tableStore.table.params.isStatisticData
}
}, },
loadCallback: () => { loadCallback: () => {
tableStore.table.data.forEach((item: any) => { tableStore.table.data.forEach((item: any) => {
@@ -160,6 +160,12 @@ getTemplateByDept({ id: dictData.state.area[0].id })
const changetype = (val: any) => { const changetype = (val: any) => {
reportForm.value = val.reportForm reportForm.value = val.reportForm
} }
const onStatisticDataChange = () => {
TableHeaderRef.value?.setTheDate(3)
if (dotList.value?.id) {
// tableStore.index()
}
}
const selectChange = () => { const selectChange = () => {
//console.log('🚀 ~ selectChange ~ tableStore.table.data.lnegth :', tableStore.table.data.length) //console.log('🚀 ~ selectChange ~ tableStore.table.data.lnegth :', tableStore.table.data.length)
if (tableStore.table.data.length != 0) { if (tableStore.table.data.length != 0) {

View File

@@ -3,7 +3,7 @@
<DatePicker ref="datePickerRef" style="display: none" theCurrentTime /> <DatePicker ref="datePickerRef" style="display: none" theCurrentTime />
<el-page-header :icon="ArrowLeft" @back="emit('back')"> <el-page-header :icon="ArrowLeft" @back="emit('back')">
<template #content> <template #content>
<span style="font-size: 16px">{{ dropList.lineName }}详情 </span> <span style="font-size: 16px">{{ dropList.objName ? dropList.objName + '_' : '' }}{{ dropList.lineName }}详情 </span>
<span style="font-weight: 500">最新数据时间</span> <span style="font-weight: 500">最新数据时间</span>
<span style="color: var(--color-primary-default)">{{ dropList.updateTime }}</span> <span style="color: var(--color-primary-default)">{{ dropList.updateTime }}</span>
</template> </template>

View File

@@ -7,7 +7,7 @@
v-model.trim="inputQuery" v-model.trim="inputQuery"
style="height: 46px; width: 334px" style="height: 46px; width: 334px"
@keyup.enter="DeviceQ" @keyup.enter="DeviceQ"
placeholder="请输入终端名称" placeholder="请输入监测点相关信息"
> >
<template #prefix> <template #prefix>
<div class="Icon"></div> <div class="Icon"></div>
@@ -37,7 +37,7 @@
@click="flyTo(k)" @click="flyTo(k)"
> >
<p>{{ k.psrName }}</p> <p>{{ k.psrName }}</p>
<p>{{ k.vlevelName }}|{{ k.maintOrgName }}</p> <p>{{ k.vlevelName }} | {{ k.maintOrgName }} {{ k.objName ? `| ${k.objName}` : '' }}</p>
</div> </div>
</div> </div>
</el-collapse-item> </el-collapse-item>
@@ -484,6 +484,9 @@ const lookPoint = (e: any) => {
emit('show', true) emit('show', true)
} }
// 搜索 // 搜索
const matchLineItem = (item: any, regex: RegExp) =>
regex.test(item.lineName) || (item.objName && regex.test(item.objName))
const DeviceQ = () => { const DeviceQ = () => {
showCollapse.value = true showCollapse.value = true
if (inputQuery.value.length == 0) return if (inputQuery.value.length == 0) return
@@ -491,13 +494,14 @@ const DeviceQ = () => {
let list = [] let list = []
let regex = new RegExp(inputQuery.value, 'i') let regex = new RegExp(inputQuery.value, 'i')
let data = areaLineInfo.value let data = areaLineInfo.value
.filter((item: any) => regex.test(item.lineName)) .filter((item: any) => matchLineItem(item, regex))
.map((item: any) => { .map((item: any) => {
return { return {
psrName: item.lineName, psrName: item.lineName,
vlevelName: item.voltageScale, vlevelName: item.voltageScale,
maintOrgName: item.gdName, maintOrgName: item.gdName,
coordinate: [item.lng, item.lat] coordinate: [item.lng, item.lat],
objName: item.objName
} }
}) })
// data.replace(//s/g,',') // data.replace(//s/g,',')
@@ -522,7 +526,7 @@ const flyTo = (e: any, zoom?: number) => {
zoomMap.value = zoom zoomMap.value = zoom
} else { } else {
zoomMap.value = 15 zoomMap.value = 15
let data = areaLineInfo.value.filter((item: any) => regex.test(item.lineName))[0] let data = areaLineInfo.value.filter((item: any) => matchLineItem(item, regex))[0]
if (data) { if (data) {
markerClick(data) markerClick(data)
} }

View File

@@ -31,8 +31,8 @@
<div> <div>
<div class="vcl mt2"> <div class="vcl mt2">
<p <p
v-for="(item, i) in vList" v-for="(item, i) in displayVList"
:style="i == 0 ? 'width: 60px' : i == vList?.length - 1 ? 'width: 32px' : 'flex:1'" :style="i == 0 ? 'width: 60px' : i == displayVList?.length - 1 ? IS_LN ? 'flex:1' : 'width: 32px' : 'flex:1'"
> >
{{ item }} {{ item }}
</p> </p>
@@ -43,7 +43,7 @@
{{ item.title }} {{ item.title }}
</p> </p>
<p <p
v-for="(k, i) in vList?.slice(0, vList.length - 2)" v-for="(k, i) in dataVList"
class="numOne" class="numOne"
@click="LookMap(item.list[i].numOneList, item.list[i].numTwoList, 0)" @click="LookMap(item.list[i].numOneList, item.list[i].numTwoList, 0)"
> >
@@ -58,7 +58,7 @@
<p class="numOne" @click="LookMap(item.list[3].numOneList, item.list[3].numTwoList, 0)"> <p class="numOne" @click="LookMap(item.list[3].numOneList, item.list[3].numTwoList, 0)">
{{ item.list[3].numOne }} {{ item.list[3].numOne }}
</p> --> </p> -->
<p <p v-if="!IS_LN"
style="font-size: 12px; width: 32px; cursor: pointer; color: var(--el-color-primary)" style="font-size: 12px; width: 32px; cursor: pointer; color: var(--el-color-primary)"
@click.stop="open(i)" @click.stop="open(i)"
> >
@@ -165,7 +165,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { onMounted, reactive, ref, provide } from 'vue' import { onMounted, reactive, ref, provide, computed } from 'vue'
import { useDictData } from '@/stores/dictData' import { useDictData } from '@/stores/dictData'
import { mainHeight } from '@/utils/layout' import { mainHeight } from '@/utils/layout'
import { ArrowRight, View } from '@element-plus/icons-vue' import { ArrowRight, View } from '@element-plus/icons-vue'
@@ -180,6 +180,7 @@ import {
getGridDiagramRunData, getAreaObjAlarm getGridDiagramRunData, getAreaObjAlarm
} from '@/api/device-boot/panorama' } from '@/api/device-boot/panorama'
const emit = defineEmits(['LookMap', 'GridDiagram']) const emit = defineEmits(['LookMap', 'GridDiagram'])
const IS_LN = import.meta.env.VITE_NAME == 'LN' || import.meta.env.VITE_NAME == 'LNqr'
const dictData = useDictData() const dictData = useDictData()
const show = ref(false) const show = ref(false)
const standRef = ref() const standRef = ref()
@@ -391,6 +392,10 @@ const legengList = [
] ]
const panoramicVoltage: any = dictData.getBasicData('Dev_Voltage_Stand') const panoramicVoltage: any = dictData.getBasicData('Dev_Voltage_Stand')
const vList = ref(['', '500kV', '220kV', '110kV', '35kV', '']) const vList = ref(['', '500kV', '220kV', '110kV', '35kV', ''])
const displayVList = computed(() => (IS_LN && vList.value.length ? vList.value.slice(0, -1) : vList.value))
const dataVList = computed(() =>
IS_LN ? vList.value.slice(1, -1) : vList.value.slice(0, vList.value.length - 2)
)
const formRow: any = ref({}) const formRow: any = ref({})
const height = mainHeight(30) const height = mainHeight(30)
const boxHeight = mainHeight(290, 2) const boxHeight = mainHeight(290, 2)

View File

@@ -4,12 +4,8 @@
<template v-slot:select> <template v-slot:select>
<el-form-item label="运行状态"> <el-form-item label="运行状态">
<el-select v-model="tableStore.table.params.lineRunFlag" clearable placeholder="请选择运行状态"> <el-select v-model="tableStore.table.params.lineRunFlag" clearable placeholder="请选择运行状态">
<el-option <el-option v-for="item in runFlagList" :key="item.id" :label="item.name"
v-for="item in runFlagList" :value="item.id"></el-option>
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="筛选数据"> <el-form-item label="筛选数据">
@@ -40,14 +36,8 @@
</div> </div>
</template> </template>
<div class="mb5" style="height: 40px"> <div class="mb5" style="height: 40px">
<el-segmented <el-segmented style="height: 100%" v-model="segmented" :props="props" :options="segmentedList"
style="height: 100%" block @change="tableStore.index()">
v-model="segmented"
:props="props"
:options="segmentedList"
block
@change="tableStore.index()"
>
<template #default="scope"> <template #default="scope">
<div> <div>
<div>{{ scope.item.name }}</div> <div>{{ scope.item.name }}</div>
@@ -61,8 +51,8 @@
segmented == 'Power_Network' segmented == 'Power_Network'
? '区域' ? '区域'
: segmented == 'Manufacturer' : segmented == 'Manufacturer'
? '终端厂家' ? '终端厂家'
: '电网标志' : '电网标志'
}} }}
</span> </span>
<span style="width: 90px">终端总数</span> <span style="width: 90px">终端总数</span>
@@ -77,33 +67,21 @@
{{ o.name }} {{ o.name }}
</span> </span>
<!-- 终端总数 --> <!-- 终端总数 -->
<span <span style="width: 90px; color: #388e3c" class="text text-style"
style="width: 90px; color: #388e3c" @click="renderTable(o.list, o.name + '_')">
class="text text-style"
@click="renderTable(o.list, o.name + '_')"
>
{{ o.count }} {{ o.count }}
</span> </span>
<!-- --> <!-- -->
<span <span style="flex: 1; color: #388e3c" class="text"
style="flex: 1; color: #388e3c" :class="` ${o.integrity < 90 ? 'text-red' : ''}`">
class="text"
:class="` ${o.integrity < 90 ? 'text-red' : ''}`"
>
{{ o.integrity }} {{ o.integrity }}
</span> </span>
<span <span style="width: 80px; color: #388e3c" :class="` ${o.online < 90 ? 'text-red' : ''}`"
style="width: 80px; color: #388e3c" class="text">
:class="` ${o.online < 90 ? 'text-red' : ''}`"
class="text"
>
{{ o.online }} {{ o.online }}
</span> </span>
<span <span style="width: 80px; color: #388e3c" :class="` ${o.qualified > 10 ? 'text-red' : ''}`"
style="width: 80px; color: #388e3c" class="text">
:class="` ${o.qualified > 10 ? 'text-red' : ''}`"
class="text"
>
{{ o.qualified }} {{ o.qualified }}
</span> </span>
</div> </div>
@@ -120,13 +98,8 @@
<!--表格--> <!--表格-->
<div :style="{ height: tableStore.table.height }" v-loading="loading"> <div :style="{ height: tableStore.table.height }" v-loading="loading">
<vxe-table <vxe-table height="auto" :data="dataList.slice((pageNum - 1) * pageSize, pageNum * pageSize)"
height="auto" v-bind="defaultAttribute" ref="tableRef" :scroll-y="{ enabled: true }">
:data="dataList.slice((pageNum - 1) * pageSize, pageNum * pageSize)"
v-bind="defaultAttribute"
ref="tableRef"
:scroll-y="{ enabled: true }"
>
<vxe-column type="seq" title="序号" width="80px"> <vxe-column type="seq" title="序号" width="80px">
<template #default="{ rowIndex }"> <template #default="{ rowIndex }">
<span> <span>
@@ -146,19 +119,16 @@
<vxe-column field="ip" title="终端IP" :formatter="formatter" width="120px"></vxe-column> <vxe-column field="ip" title="终端IP" :formatter="formatter" width="120px"></vxe-column>
<vxe-column field="runFlag" title="运行状态" width="100px"> <vxe-column field="runFlag" title="运行状态" width="100px">
<template #default="{ row }"> <template #default="{ row }">
<el-tag <el-tag :type="row.runFlag == '运行'
:type=" ? 'success'
row.runFlag == '运' : row.runFlag == '运'
? 'success'
: row.runFlag == '停运'
? 'danger' ? 'danger'
: row.runFlag == '检修' : row.runFlag == '检修'
? 'warning' ? 'warning'
: row.runFlag == '调试' : row.runFlag == '调试'
? 'warning' ? 'warning'
: 'danger' : 'danger'
" ">
>
{{ row.runFlag }} {{ row.runFlag }}
</el-tag> </el-tag>
</template> </template>
@@ -169,14 +139,9 @@
</vxe-table> </vxe-table>
</div> </div>
<div class="table-pagination"> <div class="table-pagination">
<el-pagination <el-pagination v-model:currentPage="pageNum" v-model:page-size="pageSize"
v-model:currentPage="pageNum" :page-sizes="[10, 20, 50, 100, 200]" background
v-model:page-size="pageSize" layout="sizes,total, ->, prev, pager, next, jumper" :total="dataList.length"></el-pagination>
:page-sizes="[10, 20, 50, 100, 200]"
background
layout="sizes,total, ->, prev, pager, next, jumper"
:total="dataList.length"
></el-pagination>
</div> </div>
</el-card> </el-card>
</div> </div>
@@ -187,7 +152,7 @@
import TableStore from '@/utils/tableStore' import TableStore from '@/utils/tableStore'
import Table from '@/components/table/index.vue' import Table from '@/components/table/index.vue'
import TableHeader from '@/components/table/header/index.vue' import TableHeader from '@/components/table/header/index.vue'
import { onMounted, provide, ref } from 'vue' import { onMounted, provide, ref, nextTick } from 'vue'
import { defaultAttribute } from '@/components/table/defaultAttribute' import { defaultAttribute } from '@/components/table/defaultAttribute'
import { useDictData } from '@/stores/dictData' import { useDictData } from '@/stores/dictData'
import { mainHeight } from '@/utils/layout' import { mainHeight } from '@/utils/layout'
@@ -273,7 +238,7 @@ const tableStore = new TableStore({
if (tableStore.table.params.statisticalType.name == '终端厂家') { if (tableStore.table.params.statisticalType.name == '终端厂家') {
return k.count != 0 return k.count != 0
} else { } else {
return !k.citName.includes('上送') return !k.name.includes('上送')
} }
}) })
// 合并子集数据 并去重 // 合并子集数据 并去重
@@ -465,15 +430,9 @@ const onExport = () => {
}) })
} }
onMounted(() => { onMounted(() => {
// TableHeaderRef.value.setDatePicker([ nextTick(() => {
// { label: '年份', value: 1 }, TableHeaderRef.value?.onComSearch()
// { label: '季度', value: 2 }, })
// { label: '月份', value: 3 }
// ])
// 加载数据
tableStore.index()
}) })
tableStore.table.params.name = '' tableStore.table.params.name = ''
@@ -482,14 +441,17 @@ provide('tableStore', tableStore)
<style lang="scss" scoped> <style lang="scss" scoped>
.card-list { .card-list {
display: flex; display: flex;
.monitoringPoints { .monitoringPoints {
width: 460px; width: 460px;
position: relative; position: relative;
.statistics { .statistics {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
justify-content: space-between; justify-content: space-between;
margin-bottom: 10px; margin-bottom: 10px;
.divBox { .divBox {
width: 215x; width: 215x;
height: 70px; height: 70px;
@@ -500,33 +462,41 @@ provide('tableStore', tableStore)
font-size: 40px; font-size: 40px;
margin-right: 5px; margin-right: 5px;
} }
.divBox_title { .divBox_title {
font-weight: 550; font-weight: 550;
} }
.divBox_num { .divBox_num {
font-size: 20px; font-size: 20px;
font-weight: 550; font-weight: 550;
margin-left: auto; margin-left: auto;
font-family: AlimamaDongFangDaKai; font-family: AlimamaDongFangDaKai;
} }
align-items: center; align-items: center;
// text-align: center; // text-align: center;
border-radius: 5px; border-radius: 5px;
&:nth-child(1) { &:nth-child(1) {
background-color: #eef8f0; background-color: #eef8f0;
} }
&:nth-child(2) { &:nth-child(2) {
background-color: #fff6ed; background-color: #fff6ed;
} }
&:nth-child(3) { &:nth-child(3) {
background-color: #e5f8f6; background-color: #e5f8f6;
} }
} }
} }
} }
.detail { .detail {
flex: 1; flex: 1;
} }
.abnormal { .abnormal {
width: 100%; width: 100%;
background-color: #f3f6f9; background-color: #f3f6f9;
@@ -535,9 +505,11 @@ provide('tableStore', tableStore)
// justify-content: space-between; // justify-content: space-between;
align-items: center; align-items: center;
padding: 5px 0px 5px 10px; padding: 5px 0px 5px 10px;
.iconDiv { .iconDiv {
display: flex; display: flex;
align-items: center; align-items: center;
div { div {
width: 4px; width: 4px;
height: 18px; height: 18px;
@@ -545,6 +517,7 @@ provide('tableStore', tableStore)
background-color: var(--el-color-primary); background-color: var(--el-color-primary);
} }
} }
.text { .text {
font-weight: 700; font-weight: 700;
font-size: 16px; font-size: 16px;
@@ -555,6 +528,7 @@ provide('tableStore', tableStore)
} }
} }
} }
.header { .header {
display: flex; display: flex;
text-align: center; text-align: center;
@@ -562,40 +536,50 @@ provide('tableStore', tableStore)
font-weight: 700; font-weight: 700;
padding: 5px; padding: 5px;
} }
:deep(.el-card__header) { :deep(.el-card__header) {
padding: 10px; padding: 10px;
span { span {
font-weight: 600; font-weight: 600;
} }
} }
:deep(.el-card__body) { :deep(.el-card__body) {
padding: 10px; padding: 10px;
} }
.iconFont { .iconFont {
font-size: 18px; font-size: 18px;
display: inline-block; display: inline-block;
vertical-align: middle; vertical-align: middle;
} }
.form { .form {
position: relative; position: relative;
.form_but { .form_but {
position: absolute; position: absolute;
right: -22px; right: -22px;
} }
} }
.card-header { .card-header {
font-size: 16px; font-size: 16px;
} }
:deep(.table_name) { :deep(.table_name) {
color: var(--el-color-primary); color: var(--el-color-primary);
cursor: pointer; cursor: pointer;
text-underline-offset: 4px; text-underline-offset: 4px;
} }
.echartTitle { .echartTitle {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
font-size: 14px; font-size: 14px;
font-weight: 600; font-weight: 600;
div:nth-child(2) { div:nth-child(2) {
font-size: 16px; font-size: 16px;
color: #ff6600; color: #ff6600;
@@ -605,20 +589,25 @@ provide('tableStore', tableStore)
:deep(.el-segmented__item-selected, ) { :deep(.el-segmented__item-selected, ) {
clip-path: polygon(10% 0, 100% 0, 90% 100%, 0 100%); clip-path: polygon(10% 0, 100% 0, 90% 100%, 0 100%);
} }
:deep(.el-segmented__item, ) { :deep(.el-segmented__item, ) {
clip-path: polygon(10% 0, 100% 0, 90% 100%, 0 100%); clip-path: polygon(10% 0, 100% 0, 90% 100%, 0 100%);
position: relative; position: relative;
} }
:deep(.el-segmented) { :deep(.el-segmented) {
clip-path: polygon(4% 0, 100% 0, 96% 100%, 0 100%); clip-path: polygon(4% 0, 100% 0, 96% 100%, 0 100%);
} }
.text-red { .text-red {
color: #ff9100 !important; color: #ff9100 !important;
} }
.text-style { .text-style {
cursor: pointer; cursor: pointer;
text-decoration: underline; text-decoration: underline;
} }
.segmentedIcon { .segmentedIcon {
position: absolute; position: absolute;
top: 1px; top: 1px;
@@ -631,6 +620,7 @@ provide('tableStore', tableStore)
color: #fff; color: #fff;
border-radius: 8px; border-radius: 8px;
} }
.table-pagination { .table-pagination {
height: 58px; height: 58px;
box-sizing: border-box; box-sizing: border-box;