xieshengjie 4 年之前
當前提交
e24a86898a
共有 19 個文件被更改,包括 12304 次插入0 次删除
  1. 21 0
      .gitignore
  2. 19 0
      README.md
  3. 5 0
      babel.config.js
  4. 11609 0
      package-lock.json
  5. 34 0
      package.json
  6. 二進制
      public/favicon.ico
  7. 17 0
      public/index.html
  8. 50 0
      public/js/dateFormat.js
  9. 18 0
      src/App.vue
  10. 二進制
      src/assets/logo.png
  11. 11 0
      src/element-variables.scss
  12. 8 0
      src/http.js
  13. 12 0
      src/main.js
  14. 5 0
      src/plugins/element.js
  15. 27 0
      src/router.js
  16. 147 0
      src/views/Home.vue
  17. 127 0
      src/views/base.vue
  18. 186 0
      src/views/station.vue
  19. 8 0
      vue.config.js

+ 21 - 0
.gitignore

@@ -0,0 +1,21 @@
+.DS_Store
+node_modules
+/dist
+
+# local env files
+.env.local
+.env.*.local
+
+# Log files
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# Editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?

+ 19 - 0
README.md

@@ -0,0 +1,19 @@
+# analysis
+
+## Project setup
+```
+npm install
+```
+
+### Compiles and hot-reloads for development
+```
+npm run serve
+```
+
+### Compiles and minifies for production
+```
+npm run build
+```
+
+### Customize configuration
+See [Configuration Reference](https://cli.vuejs.org/config/).

+ 5 - 0
babel.config.js

@@ -0,0 +1,5 @@
+module.exports = {
+  presets: [
+    '@vue/app'
+  ]
+}

File diff suppressed because it is too large
+ 11609 - 0
package-lock.json


+ 34 - 0
package.json

@@ -0,0 +1,34 @@
+{
+  "name": "analysis",
+  "version": "0.1.0",
+  "private": true,
+  "scripts": {
+    "serve": "vue-cli-service serve",
+    "build": "vue-cli-service build"
+  },
+  "dependencies": {
+    "axios": "^0.21.1",
+    "core-js": "^2.6.5",
+    "element-ui": "^2.4.5",
+    "vue": "^2.6.10",
+    "vue-router": "^3.0.3"
+  },
+  "devDependencies": {
+    "@vue/cli-plugin-babel": "^3.12.0",
+    "@vue/cli-service": "^3.12.0",
+    "node-sass": "^4.9.2",
+    "sass": "^1.19.0",
+    "sass-loader": "^8.0.0",
+    "vue-cli-plugin-element": "^1.0.1",
+    "vue-template-compiler": "^2.6.10"
+  },
+  "postcss": {
+    "plugins": {
+      "autoprefixer": {}
+    }
+  },
+  "browserslist": [
+    "> 1%",
+    "last 2 versions"
+  ]
+}

二進制
public/favicon.ico


+ 17 - 0
public/index.html

@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width,initial-scale=1.0">
+    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
+    <title>analysis</title>
+  </head>
+  <body>
+    <noscript>
+      <strong>We're sorry but analysis doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
+    </noscript>
+    <div id="app"></div>
+    <!-- built files will be auto injected -->
+  </body>
+</html>

+ 50 - 0
public/js/dateFormat.js

@@ -0,0 +1,50 @@
+export default function  dateFormat(format, v) {
+    if (v) {
+      var o = {
+        "M+": v.getMonth() + 1, //月份
+        "d+": v.getDate(), //日
+        "h+": v.getHours() % 12 == 0 ? 12 : v.getHours() % 12, //小时
+        "H+": v.getHours(), //小时
+        "m+": v.getMinutes(), //分
+        "s+": v.getSeconds(), //秒
+        "q+": Math.floor((v.getMonth() + 3) / 3), //季度
+        S: v.getMilliseconds(), //毫秒
+      };
+      var week = {
+        0: "\u65e5",
+        1: "\u4e00",
+        2: "\u4e8c",
+        3: "\u4e09",
+        4: "\u56db",
+        5: "\u4e94",
+        6: "\u516d",
+      };
+      if (/(y+)/.test(format)) {
+        format = format.replace(
+          RegExp.$1,
+          (v.getFullYear() + "").substr(4 - RegExp.$1.length)
+        );
+      }
+      if (/(E+)/.test(format)) {
+        format = format.replace(
+          RegExp.$1,
+          (RegExp.$1.length > 1
+            ? RegExp.$1.length > 2
+              ? "\u661f\u671f"
+              : "\u5468"
+            : "") + week[v.getDay() + ""]
+        );
+      }
+      for (var k in o) {
+        if (new RegExp("(" + k + ")").test(format)) {
+          format = format.replace(
+            RegExp.$1,
+            RegExp.$1.length == 1
+              ? o[k]
+              : ("00" + o[k]).substr(("" + o[k]).length)
+          );
+        }
+      }
+      return format;
+    }
+  }

+ 18 - 0
src/App.vue

@@ -0,0 +1,18 @@
+<template>
+  <div id="app">
+    <router-view/>
+  </div>
+</template>
+
+<style lang="scss">
+html,
+body,
+#app {
+  height: 100%;
+  width: 100%;
+  padding: 0;
+  margin: 0;
+  color: #000;
+  overflow: hidden;
+}
+</style>

