Procházet zdrojové kódy

add 动态表结构处理相关工具

pull/18/head
lb před 1 rokem
rodič
revize
54ce9639ab
4 změnil soubory, kde provedl 162 přidání a 116 odebrání
  1. +4
    -0
      src/utils/dynamicData.js
  2. +44
    -0
      src/utils/dynamicProps.js
  3. +34
    -116
      src/views/quality/monitoring/qualityRecentHours/index.vue
  4. +80
    -0
      src/views/quality/monitoring/qualityRecentHours/props.json

+ 4
- 0
src/utils/dynamicData.js Zobrazit soubor

@@ -0,0 +1,4 @@
/**
* 用于调整服务器返回的动态数据
*/
export default function handleDynamicData() {}

+ 44
- 0
src/utils/dynamicProps.js Zobrazit soubor

@@ -0,0 +1,44 @@
/**
* 用于动态表结构的 tableProps 生成
* @param {*} nameData
* @returns
*/
export default function handleNameData(nameData) {
const props = step1(nameData.filter((item) => item.tree == 1));
step2(
props,
nameData.filter((item) => item.tree == 2)
);
// console.log('level 1', JSON.stringify(props, null, 2));
return props;
}

function step1(tree1) {
return Array.from(new Set(tree1.map((item) => item.name)))
.sort()
.map((item) => ({
prop: item,
label: item,
align: 'center',
children: [],
}));
}

function step2(firstTierProps, tree2) {
tree2.map((nd) => {
const parent = firstTierProps.find(
({ prop }) => nd.parentId.indexOf(prop) > -1
);
if (notRepeat(parent.children, nd.name)) {
parent.children.push({
label: nd.name,
prop: `${parent.prop}-${nd.name}`,
align: 'center',
});
}
});
}

function notRepeat(propArray, name) {
return propArray.every((item) => item.label !== name);
}

+ 34
- 116
src/views/quality/monitoring/qualityRecentHours/index.vue Zobrazit soubor

@@ -10,7 +10,7 @@
<SearchBar
:formConfigs="[{ label: '近24小时检测记录', type: 'title' }]"
ref="search-bar" />
<pre><code v-html="jsondemo"></code></pre>
<!-- <pre><code v-html="jsondemo"></code></pre> -->
<base-table
:table-props="tableProps"
:page="queryParams.pageNo"
@@ -21,11 +21,14 @@
</template>

<script>
import hljs from 'highlight.js/lib/highlight';
import json from 'highlight.js/lib/languages/json';
import 'highlight.js/styles/github-gist.css';
import response from './response.json';
import handleNameData from '@/utils/dynamicProps';
import handleDynamicData from '@/utils/dynamicData';
// import hljs from 'highlight.js/lib/highlight';
// import json from 'highlight.js/lib/languages/json';
// import 'highlight.js/styles/github-gist.css';

hljs.registerLanguage('json', json);
// hljs.registerLanguage('json', json);

