echarts图表更改,表格表头颜色改变,自定义属性添加
This commit is contained in:
parent
4bc641be02
commit
d348a65e56
@ -4,116 +4,71 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, watch, onMounted } from 'vue';
|
||||
import * as d3 from 'd3';
|
||||
import * as echarts from 'echarts';
|
||||
|
||||
const props = defineProps<{
|
||||
chartData: Array<{ x: number; y: number }>;
|
||||
}>();
|
||||
|
||||
const chartContainer = ref<HTMLElement | null>(null);
|
||||
let svg: d3.Selection<SVGSVGElement, unknown, null, undefined>;
|
||||
let xScale: d3.ScaleLinear<number, number>;
|
||||
let yScale: d3.ScaleLinear<number, number>;
|
||||
let line: d3.Line<{ x: number; y: number }>;
|
||||
let chartInstance: echarts.ECharts | null = null; // ECharts实例引用
|
||||
|
||||
const initChart = () => {
|
||||
if (!chartContainer.value) return;
|
||||
|
||||
// 清除旧图表
|
||||
d3.select(chartContainer.value).select("svg").remove();
|
||||
// 初始化ECharts实例
|
||||
chartInstance = echarts.init(chartContainer.value);
|
||||
console.log('chartInstance initialized:', chartInstance); // 调试信息
|
||||
|
||||
// 创建SVG容器
|
||||
svg = d3.select(chartContainer.value)
|
||||
.append('svg')
|
||||
.attr('width', '100%')
|
||||
.attr('height', '100%');
|
||||
// 设置基础配置
|
||||
const option: echarts.EChartsOption = {
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
xAxis: {
|
||||
type: 'value',
|
||||
name: '时间 (s)',
|
||||
nameLocation: 'middle',
|
||||
nameGap: 30
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value',
|
||||
name: '高度 (m)',
|
||||
nameLocation: 'middle',
|
||||
nameGap: 40
|
||||
},
|
||||
series: [{
|
||||
name: '高度 (m)',
|
||||
type: 'line',
|
||||
smooth: true,
|
||||
// symbol: 'none', // 不显示数据点
|
||||
lineStyle: {
|
||||
width: 2,
|
||||
color: '#5470c6' // ECharts默认蓝色
|
||||
},
|
||||
data: []
|
||||
}]
|
||||
};
|
||||
|
||||
// 初始化比例尺
|
||||
xScale = d3.scaleLinear()
|
||||
.range([50, 750]);
|
||||
|
||||
yScale = d3.scaleLinear()
|
||||
.range([400, 50]);
|
||||
|
||||
// 初始化折线生成器
|
||||
line = d3.line<{ x: number; y: number }>()
|
||||
.x(d => xScale(d.x))
|
||||
.y(d => yScale(d.y));
|
||||
|
||||
// 添加坐标轴容器
|
||||
svg.append('g')
|
||||
.attr('class', 'x-axis')
|
||||
.attr('transform', 'translate(0, 400)');
|
||||
|
||||
svg.append('g')
|
||||
.attr('class', 'y-axis')
|
||||
.attr('transform', 'translate(50, 0)');
|
||||
|
||||
// 创建路径元素
|
||||
svg.append('path')
|
||||
.attr('class', 'line')
|
||||
.attr('fill', 'none')
|
||||
.attr('stroke', 'steelblue')
|
||||
.attr('stroke-width', 2);
|
||||
svg.append("text")
|
||||
.attr("class", "x-axis-label") // 修改为独立class
|
||||
.attr("transform", "translate(400,440)")
|
||||
.style("text-anchor", "middle")
|
||||
.text("时间 (s)");
|
||||
|
||||
svg.append("text")
|
||||
.attr("class", "y-axis-label")
|
||||
.attr("transform", "rotate(-90) translate(-220, 15)") // 调整定位参数
|
||||
.style("text-anchor", "middle")
|
||||
.text("高度 (m)");
|
||||
svg.call(d3.zoom()
|
||||
.scaleExtent([1, 8])
|
||||
.on('zoom', (event) => {
|
||||
xScale.eventTransform.rescaleX(xScale);
|
||||
yScale.eventTransform.rescaleY(yScale);
|
||||
updateChart();
|
||||
}));
|
||||
// 首次绘制
|
||||
updateChart();
|
||||
chartInstance.setOption(option);
|
||||
updateChart(); // 初始渲染
|
||||
};
|
||||
|
||||
const updateChart = () => {
|
||||
svg.attr('key', Date.now());
|
||||
// 更新前先移除旧坐标轴
|
||||
svg.select('.x-axis').remove();
|
||||
svg.select('.y-axis').remove();
|
||||
if (!chartInstance) return;
|
||||
|
||||
// 重新创建坐标轴容器
|
||||
const xAxis = svg.append('g')
|
||||
.attr('class', 'x-axis')
|
||||
.attr('transform', `translate(0, ${yScale.range()[0]})`);
|
||||
console.log('Updating chart...'); // 调试信息
|
||||
|
||||
const yAxis = svg.append('g')
|
||||
.attr('class', 'y-axis')
|
||||
.attr('transform', `translate(${xScale.range()[0]}, 0)`);
|
||||
// 更新比例尺域
|
||||
const xDomain = props.chartData.length > 0 ?
|
||||
d3.extent(props.chartData, d => d.x) : [0, 1];
|
||||
xScale.domain(xDomain as [number, number]);
|
||||
yScale.domain([0, d3.max(props.chartData, d => d.y)!]);
|
||||
// 转换数据结构:{x,y} -> [x,y]
|
||||
const seriesData = props.chartData.map(item => [item.x, item.y]);
|
||||
console.log('seriesData:', seriesData); // 调试信息
|
||||
|
||||
// 更新折线
|
||||
svg.select('.line')
|
||||
.datum(props.chartData)
|
||||
.transition()
|
||||
.duration(500)
|
||||
.attr('d', line);
|
||||
|
||||
// 更新坐标轴
|
||||
svg.select('.x-axis')
|
||||
.transition()
|
||||
.duration(500)
|
||||
.call(d3.axisBottom(xScale));
|
||||
|
||||
svg.select('.y-axis')
|
||||
.transition()
|
||||
.duration(500)
|
||||
.call(d3.axisLeft(yScale));
|
||||
// 更新图表数据
|
||||
chartInstance.setOption({
|
||||
series: [{
|
||||
data: seriesData
|
||||
}]
|
||||
});
|
||||
};
|
||||
|
||||
onMounted(initChart);
|
||||
@ -124,21 +79,5 @@ watch(() => props.chartData, updateChart, { deep: true });
|
||||
.chart-container {
|
||||
width: 800px;
|
||||
height: 600px;
|
||||
border: 1px solid #eee;
|
||||
margin: 20px;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.x-axis text {
|
||||
font-size: 10px;
|
||||
transform: rotate(-45deg);
|
||||
text-anchor: end;
|
||||
}
|
||||
|
||||
.x-axis-label,
|
||||
.y-axis-label {
|
||||
font-size: 12px;
|
||||
fill: #666;
|
||||
font-family: Arial, sans-serif;
|
||||
}
|
||||
</style>
|
@ -166,7 +166,7 @@ onMounted(() => {
|
||||
</el-tab-pane>
|
||||
<el-table v-loading="loading" :data="tableData" style="width: 100%; margin-bottom: 20px;overflow:hidden;" height="400px"
|
||||
row-key="id" border @selection-change="handleSelectionChange" default-expand-all
|
||||
:header-cell-style="{ background: 'rgb(250 250 250)', height: '50px' }">
|
||||
:header-cell-style="{ background: 'rgb(250 250 250)', color: '#383838',height: '50px' }">
|
||||
<el-table-column v-if="active == '1'" type="selection" align="center" width="50" />
|
||||
<el-table-column type="index" label="序号" align="center" width="70" />
|
||||
<el-table-column prop="title" label="消息标题">
|
||||
|
@ -13,7 +13,7 @@ import { Search } from '@element-plus/icons-vue'
|
||||
import Page from '@/components/Pagination/page.vue';
|
||||
import AudioPlayer from '@/components/file/preview/AudioPlayer.vue';
|
||||
import { batchDeleteReq } from "@/api/file-operator";
|
||||
import { projectList, selectNodesByProjectId, documentUploadById, obtainInformationAsync, getNodesTree, addNodes, updateNodes, deleteNodesById, getFilesPage, addFiles, updateFiles, deleteFilesById, deleteFilesByIds, specialScanById,sdLocalUrl } from "@/api/document";
|
||||
import { projectList, selectNodesByProjectId, documentUploadById, obtainInformationAsync, getNodesTree, addNodes, updateNodes, deleteNodesById, getFilesPage, addFiles, updateFiles, deleteFilesById, deleteFilesByIds, specialScanById, sdLocalUrl } from "@/api/document";
|
||||
import ZUpload from '@/components/file/ZUpload.vue'
|
||||
import useFileUpload from "@/components/file/file/useFileUpload";
|
||||
import useHeaderStorageList from "@/components/header/useHeaderStorageList";
|
||||
@ -151,7 +151,7 @@ function gettreedata() {
|
||||
treeloading.value = false
|
||||
if (treedata.value[0]) {
|
||||
pathid.value = treedata.value[0].id
|
||||
filePath.value = res.data[0].path + res.data[0].nodeName + '/'
|
||||
filePath.value = res.data[0].path + res.data[0].nodeName + '/'
|
||||
nextTick(() => {
|
||||
treeRef.value?.setCurrentKey(pathid.value);
|
||||
});
|
||||
@ -252,6 +252,7 @@ async function submitForm(formEl: any) {
|
||||
if (!formEl) return
|
||||
await formEl.validate((valid: any, fields: any) => {
|
||||
if (valid) {
|
||||
projectForme.value.custom3 = filePath.value
|
||||
if (projectForme.value.id) {
|
||||
updateNodes(projectForme.value).then((res: any) => {
|
||||
if (res.code == 0) {
|
||||
@ -259,7 +260,6 @@ async function submitForm(formEl: any) {
|
||||
ElMessage.success("修改成功")
|
||||
frame.value = false
|
||||
}
|
||||
|
||||
})
|
||||
} else {
|
||||
addNodes(projectForme.value).then((res: any) => {
|
||||
@ -268,11 +268,8 @@ async function submitForm(formEl: any) {
|
||||
ElMessage.success("添加成功")
|
||||
frame.value = false
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -590,8 +587,8 @@ function xiafile(row: any) {
|
||||
.then(() => {
|
||||
sdLocalUrl({ id: row.id }).then((res: any) => {
|
||||
window.open(res.data.url);
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
|
||||
@ -802,17 +799,17 @@ const buttonmsg1 = ref('初始化导入项目完整压缩包')
|
||||
function tonstatus() {
|
||||
//sao
|
||||
obtainInformationAsync({ id: projectId.value }).then((res: any) => {
|
||||
if (res.data.scanstatus == '1' ) {
|
||||
if (res.data.scanstatus == '1') {
|
||||
tonloading.value = false
|
||||
buttonmsg.value = '扫描项目完整路径'
|
||||
} else if (res.data.scanstatus == '0' ) {
|
||||
} else if (res.data.scanstatus == '0') {
|
||||
tonloading.value = true
|
||||
buttonmsg.value = '处理中...'
|
||||
}
|
||||
if (res.data.uploadstatus == '1' ) {
|
||||
}
|
||||
if (res.data.uploadstatus == '1') {
|
||||
tonloading1.value = false
|
||||
buttonmsg1.value = '初始化导入项目完整压缩包'
|
||||
} else if (res.data.uploadstatus == '0' ) {
|
||||
} else if (res.data.uploadstatus == '0') {
|
||||
tonloading1.value = true
|
||||
buttonmsg1.value = '处理中...'
|
||||
}
|
||||
@ -844,7 +841,7 @@ function tonstatus() {
|
||||
<span class="custom-tree-node">
|
||||
<span class="text">{{ data.nodeName }}</span>
|
||||
<span class="img_tree">
|
||||
<!-- <img src="@/assets/project/xiu.png" alt="" title="编辑" @click="editSubItem(data)"> -->
|
||||
<img src="@/assets/project/xiu.png" alt="" title="编辑" @click="editSubItem(data)">
|
||||
<img src="@/assets/project/del.png" alt="" title="删除" @click="delSubItem(data)">
|
||||
<img v-if="data.nodeType == '01'" src="@/assets/project/jia.png" alt="" title="添加课题"
|
||||
@click="addSubItem(data)">
|
||||
@ -891,7 +888,7 @@ function tonstatus() {
|
||||
</div>
|
||||
|
||||
<el-table v-loading="loading" :data="tableData" @selection-change="handleSelectionChange"
|
||||
:header-cell-style="{ background: 'rgb(250 250 250)', height: '50px' }"
|
||||
:header-cell-style="{ background: 'rgb(250 250 250)', color: '#383838', height: '50px' }"
|
||||
style="width: 100%; height: calc(100vh - 275px);margin-bottom: 20px;" border>
|
||||
<el-table-column type="selection" width="40" />
|
||||
<!-- <el-table-column type="index" label="序号" width="70" align="center"></el-table-column> -->
|
||||
@ -935,8 +932,7 @@ function tonstatus() {
|
||||
<el-form ref="ruleFormRef" style="max-width: 600px" :model="projectForme" :rules="moderules"
|
||||
label-width="auto" class="demo-ruleForm" status-icon>
|
||||
<el-form-item label="节点名称" prop="nodeName">
|
||||
<el-input v-model="projectForme.nodeName" maxlength="40" show-word-limit
|
||||
:disabled="projectForme.id" />
|
||||
<el-input v-model="projectForme.nodeName" maxlength="40" show-word-limit />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<div style="width: 100%;display: flex;justify-content: end;">
|
||||
@ -948,7 +944,7 @@ function tonstatus() {
|
||||
</el-dialog>
|
||||
<el-dialog :title="title" v-model="upfile" width="50%" :before-close="fileClose" top="30px" draggable
|
||||
:close-on-click-modal="false" destroy-on-close>
|
||||
<div v-if="titleon" style="width: 100%;text-align: center;font-size: 18px;margin-bottom: 15px;color: red;" >
|
||||
<div v-if="titleon" style="width: 100%;text-align: center;font-size: 18px;margin-bottom: 15px;color: red;">
|
||||
请保持压缩包内第一层文件夹名称与项目名称一致!!!
|
||||
</div>
|
||||
<el-scrollbar :height="judge ? '400px' : ''">
|
||||
@ -971,7 +967,7 @@ function tonstatus() {
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-scrollbar>
|
||||
|
||||
|
||||
<div style="width: 100%;display: flex;justify-content: end;">
|
||||
<el-button type="primary" @click="submitfile">确定</el-button>
|
||||
<el-button @click="fileClose">取消</el-button>
|
||||
@ -1107,7 +1103,7 @@ function tonstatus() {
|
||||
|
||||
.img_tree {
|
||||
display: flex;
|
||||
width: 13%;
|
||||
width: 20%;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
|
||||
|
@ -10,6 +10,7 @@ import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import Page from '@/components/Pagination/page.vue'
|
||||
import { projectPage, addSdproject, updateSdproject, deleteSdprojectById, deleteSdprojectByIds } from "@/api/project";
|
||||
import { getDict } from '@/api/dict'
|
||||
import { id } from "element-plus/es/locale";
|
||||
//定义表格数据
|
||||
const tableData: any = ref([{}, {}]);
|
||||
// 查询数据
|
||||
@ -32,6 +33,16 @@ function getdata() {
|
||||
queryParams.value.current = res.data.current
|
||||
queryParams.value.size = res.data.size
|
||||
total.value = res.data.total
|
||||
let arr = []
|
||||
tableData.value.forEach((item: any) => {
|
||||
if (item.projectProps) {
|
||||
arr = JSON.parse(item.projectProps)
|
||||
} else {
|
||||
arr = []
|
||||
}
|
||||
item.projectProps = arr
|
||||
});
|
||||
console.log(tableData.value)
|
||||
})
|
||||
}
|
||||
//获取字典项目类型
|
||||
@ -56,13 +67,16 @@ function addproject() {
|
||||
projectProps: "",//信息
|
||||
projectTime: "",//时间
|
||||
projectType: ""//类型
|
||||
, localStorageId: "1"
|
||||
}
|
||||
formitemarr.value.length = 0
|
||||
}
|
||||
//修改项目弹框
|
||||
function editproject(row: any) {
|
||||
title.value = "修改项目"
|
||||
frame.value = true
|
||||
projectForme.value = JSON.parse(JSON.stringify(row))
|
||||
formitemarr.value = projectForme.value.projectProps
|
||||
}
|
||||
//删除项目弹框
|
||||
function delproject(row: any) {
|
||||
@ -141,12 +155,18 @@ const projectForme: any = ref({
|
||||
projectProps: "",//信息
|
||||
projectTime: "",//时间
|
||||
projectType: ""//类型
|
||||
, localStorageId: "1"
|
||||
})
|
||||
//表单确定
|
||||
async function submitForm(formEl: any) {
|
||||
if (!formEl) return
|
||||
await formEl.validate((valid: any, fields: any) => {
|
||||
if (valid) {
|
||||
if (formitemarr.value.length > 0) {
|
||||
projectForme.value.projectProps = JSON.stringify(formitemarr.value)
|
||||
} else {
|
||||
projectForme.value.projectProps = '[]'
|
||||
}
|
||||
if (projectForme.value.id) {
|
||||
updateSdproject(projectForme.value).then((res: any) => {
|
||||
if (res.code == 0) {
|
||||
@ -200,6 +220,62 @@ function Loglist(row: any) {
|
||||
function handleClose1() {
|
||||
logqing.value = false
|
||||
}
|
||||
//添加属性
|
||||
const formitemarr = ref([])
|
||||
const dataname = ref('')
|
||||
const labledone = ref(false)
|
||||
function addformItem() {
|
||||
labledone.value = true
|
||||
dataname.value = ''
|
||||
|
||||
}
|
||||
function labledoneclose() {
|
||||
labledone.value = false
|
||||
}
|
||||
function labledsure() {
|
||||
if (!dataname.value) {
|
||||
ElMessage.warning('请输入属性名称')
|
||||
return
|
||||
}
|
||||
generateUniqueId
|
||||
formitemarr.value.push({ name: dataname.value, data: '', id: generateUniqueId(8) })
|
||||
labledone.value = false
|
||||
}
|
||||
function generateUniqueId(length: any) {
|
||||
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
||||
let result = '';
|
||||
|
||||
// 添加时间戳部分(转换为36进制并取字母部分)
|
||||
const timePart = Date.now().toString(36).toUpperCase().replace(/[0-9]/g, '');
|
||||
result += timePart;
|
||||
|
||||
// 补充随机字符
|
||||
for (let i = result.length; i < length; i++) {
|
||||
result += chars.charAt(Math.floor(Math.random() * chars.length));
|
||||
}
|
||||
|
||||
return result.substring(0, length);
|
||||
}
|
||||
function dellable(index: any) {
|
||||
formitemarr.value.splice(index, 1)
|
||||
}
|
||||
let result1 =ref([])
|
||||
let result2 =ref([])
|
||||
const attloading = ref(false)
|
||||
const attbute = ref(false)
|
||||
function attribute(input: any) {
|
||||
result2.value = input
|
||||
result1.value.length = 0
|
||||
let inoutarr = JSON.parse(JSON.stringify(input))
|
||||
result1.value = [inoutarr.reduce((acc:any, item:any) => {
|
||||
acc[item.id] = item.data;
|
||||
return acc;
|
||||
}, {})];
|
||||
attbute.value = true
|
||||
}
|
||||
function attributeclose(){
|
||||
attbute.value = false
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@ -228,7 +304,7 @@ function handleClose1() {
|
||||
</div>
|
||||
|
||||
<el-table v-loading="loading" :data="tableData" @selection-change="handleSelectionChange"
|
||||
:header-cell-style="{ background: 'rgb(250 250 250)', height: '50px' }"
|
||||
:header-cell-style="{ background: 'rgb(250 250 250)', color: '#383838', height: '50px' }"
|
||||
style="width: 100%; height: calc(100vh - 275px);margin-bottom: 20px;" border>
|
||||
<el-table-column type="selection" width="40" />
|
||||
<!-- <el-table-column type="index" label="序号" width="70" align="center"></el-table-column> -->
|
||||
@ -247,11 +323,18 @@ function handleClose1() {
|
||||
<img src="@/assets/MenuIcon/xqing.png" alt="" title="详情" @click="Loglist(scope.row)"
|
||||
style="cursor: pointer;">
|
||||
</div>
|
||||
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="description" label="自定义属性" width="100">
|
||||
<template #default="scope">
|
||||
<div class="ellipsis1">
|
||||
<img src="@/assets/MenuIcon/xqing.png" alt="" title="详情"
|
||||
@click="attribute(scope.row.projectProps)" style="cursor: pointer;">
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column prop="projectProps" label="项目信息"></el-table-column> -->
|
||||
|
||||
<!-- <el-table-column v-for="item in tableData.projectProps" :prop="item.data" :label="item.name" width="165" align="center"></el-table-column> -->
|
||||
<el-table-column fixed="right" label="操作" width="80" align="center">
|
||||
<template #default="scope">
|
||||
<span
|
||||
@ -272,41 +355,56 @@ function handleClose1() {
|
||||
:close-on-click-modal="false" destroy-on-close>
|
||||
<el-form ref="ruleFormRef" :model="projectForme" :rules="moderules" label-width="auto" class="demo-ruleForm"
|
||||
status-icon>
|
||||
<div style="width: 100%;display: flex;justify-content: space-between;align-items: center;">
|
||||
<el-form-item label=" 项目编号" style="width: 50%;">
|
||||
<el-input v-model="projectForme.projectCode" maxlength="40" show-word-limit disabled />
|
||||
<el-scrollbar height="75vh">
|
||||
<div style="width: 100%;display: flex;justify-content: space-between;align-items: center;">
|
||||
<el-form-item label=" 项目编号" style="width: 50%;">
|
||||
<el-input v-model="projectForme.projectCode" maxlength="40" show-word-limit disabled />
|
||||
</el-form-item>
|
||||
<el-form-item label=" 项目名称" prop="projectName" style="width: 50%;margin-left: 15px;">
|
||||
<el-input v-model="projectForme.projectName" maxlength="40" show-word-limit
|
||||
:disabled="projectForme.id" />
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div style="width: 100%;display: flex;justify-content: space-between;align-items: center;">
|
||||
<el-form-item label=" 项目类型" prop="projectType" style="width: 50%;">
|
||||
<el-select v-model="projectForme.projectType" clearable placeholder=" " @change="getdata()">
|
||||
<el-option v-for="item in dictType" :key="item.itemcode" :label="item.dictname"
|
||||
:value="item.itemcode" />
|
||||
</el-select>
|
||||
<!-- <el-input v-model="projectForme.projectType" /> -->
|
||||
</el-form-item>
|
||||
<el-form-item label=" 项目启动时间" style="width: 50%;margin-left: 15px;">
|
||||
<el-date-picker v-model="projectForme.projectTime" type="datetime"
|
||||
format="YYYY-MM-DD HH:mm:ss" style="width:100%;" value-format="YYYY-MM-DD HH:mm:ss" />
|
||||
</el-form-item>
|
||||
</div>
|
||||
<el-form-item label=" 项目描述">
|
||||
<el-input v-model="projectForme.description" :rows="25" type="textarea" show-word-limit />
|
||||
</el-form-item>
|
||||
<el-form-item label=" 项目名称" prop="projectName" style="width: 50%;margin-left: 15px;">
|
||||
<el-input v-model="projectForme.projectName" maxlength="40" show-word-limit
|
||||
:disabled="projectForme.id" />
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div style="width: 100%;display: flex;justify-content: space-between;align-items: center;">
|
||||
<el-form-item label=" 项目类型" prop="projectType" style="width: 50%;">
|
||||
<el-select v-model="projectForme.projectType" clearable placeholder=" " @change="getdata()">
|
||||
<el-option v-for="item in dictType" :key="item.itemcode" :label="item.dictname"
|
||||
:value="item.itemcode" />
|
||||
</el-select>
|
||||
<!-- <el-input v-model="projectForme.projectType" /> -->
|
||||
</el-form-item>
|
||||
<el-form-item label=" 项目启动时间" style="width: 50%;margin-left: 15px;">
|
||||
<el-date-picker v-model="projectForme.projectTime" type="datetime" format="YYYY-MM-DD HH:mm:ss"
|
||||
style="width:100%;" value-format="YYYY-MM-DD HH:mm:ss" />
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<el-form-item label=" 项目描述">
|
||||
<el-input v-model="projectForme.description" :rows="25" type="textarea" show-word-limit />
|
||||
</el-form-item>
|
||||
<el-form-item v-for="(item, index) in formitemarr" :label="item.name">
|
||||
<div style="width: 100%;display: flex;align-items: center;justify-content: space-between;">
|
||||
<el-input v-model="item.data" style="width: 92%;" />
|
||||
<el-button type="primary" @click="dellable(index)">删除</el-button>
|
||||
</div>
|
||||
|
||||
</el-form-item>
|
||||
</el-scrollbar>
|
||||
<el-form-item>
|
||||
<div style="width: 100%;display: flex;justify-content: end;">
|
||||
<div style="width: 100%;display: flex;justify-content: end;margin-top: 20px;">
|
||||
<el-button type="primary" @click="addformItem">添加属性</el-button>
|
||||
<el-button type="primary" @click="submitForm(ruleFormRef)">确定</el-button>
|
||||
<el-button @click="handleClose(ruleFormRef)">取消</el-button>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-dialog>
|
||||
<el-dialog :title="'添加属性'" v-model="labledone" width="20%" :before-close="labledoneclose" top="30px" draggable
|
||||
:close-on-click-modal="false" destroy-on-close>
|
||||
<el-input v-model="dataname" placeholder="请输入属性名称" />
|
||||
<div style="width: 100%;display: flex;justify-content: end;margin-top: 10px;">
|
||||
<el-button type="primary" @click="labledsure()">确定</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<el-dialog :title="title" v-model="logqing" width="60%" :before-close="handleClose1" top="30px" draggable
|
||||
:close-on-click-modal="false" destroy-on-close>
|
||||
<div class="texlog">
|
||||
@ -315,6 +413,17 @@ function handleClose1() {
|
||||
</el-scrollbar>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<el-dialog :title="'自定义属性详情'" v-model="attbute" width="1200px" :before-close="attributeclose" top="30px" draggable
|
||||
:close-on-click-modal="false" destroy-on-close>
|
||||
<el-table v-if="result2.length > 0" v-loading="attloading" :data="result1"
|
||||
:header-cell-style="{ background: 'rgb(250 250 250)', color: '#383838', height: '50px' }"
|
||||
style="width: 100%; height: calc(30vh);margin-bottom: 20px;" border>
|
||||
<el-table-column v-for="item in result2" :prop="item.id" :label="item.name" ></el-table-column>
|
||||
</el-table>
|
||||
<div v-else style="width: 100%;height: 285px;display: flex;align-items: center;justify-content: center;border: 1px solid #ebeef5;">
|
||||
<el-empty description="暂无数据" />
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -333,6 +442,13 @@ function handleClose1() {
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.ellipsis1 {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.single-line-ellipsis {
|
||||
width: 800px;
|
||||
/* 限制容器宽度 */
|
||||
|
@ -415,7 +415,7 @@ const vMove = {
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-table v-loading="loading" :data="tableData" style="width: 100%; margin-bottom: 20px" row-key="id" border
|
||||
@selection-change="handleSelectionChange" default-expand-all :header-cell-style="{background:'rgb(250 250 250)',height:'50px'}" >
|
||||
@selection-change="handleSelectionChange" default-expand-all :header-cell-style="{background:'rgb(250 250 250)', color: '#383838',height:'50px'}" >
|
||||
<el-table-column type="selection" width="50" align="center" />
|
||||
<el-table-column prop="orgcode" label="部门编号" width="100"></el-table-column>
|
||||
<el-table-column prop="orgname" label="部门名称" width="140"></el-table-column>
|
||||
|
@ -445,7 +445,7 @@ const total = ref()
|
||||
<div class="draggable">
|
||||
<el-table v-loading="tableloading" :data="tableData" row-key="id" style="width: 100%;margin-bottom: 20px;" border
|
||||
@selection-change="handleSelectionChange" default-expand-all
|
||||
:header-cell-style="{ background: 'rgb(250 250 250)', height: '50px' }">
|
||||
:header-cell-style="{ background: 'rgb(250 250 250)', color: '#383838', height: '50px' }">
|
||||
<el-table-column type="selection" width="50" align="center" />
|
||||
<el-table-column prop="orderNo" label="序号" width="80">
|
||||
<template #default="scope">
|
||||
|
@ -145,7 +145,7 @@ function handleClose(){
|
||||
</div>
|
||||
<el-table v-loading="loading" :data="tableData"
|
||||
style="width: 100%; height: calc(100vh - 266px);margin-bottom: 20px;" border
|
||||
:header-cell-style="{ background: 'rgb(250 250 250)', height: '50px' }">
|
||||
:header-cell-style="{ background: 'rgb(250 250 250)', color: '#383838', height: '50px' }">
|
||||
<el-table-column type="index" label="序号" width="70" align="center"></el-table-column>
|
||||
<el-table-column prop="usercode" label="操作账户" width="100"></el-table-column>
|
||||
<el-table-column prop="username" label="用户姓名" width="180"></el-table-column>
|
||||
@ -173,7 +173,7 @@ function handleClose(){
|
||||
<el-dialog title="日志详情" v-model="LogDetails" width="90%" :before-close="handleClose" top="30px" draggable destroy-on-close>
|
||||
<el-table v-loading="loading" :data="Logdata"
|
||||
style="width: 100%; height: calc(50vh - 266px);margin-bottom: 20px;" border
|
||||
:header-cell-style="{ background: 'rgb(250 250 250)', height: '50px' }">
|
||||
:header-cell-style="{ background: 'rgb(250 250 250)', color: '#383838', height: '50px' }">
|
||||
<el-table-column type="index" label="序号" width="70" align="center"></el-table-column>
|
||||
<el-table-column prop="username" label="用户姓名" width="110"></el-table-column>
|
||||
<el-table-column prop="module" label="模块名称" width="120"></el-table-column>
|
||||
|
@ -149,7 +149,7 @@ function Submit(row){
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-table v-loading="loading" :data="tableData" style="width: 100%;height:calc(100vh - 210px); margin-bottom: 20px" row-key="id" border
|
||||
default-expand-all :header-cell-style="{background:'rgb(250 250 250)',height:'50px'}"
|
||||
default-expand-all :header-cell-style="{background:'rgb(250 250 250)', color: '#383838',height:'50px'}"
|
||||
:tree-props="{children: 'children', hasChildren: 'hasChildren'}">
|
||||
<el-table-column type="index" label="序号" align="center" width="70" />
|
||||
<el-table-column prop="code" label="机构代码" min-width="140"></el-table-column>
|
||||
|
32
web/src/views/testdata/datamanagement/index.vue
vendored
32
web/src/views/testdata/datamanagement/index.vue
vendored
@ -1504,6 +1504,8 @@ function openMap(row: any) {
|
||||
}
|
||||
function mapClose() {
|
||||
mapTrajectory.value = false
|
||||
lineData.value.length = 0
|
||||
dynamicCoordinates.value.length = 0
|
||||
closeSSE()
|
||||
// index = 0
|
||||
}
|
||||
@ -1513,26 +1515,14 @@ const options = ref([
|
||||
name: '1秒'
|
||||
, id: 1
|
||||
},
|
||||
{
|
||||
name: '10秒'
|
||||
, id: 10
|
||||
},
|
||||
{
|
||||
name: '30秒'
|
||||
, id: 30
|
||||
},
|
||||
{
|
||||
name: '1分钟'
|
||||
, id: 60
|
||||
},
|
||||
{
|
||||
name: '2分钟'
|
||||
, id: 120
|
||||
},
|
||||
{
|
||||
name: '5分钟'
|
||||
, id: 300
|
||||
},
|
||||
{
|
||||
name: '10分钟'
|
||||
, id: 600
|
||||
},
|
||||
])
|
||||
const maptime: any = ref(1)
|
||||
//频率
|
||||
@ -1704,13 +1694,13 @@ function repstring(row: any) {
|
||||
</div>
|
||||
|
||||
<el-table ref="filetableRef" v-loading="loading" :data="tableData" @selection-change="handleSelectionChange"
|
||||
:header-cell-style="{ background: 'rgb(250 250 250)', height: '50px' }"
|
||||
:header-cell-style="{ background: 'rgb(250 250 250)', color: '#383838', height: '50px' }"
|
||||
style="width: 100%; height: calc(66vh);margin-bottom: 20px;" border>
|
||||
<el-table-column type="selection" width="40" />
|
||||
<!-- <el-table-column type="index" label="序号" width="70" align="center"></el-table-column> -->
|
||||
<el-table-column prop="fileName" label="文件名称" width="200">
|
||||
<template #default="scope">
|
||||
<div class="tableweight" v-if="scope.row.isFile == 'FOLDER'">{{ scope.row.fileName }} </div>
|
||||
<div class="tableweight" v-if="scope.row.isFile == 'FOLDER'" @click="openNode(scope.row)" >{{ scope.row.fileName }} </div>
|
||||
<div v-else-if="scope.row.isFile == 'FILE'">{{ scope.row.fileName }} </div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@ -1833,7 +1823,7 @@ function repstring(row: any) {
|
||||
}})</el-button>
|
||||
</div>
|
||||
<el-table v-loading="loading" :data="copytable" @selection-change="copyhand"
|
||||
:header-cell-style="{ background: 'rgb(250 250 250)', height: '50px' }"
|
||||
:header-cell-style="{ background: 'rgb(250 250 250)', color: '#383838', height: '50px' }"
|
||||
style="width: 100%; height: calc(100vh - 275px);margin-bottom: 20px;" border>
|
||||
<el-table-column type="selection" width="40" />
|
||||
<!-- <el-table-column type="index" label="序号" width="70" align="center"></el-table-column> -->
|
||||
@ -2192,6 +2182,10 @@ function repstring(row: any) {
|
||||
.tableweight {
|
||||
font-size: 16px;
|
||||
background: #dbf500;
|
||||
cursor: pointer;
|
||||
}
|
||||
.tableweight:hover{
|
||||
color: #409eff;
|
||||
}
|
||||
|
||||
//差异性对比
|
||||
|
@ -1190,7 +1190,7 @@ const tabs = ref(1)
|
||||
@click="moretableBeifen()">备份</el-button>
|
||||
</div>
|
||||
<el-table v-loading="loading1" :data="localOnlyFiles" @selection-change="bifenChange"
|
||||
:header-cell-style="{ background: 'rgb(250 250 250)', height: '50px' }"
|
||||
:header-cell-style="{ background: 'rgb(250 250 250)', color: '#383838',height: '50px' }"
|
||||
style="width: 100%; height: calc(60vh);margin-bottom: 20px;" border>
|
||||
<el-table-column type="selection" width="40" />
|
||||
|
||||
@ -1232,7 +1232,7 @@ const tabs = ref(1)
|
||||
</div>
|
||||
</div>
|
||||
<el-table v-loading="loading2" :data="md5MismatchedFiles" @selection-change="handleChange"
|
||||
:header-cell-style="{ background: 'rgb(250 250 250)', height: '50px' }"
|
||||
:header-cell-style="{ background: 'rgb(250 250 250)', color: '#383838', height: '50px' }"
|
||||
style="width: 100%; height: calc(60vh);margin-bottom: 20px;" border>
|
||||
<el-table-column type="selection" width="40" />
|
||||
<el-table-column prop="fileName" label="文件名称"></el-table-column>
|
||||
@ -1276,7 +1276,7 @@ const tabs = ref(1)
|
||||
|
||||
</div>
|
||||
<el-table v-loading="loading3" :data="minioOnlyFiles" @selection-change="restoreChange"
|
||||
:header-cell-style="{ background: 'rgb(250 250 250)', height: '50px' }"
|
||||
:header-cell-style="{ background: 'rgb(250 250 250)', color: '#383838', height: '50px' }"
|
||||
style="width: 100%; height: calc(60vh);margin-bottom: 20px;" border>
|
||||
<el-table-column type="selection" width="40" />
|
||||
<el-table-column prop="fileName" label="文件名称"></el-table-column>
|
||||
|
224
web/src/views/testdata/testtask/index.vue
vendored
224
web/src/views/testdata/testtask/index.vue
vendored
@ -8,7 +8,7 @@ export default {
|
||||
import { onMounted, ref } from "vue";
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import Page from '@/components/Pagination/page.vue'
|
||||
import { tstaskPage, addtsTask, updatetsTask, deleteTsTaskById, deleteTsTaskByIds,confirmDeleteTask } from "@/api/testtask";
|
||||
import { tstaskPage, addtsTask, updatetsTask, deleteTsTaskById, deleteTsTaskByIds, confirmDeleteTask } from "@/api/testtask";
|
||||
import { getDict } from '@/api/dict'
|
||||
//定义表格数据
|
||||
const tableData: any = ref([]);
|
||||
@ -60,6 +60,15 @@ function getdata() {
|
||||
queryParams.value.current = res.data.current
|
||||
queryParams.value.size = res.data.size
|
||||
total.value = res.data.total
|
||||
let arr = []
|
||||
tableData.value.forEach((item: any) => {
|
||||
if (item.taskProps) {
|
||||
arr = JSON.parse(item.taskProps)
|
||||
} else {
|
||||
arr = []
|
||||
}
|
||||
item.taskProps = arr
|
||||
});
|
||||
})
|
||||
}
|
||||
//弹框命名
|
||||
@ -83,11 +92,16 @@ function addproject() {
|
||||
taskType: "",
|
||||
testDescribe: "",// 试验描述
|
||||
sensorDescribe: "",// 传感器描述
|
||||
taskProps: "",//信息
|
||||
localStorageId: '1',
|
||||
backupStorageId: '2'
|
||||
}
|
||||
formitemarr.value.length = 0
|
||||
}
|
||||
//修改项目弹框
|
||||
function editproject(row: any) {
|
||||
projectForme.value = JSON.parse(JSON.stringify(row))
|
||||
formitemarr.value = projectForme.value.taskProps
|
||||
projectForme.value.taskDate = [projectForme.value.taskStartdate, projectForme.value.taskEnddate]
|
||||
title.value = "修改试验任务"
|
||||
frame.value = true
|
||||
@ -185,12 +199,20 @@ const projectForme: any = ref({
|
||||
, taskType: "",
|
||||
testDescribe: "",// 试验描述
|
||||
sensorDescribe: "",// 传感器描述
|
||||
taskProps: "",//信息
|
||||
localStorageId: '1',
|
||||
backupStorageId: '2'
|
||||
})
|
||||
//表单确定
|
||||
async function submitForm(formEl: any) {
|
||||
if (!formEl) return
|
||||
await formEl.validate((valid: any, fields: any) => {
|
||||
if (valid) {
|
||||
if (formitemarr.value.length > 0) {
|
||||
projectForme.value.taskProps = JSON.stringify(formitemarr.value)
|
||||
} else {
|
||||
projectForme.value.taskProps = '[]'
|
||||
}
|
||||
if (projectForme.value.taskDate.length > 0) {
|
||||
projectForme.value.taskStartdate = projectForme.value.taskDate[0]
|
||||
projectForme.value.taskEnddate = projectForme.value.taskDate[1]
|
||||
@ -256,6 +278,63 @@ function Loglist(row: any, title1: any) {
|
||||
function handleClose1() {
|
||||
logqing.value = false
|
||||
}
|
||||
//添加属性
|
||||
const formitemarr = ref([])
|
||||
const dataname = ref('')
|
||||
const labledone = ref(false)
|
||||
function addformItem() {
|
||||
labledone.value = true
|
||||
dataname.value = ''
|
||||
|
||||
}
|
||||
function labledoneclose() {
|
||||
labledone.value = false
|
||||
}
|
||||
function labledsure() {
|
||||
if (!dataname.value) {
|
||||
ElMessage.warning('请输入属性名称')
|
||||
return
|
||||
}
|
||||
generateUniqueId
|
||||
formitemarr.value.push({ name: dataname.value, data: '', id: generateUniqueId(8) })
|
||||
labledone.value = false
|
||||
}
|
||||
function generateUniqueId(length: any) {
|
||||
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
||||
let result = '';
|
||||
|
||||
// 添加时间戳部分(转换为36进制并取字母部分)
|
||||
const timePart = Date.now().toString(36).toUpperCase().replace(/[0-9]/g, '');
|
||||
result += timePart;
|
||||
|
||||
// 补充随机字符
|
||||
for (let i = result.length; i < length; i++) {
|
||||
result += chars.charAt(Math.floor(Math.random() * chars.length));
|
||||
}
|
||||
|
||||
return result.substring(0, length);
|
||||
}
|
||||
function dellable(index: any) {
|
||||
formitemarr.value.splice(index, 1)
|
||||
}
|
||||
let result1 = ref([])
|
||||
let result2 = ref([])
|
||||
const attloading = ref(false)
|
||||
const attbute = ref(false)
|
||||
function attribute(input: any) {
|
||||
result2.value = input
|
||||
result1.value.length = 0
|
||||
let inoutarr = JSON.parse(JSON.stringify(input))
|
||||
result1.value = [inoutarr.reduce((acc: any, item: any) => {
|
||||
acc[item.id] = item.data;
|
||||
return acc;
|
||||
}, {})];
|
||||
attbute.value = true
|
||||
console.log(result1.value)
|
||||
}
|
||||
function attributeclose() {
|
||||
attbute.value = false
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@ -297,7 +376,7 @@ function handleClose1() {
|
||||
</div>
|
||||
|
||||
<el-table v-loading="loading" :data="tableData" @selection-change="handleSelectionChange"
|
||||
:header-cell-style="{ background: 'rgb(250 250 250)', height: '50px' }"
|
||||
:header-cell-style="{ background: 'rgb(250 250 250)', color: '#383838', height: '50px' }"
|
||||
style="width: 100%; height: calc(64vh);margin-bottom: 20px;" border>
|
||||
<el-table-column type="selection" width="40" />
|
||||
<el-table-column prop="taskCode" label="任务编号" width="90"></el-table-column>
|
||||
@ -313,6 +392,14 @@ function handleClose1() {
|
||||
scope.row.taskEnddate : '' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="description" label="自定义属性" width="100">
|
||||
<template #default="scope">
|
||||
<div class="ellipsis1">
|
||||
<img src="@/assets/MenuIcon/xqing.png" alt="" title="详情"
|
||||
@click="attribute(scope.row.taskProps)" style="cursor: pointer;">
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="taskPlace" label="任务地点" width="180"></el-table-column>
|
||||
<el-table-column prop="taskPerson" label="任务人员" width="280"></el-table-column>
|
||||
<el-table-column prop="carrierName" label="载机名称" width="180"></el-table-column>
|
||||
@ -357,65 +444,96 @@ function handleClose1() {
|
||||
:close-on-click-modal="false" destroy-on-close>
|
||||
<el-form ref="ruleFormRef" style="max-width:100%" :model="projectForme" :rules="moderules"
|
||||
label-width="auto" class="demo-ruleForm" status-icon>
|
||||
<div style="width: 100%;display: flex;justify-content: space-between;align-items: center;">
|
||||
<el-form-item label="任务编号" style="width: 50%;">
|
||||
<el-input v-model="projectForme.taskCode" maxlength="40" show-word-limit disabled
|
||||
style="width: 100%;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="任务名称" style="width: 50%;margin-left: 15px;">
|
||||
<el-input v-model="projectForme.taskName" show-word-limit disabled />
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div style="width: 100%;display: flex;justify-content: space-between;align-items: center;">
|
||||
<el-form-item label="任务类型" prop="taskType" style="width: 50%;">
|
||||
<el-select v-model="projectForme.taskType" clearable placeholder=" " @change="getdata()">
|
||||
<el-option v-for="item in dictType" :key="item.itemcode" :label="item.dictname"
|
||||
:value="item.itemcode" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="任务时间" prop="taskDate" style="width: 50%;margin-left: 15px;">
|
||||
<el-date-picker v-model="projectForme.taskDate" type="daterange" range-separator="-"
|
||||
start-placeholder="开始时间" end-placeholder="结束时间" format="YYYY-MM-DD"
|
||||
value-format="YYYY-MM-DD" />
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div style="width: 100%;display: flex;justify-content: space-between;align-items: center;">
|
||||
<el-form-item label="任务地点" prop="taskPlace" style="width: 50%;">
|
||||
<el-input v-model="projectForme.taskPlace" maxlength="500" show-word-limit />
|
||||
</el-form-item>
|
||||
<el-form-item label="任务人员" style="width: 50%;margin-left: 15px;">
|
||||
<el-input v-model="projectForme.taskPerson" maxlength="500" show-word-limit />
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div style="width: 100%;display: flex;justify-content: space-between;align-items: center;">
|
||||
<el-form-item label="载机名称" style="width: 50%;">
|
||||
<el-input v-model="projectForme.carrierName" maxlength="40" show-word-limit />
|
||||
</el-form-item>
|
||||
<el-form-item label="设备代号_编号" style="width: 50%;margin-left: 15px;">
|
||||
<el-input v-model="projectForme.deviceCode" maxlength="40" show-word-limit />
|
||||
</el-form-item>
|
||||
</div>
|
||||
<!-- <el-form-item label="载体类型">
|
||||
<el-scrollbar height="80vh">
|
||||
<div style="width: 100%;display: flex;justify-content: space-between;align-items: center;">
|
||||
<el-form-item label="任务编号" style="width: 50%;">
|
||||
<el-input v-model="projectForme.taskCode" maxlength="40" show-word-limit disabled
|
||||
style="width: 100%;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="任务名称" style="width: 50%;margin-left: 15px;">
|
||||
<el-input v-model="projectForme.taskName" show-word-limit disabled />
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div style="width: 100%;display: flex;justify-content: space-between;align-items: center;">
|
||||
<el-form-item label="任务类型" prop="taskType" style="width: 50%;">
|
||||
<el-select v-model="projectForme.taskType" clearable placeholder=" " @change="getdata()">
|
||||
<el-option v-for="item in dictType" :key="item.itemcode" :label="item.dictname"
|
||||
:value="item.itemcode" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="任务时间" prop="taskDate" style="width: 50%;margin-left: 15px;">
|
||||
<el-date-picker v-model="projectForme.taskDate" type="daterange" range-separator="-"
|
||||
start-placeholder="开始时间" end-placeholder="结束时间" format="YYYY-MM-DD"
|
||||
value-format="YYYY-MM-DD" />
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div style="width: 100%;display: flex;justify-content: space-between;align-items: center;">
|
||||
<el-form-item label="任务地点" prop="taskPlace" style="width: 50%;">
|
||||
<el-input v-model="projectForme.taskPlace" maxlength="500" show-word-limit />
|
||||
</el-form-item>
|
||||
<el-form-item label="任务人员" style="width: 50%;margin-left: 15px;">
|
||||
<el-input v-model="projectForme.taskPerson" maxlength="500" show-word-limit />
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div style="width: 100%;display: flex;justify-content: space-between;align-items: center;">
|
||||
<el-form-item label="载机名称" style="width: 50%;">
|
||||
<el-input v-model="projectForme.carrierName" maxlength="40" show-word-limit />
|
||||
</el-form-item>
|
||||
<el-form-item label="设备代号_编号" style="width: 50%;margin-left: 15px;">
|
||||
<el-input v-model="projectForme.deviceCode" maxlength="40" show-word-limit />
|
||||
</el-form-item>
|
||||
</div>
|
||||
<!-- <el-form-item label="载体类型">
|
||||
<el-input v-model="projectForme.carrierType" maxlength="200" show-word-limit />
|
||||
</el-form-item> -->
|
||||
|
||||
<el-form-item label="试验描述">
|
||||
<el-input v-model="projectForme.testDescribe" :rows="12" type="textarea" show-word-limit />
|
||||
</el-form-item>
|
||||
<el-form-item label="传感器描述">
|
||||
<el-input v-model="projectForme.sensorDescribe" :rows="12" type="textarea" show-word-limit />
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="设备名称">
|
||||
<el-form-item label="试验描述">
|
||||
<el-input v-model="projectForme.testDescribe" :rows="12" type="textarea" show-word-limit />
|
||||
</el-form-item>
|
||||
<el-form-item label="传感器描述">
|
||||
<el-input v-model="projectForme.sensorDescribe" :rows="12" type="textarea" show-word-limit />
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="设备名称">
|
||||
<el-input v-model="projectForme.deviceName" maxlength="40" show-word-limit />
|
||||
</el-form-item> -->
|
||||
<el-form-item v-for="(item, index) in formitemarr" :label="item.name">
|
||||
<div style="width: 100%;display: flex;align-items: center;justify-content: space-between;">
|
||||
<el-input v-model="item.data" style="width: 92%;" />
|
||||
<el-button type="primary" @click="dellable(index)">删除</el-button>
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
</el-scrollbar>
|
||||
|
||||
<el-form-item>
|
||||
<div style="width: 100%;display: flex;justify-content: end;">
|
||||
<el-button type="primary" @click="submitForm(ruleFormRef)">确定</el-button>
|
||||
<el-button @click="handleClose(ruleFormRef)">取消</el-button>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<div style="width: 100%;display: flex;justify-content: end;">
|
||||
<el-button type="primary" @click="addformItem">添加属性</el-button>
|
||||
<el-button type="primary" @click="submitForm(ruleFormRef)">确定</el-button>
|
||||
<el-button @click="handleClose(ruleFormRef)">取消</el-button>
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
</el-dialog>
|
||||
<el-dialog :title="'添加属性'" v-model="labledone" width="20%" :before-close="labledoneclose" top="30px" draggable
|
||||
:close-on-click-modal="false" destroy-on-close>
|
||||
<el-input v-model="dataname" placeholder="请输入属性名称" />
|
||||
<div style="width: 100%;display: flex;justify-content: end;margin-top: 10px;">
|
||||
<el-button type="primary" @click="labledsure()">确定</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<el-dialog :title="'自定义属性详情'" v-model="attbute" width="1200px" :before-close="attributeclose" top="30px"
|
||||
draggable :close-on-click-modal="false" destroy-on-close>
|
||||
<el-table v-if="result2.length > 0" v-loading="attloading" :data="result1"
|
||||
:header-cell-style="{ background: 'rgb(250 250 250)', color: '#383838', height: '50px' }"
|
||||
style="width: 100%; height: calc(30vh);margin-bottom: 20px;" border>
|
||||
<el-table-column v-for="item in result2" :prop="item.id" :label="item.name"></el-table-column>
|
||||
</el-table>
|
||||
<div v-else
|
||||
style="width: 100%;height: 285px;display: flex;align-items: center;justify-content: center;border: 1px solid #ebeef5;">
|
||||
<el-empty description="暂无数据" />
|
||||
</div>
|
||||
</el-dialog>
|
||||
<el-dialog :title="title" v-model="logqing" width="60%" :before-close="handleClose1" top="30px" draggable
|
||||
:close-on-click-modal="false" destroy-on-close>
|
||||
<div class="texlog">
|
||||
|
Loading…
Reference in New Issue
Block a user