二進制
src/assets/logo.png


+ 11 - 0
src/element-variables.scss

@@ -0,0 +1,11 @@
+/*
+Write your variables here. All available variables can be
+found in element-ui/packages/theme-chalk/src/common/var.scss.
+For example, to overwrite the theme color:
+*/
+$--color-primary: teal;
+
+/* icon font path, required */
+$--font-path: '~element-ui/lib/theme-chalk/fonts';
+
+@import "~element-ui/packages/theme-chalk/src/index";

+ 8 - 0
src/http.js

@@ -0,0 +1,8 @@
+import axios from 'axios'
+
+const http = axios.create({
+  baseURL: 'http://10.155.32.4:8033/' || '/api/',
+  // baseURL: 'http://localhost:8033/' || '/api/',
+})
+
+export default http

+ 12 - 0
src/main.js

@@ -0,0 +1,12 @@
+import Vue from 'vue'
+import App from './App.vue'
+import router from './router'
+import './plugins/element.js'
+import http from './http'
+Vue.prototype.$http = http
+Vue.config.productionTip = false
+
+new Vue({
+  router,
+  render: h => h(App)
+}).$mount('#app')

+ 5 - 0
src/plugins/element.js

@@ -0,0 +1,5 @@
+import Vue from 'vue'
+import Element from 'element-ui'
+import '../element-variables.scss'
+
+Vue.use(Element)

+ 27 - 0
src/router.js

@@ -0,0 +1,27 @@
+import Vue from 'vue'
+import Router from 'vue-router'
+import Home from './views/Home.vue'
+
+Vue.use(Router)
+
+export default new Router({
+  //mode: 'history',
+  base: process.env.BASE_URL,
+  routes: [
+    {
+      path: '/',
+      name: 'home',
+      component: Home
+    },
+    {
+      path: '/station',
+      name: 'station',
+      component: () => import(/* webpackChunkName: "station" */ './views/station.vue')
+    },
+    {
+      path: '/base',
+      name: 'base',
+      component: () => import(/* webpackChunkName: "base" */ './views/base.vue')
+    }
+  ]
+})

+ 147 - 0
src/views/Home.vue