export default {
name: 'QualityRecentHours',
@@ -37,7 +40,7 @@ export default {
pageNo: 1,
pageSize: 10,
},
jsondemo: '',
// jsondemo: '',
list: [
{
inspectionContent: '检测内容1',
@@ -48,82 +51,13 @@ export default {
],
tableProps: [
{
prop: 'inspectionContent',
label: '检测内容',
align: 'center',
},
// 动态插入
// mock
{
prop: '2023-03-18T00:00:00',
label: '2023-03-18T00:00:00',
align: 'center',
children: [
{
prop: '2023-03-18T00:00:00-产线1',
label: '产线1',
align: 'center',
},
{
prop: '2023-03-18T00:00:00-产线2',
label: '产线2',
align: 'center',
},
{
prop: '2023-03-18T00:00:00-产线3',
label: '产线3',
align: 'center',
},
{
prop: '2023-03-18T00:00:00-产线4',
label: '产线4',
align: 'center',
},
{
prop: '2023-03-18T00:00:00-产线5',
label: '产线5',
align: 'center',
},
],
type: 'index',
label: '序号'
},
{
prop: '2023-03-18T01:00:00',
label: '2023-03-18T01:00:00',
align: 'center',
children: [
{
prop: '2023-03-18T01:00:00-产线1',
label: '产线1',
align: 'center',
},
{
prop: '2023-03-18T01:00:00-产线2',
label: '产线2',
align: 'center',
},
{
prop: '2023-03-18T01:00:00-产线3',
label: '产线3',
align: 'center',
},
],
},
{
prop: '2023-03-18T02:00:00',
label: '2023-03-18T02:00:00',
prop: 'inspectionContent',
label: '检测内容',
align: 'center',
children: [
{
prop: '2023-03-18T02:00:00-产线1',
label: '产线1',
align: 'center',
},
{
prop: '2023-03-18T02:00:00-产线2',
label: '产线2',
align: 'center',
},
],
},
],
};
@@ -134,47 +68,31 @@ export default {
},
methods: {
async getList() {
const response = await this.$axios({
url: '/monitoring/record-in-one-day/get',
method: 'get',
});
// const response = await this.$axios({
// url: '/monitoring/record-in-one-day/get',
// method: 'get',
// });
console.log(response);
// const {
// // data: { nameData },
// code,
// } = response;
// this.jsondemo = hljs.highlight(
// 'json',
// JSON.stringify(response, null, 2),
// true
// ).value;
const {
// data: { nameData },
code,
data: { data: dyanmicData, nameData },
} = response;
this.jsondemo = hljs.highlight(
'json',
JSON.stringify(response, null, 2),
true
).value;
},
filterNameData(nameData) {
const ndSet = new Set();
nameData.forEach((nd) => {
ndSet.add(nd.name);
});
return Array.from(ndSet.values())
.sort()
.map((name) => ({
prop: name,
label: name,
}));
},
filterData(data) {
return data.map((item) => {
const { data: innerData } = item;
const keyValuePairs = {};
innerData.map((d) => {
keyValuePairs[d.dynamicName] = d.dynamicValue;
});
return {
inspectionContent: item.inspectionContent,
...keyValuePairs,
sumInput: item.sumInput,
};
});

const dynamicProps = handleNameData(nameData);
this.tableProps.push(...dynamicProps)
const [dataList, length] = handleDynamicData(dyanmicData);
this.list = dataList;
this.queryParams.pageSize = length;
},

handleEmitFun(payload) {
console.log('payload', payload);
},


+ 80
- 0
src/views/quality/monitoring/qualityRecentHours/props.json Zobrazit soubor

@@ -0,0 +1,80 @@
{
"tableProps": [
{
"prop": "inspectionContent",
"label": "检测内容",
"align": "center"
},
{
"prop": "2023-03-18T00:00:00",
"label": "2023-03-18T00:00:00",
"align": "center",
"children": [
{
"prop": "2023-03-18T00:00:00-产线1",
"label": "产线1",
"align": "center"
},
{
"prop": "2023-03-18T00:00:00-产线2",
"label": "产线2",
"align": "center"
},
{
"prop": "2023-03-18T00:00:00-产线3",
"label": "产线3",
"align": "center"
},
{
"prop": "2023-03-18T00:00:00-产线4",
"label": "产线4",
"align": "center"
},
{
"prop": "2023-03-18T00:00:00-产线5",
"label": "产线5",
"align": "center"
}
]
},
{
"prop": "2023-03-18T01:00:00",
"label": "2023-03-18T01:00:00",
"align": "center",
"children": [
{
"prop": "2023-03-18T01:00:00-产线1",
"label": "产线1",
"align": "center"
},
{
"prop": "2023-03-18T01:00:00-产线2",
"label": "产线2",
"align": "center"
},
{
"prop": "2023-03-18T01:00:00-产线3",
"label": "产线3",
"align": "center"
}
]
},
{
"prop": "2023-03-18T02:00:00",
"label": "2023-03-18T02:00:00",
"align": "center",
"children": [
{
"prop": "2023-03-18T02:00:00-产线1",
"label": "产线1",
"align": "center"
},
{
"prop": "2023-03-18T02:00:00-产线2",
"label": "产线2",
"align": "center"
}
]
}
]
}

Načítá se…
Zrušit
Uložit