yangyin
2024-07-18 577052107e623fd950584c0dab91493ff6dd631e
feat: 新增官网页面
已修改2个文件
已添加2个文件
684 ■■■■■ 文件已修改
customer_list/ch/ai_html/views/demo/html/Overview.html 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
customer_list/ch/ai_html/views/demo/html/WorkOrder.html 322 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/ch/demo/Overview.html 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/ch/demo/WorkOrder.html 322 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
customer_list/ch/ai_html/views/demo/html/Overview.html
@@ -18,18 +18,6 @@
<body>
    <div class="w-full h-full bg-[#f2f4f8]" id="overview">
        <!-- <div class="w-full h-[40px] flex items-center">年度缴费情况</div>
            <div class="h-full">
                <div class="w-[310px] flex flex-wrap justify-between h-[220px]">
                    <div v-for="item in state.annualPayment" :key="item" class="w-[50%] h-[33%] flex items-center">
                        <div :class="['iconfont icon-' + item.Icon]" :style="`color:${item.BgColor};font-size:${36}px`"></div>
                        <div class="ml-[10px]">
                            <span>{{ item.Value }} <span>{{ item.Unit }}</span></span>
                            <p>{{ item.Name }}</p>
                        </div>
                    </div>
                </div>
            </div> -->
        <div class="screen-top-center">
            <div class="top-center-data">
                <div class="data-item" v-for="(item, index) in state.dataList">