@@ -0,0 +1,147 @@
+<template>
+  <div class="main">
+    <!-- 选择时期场站风机 -->
+    <el-card class="box-card" style="width: 100%">
+      <div class="top">
+        <div>
+          <span class="demonstration">选择日期:</span>
+          <el-date-picker
+            v-model="timeValue"
+            type="daterange"
+            value-format="yyyy-MM-dd"
+            size="small"
+            range-separator="至"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期"
+            align="right"
+          ></el-date-picker>
+        </div>
+        <el-button class="btnrt" type="primary" size="mini" @click="fetch"
+          >查询</el-button
+        >
+      </div>
+    </el-card>
+    <!-- 表格 -->
+    <el-table
+      :data="tableData"
+      style="width: 98%; margin: 20px"
+      max-height="800px"
+    >
+      <el-table-column prop="wpname" label="场站"> </el-table-column>
+      <el-table-column  label="日期">
+        <template slot-scope="scope">
+          {{scope.row.theday | datefil}} 
+        </template>
+         </el-table-column>
+      <el-table-column fixed="right" label="操作">
+        <template slot-scope="scope">
+          <el-button
+            @click="handleClickBase(scope.row)"
+            type="text"
+            size="small"
+            >表底</el-button
+          >
+          <el-button
+            type="text"
+            @click="handleClickStation(scope.row)"
+            size="small"
+            >场站</el-button
+          >
+        </template>
+      </el-table-column>
+      <el-table-column fixed="right" label="操作">
+        <template slot-scope="scope">
+          <el-button
+            @click="handleClick(scope.row)"
+            :disabled="scope.row.isConfirm == 1"
+            size="small"
+            >确认</el-button
+          >
+        </template>
+      </el-table-column>
+    </el-table>
+  </div>
+</template>
+<script>
+import dateFormat from "../../public/js/dateFormat";
+export default {
+  data() {
+    return {
+      routerData:this.$route.params,
+      tableData: [],
+      timeValue: [
+        dateFormat(
+          "yyyy-MM-dd",
+          new Date(new Date().setDate(new Date().getDate() - 7))
+        ),
+        dateFormat("yyyy-MM-dd", new Date()),
+      ],
+    };
+  },
+  created() {
+    this.fetch();
+  },
+
+  mounted() {},
+  methods: {
+    async fetch() {
+      console.log(this.routerData);
+      
+      if(this.routerData.beginDate!=null){
+        this.timeValue[0]=this.routerData.beginDate;
+        this.timeValue[1]=this.routerData.endDate;
+        this.routerData=[];
+      }
+      const res = await this.$http.get(
+          `analysisplus/list?beginDate=${this.timeValue[0]}&endDate=${this.timeValue[1]}`
+        );
+        this.tableData = res.data;
+      
+      
+    },
+    handleClickBase(row) {
+      this.$router.push({ name: "base", params: { data: row,beginDate:this.timeValue[0],endDate:this.timeValue[1] } });
+    },
+    handleClickStation(row) {
+      this.$router.push({ name: "station", params: { data: row,beginDate:this.timeValue[0],endDate:this.timeValue[1] } } );
+    },
+   async handleClick(row) {
+      const res = await this.$http.post(
+        `analysisplus/commit`,row
+      );
+     res.status == 200 ? this.fetch():''
+      console.log(res)
+    },
+    async sort(ary,key) {
+      return ary.sort(function(a,b){
+        let x = a[key];
+        let y = b[key];
+        return ((x>y)?-1:(x<y))?1:0;
+      })
+    },
+  },
+   filters: {
+    datefil(val) {
+      return dateFormat("yyyy-MM-dd", new Date(val));
+    },
+  },
+};
+</script>
+<style scoped lang="scss">
+body {
+  margin: 0;
+  padding: 0;
+}
+.main {
+  width: 100%;
+  .top {
+    width: 30%;
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    .demonstration {
+      margin-right: 10px;
+    }
+  }
+}
+</style>

+ 127 - 0
src/views/base.vue

