Ver código fonte

fix:增加机外对刀仪数据展示

wang.sq@aliyun.com 4 meses atrás
pai
commit
76971a719e

+ 174 - 0
imcs-ui/src/api/modelingCenter/cutterTestData.js

@@ -0,0 +1,174 @@
+import axiosApi from '../AxiosApi.js'
+
+const apiList = {
+  page: {
+    method: 'POST',
+    url: `/authority/cutterTestData/getCutterPage`
+  },
+  update: {
+    method: 'POST',
+    url: `/authority/toolManagement/update`
+  },
+  save: {
+    method: 'POST',
+    url: `/authority/toolManagement`
+  },
+  updateStatus: {
+    method: 'POST',
+    url: `/authority/toolManagement/status`
+  },
+  remove: {
+    method: 'DELETE',
+    url: `/authority/toolManagement`
+  },
+  delete: {
+    method: 'POST',
+    url: `/authority/toolManagement/delete`
+  },
+  list: {
+    method: 'POST',
+    url: `/authority/toolManagement/query`
+  },
+  preview: {
+    method: 'POST',
+    url: `/authority/toolManagement/preview`
+  },
+  export: {
+    method: 'POST',
+    url: `/authority/toolManagement/export`
+  },
+  import: {
+    method: 'POST',
+    url: `/authority/toolManagement/import`
+  },
+  getAllList: {
+    method: 'POST',
+    url: `/authority/productionresource/getList`
+  },
+  setRule: {
+    method: 'POST',
+    url: `/authority/toolManagement/setRule`
+  },
+  getRule: {
+    method: 'POST',
+    url: `/authority/toolManagement/getRule`
+  },
+  toolTaskPage: {
+    method: 'POST',
+    url: `/authority/toolTask/page`
+  },
+}
+
+export default {
+  	getList (data) {
+	    return axiosApi({
+	      ...apiList.getList,
+	      data
+	    })
+ 	},
+	getTreeList (data) {
+	    return axiosApi({
+	      ...apiList.getTreeList,
+	      data
+	    })
+	},
+  page (data) {
+    return axiosApi({
+      ...apiList.page,
+      data
+    })
+  },
+  save (data) {
+    return axiosApi({
+      ...apiList.save,
+      data
+    })
+  },
+  update (data) {
+    return axiosApi({
+      ...apiList.update,
+      data
+    })
+  },
+  updateStatus (data) {
+    return axiosApi({
+      ...apiList.updateStatus,
+      data
+    })
+  },
+  checkField (data) {
+    return axiosApi({
+      method: 'POST',
+      url: `/authority/toolManagement/check`,
+      data
+    })
+  },
+  remove (data) {
+    return axiosApi({
+      ...apiList.remove,
+      data
+    })
+  },
+  delete (data) {
+    return axiosApi({
+      ...apiList.remove,
+      data
+    })
+  },
+  list (data) {
+    return axiosApi({
+      ...apiList.list,
+      data
+    })
+  },
+  check (code) {
+    return axiosApi({
+      method: 'GET',
+      url: `/authority/toolManagement/check/${code}`
+    })
+  },
+  preview (data) {
+    return axiosApi({
+      ...apiList.preview,
+      data
+    })
+  },
+  export (data) {
+    return axiosApi({
+      ...apiList.export,
+      responseType: "blob",
+      data
+    })
+  },
+  import (data) {
+    return axiosApi({
+      ...apiList.import,
+      data
+    })
+  },
+  getAllList(data) {
+    return axiosApi({
+      ...apiList.getAllList,
+      data
+    })
+  },
+  setRule(data) {
+    return axiosApi({
+      ...apiList.setRule,
+      data
+    })
+  },
+  getRule(data) {
+    return axiosApi({
+      ...apiList.getRule,
+      data
+    })
+  },
+  toolTaskPage(data) {
+    return axiosApi({
+      ...apiList.toolTaskPage,
+      data
+    })
+  },
+
+}

+ 630 - 0
imcs-ui/src/views/cutter/index.vue

