From aa90a518a4c2e5712cc83ffe4d19ef8e77279525 Mon Sep 17 00:00:00 2001
From: GGJ <357021191@qq.com>
Date: Tue, 19 Mar 2024 15:53:01 +0800
Subject: [PATCH] =?UTF-8?q?=E8=81=94=E8=B0=83=20=E8=BF=87=E7=A8=8B?=
=?UTF-8?q?=E7=9B=91=E7=9D=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/process-boot/terminal.ts | 3 +-
src/components/echarts/MyEchart.vue | 43 +--
.../pqs/supervise/terminal/components/add.vue | 34 ++-
.../terminal/components/cycleEch.vue | 79 ++++++
.../terminal/components/cycleTab.vue | 262 +++++++++++++++---
.../terminal/components/networkEch.vue | 73 +++++
.../terminal/components/networkTab.vue | 166 ++++++++++-
src/views/pqs/supervise/terminal/index.vue | 17 +-
8 files changed, 579 insertions(+), 98 deletions(-)
create mode 100644 src/views/pqs/supervise/terminal/components/cycleEch.vue
create mode 100644 src/views/pqs/supervise/terminal/components/networkEch.vue
diff --git a/src/api/process-boot/terminal.ts b/src/api/process-boot/terminal.ts
index 5e17224f..4a8bb6c6 100644
--- a/src/api/process-boot/terminal.ts
+++ b/src/api/process-boot/terminal.ts
@@ -85,7 +85,8 @@ export function batchTerminal(file) {
return createAxios({
url: '/process-boot/process/pmsTerminalDetection/batchTerminal',
method: 'post',
- data: form
+ data: form,
+ responseType: 'blob'
})
}
// 上传文件
diff --git a/src/components/echarts/MyEchart.vue b/src/components/echarts/MyEchart.vue
index 7ad35f09..86903879 100644
--- a/src/components/echarts/MyEchart.vue
+++ b/src/components/echarts/MyEchart.vue
@@ -38,7 +38,7 @@ const initChart = () => {
color: '#000',
fontSize: 18
},
- ...(props.options.title || null)
+ ...(props.options?.title || null)
},
tooltip: {
trigger: 'axis',
@@ -57,7 +57,7 @@ const initChart = () => {
},
backgroundColor: 'rgba(0,0,0,0.35)',
borderWidth: 0,
- ...(props.options.tooltip || null)
+ ...(props.options?.tooltip || null)
},
legend: {
right: 20,
@@ -70,19 +70,19 @@ const initChart = () => {
},
itemWidth: 15,
itemHeight: 10,
- ...(props.options.legend || null)
+ ...(props.options?.legend || null)
},
grid: {
top: '50px',
left: '10px',
right: '60px',
- bottom: props.options.options?.dataZoom === null ? '10px' : '40px',
+ bottom: props.options?.options?.dataZoom === null ? '10px' : '40px',
containLabel: true,
- ...(props.options.grid || null)
+ ...(props.options?.grid || null)
},
- xAxis: props.options.xAxis ? handlerXAxis() : null,
- yAxis: props.options.yAxis ? handlerYAxis() : null,
- dataZoom: props.options.dataZoom || [
+ xAxis: props.options?.xAxis ? handlerXAxis() : null,
+ yAxis: props.options?.yAxis ? handlerYAxis() : null,
+ dataZoom: props.options?.dataZoom || [
{
type: 'inside',
height: 13,
@@ -97,9 +97,9 @@ const initChart = () => {
end: 100
}
],
- color: props.options.color || color,
- series: props.options.series,
- ...props.options.options
+ color: props.options?.color || color,
+ series: props.options?.series,
+ ...props.options?.options
}
handlerBar(options)
// 处理柱状图
@@ -120,8 +120,8 @@ const handlerBar = (options: any) => {
if (params.value == 0 || params.value == 3.14159) {
return '#ccc'
} else {
- return props.options.color
- ? props.options.color[params.seriesIndex]
+ return props.options?.color
+ ? props.options?.color[params.seriesIndex]
: color[params.seriesIndex]
}
}
@@ -135,6 +135,7 @@ const handlerBar = (options: any) => {
const handlerYAxis = () => {
let temp = {
type: 'value',
+ nameGap: 15,
nameTextStyle: {
color: '#000'
},
@@ -158,9 +159,9 @@ const handlerYAxis = () => {
}
}
}
- // props.options.xAxis 是数组还是对象
- if (Array.isArray(props.options.yAxis)) {
- return props.options.yAxis.map((item: any) => {
+ // props.options?.xAxis 是数组还是对象
+ if (Array.isArray(props.options?.yAxis)) {
+ return props.options?.yAxis.map((item: any) => {
return {
...item,
...temp
@@ -169,7 +170,7 @@ const handlerYAxis = () => {
} else {
return {
...temp,
- ...props.options.yAxis
+ ...props.options?.yAxis
}
}
}
@@ -190,9 +191,9 @@ const handlerXAxis = () => {
}
}
}
- // props.options.xAxis 是数组还是对象
- if (Array.isArray(props.options.xAxis)) {
- return props.options.xAxis.map((item: any) => {
+ // props.options?.xAxis 是数组还是对象
+ if (Array.isArray(props.options?.xAxis)) {
+ return props.options?.xAxis.map((item: any) => {
return {
...temp,
...item
@@ -201,7 +202,7 @@ const handlerXAxis = () => {
} else {
return {
...temp,
- ...props.options.xAxis
+ ...props.options?.xAxis
}
}
}
diff --git a/src/views/pqs/supervise/terminal/components/add.vue b/src/views/pqs/supervise/terminal/components/add.vue
index 7af639a7..d62bb465 100644
--- a/src/views/pqs/supervise/terminal/components/add.vue
+++ b/src/views/pqs/supervise/terminal/components/add.vue
@@ -1,10 +1,10 @@
-
+
@@ -23,7 +23,7 @@
placeholder="选择日期"
>
-
+
@@ -37,7 +37,7 @@
>
-
+
@@ -65,7 +65,7 @@
diff --git a/src/views/pqs/supervise/terminal/components/cycleEch.vue b/src/views/pqs/supervise/terminal/components/cycleEch.vue
new file mode 100644
index 00000000..798bf6cb
--- /dev/null
+++ b/src/views/pqs/supervise/terminal/components/cycleEch.vue
@@ -0,0 +1,79 @@
+
+
+
+
+
diff --git a/src/views/pqs/supervise/terminal/components/cycleTab.vue b/src/views/pqs/supervise/terminal/components/cycleTab.vue
index 2e3603fd..80fc7860 100644
--- a/src/views/pqs/supervise/terminal/components/cycleTab.vue
+++ b/src/views/pqs/supervise/terminal/components/cycleTab.vue
@@ -4,32 +4,41 @@
-
-
-
+
-
+
-
+
@@ -37,10 +46,54 @@
导出
- 上传检测报告
+
+
+
+ excel导入
+
+
+
+ 上传检测报告
+
+
+
+ 选择文件
+ (*传入的检测报告文件格式(终端编号-检测报告(yyyy-MM-dd).docx))
+
+
+ 取 消
+ 上 传
+
+
@@ -50,48 +103,75 @@ import TableStore from '@/utils/tableStore'
import Table from '@/components/table/index.vue'
import TableHeader from '@/components/table/header/index.vue'
import { ElMessage, ElMessageBox } from 'element-plus'
-import { mainHeight } from '@/utils/layout'
+import { DownloadExport, reportDownload, batchTerminal, delTerminal ,importReport} from '@/api/process-boot/terminal'
import { useDictData } from '@/stores/dictData'
-import { addUse, updateUse, removeUse } from '@/api/advance-boot/bearingCapacity'
const dictData = useDictData()
-const uploadData = [
+const manufactorList = dictData.getBasicData('Dev_Manufacturers')
+const testResultsList = [
{
id: 0,
-
- label: '未上传'
+ name: '未展开'
},
{
id: 1,
-
- label: '已上传'
+ name: '已展开'
}
]
-const dialogVisible = ref(false)
const TableHeaderRef = ref()
-const title = ref('')
-
+const showBatchUpload = ref(false)
const ruleFormRef = ref()
+const fileList: any = ref([])
const tableStore = new TableStore({
- url: '/system-boot/area/areaSelect',
+ url: '/process-boot/process/pmsTerminalDetection/getTerminalPage',
publicHeight: 85,
method: 'POST',
column: [
- { width: '60', type: 'checkbox' },
-
{ field: 'id', title: '终端编号' },
- { field: 'name', title: '上产厂家' },
- { field: 'orgName', title: '安装位置' },
+ {
+ field: 'manufacture',
+ title: '生产厂家',
+ formatter(row: any) {
+ return manufactorList.filter(item => item.id == row.cellValue)[0]?.name
+ }
+ },
+ { field: 'installPlace', title: '安装位置' },
{ field: 'inspectionUnit', title: '送检单位' },
{ field: 'testResults', title: '检测结果' },
- { field: 'nextInspectionTime', title: '下次监测时间' },
+ { field: 'nextInspectionTime', title: '下次检测时间' },
{
title: '操作',
- width: '180',
+ width: '250',
render: 'buttons',
fixed: 'right',
buttons: [
+ {
+ name: 'edit',
+ title: '编辑',
+ type: 'primary',
+ icon: 'el-icon-EditPen',
+ render: 'basicButton',
+ click: row => {}
+ },
+ {
+ title: '删除',
+ type: 'danger',
+ icon: 'el-icon-Delete',
+ render: 'confirmButton',
+ popconfirm: {
+ confirmButtonText: '确认',
+ cancelButtonText: '取消',
+ confirmButtonType: 'danger',
+ title: '确定删除吗?'
+ },
+ click: row => {
+ delTerminal([row.id]).then(() => {
+ ElMessage.success('删除成功')
+ tableStore.index()
+ })
+ }
+ },
{
name: 'edit',
title: '下载原始数据报告',
@@ -101,7 +181,9 @@ const tableStore = new TableStore({
disabled: row => {
return row.originalReport == null
},
- click: row => {}
+ click: row => {
+ download(row, 0)
+ }
},
{
name: 'edit',
@@ -112,26 +194,114 @@ const tableStore = new TableStore({
disabled: row => {
return row.inspectionReport == null
},
- click: row => {}
+ click: row => {
+ download(row, 1)
+ }
}
]
}
- ],
-
- loadCallback: () => {
- tableStore.table.data = [
- {
- status: 2
- }
- ]
- }
+ ]
})
-tableStore.table.params.searchState = ''
-tableStore.table.params.searchValue = ''
-tableStore.table.params.type = ''
+tableStore.table.params.name = ''
+tableStore.table.params.id = dictData.state.area[0].id
+tableStore.table.params.testResults = ''
+tableStore.table.params.manufacture = []
+tableStore.table.params.type = 1
provide('tableStore', tableStore)
+
+// 关闭弹窗查询
+const onsubmit = () => {}
+// 下载模版
+const Export = () => {
+ DownloadExport().then(res => {
+ let blob = new Blob([res], {
+ type: 'application/vnd.ms-excel'
+ })
+
+ const url = window.URL.createObjectURL(blob)
+ const link = document.createElement('a') // 创建a标签
+ link.href = url
+ link.download = '终端入网检测录入模板' // 设置下载的文件名
+ document.body.appendChild(link)
+ link.click() //执行下载
+ })
+}
+// 下载报告
+const download = (row: any, type: number) => {
+ reportDownload({
+ id: row.id,
+ type: type
+ }).then(res => {
+ let blob = new Blob([res], {
+ type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document;charset=UTF-8'
+ })
+
+ const url = window.URL.createObjectURL(blob)
+ const link = document.createElement('a') // 创建a标签
+ link.href = url
+ link.download = type == 1 ? row.inspectionName : row.originalName // 设置下载的文件名
+ document.body.appendChild(link)
+ link.click() //执行下载
+ })
+}
+// excel导入
+const choose = (e: any) => {
+ batchTerminal(e.raw).then((res: any) => {
+ if (res.type == 'application/json') {
+ ElMessage.success('上传成功,无错误数据!')
+ tableStore.index()
+ } else {
+ ElMessage.warning('上传成功,有错误数据 自动下载 请查看')
+ let blob = new Blob([res], {
+ type: 'application/vnd.ms-excel'
+ })
+ const url = window.URL.createObjectURL(blob)
+ const link = document.createElement('a') // 创建a标签
+ link.href = url
+ link.download = '模板错误信息' // 设置下载的文件名
+ document.body.appendChild(link)
+ link.click() //执行下载
+ }
+ })
+}
+// 上传原始报告
+const UploadOriginal = () => {
+ showBatchUpload.value = true
+}
+// 上传
+const BatchUpload = () => {
+ let form = new FormData()
+ form.append('type', 1)
+ fileList.value.forEach(item => {
+ form.append('files', item.raw)
+ })
+ importReport(form)
+ .then(res => {
+ if (res.type == 'application/json') {
+ ElMessage.success('上传成功!')
+ handleClose()
+ tableStore.index()
+ } else {
+ ElMessage.error('上传失败!')
+ }
+ })
+ .catch(response => {
+ // console.log(response);
+ })
+ // fileList.value
+}
+const chooseBatch = (e: any) => {
+ fileList.value.push(e)
+}
+const handleRemove = (e: any) => {
+ fileList.value = fileList.value.filter(item => item.uid !== e.uid)
+}
+const handleClose = () => {
+ fileList.value = []
+ showBatchUpload.value = false
+}
onMounted(() => {
tableStore.index()
})
diff --git a/src/views/pqs/supervise/terminal/components/networkEch.vue b/src/views/pqs/supervise/terminal/components/networkEch.vue
new file mode 100644
index 00000000..2ac1f8fa
--- /dev/null
+++ b/src/views/pqs/supervise/terminal/components/networkEch.vue
@@ -0,0 +1,73 @@
+
+
+
+
+
diff --git a/src/views/pqs/supervise/terminal/components/networkTab.vue b/src/views/pqs/supervise/terminal/components/networkTab.vue
index ef83a7ec..4434119d 100644
--- a/src/views/pqs/supervise/terminal/components/networkTab.vue
+++ b/src/views/pqs/supervise/terminal/components/networkTab.vue
@@ -46,16 +46,13 @@
新增
- 修改
- 删除
- 导出
+
+ 导出
下载模板
-
- 上传原始报告
+ 上传原始报告
+
+
+
+ 选择文件
+ (*传入的原始数据文件格式(终端编号-原始数据报告.docx))
+
+
+ 取 消
+ 上 传
+
+
@@ -86,7 +109,14 @@ import Table from '@/components/table/index.vue'
import TableHeader from '@/components/table/header/index.vue'
import newlyIncreased from './add.vue'
import { ElMessage, ElMessageBox } from 'element-plus'
-import { DownloadExport, reportDownload, batchTerminal } from '@/api/process-boot/terminal'
+import {
+ DownloadExport,
+ reportDownload,
+ batchTerminal,
+ delTerminal,
+ getTerminalPage,
+ importReport
+} from '@/api/process-boot/terminal'
import { useDictData } from '@/stores/dictData'
const dictData = useDictData()
@@ -102,9 +132,11 @@ const testResultsList = [
}
]
-const dialogVisible = ref(false)
+const fileList: any = ref([])
const TableHeaderRef = ref()
const addRef = ref()
+const showBatchUpload = ref(false)
+const tableRef = ref()
const ruleFormRef = ref()
const tableStore = new TableStore({
@@ -112,7 +144,7 @@ const tableStore = new TableStore({
publicHeight: 85,
method: 'POST',
column: [
- { width: '60', type: 'checkbox' },
+ // { width: '60', type: 'checkbox' },
{ field: 'orgName', title: '所属单位' },
{ field: 'id', title: '终端编号' },
@@ -126,15 +158,52 @@ const tableStore = new TableStore({
},
{ field: 'installPlace', title: '安装位置' },
{ field: 'inspectionUnit', title: '送检单位' },
- { field: 'testResults', title: '检测结果' },
+ {
+ field: 'testResults',
+ title: '检测结果',
+ formatter(row: any) {
+ return row.cellValue == 0 ? '未展开' : '已展开'
+ }
+ },
{ field: 'inspectionTime', title: '检测时间' },
{ field: 'nextInspectionTime', title: '下次检测时间' },
{
title: '操作',
- width: '180',
+ width: '250',
render: 'buttons',
fixed: 'right',
buttons: [
+ {
+ name: 'edit',
+ title: '编辑',
+ type: 'primary',
+ icon: 'el-icon-EditPen',
+ render: 'basicButton',
+ click: row => {
+ addRef.value.open({
+ title: '编辑',
+ row: row
+ })
+ }
+ },
+ {
+ title: '删除',
+ type: 'danger',
+ icon: 'el-icon-Delete',
+ render: 'confirmButton',
+ popconfirm: {
+ confirmButtonText: '确认',
+ cancelButtonText: '取消',
+ confirmButtonType: 'danger',
+ title: '确定删除吗?'
+ },
+ click: row => {
+ delTerminal([row.id]).then(() => {
+ ElMessage.success('删除成功')
+ tableStore.index()
+ })
+ }
+ },
{
name: 'edit',
title: '下载原始数据报告',
@@ -179,8 +248,7 @@ const add = () => {
title: '新增'
})
}
-// 关闭弹窗查询
-const onsubmit = () => {}
+
// 下载模版
const Export = () => {
DownloadExport().then(res => {
@@ -216,10 +284,78 @@ const download = (row: any, type: number) => {
}
// excel导入
const choose = (e: any) => {
- batchTerminal(e.raw).then(res => {
- console.log('🚀 ~ batchTerminal ~ res:', res)
+ batchTerminal(e.raw).then((res: any) => {
+ if (res.type == 'application/json') {
+ ElMessage.success('上传成功,无错误数据!')
+ tableStore.index()
+ } else {
+ ElMessage.warning('上传成功,有错误数据 自动下载 请查看')
+ let blob = new Blob([res], {
+ type: 'application/vnd.ms-excel'
+ })
+ const url = window.URL.createObjectURL(blob)
+ const link = document.createElement('a') // 创建a标签
+ link.href = url
+ link.download = '模板错误信息' // 设置下载的文件名
+ document.body.appendChild(link)
+ link.click() //执行下载
+ }
})
}
+// 导出
+const exportEvent = () => {
+ let form = JSON.parse(JSON.stringify(tableStore.table.params))
+ form.pageNum = 1
+ form.pageSize = tableStore.table.total
+ getTerminalPage(form).then(res => {
+ tableRef.value.getRef().exportData({
+ filename: '终端入网检测', // 文件名字
+ sheetName: 'Sheet1',
+ type: 'xlsx', //导出文件类型 xlsx 和 csv
+ useStyle: true,
+ data: res.data.records, // 数据源 // 过滤那个字段导出
+ columnFilterMethod: function (column: any) {
+ return !(column.$columnIndex === 0)
+ }
+ })
+ })
+}
+// 上传原始报告
+const UploadOriginal = () => {
+ showBatchUpload.value = true
+}
+// 上传
+const BatchUpload = () => {
+ let form = new FormData()
+ form.append('type', 0)
+ fileList.value.forEach(item => {
+ form.append('files', item.raw)
+ })
+ importReport(form)
+ .then(res => {
+ if (res.type == 'application/json') {
+ ElMessage.success('上传成功!')
+ handleClose()
+ tableStore.index()
+ } else {
+ ElMessage.error('上传失败!')
+ }
+ })
+ .catch(response => {
+ // console.log(response);
+ })
+ // fileList.value
+}
+const chooseBatch = (e: any) => {
+ fileList.value.push(e)
+}
+const handleRemove = (e: any) => {
+ fileList.value = fileList.value.filter(item => item.uid !== e.uid)
+}
+const handleClose = () => {
+ fileList.value = []
+ showBatchUpload.value = false
+}
onMounted(() => {
tableStore.index()
})
diff --git a/src/views/pqs/supervise/terminal/index.vue b/src/views/pqs/supervise/terminal/index.vue
index cb98d3fa..359a25ab 100644
--- a/src/views/pqs/supervise/terminal/index.vue
+++ b/src/views/pqs/supervise/terminal/index.vue
@@ -5,16 +5,21 @@
-
+
+
+
+
- Config
-
-
- Config
+
+
+
+
+
+
@@ -24,7 +29,9 @@