@@ -0,0 +1,127 @@
+<template>
+  <div class="main">
+    <el-button type="primary" @click="save" style="margin:20px">保存</el-button>
+    <el-button type="primary" @click="back" style="margin:20px">返回</el-button>
+    <el-button type="primary" @click="station" style="margin:20px">场站</el-button>
+    <!-- 表格 -->
+    <el-table :data="tableData" style="width:98%;margin:20px" max-height="800px">
+      <el-table-column
+        v-for="(i,index) in Object.keys(tableData[0]).sort(function(n,m){
+        return parseInt(n.split('_')[0])-parseInt(m.split('_')[0]);
+        })"
+        :key="index"
+        :prop="i"
+        :label="i | clu"
+        width="160"
+      >
+       <template slot-scope="scope">
+         <el-input @input="send(scope.row)"  v-if="scope.row.name =='止码' && i != 'name' && i != 'date'" v-model="scope.row[i]" :disabled='routerData.isConfirm == 1'></el-input>
+         <label v-else>{{scope.row[i]}}</label>  
+        </template>
+      </el-table-column>
+    </el-table>
+  </div>
+</template>
+<script>
+import dateFormat from "../../public/js/dateFormat";
+export default {
+  data() {
+    return {
+      tableData: [],
+      routerData:this.$route.params,
+      lm: [],
+      timeValue: [
+        dateFormat(
+          "yyyy-MM-dd",
+          new Date(new Date().setDate(new Date().getDate() - 5))
+        ),
+        dateFormat("yyyy-MM-dd", new Date()),
+      ],
+    };
+  },
+  created() {
+    this.fetch();
+    console.log(this.routerData)
+  },
+
+  mounted() {},
+  methods: {
+    async fetch() {
+      const res = await this.$http.get(
+        `analysisplus/bdzlist?theday=${dateFormat("yyyy-MM-dd", new Date(this.routerData.data.theday))}&wpid=${this.routerData.data.wpid}`
+      );
+      for(let i in res.data){
+        if( res.data[i].date == undefined ){
+        }else{
+        res.data[i].date =dateFormat("yyyy-MM-dd", new Date(res.data[i].date));
+        }
+      }
+      this.tableData = res.data;
+     
+      console.log(res.data);
+      var name = ['2_dfds','8_fdf','1_fdjkf'];
+      var aaa = this.px(name);
+      
+      console.log(aaa);
+      
+    },
+    px(name){
+      return name.sort(function(a,b){
+        return parseInt(a.split("_")[0])-parseInt(b.split("_")[0])
+      });
+    },
+    
+    
+    
+    send(v){
+    },
+    async save(){
+      var obj = this.tableData[2];
+      const wpid = this.routerData.data.wpid;
+      obj.wpid=wpid
+      console.log(obj)
+      const res = await this.$http.post(
+        `analysisplus/bdzupdate`,obj
+      );
+      console.log(res)
+    },
+    back(){
+      this.$router.push({ name: "home", params: { beginDate: this.routerData.beginDate,endDate: this.routerData.endDate} });
+    },
+    station(){
+      console.log(this.routerData);
+      const param = {
+         theday: this.routerData.data.theday,
+         wpid: this.routerData.data.wpid
+         
+      }
+      this.$router.push({ name: "station", params: { data: param,beginDate:this.routerData.beginDate,endDate:this.routerData.endDate } });
+    }
+  },
+  filters: {
+    clu(val){
+      switch (val) {
+        case 'name':
+          return '设备名称';
+          break;
+      case 'date':
+          return '日期';
+          break;
+      
+        default:
+          return val.split("_")[1]
+          break;
+      }
+    },
+  },
+};
+</script>
+<style scoped lang="scss">
+body {
+  margin: 0;
+  padding: 0;
+}
+.main {
+  width: 100%;
+}
+</style>

+ 186 - 0
src/views/station.vue