@@ -0,0 +1,630 @@
+<template>
+ 
+</template>
+
+<script>
+  import LangSelect from "@/components/LangSelect";
+  import db from "@/utils/localstorage";
+  import {randomNum} from "@/utils";
+  import {socialLoginUrl} from "@/settings";
+  import loginApi from "@/api/Login.js";
+  import oauthApi from '@/api/Oauth'
+  import {Base64} from 'js-base64';
+  import productionResourcesMgrApi from "@/api/resourceProductMgr/productionResourcesMgr";
+
+  export default {
+    name: "Login",
+    components: {LangSelect},
+    data() {
+      return {
+        options: [],
+        opValue:'',
+      	activeName: 'first',
+        //是否启用多租户
+        isMultiTenant:
+         false,
+        isCaptcha: process.env.VUE_APP_IS_CAPTCHA === "true" ? true : false,
+        zoneNo: process.env.VUE_APP_ZONE_LINE,
+        tabActiveName: "bindLogin",
+        login: {
+          type: "up"
+        },
+        logo: [
+          {img: "gitee.png", name: "gitee", radius: true},
+          {img: "github.png", name: "github", radius: true},
+          {img: "tencent_cloud.png", name: "tencent_cloud", radius: true},
+          {img: "qq.png", name: "qq", radius: false},
+          {img: "dingtalk.png", name: "dingtalk", radius: true},
+          {img: "microsoft.png", name: "microsoft", radius: false}
+        ],
+        loginForm: {
+          account: "",
+          password: "",   // zuihou
+          tenantView: "0000", //显示用的
+          tenant: "", //传递给后端的
+          key: randomNum(24, 16),
+          code: "",
+          grantType: process.env.VUE_APP_IS_CAPTCHA === "true" ? "captcha" : "password",
+          bindAccount: "",
+          bindPassword: "",
+          signAccount: "",
+          signPassword: "",
+          qcodeUser: "",
+          stationResourceId: "",
+          zoneType: process.env.VUE_APP_ZONE_LINE
+        },
+        rules: {
+          account: {
+            required: true,
+            message: this.$t("rules.require"),
+            trigger: "blur"
+          },
+          tenantView: {
+            required: true,
+            message: this.$t("rules.require"),
+            trigger: "blur"
+          },
+          password: {
+            required: true,
+            message: this.$t("rules.require"),
+            trigger: "blur"
+          },
+          code: {
+            validator: (rule, value, callback) => {
+              if (this.isCaptcha && value === '') {
+                callback(this.$t("rules.require"))
+              } else {
+                callback()
+              }
+              callback()
+            }, trigger: 'blur'
+          },
+          bindAccount: {
+            required: true,
+            message: this.$t("rules.require"),
+            trigger: "blur"
+          },
+          bindPassword: {
+            required: true,
+            message: this.$t("rules.require"),
+            trigger: "blur"
+          },
+          signAccount: [
+            {
+              required: true,
+              message: this.$t("rules.require"),
+              trigger: "blur"
+            },
+            {
+              min: 4,
+              max: 10,
+              message: this.$t("rules.range4to10"),
+              trigger: "blur"
+            }
+          ],
+          signPassword: [
+            {
+              required: true,
+              message: this.$t("rules.require"),
+              trigger: "blur"
+            },
+            {
+              min: 6,
+              max: 20,
+              message: this.$t("rules.range6to20"),
+              trigger: "blur"
+            }
+          ]
+        },
+        authUser: null,
+        loading: false,
+        showDialog: false,
+        redirect: undefined,
+        otherQuery: {},
+        imageCode: "",
+        page: {
+          width: window.screen.width * 0.5,
+          height: window.screen.height * 0.5
+        }
+      };
+    },
+    created() {
+      this.getStations()
+    },
+    mounted() {
+      db.clear();
+      this.getCodeImage();
+      this.$nextTick(
+        window.onload = function () { // 光标默认位置
+          var oInput = document.getElementById('qcodeUserInput');
+          oInput.focus();
+        }
+      )
+    },
+    destroyed() {
+      window.removeEventListener("message", this.resolveSocialLogin);
+    },
+    methods: {
+    	// Tabs切换-事件
+    	handleClick(tab, event) {
+    	    // tab切换初始化focus及内容
+    	    if(tab.name === 'first'){
+              this.$nextTick(
+                  window.onload = function () { // 光标默认位置
+                      document.getElementById('qcodeUserInput').value = "";
+                      var oInput = document.getElementById('qcodeUserInput');
+                      oInput.focus();
+                  }
+              )
+          }
+        console.log(tab, event);
+      },
+      getCodeImage() {
+        loginApi
+          .getCaptcha(this.loginForm.key)
+          .then(response => {
+            const res = response.data;
+            if (res.byteLength <= 100) {
+              this.$message({
+                message: this.$t("tips.systemError"),
+                type: "error"
+              });
+            }
+            return (
+              "data:image/png;base64," +
+              btoa(
+                new Uint8Array(res).reduce(
+                  (data, byte) => data + String.fromCharCode(byte),
+                  ""
+                )
+              )
+            );
+          })
+          .then(res => {
+            this.imageCode = res;
+          })
+          .catch(e => {
+            if (e.toString().indexOf("429") !== -1) {
+              this.$message({
+                message: this.$t("tips.tooManyRequest"),
+                type: "error"
+              });
+            } else {
+              this.$message({
+                message: this.$t("tips.getCodeImageFailed"),
+                type: "error"
+              });
+            }
+          });
+      },
+      handleTabClick(tab) {
+        this.tabActiveName = tab.name;
+      },
+      resolveLogo(logo) {
+        return require(`@/assets/logo/${logo}`);
+      },
+      socialLogin(oauthType) {
+        const url = `${socialLoginUrl}/${oauthType}/login`;
+        window.open(
+          url,
+          "newWindow",
+          `resizable=yes, height=${this.page.height}, width=${this.page.width}, top=10%, left=10%, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no`
+        );
+        window.addEventListener("message", this.resolveSocialLogin, false);
+      },
+      resolveSocialLogin(e) {
+        const data = e.data;
+        const that = this;
+        if (data.message === "not_bind") {
+          that.login.type = "bind";
+          const authUser = data.data;
+          that.authUser = authUser;
+          that
+            .$confirm(
+              that.$t("common.current") +
+              authUser.source +
+              that.$t("common.socialAccount") +
+              authUser.nickname +
+              that.$t("common.socialTips"),
+              that.$t("common.tips"),
+              {
+                confirmButtonText: that.$t("common.signLogin"),
+                cancelButtonText: that.$t("common.bindLogin"),
+                type: "warning"
+              }
+            )
+            .then(() => {
+              that.tabActiveName = "signLogin";
+            })
+            .catch(() => {
+              that.tabActiveName = "bindLogin";
+            });
+        } else if (data.message === "social_login_success") {
+          that.saveLoginData(data.data);
+          that.getUserDetailInfo();
+          that.loginSuccessCallback(data.account);
+        } else {
+          // do nothing
+        }
+      },
+      bindLogin() {
+        let account_c = false;
+        let password_c = false;
+        this.$refs.loginForm.validateField("bindAccount", e => {
+          if (!e) {
+            account_c = true;
+          }
+        });
+        this.$refs.loginForm.validateField("bindPassword", e => {
+          if (!e) {
+            password_c = true;
+          }
+        });
+        if (account_c && password_c) {
+          this.loading = true;
+          const that = this;
+          const params = {
+            bindAccount: that.loginForm.bindAccount,
+            bindPassword: that.loginForm.bindPassword,
+            ...that.authUser
+          };
+          params.token = null;
+          that
+            .$post("auth/social/bind/login", params)
+            .then(r => {
+              const data = r.data.data;
+              this.saveLoginData(data);
+              this.getUserDetailInfo();
+              this.loginSuccessCallback(that.loginForm.bindAccount);
+            })
+            .catch(error => {
+              console.error(error);
+              that.loading = false;
+            });
+        }
+      },
+      signLogin() {
+        let account_c = false;
+        let password_c = false;
+        this.$refs.loginForm.validateField("signAccount", e => {
+          if (!e) {
+            account_c = true;
+          }
+        });
+        this.$refs.loginForm.validateField("signPassword", e => {
+          if (!e) {
+            password_c = true;
+          }
+        });
+        if (account_c && password_c) {
+          this.loading = true;
+          const that = this;
+          const params = {
+            bindAccount: that.loginForm.signAccount,
+            bindPassword: that.loginForm.signPassword,
+            ...that.authUser
+          };
+          params.token = null;
+          that
+            .$post("auth/social/sign/login", params)
+            .then(r => {
+              const data = r.data.data;
+              this.saveLoginData(data);
+              this.getUserDetailInfo();
+              this.loginSuccessCallback(that.loginForm.signAccount);
+            })
+            .catch(error => {
+              console.error(error);
+              that.loading = false;
+            });
+        }
+      },
+      handleLogin() {
+        this.loginForm.tenant = `${Base64.encode(this.loginForm.tenantView)}`;
+        this.$refs.loginForm.validate((valid) => {
+          if (valid) {
+            this.loginSubmit();
+          } else {
+            return false
+          }
+        })
+      },
+      loginSubmit() {
+        this.loading = true;
+        const that = this;
+        this.$store.commit("account/setTenant", this.loginForm.tenant);
+        loginApi.login(this.loginForm).then(response => {
+          const res = response.data;
+          if (res.isSuccess) {
+            that.saveLoginData(res.data['token'], res.data['refreshToken'], res.data['expiration']);
+            that.saveUserInfo(res.data);
+            that.getResource();
+          } else {
+            that.getCodeImage();
+          }
+        }).finally(() => that.loading = false);
+      },
+      saveLoginData(token, refreshToken, expiration) {
+        this.$store.commit("account/setToken", token);
+        this.$store.commit("account/setRefreshToken", refreshToken);
+        this.$store.commit("account/setExpireTime", expiration);
+      },
+      saveUserInfo(user) {
+        this.$store.commit("account/setUser", {
+        });
+        this.$store.commit("account/setUser", {
+          id: user.userId,
+          account: user.account,
+          name: user.name,
+          avatar: user.avatar,
+          expire: user.expire,
+          workDescribe: user.workDescribe,
+          roles: user.roles
+        });
+      },
+      getResource() {
+        oauthApi.getResource().then(response => {
+          const res = response.data;
+          if (res.isSuccess) {
+            const permissionsList = res.data;
+            this.$store.commit("account/setPermissions", permissionsList ? permissionsList : []);
+
+            this.loginSuccess();
+          } else {
+            this.getCodeImage();
+          }
+        });
+      },
+      loginSuccess() {
+        this.$message({
+          message: this.$t("tips.loginSuccess"),
+          type: "success"
+        });
+        this.$router.push("/");
+      },
+      loginSuccessCallback(user) {
+        console.log(user);
+      },
+
+      qcodelogin(qcodeUserValue) {
+        this.loading = true;
+        const that = this;
+        this.loginForm.tenant = `${Base64.encode(this.loginForm.tenantView)}`;
+        this.$store.commit("account/setTenant", this.loginForm.tenant);
+        this.loginForm.qcodeUserValue = qcodeUserValue
+        this.loginForm.grantType="password";
+        loginApi.qcodelogin(this.loginForm).then(response => {
+          const res = response.data;
+          if (res.isSuccess) {
+            that.saveLoginData(res.data['token'], res.data['refreshToken'], res.data['expiration']);
+            that.saveUserInfo(res.data);
+            that.getResource();
+          } else {
+            that.getCodeImage();
+          }
+        }).finally(() => that.loading = false);
+      },
+
+      showQcodeUser(){
+        console.log(this.loginForm.qcodeUser.substr(this.loginForm.qcodeUser.length-1,1));
+        if(this.loginForm.qcodeUser.substr(this.loginForm.qcodeUser.length-1,1) == "#"){
+            this.qcodelogin()
+        }
+      },
+
+      getStations() {
+        productionResourcesMgrApi.getStations({}).then((res) => {
+          res = res.data;
+          if (res.isSuccess) {
+            if (res.data.length > 0) {
+              this.options = res.data;
+            }
+          }
+        });
+      },
+      selectChange(value) {
+        console.log(value);
+        this.loginForm.stationResourceId = value;
+        this.$nextTick(
+          window.onload = function () { // 光标默认位置
+            document.getElementById('qcodeUserInput').value = "";
+            var oInput = document.getElementById('qcodeUserInput');
+            oInput.focus();
+          }
+        )
+      },
+    }
+  };
+</script>
+<style lang="scss">
+	.login-form {
+		.el-tabs__item {
+			font-size: 16px;
+			color: white;
+		}
+		.el-tabs__item.is-active {
+			color: #1890ff;
+		}
+		.el-tabs__active-bar {
+			background: none;
+		}
+	}
+</style>
+<style lang="scss" scoped>
+  $bg1_color: #000;
+  $bg1_formbg: #4F535B;
+
+  $bg2_color:  #4E6BBD;
+  $bg2_formbg: #2F4187;
+
+  $bg3_color:  #375F92;
+  $bg3_formbg: #406EA4;
+
+  .login-container {
+  	/*background: url(../../assets/logo/loginBg.gif) 50% no-repeat;
+    background-size: cover;*/
+    /*background: url(../../assets/background.jpg) 50% no-repeat;*/
+   	/*background: url(../../assets/logo/logoBg1.jpg) 50% no-repeat;*/
+   	/*background: url(../../assets/logo/logoBg2.png) 50% no-repeat;
+    background-size: cover;*/
+   	background: $bg1_color;
+
+    width: 100%;
+    height: 100vh;
+		.saomaDom {
+			text-align: center;
+			color: white;
+			cursor: pointer;
+		}
+    .login-info {
+    	display: flex;
+    	align-items: center;
+      position: absolute;
+      left: 10%;
+      top: 44%;
+      margin-top: -100px;
+      color: #fff;
+
+			img{
+				width: 300px;
+				margin-right: 40px;
+			}
+      .title {
+        font-size: 1.8rem;
+        font-weight: 600;
+      }
+			.title:first-child{
+				margin-bottom: 15px;
+			}
+      .sub-title {
+        font-size: 1.5rem;
+        margin: 0.3rem 0 0.7rem 1rem;
+      }
+
+      .desc {
+        font-size: 0.96rem;
+        line-height: 1.9rem;
+      }
+    }
+
+    .login-form {
+      position: absolute;
+      top: 45%;
+      left: 70%;
+      margin: -180px 0 0 -160px;
+      width: 320px;
+      height: 440px;
+      padding: 10px 36px 36px 36px;
+      background: $bg1_formbg;
+      border-radius: 3px;
+
+			.el-tabs__item {
+				font-size: 16px;
+			}
+      .code-input {
+        width: 50%;
+        display: inline-block;
+        vertical-align: middle;
+      }
+
+      .code-image {
+        display: inline-block;
+        vertical-align: top;
+        cursor: pointer;
+      }
+
+      .login-type {
+        text-align: right;
+        display: inline-block;
+        width: 100%;
+      }
+
+      .logo-wrapper {
+        display: inline-block;
+        margin: 10px 0;
+
+        img {
+          width: 1.9rem;
+          display: inline-block;
+          margin: 0.8rem 0.8rem -0.8rem 0.8rem;
+          cursor: pointer;
+
+          &.radius {
+            border-radius: 50%;
+          }
+        }
+      }
+    }
+
+    .login-footer {
+      position: fixed;
+      bottom: 1rem;
+      width: 100%;
+      text-align: center;
+      color: white;
+      font-size: 0.85rem;
+      line-height: 1rem;
+      height: 1rem;
+    }
+
+    .tips {
+      font-size: 14px;
+      color: #fff;
+      margin-bottom: 10px;
+
+      span {
+        &:first-of-type {
+          margin-right: 16px;
+        }
+      }
+    }
+
+    .title-container {
+      position: relative;
+
+      .title {
+        font-size: 20px;
+        color: #FFFFFF;
+        margin: 0 auto 40px auto;
+        text-align: center;
+        font-weight: bold;
+      }
+
+      .set-language {
+        color: #aaa;
+        position: absolute;
+        top: 3px;
+        font-size: 18px;
+        right: 0;
+        cursor: pointer;
+      }
+    }
+
+    .thirdparty-button {
+      position: absolute;
+      right: 0;
+      bottom: 6px;
+    }
+
+    @media only screen and (max-width: 470px) {
+      .thirdparty-button {
+        display: none;
+      }
+    }
+
+    @media screen and (max-width: 1100px) {
+      .login-info {
+        left: 8%;
+      }
+    }
+
+    @media screen and (max-width: 970px) {
+      .login-form {
+        left: 50%;
+      }
+      .login-info {
+        display: none;
+      }
+    }
+  }
+</style>