@@ -305,7 +293,9 @@
                    },
                    legend: {
                        orient: 'vertical',
                        left: 'right',
                        left: '60%',
                        y: 'center',
                        formatter: function (name) {
                            let target, percentage;
                            for (let i = 0; i < dataCake.length; i++) {
@@ -317,6 +307,9 @@
                            let arr = [name + ' ', ' ' + target + '人 ', ' ' + percentage];
                            return arr.join(' ');
                        },
                    },
                    grid: {
                        left: '45'
                    },
                    // title: {
                    //     text: '76%',//主标题文本
@@ -340,6 +333,7 @@
                            name: '今日业绩完成度',
                            type: 'pie',
                            radius: ['40%', '70%'],
                            center: ['30%', '50%'],
                            avoidLabelOverlap: false,
                            label: {
                                show: false,
customer_list/ch/ai_html/views/demo/html/WorkOrder.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,322 @@
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>官网概述</title>
    <script src="/ai_html/views/demo/js/tailwind.js"></script>
    <script src="/ai_html/views/demo/js/vue.global.js"></script>
    <script src="/ai_html/views/demo/js/datav.umd.js"></script>
    <script src="/ai_html/views/demo/js/index.full.js"></script>
    <script src="/ai_html/views/demo/js/iframe-resizer/child-5.1.5.js" async></script>
    <script src="/ai_html/views/demo/js/echarts.min.js"></script>
    <link href="/ai_html/views/demo/css/variablesDemo.css" rel="stylesheet" type="text/css" />
    <link href="/static/fonts/iconfont/iconfont.css" rel="stylesheet" type="text/css" />
    <link href="/ai_html/views/demo/css/ele-index.css" rel="stylesheet" type="text/css" />
</head>
<body>
    <div class="w-full h-full bg-[#f2f4f8]" id="workOrder">
        <div class="screen-top-center">
            <div class="top-center-data">
                <div class="data-item" v-for="(item, index) in state.dataList">
                    <p class="data-item-title">{{item.title}}</p>
                    <p class="data-item-desc">{{item.value}}<span class="text-[13px] ">
                            {{' '+item.unit}}</span></p>
                </div>
            </div>
            <div class="top-center-chart">
                <div class="chart-item">
                    <div class="screen-top-header flex flex-wrap justify-center items-center">
                        <div class="header-left flex-c">
                            <i class="iconfont icon-ico_shuju text-[#1c86ff]"></i>
                        </div>
                        <div class="header-right flex-l">
                            <span class="header-title">巡检养护情况</span>
                            <Decoration3 class="dv-dec-3" />
                        </div>
                    </div>
                    <div id="inspectionChart" class="w-full h-[280px]"></div>
                </div>
                <div class="chart-item">
                    <div class="screen-top-header flex-l">
                        <div class="header-left flex-c">
                            <i class="iconfont icon-shangchuan text-[#1c86ff]"></i>
                        </div>
                        <div class="header-right flex-l">
                            <span class="header-title">月度受理量排行</span>
                            <Decoration3 class="dv-dec-3" />
                        </div>
                    </div>
                    <div class="pond-section">
                        <div id="salesRankChart" class="w-full h-[280px]"></div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
<script>
    const { createApp, onMounted, ref, reactive } = Vue;
    const { Decoration3 } = DataV;
    const demoOverViewChart = ref(null);
    const inspectionChart = ref(null);
    const salesRankRef = ref(null);
    const App = createApp({
        setup() {
            let state = reactive({
                dataList: [
                    {
                        title: '管线总长',
                        value: 755,
                        config: {
                            number: [755],
                            toFixed: 0,
                            content: '{nt}',
                            textAlign: 'left',
                            style: {
                                fontSize: 24,
                            },
                        },
                        unit: 'ç±³',
                    },
                    {
                        title: '压力表数',
                        value: 3288,
                        config: {
                            number: [3288],
                            toFixed: 0,
                            content: '{nt}',
                            textAlign: 'left',
                            style: {
                                fontSize: 24,
                            },
                        },
                        unit: '个',
                    },
                    {
                        title: '流量计数',
                        value: 14222,
                        config: {
                            number: [14222],
                            toFixed: 0,
                            content: '{nt}',
                            textAlign: 'left',
                            style: {
                                fontSize: 24,
                            },
                        },
                        unit: '个',
                    },
                    {
                        title: '户表数',
                        value: 41022,
                        config: {
                            number: [41022],
                            toFixed: 0,
                            content: '{nt}',
                            textAlign: 'left',
                            style: {
                                fontSize: 24,
                            },
                        },
                        unit: '个',
                    },
                    {
                        title: '水质仪数',
                        value: 176888,
                        config: {
                            number: [176888],
                            toFixed: 0,
                            content: '{nt}',
                            textAlign: 'left',
                            style: {
                                fontSize: 24,
                            },
                        },
                        unit: '个',
                    },
                    {
                        title: '阀门数',
                        value: 820,
                        config: {
                            number: [820],
                            toFixed: 0,
                            content: '{nt}',
                            textAlign: 'left',
                            style: {
                                fontSize: 24,
                            },
                        },
                        unit: '个',
                    },
                ],
            });
            const getOverViewList = () => {
                const iconList = [
                    'biaodan',
                    'putong',
                    'zhongduancanshuchaxun',
                    'shidu',
                    'fuwenbenkuang',
                    'fuwenben',
                    'jiliandongxuanzeqi',
                    'jinridaiban',
                    'gongju',
                ];
                state.dataList.forEach((annual, index) => {
                    annual.Icon = iconList[index];
                    annual.BgColor = randomHexColor();
                });
            };
            //随机生成颜色
            const randomHexColor = () => {
                return `#${Math.floor(Math.random() * 16777215)
                    .toString(16)
                    .padEnd(6, '0')}`;
            };
            onMounted(() => {
                // getOverViewList();
                window.addEventListener('resize', () => {
                    inspectionChart.value.resize();
                    salesRankRef.value.resize();
                });
                initInspectionChart()
                drawSalesRanking();
            });
            //初始化巡检图表
            const initInspectionChart = () => {
                var chartDom = document.getElementById('inspectionChart');
                var myInspectChart = echarts.init(chartDom);
                inspectionChart.value = myInspectChart;
                var option = {
                    legend: {},
                    tooltip: {},
                    dataset: {
                        source: [
                            ['product', '循环完成率', '维保完成率'],
                            ['1月', 43.3, 85.8],
                            ['2月', 83.1, 73.4],
                            ['3月', 86.4, 65.2],
                            ['4月', 72.4, 53.9],
                            ['5月', 77.0, 39.1],
                            ['6月', 68.2, 56.2],
                            ['7月', 72.1, 64.5],
                            ['8月', 76.5, 70.8],
                            ['9月', 74.1, 72.4],
                            ['10月', 75.3, 71.7],
                            ['11月', 70.9, 74.2],
                            ['12月', 66.8, 75.2],
                        ]
                    },
                    xAxis: { type: 'category', name: '月份', nameGap: 10, },
                    yAxis: {
                        name: '单位: %'
                    },
                    series: [{ type: 'bar' }, { type: 'bar' }]
                };
                option && myInspectChart.setOption(option);
            }
            // ç»˜åˆ¶æ¨ªå‘柱状图排行榜
            const drawSalesRanking = () => {
                var chartDom = document.getElementById('salesRankChart');
                var salesRankingElement = echarts.init(chartDom);
                salesRankRef.value = salesRankingElement
                const option = {
                    tooltip: {
                        trigger: 'axis',
                        axisPointer: {
                            type: 'shadow',
                        },
                    },
                    grid: {
                        left: '2%', // è°ƒæ•´å·¦è¾¹è·
                        right: '5%', // è°ƒæ•´å³è¾¹è·
                        top: '2%', // è°ƒæ•´ä¸‹è¾¹è·
                        containLabel: true, // ç¡®ä¿æ ‡ç­¾å’Œè½´æ ‡é¢˜è¢«åŒ…含在容器内
                    },
                    xAxis: {
                        type: 'value',
                        boundaryGap: [0, 0.01],
                        axisLine: {
                            show: false, // ä¸æ˜¾ç¤ºæ¨ªåæ ‡è½´çº¿
                        },
                        axisTick: {
                            show: false, // ä¸æ˜¾ç¤ºåˆ»åº¦çº¿
                        },
                        splitLine: {
                            show: false, // ä¸æ˜¾ç¤ºx轴网格线
                        },
                    },
                    yAxis: {
                        type: 'category',
                        data: ['闵行区', '浦东区', '徐汇区'], // ç¤ºä¾‹æ•°æ®
                        axisLine: {
                            show: false, // ä¸æ˜¾ç¤ºæ¨ªåæ ‡è½´çº¿
                        },
                        axisTick: {
                            show: false, // ä¸æ˜¾ç¤ºåˆ»åº¦çº¿
                        },
                        splitLine: {
                            show: false, // ä¸æ˜¾ç¤ºy轴网格线
                        },
                        axisLabel: {
                            rich: {
                                iconStyle: {
                                    fontSize: 20, // è®¾ç½®å›¾æ ‡çš„字体大小为20
                                },
                                nameStyle: {
                                    // å®šä¹‰åå­—的样式
                                    fontSize: 12, // è®¾ç½®åå­—的字体大小为12,或者您希望的任何大小
                                },
                            },
                            formatter: function (value, index) {
                                // æ ¹æ®index或value来决定显示哪个排名的图标
                                const rankIcons = {
                                    2: '{iconStyle|🥇}',
                                    1: '{iconStyle|🥈}',
                                    0: '{iconStyle|🥉}',
                                };
                                return `${rankIcons[index]} {nameStyle|${value}}`;
                            },
                        },
                    },
                    series: [
                        {
                            name: '受理量',
                            type: 'bar',
                            data: [9, 10, 21], // ç¤ºä¾‹æ•°æ®
                            barWidth: '30%', // è°ƒæ•´æŸ±å­å®½åº¦
                            itemStyle: {
                                borderRadius: [0, 5, 5, 0], // åªæœ‰å³ä¾§åœ†è§’
                                color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [
                                    // è®¾ç½®æ¸å˜è‰²ï¼Œæ–¹å‘也要调整为横向
                                    { offset: 0, color: '#bdd1f6' },
                                    { offset: 1, color: '#4282ff' },
                                ]),
                            },
                            label: {
                                show: true, // æ˜¾ç¤ºæ ‡ç­¾
                                position: 'right', // æ ‡ç­¾ä½ç½®åœ¨é¡¶éƒ¨
                                formatter: '{c}万', // è‡ªå®šä¹‰æ˜¾ç¤ºçš„内容,{c}是指当前数据点的值
                            },
                        },
                    ],
                };
                salesRankingElement.setOption(option);
            };
            return { state };
        },
    });
    App.component('Decoration3', Decoration3);
    App.use(ElementPlus);
    App.mount('#workOrder');
</script>
</html>
src/views/project/ch/demo/Overview.html
@@ -18,18 +18,6 @@
<body>
    <div class="w-full h-full bg-[#f2f4f8]" id="overview">
        <!-- <div class="w-full h-[40px] flex items-center">年度缴费情况</div>
            <div class="h-full">
                <div class="w-[310px] flex flex-wrap justify-between h-[220px]">
                    <div v-for="item in state.annualPayment" :key="item" class="w-[50%] h-[33%] flex items-center">
                        <div :class="['iconfont icon-' + item.Icon]" :style="`color:${item.BgColor};font-size:${36}px`"></div>
                        <div class="ml-[10px]">
                            <span>{{ item.Value }} <span>{{ item.Unit }}</span></span>
                            <p>{{ item.Name }}</p>
                        </div>
                    </div>
                </div>
            </div> -->
        <div class="screen-top-center">
            <div class="top-center-data">
                <div class="data-item" v-for="(item, index) in state.dataList">
@@ -305,7 +293,9 @@
                    },
                    legend: {
                        orient: 'vertical',
                        left: 'right',
                        left: '60%',
                        y: 'center',
                        formatter: function (name) {
                            let target, percentage;
                            for (let i = 0; i < dataCake.length; i++) {
@@ -317,6 +307,9 @@
                            let arr = [name + ' ', ' ' + target + '人 ', ' ' + percentage];
                            return arr.join(' ');
                        },
                    },
                    grid: {
                        left: '45'
                    },
                    // title: {
                    //     text: '76%',//主标题文本
@@ -340,6 +333,7 @@
                            name: '今日业绩完成度',
                            type: 'pie',
                            radius: ['40%', '70%'],
                            center: ['30%', '50%'],
                            avoidLabelOverlap: false,
                            label: {
                                show: false,
src/views/project/ch/demo/WorkOrder.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,322 @@
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>官网概述</title>
    <script src="/customer_list/ch/ai_html/views/demo/js/tailwind.js"></script>
    <script src="/customer_list/ch/ai_html/views/demo/js/vue.global.js"></script>
    <script src="/customer_list/ch/ai_html/views/demo/js/datav.umd.js"></script>
    <script src="/customer_list/ch/ai_html/views/demo/js/index.full.js"></script>
    <script src="/customer_list/ch/ai_html/views/demo/js/iframe-resizer/child-5.1.5.js" async></script>
    <script src="/customer_list/ch/ai_html/views/demo/js/echarts.min.js"></script>
    <link href="/customer_list/ch/ai_html/views/demo/css/variablesDemo.css" rel="stylesheet" type="text/css" />
    <link href="/customer_list/ch/static/fonts/iconfont/iconfont.css" rel="stylesheet" type="text/css" />
    <link href="/customer_list/ch/ai_html/views/demo/css/ele-index.css" rel="stylesheet" type="text/css" />
</head>
<body>
    <div class="w-full h-full bg-[#f2f4f8]" id="workOrder">
        <div class="screen-top-center">
            <div class="top-center-data">
                <div class="data-item" v-for="(item, index) in state.dataList">
                    <p class="data-item-title">{{item.title}}</p>
                    <p class="data-item-desc">{{item.value}}<span class="text-[13px] ">
                            {{' '+item.unit}}</span></p>
                </div>
            </div>
            <div class="top-center-chart">
                <div class="chart-item">
                    <div class="screen-top-header flex flex-wrap justify-center items-center">
                        <div class="header-left flex-c">
                            <i class="iconfont icon-ico_shuju text-[#1c86ff]"></i>
                        </div>
                        <div class="header-right flex-l">
                            <span class="header-title">巡检养护情况</span>
                            <Decoration3 class="dv-dec-3" />
                        </div>
                    </div>
                    <div id="inspectionChart" class="w-full h-[280px]"></div>
                </div>
                <div class="chart-item">
                    <div class="screen-top-header flex-l">
                        <div class="header-left flex-c">
                            <i class="iconfont icon-shangchuan text-[#1c86ff]"></i>
                        </div>
                        <div class="header-right flex-l">
                            <span class="header-title">月度受理量排行</span>
                            <Decoration3 class="dv-dec-3" />
                        </div>
                    </div>
                    <div class="pond-section">
                        <div id="salesRankChart" class="w-full h-[280px]"></div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
<script>
    const { createApp, onMounted, ref, reactive } = Vue;
    const { Decoration3 } = DataV;
    const demoOverViewChart = ref(null);
    const inspectionChart = ref(null);
    const salesRankRef = ref(null);
    const App = createApp({
        setup() {
            let state = reactive({
                dataList: [
                    {
                        title: '管线总长',
                        value: 755,
                        config: {
                            number: [755],
                            toFixed: 0,
                            content: '{nt}',
                            textAlign: 'left',
                            style: {
                                fontSize: 24,
                            },
                        },
                        unit: 'ç±³',
                    },
                    {
                        title: '压力表数',
                        value: 3288,
                        config: {
                            number: [3288],
                            toFixed: 0,
                            content: '{nt}',
                            textAlign: 'left',
                            style: {
                                fontSize: 24,
                            },
                        },
                        unit: '个',
                    },
                    {
                        title: '流量计数',
                        value: 14222,
                        config: {
                            number: [14222],
                            toFixed: 0,
                            content: '{nt}',
                            textAlign: 'left',
                            style: {
                                fontSize: 24,
                            },
                        },
                        unit: '个',
                    },
                    {
                        title: '户表数',
                        value: 41022,
                        config: {
                            number: [41022],
                            toFixed: 0,
                            content: '{nt}',
                            textAlign: 'left',
                            style: {
                                fontSize: 24,
                            },
                        },
                        unit: '个',
                    },
                    {
                        title: '水质仪数',
                        value: 176888,
                        config: {
                            number: [176888],
                            toFixed: 0,
                            content: '{nt}',
                            textAlign: 'left',
                            style: {
                                fontSize: 24,
                            },
                        },
                        unit: '个',
                    },
                    {
                        title: '阀门数',
                        value: 820,
                        config: {
                            number: [820],
                            toFixed: 0,
                            content: '{nt}',
                            textAlign: 'left',
                            style: {
                                fontSize: 24,
                            },
                        },
                        unit: '个',
                    },
                ],
            });
            const getOverViewList = () => {
                const iconList = [
                    'biaodan',
                    'putong',
                    'zhongduancanshuchaxun',
                    'shidu',
                    'fuwenbenkuang',
                    'fuwenben',
                    'jiliandongxuanzeqi',
                    'jinridaiban',
                    'gongju',
                ];
                state.dataList.forEach((annual, index) => {
                    annual.Icon = iconList[index];
                    annual.BgColor = randomHexColor();
                });
            };
            //随机生成颜色
            const randomHexColor = () => {
                return `#${Math.floor(Math.random() * 16777215)
                    .toString(16)
                    .padEnd(6, '0')}`;
            };
            onMounted(() => {
                // getOverViewList();
                window.addEventListener('resize', () => {
                    inspectionChart.value.resize();
                    salesRankRef.value.resize();
                });
                initInspectionChart()
                drawSalesRanking();
            });
            //初始化巡检图表
            const initInspectionChart = () => {
                var chartDom = document.getElementById('inspectionChart');
                var myInspectChart = echarts.init(chartDom);
                inspectionChart.value = myInspectChart;
                var option = {
                    legend: {},
                    tooltip: {},
                    dataset: {
                        source: [
                            ['product', '循环完成率', '维保完成率'],
                            ['1月', 43.3, 85.8],
                            ['2月', 83.1, 73.4],
                            ['3月', 86.4, 65.2],
                            ['4月', 72.4, 53.9],
                            ['5月', 77.0, 39.1],
                            ['6月', 68.2, 56.2],
                            ['7月', 72.1, 64.5],
                            ['8月', 76.5, 70.8],
                            ['9月', 74.1, 72.4],
                            ['10月', 75.3, 71.7],
                            ['11月', 70.9, 74.2],
                            ['12月', 66.8, 75.2],
                        ]
                    },
                    xAxis: { type: 'category', name: '月份', nameGap: 10, },
                    yAxis: {
                        name: '单位: %'
                    },
                    series: [{ type: 'bar' }, { type: 'bar' }]
                };
                option && myInspectChart.setOption(option);
            }
            // ç»˜åˆ¶æ¨ªå‘柱状图排行榜
            const drawSalesRanking = () => {
                var chartDom = document.getElementById('salesRankChart');
                var salesRankingElement = echarts.init(chartDom);
                salesRankRef.value = salesRankingElement
                const option = {
                    tooltip: {
                        trigger: 'axis',
                        axisPointer: {
                            type: 'shadow',
                        },
                    },
                    grid: {
                        left: '2%', // è°ƒæ•´å·¦è¾¹è·
                        right: '5%', // è°ƒæ•´å³è¾¹è·
                        top: '2%', // è°ƒæ•´ä¸‹è¾¹è·
                        containLabel: true, // ç¡®ä¿æ ‡ç­¾å’Œè½´æ ‡é¢˜è¢«åŒ…含在容器内
                    },
                    xAxis: {
                        type: 'value',
                        boundaryGap: [0, 0.01],
                        axisLine: {
                            show: false, // ä¸æ˜¾ç¤ºæ¨ªåæ ‡è½´çº¿
                        },
                        axisTick: {
                            show: false, // ä¸æ˜¾ç¤ºåˆ»åº¦çº¿
                        },
                        splitLine: {
                            show: false, // ä¸æ˜¾ç¤ºx轴网格线
                        },
                    },
                    yAxis: {
                        type: 'category',
                        data: ['闵行区', '浦东区', '徐汇区'], // ç¤ºä¾‹æ•°æ®
                        axisLine: {
                            show: false, // ä¸æ˜¾ç¤ºæ¨ªåæ ‡è½´çº¿
                        },
                        axisTick: {
                            show: false, // ä¸æ˜¾ç¤ºåˆ»åº¦çº¿
                        },
                        splitLine: {
                            show: false, // ä¸æ˜¾ç¤ºy轴网格线
                        },
                        axisLabel: {
                            rich: {
                                iconStyle: {
                                    fontSize: 20, // è®¾ç½®å›¾æ ‡çš„字体大小为20
                                },
                                nameStyle: {
                                    // å®šä¹‰åå­—的样式
                                    fontSize: 12, // è®¾ç½®åå­—的字体大小为12,或者您希望的任何大小
                                },
                            },
                            formatter: function (value, index) {
                                // æ ¹æ®index或value来决定显示哪个排名的图标
                                const rankIcons = {
                                    2: '{iconStyle|🥇}',
                                    1: '{iconStyle|🥈}',
                                    0: '{iconStyle|🥉}',
                                };
                                return `${rankIcons[index]} {nameStyle|${value}}`;
                            },
                        },
                    },
                    series: [
                        {
                            name: '受理量',
                            type: 'bar',
                            data: [9, 10, 21], // ç¤ºä¾‹æ•°æ®
                            barWidth: '30%', // è°ƒæ•´æŸ±å­å®½åº¦
                            itemStyle: {
                                borderRadius: [0, 5, 5, 0], // åªæœ‰å³ä¾§åœ†è§’
                                color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [
                                    // è®¾ç½®æ¸å˜è‰²ï¼Œæ–¹å‘也要调整为横向
                                    { offset: 0, color: '#bdd1f6' },
                                    { offset: 1, color: '#4282ff' },
                                ]),
                            },
                            label: {
                                show: true, // æ˜¾ç¤ºæ ‡ç­¾
                                position: 'right', // æ ‡ç­¾ä½ç½®åœ¨é¡¶éƒ¨
                                formatter: '{c}万', // è‡ªå®šä¹‰æ˜¾ç¤ºçš„内容,{c}是指当前数据点的值
                            },
                        },
                    ],
                };
                salesRankingElement.setOption(option);
            };
            return { state };
        },
    });
    App.component('Decoration3', Decoration3);
    App.use(ElementPlus);
    App.mount('#workOrder');
</script>
</html>