@@ -0,0 +1,186 @@
+<template>
+  <div class="main">
+    <el-button type="primary" @click="save" style="margin: 20px"
+      >保存</el-button
+    >
+    <el-button type="primary" @click="back" style="margin:20px">返回</el-button>
+    <el-button type="primary" @click="bdz" style="margin:20px">表底</el-button>
+    <!-- 表格 -->
+    <el-table :data="tableData" style="width: 100%" max-height="800px">
+      <el-table-column
+        v-for="(i, index) in tableClu.slice(0, 3)"
+        :key="index"
+        :prop="i"
+        :label="i | clu"
+        width="240"
+      >
+        <template slot-scope="scope">
+          {{ scope.row[i] }}
+        </template>
+      </el-table-column>
+      <el-table-column
+        v-for="(k, index) in tableCluObj"
+        :key="index"
+        :label="k.split('_')[0]"
+        align="center"
+      >
+        <el-table-column
+          v-for="i in tableClu.slice(3 + index * 2, 5 + index * 2)"
+          :key="i"
+          :prop="i"
+          label="当日值"
+          width="100"
+          align="center"
+        >
+          <template slot-scope="scope">
+            <el-input
+              v-if="tableString.indexOf(i) != -1"
+              :disabled="scope.row['是否可编辑'] == 1 || routerData.isConfirm == 1"
+              size="mini"
+              @change="changeNum(scope.row)"
+              v-model="scope.row[i]"
+            ></el-input>
+            <label v-else>{{ scope.row[i] }}</label>
+          </template>
+        </el-table-column>
+      </el-table-column>
+    </el-table>
+  </div>
+</template>
+<script>
+import dateFormat from "../../public/js/dateFormat";
+export default {
+  data() {
+    return {
+      routerData: this.$route.params,
+      tableData: [],
+      tableClu: [],
+      tableCluObj: [],
+      tableString: [],
+      sendData: [],
+      timeValue: [
+        dateFormat(
+          "yyyy-MM-dd",
+          new Date(new Date().setDate(new Date().getDate() - 5))
+        ),
+        dateFormat("yyyy-MM-dd", new Date()),
+      ],
+    };
+  },
+  created() {
+    this.fetch();
+    console.log(this.routerData);
+  },
+
+  mounted() {},
+  filters: {
+    clu(val) {
+      switch (val) {
+        case "name":
+          return "名称";
+          break;
+        default:
+          return val;
+          break;
+      }
+    },
+    datefil(val) {
+      return dateFormat("yyyy-MM-dd HH:mm:ss", new Date(val));
+    },
+  },
+  methods: {
+    async fetch() {
+      const res = await this.$http.get(
+        `analysisplus/tjfxlist?theday=${dateFormat(
+          "yyyy-MM-dd",
+          new Date(this.routerData.data.theday)
+        )}&wpid=${this.routerData.data.wpid}&identity=${
+          this.routerData.data.wpid.substring(this.routerData.data.wpid.length - 3) ==
+          "FDC"
+            ? 0
+            : 1
+        }`
+      );
+      console.log(res.data);
+      for (let k of Object.keys(res.data[0])) {
+        for (let i of res.data) {
+          if (typeof i[k] == "object") {
+            if (i[k] != null) {
+              for (let p of Object.keys(i[k])) {
+                console.log(i[k][p]);
+                i[k + p] = i[k][p];
+              }
+            }
+          }
+        }
+      }
+      this.tableData = res.data;
+      console.log(res.data);
+      for (let i of Object.keys(res.data[0])) {
+        if (typeof res.data[0][i] != "object") {
+          if (i != "是否可编辑") {
+            this.tableClu.push(i);
+          }
+          
+        } else {
+          this.tableCluObj.push(i);
+        }
+        this.tableCluObj.sort(function(n,m){
+          return parseInt(n.split('_')[1])-parseInt(m.split('_')[1]);
+        })
+      }
+      for (let i of this.tableCluObj) {
+        this.tableString.push(i + "当日值(编辑)");
+      }
+      console.log(this.tableCluObj);
+    },
+    back(){
+      this.$router.push({ name: "home", params: { beginDate: this.routerData.beginDate,endDate: this.routerData.endDate} });
+    },
+    bdz(){
+      console.log(this.routerData);
+      const param = {
+         theday: this.routerData.data.theday,
+         wpid: this.routerData.data.wpid
+         
+      }
+       this.$router.push({ name: "base", params: { data: param,beginDate: this.routerData.beginDate,endDate: this.routerData.endDate} });
+    },
+    changeNum(v) {
+      const date = this.routerData.data.theday;
+      const wpid = this.routerData.data.wpid;
+      v.date = date;
+      v.wpid = wpid;
+      console.log(this.routerData)
+      this.sendData.push(v);
+    },
+    async save() {
+      console.log(this.sendData)
+      const res = await this.$http.post(
+        `analysisplus/tjfxupdate`,
+        this.sendData
+      );
+      console.log(res);
+      this.sendData = [];
+    },
+  },
+};
+</script>
+<style scoped lang="scss">
+body {
+  margin: 0;
+  padding: 0;
+}
+.main {
+  width: 100%;
+  .top {
+    width: 30%;
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    .demonstration {
+      margin-right: 10px;
+    }
+  }
+}
+</style>

+ 8 - 0
vue.config.js

@@ -0,0 +1,8 @@
+
+module.exports = {
+  // 基本路径  3.6之前的版本时 baseUrl
+  publicPath: "./",
+  // 输出文件目录
+  outputDir: "dist",
+  // eslint-loader 是否在保存的时候检查
+};