+ 548 - 0
imcs-ui/src/views/zuihou/centralToolMagazine/cutterTestData/Index.vue

@@ -0,0 +1,548 @@
+<template>
+  <div class="app-container">
+    <!-- 搜索模块 -->
+    <div class="filter-container">
+      <span>
+        <span>刀具名:</span>
+        <el-input
+          v-model="queryParams.model.cutterName"
+          :placeholder="$t('common.pleaseEnter')"
+          style="width: 150px"
+          size="medium"
+        />
+      </span>
+      <span>
+        <span>刀号:</span>
+        <el-input
+          v-model="queryParams.model.cutterT"
+          :placeholder="$t('common.pleaseEnter')"
+          style="width: 150px"
+          size="medium"
+        />
+      </span>
+      <span style="margin-left: 15px">
+        <span>刀具类型:</span>
+        <el-select v-model="queryParams.model.cutterTyp" clearable :placeholder="$t('common.pleaseEnter')">
+          <el-option
+            v-for="item in cutterTypList"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value">
+          </el-option>
+        </el-select>
+      </span>
+      <span style="margin-left: 15px">
+        <span>数据状态:</span>
+        <el-select v-model="queryParams.model.status" clearable :placeholder="$t('common.pleaseEnter')">
+          <el-option
+            v-for="item in cutterStatusList"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value">
+          </el-option>
+        </el-select>
+      </span>
+      <span style="margin-left: 15px">
+        <el-button plain type="primary" icon="el-icon-search" size="medium" @click="search">
+	        {{ $t("table.search") }}
+	      </el-button>
+        <el-button plain type="warning" icon="el-icon-refresh" size="medium" @click="reset">
+	        {{ $t("table.reset") }}
+	      </el-button>
+      </span>
+    </div>
+    <!-- 搜索结束 -->
+
+    <!-- 功能按钮 -->
+    <!-- <el-row class="filter-container">
+    	<el-col>
+    		<el-button type="primary" icon="el-icon-plus" size="medium" v-has-permission="['classSchedule:add']" @click="add">{{ $t("common.add") }}</el-button>
+	      <el-button type="success" icon="el-icon-edit" size="medium" v-has-permission="['classSchedule:update']" @click="editOne">
+	        {{ $t("common.edit") }}
+	      </el-button>
+	      <el-button type="danger" icon="el-icon-delete" size="medium" v-has-permission="['classSchedule:delete']" @click="batchDelete">
+	        {{ $t("table.delete") }}
+	      </el-button>
+	      <el-button type="primary" icon="el-icon-thumb" size="medium" v-has-permission="['classSchedule:submitAudit']" @click="updateStatus('1')">{{$t("common.audio.addAudio")}}</el-button>
+	      <el-button type="primary" icon="el-icon-suitcase" size="medium" v-has-permission="['classSchedule:audit']" @click="audioBtn()">{{$t("common.audio.audio")}}</el-button>
+    	</el-col>
+    </el-row> -->
+
+		<!-- 列表数据 -->
+    <el-table
+      :key="tableKey"
+      ref="table"
+      v-loading="loading"
+      :data="tableData.records"
+      border
+      fit
+      row-key="id"
+      style="width: 100%;"
+      @selection-change="onSelectChange"
+      @cell-click="cellClick"
+    >
+    	<el-table-column :label='$t("common.serialNo")' width="55px" align="center">
+	      <template slot-scope="scope">
+	        <div>
+	          {{scope.$index+(queryParams.current - 1) * queryParams.size + 1}}
+	        </div>
+	      </template>
+      </el-table-column>
+      <el-table-column prop="cutterName" label='刀具名' width="200px"></el-table-column>
+      <el-table-column prop="cutterT" label='刀号' width="80px"></el-table-column>
+      <el-table-column prop="cutterTyp" label='刀具类型' width="100px"></el-table-column>
+      <el-table-column prop="cutterZl" label='刀具长度' width="100px"></el-table-column>
+      <el-table-column prop="cutterXl" label='刀具半径/直径' width="100px"></el-table-column>
+      <el-table-column prop="cutterRs" label='刀具R角' width="100px"></el-table-column>
+      <el-table-column prop="cutterTo" label='刀尖角' width="100px"></el-table-column>
+      <el-table-column prop="cutterOri" label='主轴定向角度' width="100px"></el-table-column>
+      <el-table-column prop="cutterTime2" label='刀具使用寿命' width="100px"></el-table-column>
+      <el-table-column prop="cutterPlcBit" label='内冷开' width="100px"></el-table-column>
+      <el-table-column prop="status" label='数据状态' width="100px"></el-table-column>
+      <el-table-column prop="cutterP" label='到位点' width="100px"></el-table-column>
+      <el-table-column prop="cutterPIp" label='到位点ip' width="100px"></el-table-column>
+    </el-table>
+    <pagination
+      v-show="tableData.total > 0"
+      :limit.sync="queryParams.size"
+      :page.sync="queryParams.current"
+      :total="Number(tableData.total)"
+      @pagination="fetch"
+    />
+
+  </div>
+</template>
+
+<script>
+	import Pagination from "@/components/Pagination"
+	// 【班表管理】-API
+	import classScheduleMgrApi from "@/api/modelingCenter/cutterTestData"
+	import { initDicts, initQueryParams } from '@/utils/commons'
+	export default {
+	  name: "WarehouseTypeMgr",
+	  components: { Pagination },
+	  props: {
+	  },
+	  data () {
+	    return {
+        cutterTypList: [{
+          value: 'A0',
+          label: '普通铣刀'
+        }, {
+          value: 'B0',
+          label: '粗铣刀'
+        }, {
+          value: 'C0',
+          label: '精铣刀'
+        }, {
+          value: 'D0',
+          label: '球头铣刀'
+        }, {
+          value: 'E0',
+          label: '盘铣刀'
+        }, {
+          value: 'F0',
+          label: '钻孔'
+        }, {
+          value: 'G0',
+          label: '攻丝'
+        }, {
+          value: 'H0',
+          label: '中心钻'
+        }, {
+          value: 'I',
+          label: '车刀'
+        }, {
+          value: 'I0',
+          label: '粗加工车刀'
+        }, {
+          value: 'I1',
+          label: '精加工车刀'
+        }, {
+          value: 'I2',
+          label: '螺纹加工刀'
+        }, {
+          value: 'I3',
+          label: '槽加工刀'
+        }, {
+          value: 'I4',
+          label: '圆钮车刀'
+        }, {
+          value: 'I5',
+          label: '切槽车刀'
+        }, {
+          value: 'J0',
+          label: '测头'
+        }, {
+          value: 'K0',
+          label: '铰孔'
+        }, {
+          value: 'L0',
+          label: '锪孔'
+        }, {
+          value: 'M0',
+          label: '定心锪孔'
+        }, {
+          value: 'N0',
+          label: '镗刀'
+        }, {
+          value: 'O0',
+          label: '反向镗刀'
+        }, {
+          value: 'P0',
+          label: '螺纹铣削'
+        }, {
+          value: 'Q0',
+          label: '螺纹铣削带锪孔'
+        }, {
+          value: 'R0',
+          label: '螺纹铣削带单螺纹'
+        }, {
+          value: 'S0',
+          label: '螺纹铣削带可转位刀片'
+        }, {
+          value: 'T0',
+          label: '螺纹铣削钻头'
+        }, {
+          value: 'U0',
+          label: '圆弧螺纹铣削'
+        }, {
+          value: 'V0',
+          label: '砂轮'
+        }, {
+          value: 'W0',
+          label: '修磨刀'
+        }],
+      cutterStatusList: [{
+          value: '0',
+          label: '数据解析失败'
+        }, {
+          value: '1',
+          label: '字段合格性错误'
+        }, {
+          value: '2',
+          label: '未推送机床'
+        }, {
+          value: '3',
+          label: '已推送机床'
+        }, {
+          value: '4',
+          label: '推送失败'
+        }],
+	    	objData: {}, // row对象数据
+	    	dialogVisible: false,
+	    	audioIsVisible: false,
+	    	audioVal: '2', //默认【审核通过】
+	    	tags: ['','warning','success','danger'],
+	    	audioStatus: [],
+	      dialog: {
+	        isVisible: false,
+	        title: ""
+	      },
+	      preview: {
+	        isVisible: false,
+	        context: ''
+	      },
+	      tenantViewVisible: false,
+	      tableKey: 0,
+	      queryParams: initQueryParams({}),
+	      selection: [],
+	      loading: false,
+	      tableData: {
+	        total: 0
+	      },
+	      dicts: {
+          NATION: {}
+        },
+	      enums: {
+	        TenantTypeEnum: {},
+	        TenantStatusEnum: {}
+	      }
+	    }
+	  },
+	  // 实例已经在内存中创建好,此时data和methods已将ok,如果要操作data中的数据或是调用methods中的方法,最早只能在created中操作
+	  created() {
+	  	// 调用常量-审核状态
+	  	// this.audioStatus = this.$constWKS.AUDIOLIST
+	  	// // 加载【字典】
+	  	// initDicts(['NATION'], this.dicts);
+	  	// 加载列表数据
+	  	this.fetch()
+		},
+	  computed: {
+	    currentUser () {
+	      return this.$store.state.account.user
+	    },
+	    nationList() {
+        return convertEnum(this.dicts.NATION)
+      }
+	  },
+	  mounted () {
+
+	  },
+	  methods: {
+	  	// 【设置班表】按钮-事件
+	  	settingClass(row){
+	  		this.objData = row
+	  		this.dialogVisible = true
+	  	},
+	  	// 【设置班表-取消】按钮事件
+	  	editClassClose(){
+	  		this.dialogVisible = false
+	  	},
+	  	// 【设置班表-确定】按钮事件
+	  	editClassSuccess(){
+
+	  	},
+	  	// 【提交审核】按钮-事件
+	    updateStatus(status){
+	    	if (!this.selection.length) {
+	        this.$message({
+	          message: this.$t("tips.noDataSelected"),
+	          type: "warning"
+	        })
+	        return
+	      }
+	    	if (this.selection.length > 1) {
+	        this.$message({
+	          message: this.$t("tips.mustOne"),
+	          type: "warning"
+	        })
+	        return
+	      }
+	    	// 调用API
+	    	this.audio(status)
+	    },
+	    // 【取消】审核按钮-事件
+	    colseAudio(){
+	    	this.audioIsVisible = false
+	    },
+	    // 【确定】审核按钮-事件
+	    audioOk(){
+	    	// 调用审核
+	    	this.audio(false)
+	    },
+	    // 【审核产品】-按钮事件
+	    audioBtn(){
+	    	if (!this.selection.length) {
+	        this.$message({
+	          message: this.$t("tips.noDataSelected"),
+	          type: "warning"
+	        })
+	        return
+	      }
+	    	if (this.selection.length > 1) {
+	        this.$message({
+	          message: this.$t("tips.mustOne"),
+	          type: "warning"
+	        })
+	        return
+	      }
+	    	this.audioIsVisible = true
+	    },
+	    // 【审核产品】-Table的Row操作事件
+	    audioBtnRow(row) {
+	    	// 清除所有的选择数据
+	    	this.$refs.table.clearSelection()
+	    	// 设置当前行为选中的数据
+	    	this.$refs.table.toggleRowSelection(row, true)
+	    	// 弹出审核页面
+	    	this.audioIsVisible = true
+	    },
+	    // 【审核通过/审核不通过】接口-事件
+	    audio(status){
+	    	if(!status){
+	    		status =  this.audioVal
+	    	}
+	    	// 赋值
+	    	this.selection[0].status = status
+	    	let msg = "提交审核成功!"
+	    	if(status == "2"){
+	    		msg = "审核通过!"
+	    	}
+	    	if(status == "3"){
+	    		msg = "审核不通过!"
+	    	}
+	    	classScheduleMgrApi.updateStatus({ id: this.selection[0].id, auditStatus: status}).then(response => {
+	        if (response.status == 200) {
+	        	// 如果是审核,成功后,关闭弹出框
+	        	if(status == '2' || status == '3'){
+	        		this.audioIsVisible = false
+	        		// 审核成功后,改成默认值
+	        		this.audioVal = '2'
+	        	}
+	          this.$message({
+	            message: msg,
+	            type: "success"
+	          })
+	          // 重新查询列表数据
+	          this.search()
+	        }
+	      })
+	    },
+	    viewClose () {
+	      this.tenantViewVisible = false
+	    },
+	    editClose () {
+	      this.dialog.isVisible = false
+	    },
+	    editSuccess () {
+	      this.search()
+	    },
+	    onSelectChange (selection) {
+	      this.selection = selection
+	    },
+	    search () {
+	      this.fetch({
+	        ...this.queryParams
+	      })
+	    },
+	    reset () {
+	      this.queryParams = initQueryParams({})
+	      this.$refs.table.clearSort()
+	      this.$refs.table.clearFilter()
+	      this.search()
+	    },
+	    add () {
+	      this.$refs.edit.type = "add"
+	      this.$refs.edit.setTenant(false, this.dicts)
+	      this.dialog.title = this.$t("common.add")
+	      this.dialog.isVisible = true
+	    },
+	    singleDelete (row) {
+	      this.$refs.table.clearSelection()
+	      this.$refs.table.toggleRowSelection(row, true)
+	      this.batchDelete()
+	    },
+	    batchDelete () {
+	      if (!this.selection.length) {
+	        this.$message({
+	          message: this.$t("tips.noDataSelected"),
+	          type: "warning"
+	        })
+	        return
+	      }
+
+	      this.$confirm(this.$t("calssSchedule.tips.schedulTips"), this.$t("common.tips"), {
+	      	distinguishCancelAndClose: true,
+	        confirmButtonText: this.$t("common.confirm"),
+	        cancelButtonText: this.$t("common.cancel"),
+	        type: "warning"
+	      }).then(() => {
+	      	const ids = []
+		      let contain = false
+		      this.selection.forEach(item => {
+		        if (item.readonly) {
+		          contain = true
+		          return
+		        }
+		        ids.push(item.id)
+		      })
+		      if (contain) {
+		        this.$message({
+		          message: this.$t("tips.systemData"),
+		          type: "warning"
+		        })
+		      } else {
+		        this.delete(ids)
+		      }
+	      }).catch(() => {})
+	    },
+	    clearSelections () {
+	      this.$refs.table.clearSelection()
+	    },
+	    delete (ids) {
+	      classScheduleMgrApi.remove({ ids: ids }).then(response => {
+	        const res = response.data
+	        if (res.isSuccess) {
+	          this.$message({
+	            message: this.$t("tips.deleteSuccess"),
+	            type: "success"
+	          })
+	          this.search()
+	          // 清理已经删除的数据
+	          this.$refs.table.clearSelection()
+	        }
+	      })
+	    },
+	    view (row) {
+	      this.$refs.view.setTenant(row)
+	      this.tenantViewVisible = true
+	    },
+	    // 【修改】表头上Btn-事件
+	    editOne() {
+	    	if (!this.selection.length) {
+	        this.$message({
+	          message: this.$t("tips.noDataSelected"),
+	          type: "warning"
+	        })
+	        return
+	      }
+	    	if (this.selection.length > 1) {
+	        this.$message({
+	          message: this.$t("tips.mustOne"),
+	          type: "warning"
+	        })
+	        return
+	      }
+	    	this.edit(this.selection[0]);
+	    },
+	    edit (row) {
+	      if (row.readonly) {
+	        this.$message({
+	          message: this.$t("tips.systemData"),
+	          type: "warning"
+	        })
+	        return
+	      }
+	      this.$refs.edit.setTenant(row, this.dicts)
+	      this.$refs.edit.type = "edit"
+	      this.dialog.title = this.$t("common.edit")
+	      this.dialog.isVisible = true
+	    },
+	    fetch (params = {}) {
+	  	  this.tableKey = !this.tableKey
+        this.selection  = []
+	      this.loading = true
+	      if (this.queryParams.timeRange) {
+	        this.queryParams.map.createTime_st = this.queryParams.timeRange[0]
+	        this.queryParams.map.createTime_ed = this.queryParams.timeRange[1]
+	      }
+
+	      this.queryParams.current = params.current ? params.current : this.queryParams.current
+	      this.queryParams.size = params.size ? params.size : this.queryParams.size
+	      classScheduleMgrApi.page(this.queryParams).then(response => {
+	        const res = response.data
+          console.log("====="+ res);
+	        if (res.isSuccess) {
+	          this.tableData = res.data
+	        }
+	        // eslint-disable-next-line no-return-assign
+	      }).finally(() => this.loading = false)
+
+	    },
+	    cellClick (row, column) {
+	      if (column['columnKey'] === "operation") {
+	        return
+	      }
+	      let flag = false
+	      this.selection.forEach((item) => {
+	        if (item.id === row.id) {
+	          flag = true
+	          this.$refs.table.toggleRowSelection(row)
+	        }
+	      })
+
+	      if (!flag) {
+	        this.$refs.table.toggleRowSelection(row, true)
+	      }
+	    }
+	  }
+	}
+</script>
+<style>
+	.dialogNoTop .el-dialog__body{
+		padding: 0;
+	}
+</style>
+<style lang="scss" scoped></style>