Explorar el Código

宝鸡牧场需求

baishaojie hace 5 meses
padre
commit
dff7f8269e

+ 1 - 1
.drone.yml

@@ -4,7 +4,7 @@ name: test
 
 steps:
   - name: build
-    image: plugins/docker
+    image: plugins/docker:20.14.2
     volumes:
       - name: hosts
         path: /etc/hosts

BIN
dist-tmr-20240726.zip


BIN
dist-tmr-20240729.zip


BIN
dist-tmr-20241121-正式.zip


BIN
dist-tmr-测试-20240716.zip


+ 114 - 116
src/utils/request.js

@@ -8,144 +8,142 @@ import Cookies from "js-cookie";
 const DoMainString = document.querySelector("html").getAttribute("domain");
 var URL = process.env.VUE_APP_BASE_API;
 if (DoMainString) {
-  URL = DoMainString;
+    URL = DoMainString;
 }
 
-var reg =
-  /(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)/;
-var browserUrl = window.location.hostname;
-// console.log("========url===",reg.test(browserUrl))
-//  内网跳转公司需要加这块代码
-// 注意: 端口号后面加’/‘ 防止导出报错 如:‘:8081/’
-// if (reg.test(browserUrl)) {
-//   URL = window.location.protocol + "//" + browserUrl + ":8081/";
-// }
+var reg = /(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)/;
+var browserUrl = window.location.hostname
+console.log("========url===", reg.test(browserUrl))
+if (reg.test(browserUrl)) {
+    // URL = window.location.protocol +"//"+ browserUrl + ":8082"
+    URL = window.location.protocol + "//" + browserUrl + ":8082/"
+}
 
 Cookies.set("url", URL);
 console.log(process.env.VUE_APP_BASE_API, "===========URL1111");
 console.log(URL, "===========URL");
 
 const service = axios.create({
-  baseURL: URL, // url = base url + request url
-  withCredentials: true, // send cookies when cross-domain requests
-  timeout: 60000, // request timeout
+    baseURL: URL, // url = base url + request url
+    withCredentials: true, // send cookies when cross-domain requests
+    timeout: 60000, // request timeout
 });
 // request interceptor
 service.interceptors.request.use(
-  (config) => {
-    // do something before request is sent
-    // config.headers['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'  //此处是增加的代码,设置请求头的类型
-    // debugger
-    console.log(process.env.VUE_APP_BASE_API, "process.env.VUE_APP_BASE_API");
-    if (process.env.VUE_APP_BASE_API !== "/dev-api") {
-      config.headers["Content-Type"] = "application/json;charset=UTF-8";
-      config.withCredentials = false;
-    }
-    console.log(config, "config");
+    (config) => {
+        // do something before request is sent
+        // config.headers['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'  //此处是增加的代码,设置请求头的类型
+        // debugger
+        console.log(process.env.VUE_APP_BASE_API, "process.env.VUE_APP_BASE_API");
+        if (process.env.VUE_APP_BASE_API !== "/dev-api") {
+            config.headers["Content-Type"] = "application/json;charset=UTF-8";
+            config.withCredentials = false;
+        }
+        console.log(config, "config");
 
-    if (store.getters.token) {
-      // let each request carry token
-      // ['Authorization'] is a custom headers key
-      // please modify it according to the actual situation
-      if (process.env.VUE_APP_BASE_API === "/dev-api") {
-        config.headers["X-Token"] = getToken();
-      } else {
-        config.headers["token"] = getToken();
-      }
+        if (store.getters.token) {
+            // let each request carry token
+            // ['Authorization'] is a custom headers key
+            // please modify it according to the actual situation
+            if (process.env.VUE_APP_BASE_API === "/dev-api") {
+                config.headers["X-Token"] = getToken();
+            } else {
+                config.headers["token"] = getToken();
+            }
+        }
+        return config;
+    },
+    (error) => {
+        // do something with request error
+        console.log(error); // for debug
+        return Promise.reject(error);
     }
-    return config;
-  },
-  (error) => {
-    // do something with request error
-    console.log(error); // for debug
-    return Promise.reject(error);
-  }
 );
 
 // response interceptor
 service.interceptors.response.use(
-  /**
-   * If you want to get http information such as headers or status
-   * Please return  response => response
-   */
+    /**
+     * If you want to get http information such as headers or status
+     * Please return  response => response
+     */
 
-  /**
-   * Determine the request status by custom code
-   * Here is just an example
-   * You can also judge the status by HTTP Status Code
-   */
-  (response) => {
-    const res = response.data;
+    /**
+     * Determine the request status by custom code
+     * Here is just an example
+     * You can also judge the status by HTTP Status Code
+     */
+    (response) => {
+        const res = response.data;
 
-    // if the custom code is not 20000, it is judged as an error.
-    if (res.code !== 200) {
-      Message({
-        // message: res.msg + res.code,
-        message: "请求超时",
-        type: "error",
-        duration: 5 * 1000,
-      });
+        // if the custom code is not 20000, it is judged as an error.
+        if (res.code !== 200) {
+            Message({
+                // message: res.msg + res.code,
+                message: "请求超时",
+                type: "error",
+                duration: 5 * 1000,
+            });
 
-      // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
-      if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
-        // to re-login
-        MessageBox.confirm("你已经注销登陆,你可以取消或重新登陆", "确认注销", {
-          confirmButtonText: "重新登陆",
-          cancelButtonText: "取消",
-          type: "warning",
-        }).then(() => {
-          store.dispatch("user/resetToken").then(() => {
-            location.reload();
-          });
+            // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
+            if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+                // to re-login
+                MessageBox.confirm("你已经注销登陆,你可以取消或重新登陆", "确认注销", {
+                    confirmButtonText: "重新登陆",
+                    cancelButtonText: "取消",
+                    type: "warning",
+                }).then(() => {
+                    store.dispatch("user/resetToken").then(() => {
+                        location.reload();
+                    });
+                });
+            }
+            if (res.code === 20002) {
+                store.dispatch("user/resetToken").then(() => {
+                    location.reload();
+                });
+            }
+            if (res.code === undefined) {
+                return res;
+            } else {
+                return Promise.reject(new Error(res.message || "Error"));
+            }
+        } else {
+            return res;
+        }
+    },
+    (error) => {
+        console.log("err" + error); // for debug
+        let config = error.config;
+        if (!config) {
+            Message({ message: error.message, type: "error", duration: 5 * 1000 });
+            return Promise.reject(error);
+        }
+        console.log("config==>", config); // for debug
+        console.log("config.__retryCount==>", config.__retryCount); // for debug
+        // 设置请求超时次数
+        config.__retryCount = config.__retryCount || 0;
+        if (config.__retryCount >= 3) {
+            // Message({ message:error.message, type: 'error', duration: 5 * 1000 })
+            Message({ message: "请求超时", type: "error", duration: 5 * 1000 });
+            // Message.error((error && error.data && error.data.msg) || '请求超时')
+            return Promise.reject(error);
+        }
+        config.__retryCount += 1;
+        let backoff = new Promise((resolve) => {
+            setTimeout(() => {
+                resolve();
+            }, config.retryDelay || 1000);
         });
-      }
-      if (res.code === 20002) {
-        store.dispatch("user/resetToken").then(() => {
-          location.reload();
+        return backoff.then(() => {
+            return service(config);
         });
-      }
-      if (res.code === undefined) {
-        return res;
-      } else {
-        return Promise.reject(new Error(res.message || "Error"));
-      }
-    } else {
-      return res;
-    }
-  },
-  (error) => {
-    console.log("err" + error); // for debug
-    let config = error.config;
-    if (!config) {
-      Message({ message: error.message, type: "error", duration: 5 * 1000 });
-      return Promise.reject(error);
-    }
-    console.log("config==>", config); // for debug
-    console.log("config.__retryCount==>", config.__retryCount); // for debug
-    // 设置请求超时次数
-    config.__retryCount = config.__retryCount || 0;
-    if (config.__retryCount >= 3) {
-      // Message({ message:error.message, type: 'error', duration: 5 * 1000 })
-      Message({ message: "请求超时", type: "error", duration: 5 * 1000 });
-      // Message.error((error && error.data && error.data.msg) || '请求超时')
-      return Promise.reject(error);
+        // Message({
+        //   message: error.message,
+        //   type: 'error',
+        //   duration: 5 * 1000
+        // })
+        // return Promise.reject(error)
     }
-    config.__retryCount += 1;
-    let backoff = new Promise((resolve) => {
-      setTimeout(() => {
-        resolve();
-      }, config.retryDelay || 1000);
-    });
-    return backoff.then(() => {
-      return service(config);
-    });
-    // Message({
-    //   message: error.message,
-    //   type: 'error',
-    //   duration: 5 * 1000
-    // })
-    // return Promise.reject(error)
-  }
 );
 
-export default service;
+export default service;

+ 1 - 0
src/views/basicData/feedTable/index.vue

@@ -817,6 +817,7 @@
           <el-row>
             <!-- onkeyup="value=value.replace(/[^\x00-\xff]/g, '')" -->
             <el-col :span="6">
+              <!-- onkeyup="value=value.replace(/[^\x00-\xff]/g, '')" -->
               <el-form-item label="备用字段01:" prop="backup1">
                 <el-input
                   ref="backup1"

+ 1 - 1
src/views/changpwd/changpwd/index.vue

@@ -17,7 +17,7 @@
         <el-input v-model="temp.password1" type="password" auto-complete="off" />
       </el-form-item>
       <el-form-item>
-        <el-button type="primary" @click.native.prevent="toAmend">确认修改</el-button>
+        <el-button type="primary" @click.native.prevent="toAmend"></el-button>
       </el-form-item>
     </el-form>
   </div>

+ 341 - 0
src/views/drawDot/index.vue

@@ -0,0 +1,341 @@
+<template>
+  <div id="app">
+    <!-- 图片区域 -->
+    <div class="box">
+      <div ref="imageArea" class="image-area" @click="handleClick">
+        <img src="../../assets/dot.jpeg" alt="图片" class="image" />
+        <template v-for="shape in shapes">
+          <div
+            v-for="(point, index) in shape.points"
+            :key="`shape-${shape.type}-point-${index}`"
+            :style="getPointStyle(point)"
+            class="point-marker"
+          ></div>
+          <div
+            v-if="shape.type === '1' || shape.type === '2'"
+            :style="getRectangleStyle(shape.points)"
+            class="rectangle"
+          ></div>
+          <polyline
+            v-if="shape.type === '3'"
+            :points="getLinePoints(shape.points)"
+            class="3"
+            fill="none"
+            stroke="red"
+            stroke-width="2"
+          />
+        </template>
+      </div>
+
+      <!--  -->
+      <div>
+        <h3 style="padding-left: 20px">鼠标点击获取图形坐标</h3>
+        <el-form
+          :model="formObj"
+          ref="formObj"
+          label-width="120px"
+          class="demo-dynamic"
+        >
+          <el-form-item label="区域类型:">
+            <el-radio-group v-model="currentShapeType" @change="changeType">
+              <el-radio label="1">卧床</el-radio>
+              <el-radio label="2">喷淋</el-radio>
+              <el-radio label="3">水槽</el-radio>
+            </el-radio-group>
+          </el-form-item>
+          <!-- 卧床 -->
+          <el-form-item
+            label="卧床(1):"
+            required
+            v-if="currentShapeType == '1'"
+          >
+            <div v-if="formObj.bed.length > 0" key="1">
+              <div>
+                <span style="padding-right: 20px"
+                  >左上:{{
+                    `X:${formObj.bed[0].x || ""}Y:${formObj.bed[0].y || ""}`
+                  }}</span
+                >
+                <span
+                  >右上:{{
+                    `X:${formObj.bed[1].x || ""}Y:${formObj.bed[1].y || ""}`
+                  }}</span
+                >
+              </div>
+              <div>
+                <span style="padding-right: 20px"
+                  >左下:{{
+                    `X:${formObj.bed[3].x || ""}Y:${formObj.bed[3].y || ""}`
+                  }}</span
+                >
+                <span
+                  >右下:{{
+                    `X:${formObj.bed[2].x || ""}Y:${formObj.bed[2].y || ""}`
+                  }}</span
+                >
+              </div>
+            </div>
+          </el-form-item>
+          <el-form-item
+            label="卧床(2):"
+            required
+            v-if="currentShapeType == '1'"
+          >
+            <div v-if="formObj.bed1.length > 0" key="2">
+              <div>
+                <span style="padding-right: 20px"
+                  >左上:{{
+                    `X:${formObj.bed1[0].x || ""}Y:${formObj.bed1[0].y || ""}`
+                  }}</span
+                >
+                <span
+                  >右上:{{
+                    `X:${formObj.bed1[1].x || ""}Y:${formObj.bed1[1].y || ""}`
+                  }}</span
+                >
+              </div>
+              <div>
+                <span style="padding-right: 20px"
+                  >左下:{{
+                    `X:${formObj.bed1[3].x || ""}Y:${formObj.bed1[3].y || ""}`
+                  }}</span
+                >
+                <span
+                  >右下:{{
+                    `X:${formObj.bed1[2].x || ""}Y:${formObj.bed1[2].y || ""}`
+                  }}</span
+                >
+              </div>
+            </div>
+          </el-form-item>
+          <!--喷淋  -->
+          <el-form-item label="喷淋:" required v-if="currentShapeType == '2'">
+            <div
+              v-if="formObj.spray.length > 0 && currentShapeType == '2'"
+              key="1"
+            >
+              <div>
+                <span style="padding-right: 20px"
+                  >左上:{{
+                    `X:${formObj.spray[0].x || ""}Y:${formObj.spray[0].y || ""}`
+                  }}</span
+                >
+                <span
+                  >右上:{{
+                    `X:${formObj.spray[1].x || ""}Y:${formObj.spray[1].y || ""}`
+                  }}</span
+                >
+              </div>
+              <div>
+                <span style="padding-right: 20px"
+                  >左下:{{
+                    `X:${formObj.spray[3].x || ""}Y:${formObj.spray[3].y || ""}`
+                  }}</span
+                >
+                <span
+                  >右下:{{
+                    `X:${formObj.spray[2].x || ""}Y:${formObj.spray[2].y || ""}`
+                  }}</span
+                >
+              </div>
+            </div>
+          </el-form-item>
+          <!--水槽  -->
+          <el-form-item label="水槽:" required v-if="currentShapeType == '3'">
+            <div v-if="formObj.sprayList.length > 0" key="1">
+              <div v-for="(item, index) in formObj.sprayList" :key="index">
+                <span style="padding-right: 20px"
+                  >第{{ index + 1 }}点:{{
+                    `X:${item.x || ""}Y:${item.y || ""}`
+                  }}</span
+                >
+              </div>
+            </div>
+          </el-form-item>
+
+          <el-form-item>
+            <el-button type="primary" @click="submitForm('formObj')"
+              >确认提交</el-button
+            >
+            <el-button @click="handleConfirm">重置</el-button>
+          </el-form-item>
+        </el-form>
+      </div>
+    </div>
+
+    <!-- 显示当前形状的坐标点 -->
+    <pre>{{ shapes }}</pre>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      currentShapeType: "1",
+      shapes: [],
+      currentPoints: [],
+
+      formObj: {
+        type: "1",
+        bed: [],
+        bed1: [],
+        spray: [],
+        sprayList: [],
+      },
+    };
+  },
+  methods: {
+    changeType(val) {
+      this.currentShapeType = val;
+      this.currentPoints = [];
+    },
+    resetShape() {
+      this.currentPoints = [];
+    },
+    handleClick(event) {
+      const rect = this.$refs.imageArea.getBoundingClientRect();
+      const x = event.clientX - rect.left;
+      const y = event.clientY - rect.top;
+      this.currentPoints.push({ x, y });
+      if (this.currentShapeType == "1") {
+        if (this.formObj.bed.length < 4) {
+          this.formObj.bed.push({ x, y });
+        } else {
+          this.formObj.bed1.push({ x, y });
+        }
+        console.log(this.formObj.bed, "hss");
+      } else if (this.currentShapeType == "2") {
+        this.formObj.spray = [...this.currentPoints];
+      } else if (this.currentShapeType == "3") {
+        this.formObj.sprayList = [...this.currentPoints];
+      }
+      const requiredPoints = this.getRequiredPointsForShape(
+        this.currentShapeType
+      );
+
+      if (this.currentPoints.length === requiredPoints) {
+        this.shapes.push({
+          type: this.currentShapeType,
+          points: [...this.currentPoints],
+        });
+
+        this.currentPoints = [];
+      }
+    },
+    getRequiredPointsForShape(shapeType) {
+      switch (shapeType) {
+        case "1":
+          return 4;
+        case "2":
+          return 4;
+        case "3":
+          return 8; // Example: 10 points for the 3
+        default:
+          return 4;
+      }
+    },
+    getPointStyle(point) {
+      return {
+        top: `${point.y}px`,
+        left: `${point.x}px`,
+        position: "absolute",
+        width: "10px",
+        height: "10px",
+        backgroundColor: "blue",
+        borderRadius: "50%",
+      };
+    },
+    getRectangleStyle(points) {
+      if (points.length < 4) return {};
+      const [leftup, leftdown, rightup, rightdown] = points;
+      const width = Math.abs(rightup.x - leftup.x);
+      const height = Math.abs(leftdown.y - rightdown.y);
+      return {
+        top: `${leftup.y}px`,
+        left: `${leftup.x}px`,
+        width: `${width}px`,
+        height: `${height}px`,
+        border: "2px solid red",
+        position: "absolute",
+      };
+    },
+    getLinePoints(points) {
+      return points.map((point) => `${point.x},${point.y}`).join(" ");
+    },
+    // 重置
+    handleConfirm() {
+      this.currentPoints = [];
+      this.shapes = [];
+      this.currentShapeType = "1";
+      this.formObj = {
+        bed: [],
+        bed1: [],
+        spray: [],
+        sprayList: [],
+      };
+    },
+    //
+    submitForm(formName) {
+      console.log(this.formObj, "提交");
+      this.$refs[formName].validate((valid) => {
+        if (valid) {
+          alert("submit!");
+        } else {
+          console.log("error submit!!");
+          return false;
+        }
+      });
+    },
+    resetForm(formName) {
+      this.$refs[formName].resetFields();
+    },
+    removeDomain(item) {
+      var index = this.formObj.bedList.indexOf(item);
+      if (index !== -1) {
+        this.formObj.bedList.splice(index, 1);
+      }
+    },
+    addDomain() {
+      this.formObj.bedList.push({
+        value: "",
+        key: Date.now(),
+      });
+    },
+  },
+};
+</script>
+
+<style scoped>
+.el-button {
+  padding: 10px;
+}
+.box {
+  display: flex;
+}
+.image-area {
+  position: relative;
+  width: 100%;
+  height: auto;
+  display: inline-block;
+  width: 700px;
+  height: 600px;
+}
+.image {
+  width: 100%;
+  height: auto;
+}
+.rectangle {
+  border: 2px solid red;
+  position: absolute;
+}
+.point-marker {
+  position: absolute;
+}
+.3 {
+  position: absolute;
+  fill: none;
+  stroke: red;
+  stroke-width: 2px;
+}
+</style>

+ 50 - 120
src/views/formulationPlan/dhedFormula/index.vue

@@ -805,13 +805,14 @@
               icon="el-icon-close"
               @click="updateCancel(row)"
             />
+
             <span v-if=" isRoleEdit" class="centerSpan"
               >|</span
             >
             <el-button
               v-if="isRoleEdit"
               class="minCancel"
-              icon="el-icon-s-order"
+              icon="el-icon-document"
               @click="ftDetails(row)"
             />
           </template>
@@ -1073,44 +1074,24 @@
 
 
     <el-dialog
-      :fullscreen="dialogFull"
+      :fullscreen="isFtDetails"
       :destroy-on-close="true"
-      :visible.sync="isFtDetails"
+      :visible.sync="ftdetailData.dialogFormVisible"
       :close-on-click-modal="false"
       width="90%"
+
     >
-      <template slot="title">
-        <div class="avue-crud__dialog__header">
-          <span class="el-dialog__title">
-            <span
-              style="
-                display: inline-block;
-                width: 3px;
-                height: 20px;
-                margin-right: 5px;
-                float: left;
-                margin-top: 2px;
-              "
-            />
-            {{ textMap[history.dialogStatus] }}
-          </span>
-          <div
-            class="avue-crud__dialog__menu"
-            @click="dialogFull ? (dialogFull = false) : (dialogFull = true)"
-          >
-            <svg-icon v-if="dialogFull" icon-class="exit-fullscreen" />
-            <svg-icon v-else icon-class="fullscreen" />
-          </div>
-        </div>
-      </template>
+    <template #title>
+    <div class="dialog-title-center">物料详情</div>
+  </template>
       <div class="app-history">
        
         <div class="table">
           <u-table
-            :key="history.tableKey"
-            v-loading="history.listLoading"
+            :key="ftdetailData.tableKey"
+            v-loading="ftdetailData.listLoading"
             element-loading-text="给我一点时间"
-            :data="history.list"
+            :data="ftdetailData.list"
             border
             fit
             highlight-current-row
@@ -1130,11 +1111,11 @@
               class-name="small-padding fixed-width"
               fixed="left"
             />
-       
+         
             <u-table-column
               :key="2"
-              label="栏舍名称"
-              prop="barname"
+              label="饲料名称"
+              prop="fname"
               min-width="90px"
               align="center"
               class-name="small-padding fixed-width"
@@ -1142,8 +1123,8 @@
             />
             <u-table-column
               :key="3"
-              label="班次"
-              prop="times"
+              label="重量"
+              prop="fweight"
               min-width="90px"
               align="center"
               class-name="small-padding fixed-width"
@@ -1151,119 +1132,47 @@
             />
             <u-table-column
               :key="4"
-              label="软件牛头数"
-              prop="softccount"
+              label="第一班重量"
+              prop="timesOne"
               min-width="70px"
               align="center"
             />
             <u-table-column
               :key="5"
-              label="实际牛头数"
-              prop="ccount"
+              label="第二班重量"
+              prop="timesTwo"
               min-width="70px"
               align="center"
             />
             <u-table-column
               :key="6"
-              label="系数(%)"
-              prop="ratio"
+              label="第三班重量"
+              prop="timesThree"
               min-width="70px"
               align="center"
             />
             <u-table-column
               :key="7"
-              label="系数头数"
-              prop="ccountratio"
+              label="第四班重量"
+              prop="timesFour"
               min-width="70px"
               align="center"
             />
             <u-table-column
               :key="8"
-              label="配方模板"
-              prop="ptname"
+              label="第五班重量"
+              prop="timesFive"
               min-width="70px"
               align="center"
             />
             <u-table-column
               v-if="table.isPtsfname"
               :key="9"
-              label="补料配方"
-              prop="ptsname"
-              min-width="70px"
-              align="center"
-            />
-            <u-table-column
-              :key="10"
-              label="班次比例"
-              prop="tratio"
-              min-width="70px"
-              align="center"
-            />
-            <u-table-column
-              :key="11"
-              label="班次重量"
-              prop="weight"
-              min-width="70px"
-              align="center"
-            />
-            <u-table-column
-              :key="12"
-              label="配方重量"
-              prop="pweight"
-              min-width="70px"
-              align="center"
-            />
-            <u-table-column
-              v-if="table.isPtsfname"
-              :key="13"
-              label="补料重量"
-              prop="ptweight"
-              min-width="70px"
-              align="center"
-            />
-            <u-table-column
-              :key="14"
-              label="配方干物质量"
-              prop="dryweight"
-              min-width="70px"
-              align="center"
-            />
-            <u-table-column
-              :key="15"
-              label="饲喂干物质量"
-              prop="swdryw"
-              min-width="70px"
-              align="center"
-            />
-            <u-table-column
-              :key="16"
-              label="采样干物质量"
-              prop="cydryw"
-              min-width="70px"
-              align="center"
-            />
-            <u-table-column
-              :key="17"
-              label="日投喂量"
-              prop="sumweight"
+              label="第六班重量"
+              prop="timesSix"
               min-width="70px"
               align="center"
             />
-            <u-table-column
-              :key="18"
-              label="操作"
-              prop="sumweight"
-              align="center"
-              width="80"
-              class-name="small-padding fixed-width"
-              fixed="right"
-            >
-              <template slot-scope="scope">
-                <span style="color: blue" @click="handleRestore(scope.row)"
-                  >恢复</span
-                >
-              </template>
-            </u-table-column>
           </u-table>
           <!-- <pagination2 v-show="history.total>0" :total="history.total" :page.sync="history.getdataListParm.offset" :limit.sync="history.getdataListParm.pagecount" @pagination="getHistoryList" /> -->
         </div>
@@ -1272,7 +1181,7 @@
         <el-button
           class="cancelClose cancelClose1"
           @click="
-            history.dialogFormVisible = false;
+            ftdetailData.dialogFormVisible = false;
             getList();
           "
           >关闭</el-button
@@ -2408,6 +2317,12 @@ export default {
           },
         },
       },
+      ftdetailData:{
+        dialogFormVisible: false,
+        list:[],
+        listLoading: true,
+        tableKey: 0,
+      },
       history: {
         dialogFormVisible: false,
         dialogStatus: "",
@@ -4779,6 +4694,15 @@ export default {
     ftDetails(row) {
       this.isFtDetails = false;
       this.isFtId = row.ftid;
+      this.ftdetailData.dialogFormVisible = true
+      this.ftdetailData.listLoading = false;
+      const url = "authdata/fpdetail/fname"
+      const data = {
+        id : row.barid
+      }
+      postJson(url, data).then((response) => {
+         this.ftdetailData.list = response.data
+      });
     },
     updateCancel(row) {
       console.log("点击了编辑取消");
@@ -6947,4 +6871,10 @@ export default {
 .red-row {
   background: #fde2e2 !important;
 }
+.dialog-title-center {
+  text-align: center; /* 文字水平居中 */
+  font-size: 16px;   /* 可选:调整字体大小 */
+  font-weight: bold; /* 可选:加粗字体 */
+  width: 100%;       /* 确保宽度充满 */
+}
 </style>

+ 209 - 209
src/views/login/index.vue

@@ -1,4 +1,4 @@
-<template>
+<template>
   <div class="login-container">
     <div class="new-login">
       <div class="new-login-l">
@@ -42,94 +42,94 @@
       </p>
 
     </div>
-  </div>
-</template>
-
-<script>
-import { validUsername } from '@/utils/validate'
+  </div>
+</template>
+
+<script>
+import { validUsername } from '@/utils/validate'
 import Cookies from 'js-cookie'
 import { getToken } from '@/utils/auth'
-const md5 = require("md5")
-export default {
-  name: 'Login',
-  data() {
-    const validateUsername = (rule, value, callback) => {
-      if (!validUsername(value)) {
-        callback(new Error('请输入正确的用户名'))
-      } else {
-        callback()
-      }
-    }
-    const validatePassword = (rule, value, callback) => {
-      if (value.length < 6) {
-        callback(new Error('密码不能少于6个字符'))
-      } else {
-        callback()
-      }
-    }
-    return {
-      loginForm: {
-        username: '',
-        password: ''
-      },
-      loginRules: {
-        username: [
-          { required: true, trigger: 'blur', validator: validateUsername }
-        ],
-        password: [
-          { required: true, trigger: 'blur', validator: validatePassword }
-        ]
-      },
-      loading: false,
-      passwordType: 'password',
+const md5 = require("md5")
+export default {
+  name: 'Login',
+  data() {
+    const validateUsername = (rule, value, callback) => {
+      if (!validUsername(value)) {
+        callback(new Error('请输入正确的用户名'))
+      } else {
+        callback()
+      }
+    }
+    const validatePassword = (rule, value, callback) => {
+      if (value.length < 6) {
+        callback(new Error('密码不能少于6个字符!!'))
+      } else {
+        callback()
+      }
+    }
+    return {
+      loginForm: {
+        username: '',
+        password: ''
+      },
+      loginRules: {
+        username: [
+          { required: true, trigger: 'blur', validator: validateUsername }
+        ],
+        password: [
+          { required: true, trigger: 'blur', validator: validatePassword }
+        ]
+      },
+      loading: false,
+      passwordType: 'password',
       redirect: undefined,
-      rememberPassword: ''
-    }
-  },
-  watch: {
-    $route: {
-      handler: function(route) {
-        this.redirect = route.query && route.query.redirect
-      },
-      immediate: true
-    }
-  },
-  created() {
-    var that = this
-    document.onkeydown = function(e) {
-      e = window.event || e
-      // eslint-disable-next-line eqeqeq
-      if (that.$route.path == '/login' && (e.code == 'Enter' || e.code == 'Num Enter')) { // 验证在登录界面和按得键是回车键enter
-        that.handleLogin('ruleForm2') // 登录函数 (handleSubmit2('ruleForm2')-登录按钮的点击事件)
-      }
-    }
+      rememberPassword: ''
+    }
+  },
+  watch: {
+    $route: {
+      handler: function(route) {
+        this.redirect = route.query && route.query.redirect
+      },
+      immediate: true
+    }
+  },
+  created() {
+    var that = this
+    document.onkeydown = function(e) {
+      e = window.event || e
+      // eslint-disable-next-line eqeqeq
+      if (that.$route.path == '/login' && (e.code == 'Enter' || e.code == 'Num Enter')) { // 验证在登录界面和按得键是回车键enter
+        that.handleLogin('ruleForm2') // 登录函数 (handleSubmit2('ruleForm2')-登录按钮的点击事件)
+      }
+    }
   },
   mounted: function() {
     // 读取cookie中的账号信息,如果有accountInfo的话,则说明该用户之前勾选了记住密码的功能,则需要自动填上账号密码
     this.loadAccountInfo()
-  },
-  methods: {
-    showPwd() {
-      if (this.passwordType === 'password') {
-        this.passwordType = ''
-      } else {
-        this.passwordType = 'password'
-      }
-      this.$nextTick(() => {
-        this.$refs.password.focus()
-      })
-    },
+  },
+  methods: {
+    showPwd() {
+      if (this.passwordType === 'password') {
+        this.passwordType = ''
+      } else {
+        this.passwordType = 'password'
+      }
+      this.$nextTick(() => {
+        this.$refs.password.focus()
+      })
+    },
     handleLogin() {
       var obj = {
         username: this.loginForm.username,
         password: md5(this.loginForm.password)
       }
       var rememberStatus = this.rememberPassword
-      var accountInfo = this.loginForm.username + '&' + this.loginForm.password
-      this.$refs.loginForm.validate(valid => {
-        if (valid) {
+      var accountInfo = this.loginForm.username + '&' + this.loginForm.password
+      this.$refs.loginForm.validate(valid => {
+        if (valid) {
           this.loading = true
-          this.$store.dispatch('user/login', obj).then(() => {
+          this.$store.dispatch('user/login', obj).then(() => {
           // this.$store.dispatch('user/login', this.loginForm).then(() => {
               if (rememberStatus) {
                 console.log('勾选了记住密码,现在开始写入cookie')
@@ -142,18 +142,18 @@ export default {
               // 若为本地环境 则手写cookie
               if (window.location.href.indexOf('localhost') != -1) {
                 Cookies.set('token', getToken(), 1440)
-              }
-              this.$router.push({ path: this.redirect || '/' })
-              this.loading = false
-            })
-            .catch(() => {
-              this.loading = false
-            })
-        } else {
-          console.log('error submit!!')
-          return false
-        }
-      })
+              }
+              this.$router.push({ path: this.redirect || '/' })
+              this.loading = false
+            })
+            .catch(() => {
+              this.loading = false
+            })
+        } else {
+          console.log('error submit!!')
+          return false
+        }
+      })
     },
     doRememberPassword() {
       const rememberStatus = this.rememberPassword
@@ -181,50 +181,50 @@ export default {
         _this.loginForm.password = passWord
         _this.rememberPassword = true
       }
-    }
-  }
-}
-</script>
-
-<style lang="scss">
-/* 修复input 背景不协调 和光标变色 */
-/* Detail see https://github.com/PanJiaChen/vue-element-admin/pull/927 */
-
-// $bg: #283443;
-// $light_gray: #fff;
-// $cursor: #fff;
-// 更改
-// $bg: #ccc;
-// $light_gray: #ccc;
-// $cursor: #000;
-// @supports (-webkit-mask: none) and (not (cater-color: $cursor)) {
-//   .login-container .el-input input {
-//     color: $cursor;
-//   }
-// }
+    }
+  }
+}
+</script>
+
+<style lang="scss">
+/* 修复input 背景不协调 和光标变色 */
+/* Detail see https://github.com/PanJiaChen/vue-element-admin/pull/927 */
+
+// $bg: #283443;
+// $light_gray: #fff;
+// $cursor: #fff;
+// 更改
+// $bg: #ccc;
+// $light_gray: #ccc;
+// $cursor: #000;
+// @supports (-webkit-mask: none) and (not (cater-color: $cursor)) {
+//   .login-container .el-input input {
+//     color: $cursor;
+//   }
+// }
 // .login-container {
-//   min-height: 232px;
-//   .el-input {
-//     display: inline-block;
-//     height: 38px;
-//     width: 80%;
-
-//     input {
-//       background: #fff;
-//       border: 0px;
-//       -webkit-appearance: none;
-//       border-radius: 0px;
-//       padding: 5px 5px 5px 15px;
-//       color: #000;
-//       height: 16.7%;
-//       caret-color: $cursor;
-
-//       &:-webkit-autofill {
-//         box-shadow: 0 0 0px 1000px $bg inset !important;
-//         -webkit-text-fill-color: $cursor !important;
-//       }
-//     }
-//   }
+//   min-height: 232px;
+//   .el-input {
+//     display: inline-block;
+//     height: 38px;
+//     width: 80%;
+
+//     input {
+//       background: #fff;
+//       border: 0px;
+//       -webkit-appearance: none;
+//       border-radius: 0px;
+//       padding: 5px 5px 5px 15px;
+//       color: #000;
+//       height: 16.7%;
+//       caret-color: $cursor;
+
+//       &:-webkit-autofill {
+//         box-shadow: 0 0 0px 1000px $bg inset !important;
+//         -webkit-text-fill-color: $cursor !important;
+//       }
+//     }
+//   }
 //   .el-form-item {
 //       border: 1px solid rgba(255, 255, 255, 0.1);
 //       background: #fff;
@@ -256,10 +256,10 @@ export default {
 //       overflow: hidden;
 //     }
 //     .btn  span{width:72%;background:#01996a;border: #01996a;border-radius: 5px;line-height: 40px; text-align: center;color:#fff; margin: 0 auto;display: block;}
-
+
 //   }
-
-</style>
+
+</style>
 
 /* <style>
 
@@ -269,85 +269,85 @@ export default {
     -webkit-text-fill-color: #000 !important;
 }
 
-</style> */
-// <style lang="scss" scoped>
-// $bg: #2d3a4b;
-// $dark_gray: #999;
-// $light_gray: #000;
-
-// .login-container {
-//   min-height: 100%;
+</style> */
+// <style lang="scss" scoped>
+// $bg: #2d3a4b;
+// $dark_gray: #999;
+// $light_gray: #000;
+
+// .login-container {
+//   min-height: 100%;
 //   width: 100%;
-//   height: 100%;
-//   position: relative;
-//   background: url("../../assets/images/nlogin-bg.png") no-repeat;
-//   background-size:100%;
-//   overflow: hidden;
-//   .login {
-//     border-radius: 5%;
-//     padding: 30px;
-//     background: rgba(0,0,0,0.4);
-//     width: 380px;
-//     height: 340px;
-//     position: relative;
+//   height: 100%;
+//   position: relative;
+//   background: url("../../assets/images/nlogin-bg.png") no-repeat;
+//   background-size:100%;
+//   overflow: hidden;
+//   .login {
+//     border-radius: 5%;
+//     padding: 30px;
+//     background: rgba(0,0,0,0.4);
+//     width: 380px;
+//     height: 340px;
+//     position: relative;
 //     top: 50%;
 //     left: 50%;
 //     margin-left: -190px;
 //     margin-top: -270px;
-//     box-shadow:0px 0px 10px #fff;
+//     box-shadow:0px 0px 10px #fff;
 //     .login-form {
-//       margin-top: 60px;
-//       position: relative;
-//       width: 520px;
-//       max-width: 100%;
-//       overflow: hidden;
-//     }
-
-//     .tips {
-//       font-size: 14px;
-//       color: #fff;
-//       margin-bottom: 10px;
-
-//       span {
-//         &:first-of-type {
-//           margin-right: 16px;
-//         }
-//       }
-//     }
-
-//     .svg-container {
-//       padding: 6px 5px 6px 15px;
-//       color: $dark_gray;
-//       vertical-align: middle;
-//       width: 30px;
-//       display: inline-block;
-//     }
-
-//       .title {
-//         font-size: 26px;
-//         color: $light_gray;
-//         margin: 0px auto 0 auto;
-//         text-align: center;
-//         font-weight: bold;
-//       }
-//       b {
-//         text-align: center;
-//         font: 14px/2 "";
-//       }
-
-//     .show-pwd {
-//       position: absolute;
-//       right: 10px;
-//       top: 7px;
-//       font-size: 16px;
-//       color: $dark_gray;
-//       cursor: pointer;
-//       user-select: none;
-//     }
+//       margin-top: 60px;
+//       position: relative;
+//       width: 520px;
+//       max-width: 100%;
+//       overflow: hidden;
+//     }
+
+//     .tips {
+//       font-size: 14px;
+//       color: #fff;
+//       margin-bottom: 10px;
+
+//       span {
+//         &:first-of-type {
+//           margin-right: 16px;
+//         }
+//       }
+//     }
+
+//     .svg-container {
+//       padding: 6px 5px 6px 15px;
+//       color: $dark_gray;
+//       vertical-align: middle;
+//       width: 30px;
+//       display: inline-block;
+//     }
+
+//       .title {
+//         font-size: 26px;
+//         color: $light_gray;
+//         margin: 0px auto 0 auto;
+//         text-align: center;
+//         font-weight: bold;
+//       }
+//       b {
+//         text-align: center;
+//         font: 14px/2 "";
+//       }
+
+//     .show-pwd {
+//       position: absolute;
+//       right: 10px;
+//       top: 7px;
+//       font-size: 16px;
+//       color: $dark_gray;
+//       cursor: pointer;
+//       user-select: none;
+//     }
 
 //     .kpt{text-align: center;color: #fff;display: inline-block;width: 100%;font:12px/18px '';}
-//   }
-// }
+//   }
+// }
 // </style>
 // <style lang="scss" scoped>
 //   .login-container {
@@ -404,11 +404,11 @@ export default {
 //   }
 // </style>
 <style lang="scss" scoped>
-$bg: #2d3a4b;
-$dark_gray: #999;
+$bg: #2d3a4b;
+$dark_gray: #999;
 $light_gray: #000;
-$bg: #ccc;
-$light_gray: #ccc;
+$bg: #ccc;
+$light_gray: #ccc;
 $cursor: #000;
 .login-container{
   position: relative;height: 100%;width: 100%;background:  url("../../assets/images/nlogin-bg1.jpg") no-repeat;background-size: cover;
@@ -448,4 +448,4 @@ $cursor: #000;
       }
     }
 }
-</style>
+</style>

+ 144 - 161
src/views/statisticalAnalysis/pushingplan/index.vue

@@ -1,4 +1,4 @@
- <template>
+<template>
   <div class="app-container">
     <div class="search">
       <el-date-picker
@@ -153,45 +153,29 @@
         </div>
       </template>
       <!-- <div style="margin-bottom: 20px;background-image: url('http://niu305.cn:8091/uploads/image/headphoto1.png');background-position: top right;"> -->
-        <div>
-          <h3>推料计划详情</h3>
-          <div class="run-box-rg">
-            <div>
-              <span>推料车:</span>{{runDate.tname || '暂无'}}
-            </div>
-            <div>
-              <span>备注:</span>{{runDate.remark || '暂无'}}
-            </div>
-            <div>
-              <span>计划开始时间:</span>{{runDate.plandate || '暂无'}}
-            </div>
-            <div>
-              <span>实际开始时间:</span>{{runDate.startdate || '暂无'}}
-            </div>
-            <div>
-              <span>偏差分钟数:</span>{{runDate.deviation || '暂无'}}
-            </div>
-            <div>
-              <span>实际结束时间:</span>{{runDate.enddate || '暂无'}}
-            </div>
-            <div>
-              <span>实际时长:</span>{{runDate.dates || '暂无'}} 分钟
-            </div>
+      <div>
+        <h3>推料计划详情</h3>
+        <div class="run-box-rg">
+          <div><span>推料车:</span>{{ runDate.tname }}</div>
+          <div><span>备注:</span>{{ runDate.remark }}</div>
+          <div><span>计划开始时间:</span>{{ runDate.plandate }}</div>
+          <div><span>实际开始时间:</span>{{ runDate.startdate }}</div>
+          <div><span>偏差分钟数:</span>{{ runDate.deviation }}</div>
+          <div><span>实际结束时间:</span>{{ runDate.enddate }}</div>
+          <div><span>实际时长:</span>{{ runDate.dates }} 分钟</div>
 
-            <div>
-              <span>推料栏舍顺序:</span>{{ runDate.bname || '暂无' }}
-            </div>
-          </div>
-          <div ref="map" class="map-container"></div>
+          <div><span>推料栏舍顺序:</span>{{ runDate.bname }}</div>
         </div>
+        <div ref="map" class="map-container"></div>
+      </div>
 
       <!-- </div> -->
       <div slot="footer" class="dialog-footer">
         <el-button
           class="cancelClose1"
           @click="
-            run.dialogFormVisible = false
-            getList()
+            run.dialogFormVisible = false;
+            getList();
           "
           >关闭</el-button
         >
@@ -206,40 +190,40 @@ import {
   postJson,
   getJson,
   formatNum,
-  checkButtons
-} from '@/api/common'
-import { parseTime } from '@/utils/index.js'
-import { MessageBox } from 'element-ui'
-import Cookies from 'js-cookie'
-import axios from 'axios'
-import { getToken } from '@/utils/auth'
-import { createApp } from 'vue'
-import AMapLoader from '@amap/amap-jsapi-loader'
+  checkButtons,
+} from "@/api/common";
+import { parseTime } from "@/utils/index.js";
+import { MessageBox } from "element-ui";
+import Cookies from "js-cookie";
+import axios from "axios";
+import { getToken } from "@/utils/auth";
+import { createApp } from "vue";
+import AMapLoader from "@amap/amap-jsapi-loader";
 // import vLoUrl from '../../../assets/images/tet.png'
-import vLoUrl from '../../../assets/images/guiji2.jpeg'
+import vLoUrl from "../../../assets/images/guiji2.jpeg";
 window._AMapSecurityConfig = {
-  securityJsCode: '0133db0118e961029dc45a2d5039cbb1' // '「申请的安全密钥」',
-}
+  securityJsCode: "0133db0118e961029dc45a2d5039cbb1", // '「申请的安全密钥」',
+};
 export default {
-  name: 'Pushingplan',
+  name: "Pushingplan",
   data() {
     return {
-      runDate:{},
+      runDate: {},
       currentPage: 1,
       table: {
         offset: 1,
-        name: 'getTmrEqipmemtList',
+        name: "getTmrEqipmemtList",
         pagecount: 50,
         parammaps: {
           // pastureid: Cookies.get('pastureid'),
-          tname: '',
-          startdate: '',
-          enddate: '',
-          inputDatetime: null
+          tname: "",
+          startdate: "",
+          enddate: "",
+          inputDatetime: null,
           // startdate: parseTime(new Date(), '{y}-{m}-{d}'),
           // enddate: parseTime(new Date(), '{y}-{m}-{d}'),
           // inputDatetime: [new Date(), new Date()],
-        }
+        },
       },
       tableKey: 0,
       list: [],
@@ -248,14 +232,14 @@ export default {
 
       run: {
         dialogFormVisible: false,
-        dialogStatus: '',
-        temp: {}
+        dialogStatus: "",
+        temp: {},
       },
       dialogFull: false,
       isRoleEdit: [],
       isokDisable: false,
-      rowStyle: { maxHeight: 30 + 'px', height: 30 + 'px' },
-      cellStyle: { padding: 0 + 'px' },
+      rowStyle: { maxHeight: 30 + "px", height: 30 + "px" },
+      cellStyle: { padding: 0 + "px" },
       myHeight: document.documentElement.clientHeight - 85 - 150,
       map: null,
       path: [],
@@ -269,126 +253,126 @@ export default {
       latitude: 40.87873, // 实景图所在位置的纬度
       longitude: 113.216553, // 实景图所在位置的经度
       zoom: 17, // 实景
-      apiKey: 'fb6a0e88dbad4931d96a121bcf7c4442',
-      vLoUrl
-    }
+      apiKey: "fb6a0e88dbad4931d96a121bcf7c4442",
+      vLoUrl,
+    };
   },
 
   mounted() {
     // this.initMap();
   },
   created() {
-    this.getButtons()
-    this.getList()
-    var totalTimeInMinutes = this.timeStringToMinutes('12:20:27');
-     console.log(totalTimeInMinutes);
+    this.getButtons();
+    this.getList();
+    var totalTimeInMinutes = this.timeStringToMinutes("12:20:27");
+    console.log(totalTimeInMinutes);
   },
 
   methods: {
     // 点击查看的时候获取 推车的数据并去获取推料的原计划
     timeStringToMinutes(timeString) {
-    var timeParts = timeString.split(':');
-    var hours = parseInt(timeParts[0]);
-    var minutes = parseInt(timeParts[1]);
-    var seconds = parseInt(timeParts[2]);
-    return (hours * 60 + minutes + seconds / 60).toFixed(2) ;
-},
+      var timeParts = timeString.split(":");
+      var hours = parseInt(timeParts[0]);
+      var minutes = parseInt(timeParts[1]);
+      var seconds = parseInt(timeParts[2]);
+      return (hours * 60 + minutes + seconds / 60).toFixed(2);
+    },
     // 分页
     handleSizeChange(val) {
-      console.log(`每页 ${val} 条`)
-      this.table.pagecount = val
-      this.table.offset = 1
-      this.currentPage = 1
-      this.getList()
+      console.log(`每页 ${val} 条`);
+      this.table.pagecount = val;
+      this.table.offset = 1;
+      this.currentPage = 1;
+      this.getList();
     },
     handleCurrentChange(val) {
-      console.log(`当前页: ${val}`)
-      this.currentPage = val
-      this.table.offset = val
-      this.getList()
+      console.log(`当前页: ${val}`);
+      this.currentPage = val;
+      this.table.offset = val;
+      this.getList();
     },
     getButtons() {
-      const Edit = 'Pushingplan'
+      const Edit = "Pushingplan";
       const isRoleEdit = checkButtons(
-        JSON.parse(sessionStorage.getItem('buttons')),
+        JSON.parse(sessionStorage.getItem("buttons")),
         Edit
-      )
-      this.isRoleEdit = isRoleEdit
+      );
+      this.isRoleEdit = isRoleEdit;
     },
 
     getList() {
-      this.listLoading = true
-      let url = '/authdata/GetDataByName'
-      let data = this.table
+      this.listLoading = true;
+      let url = "/authdata/GetDataByName";
+      let data = this.table;
 
       if (this.table.parammaps.inputDatetime !== null) {
         data.parammaps.startdate = parseTime(
           this.table.parammaps.inputDatetime[0],
-          '{y}-{m}-{d}'
-        )
+          "{y}-{m}-{d}"
+        );
         data.parammaps.enddate = parseTime(
           this.table.parammaps.inputDatetime[1],
-          '{y}-{m}-{d}'
-        )
+          "{y}-{m}-{d}"
+        );
       } else {
-        data.parammaps.startdate = ''
-        data.parammaps.enddate = ''
+        data.parammaps.startdate = "";
+        data.parammaps.enddate = "";
       }
       postJson(url, data).then((response) => {
         if (response.data.list !== null) {
-          let arr = JSON.parse(JSON.stringify(response.data.list))
-          arr.forEach((item)=>{
-             item.dates = this.timeStringToMinutes(item.date) || item.date;
-             item.deviation = this.timeStringToMinutes(item.deviation) || item.deviation;
-          })
-          this.list = arr
-
+          let arr = JSON.parse(JSON.stringify(response.data.list));
+          arr.forEach((item) => {
+            item.dates = this.timeStringToMinutes(item.date) || item.date;
+            item.deviation =
+              this.timeStringToMinutes(item.deviation) || item.deviation;
+          });
+          this.list = arr;
         } else {
-          this.list = []
+          this.list = [];
         }
-        this.total = response.data.total
+        this.total = response.data.total;
         setTimeout(() => {
-          this.listLoading = false
-        }, 100)
-      })
+          this.listLoading = false;
+        }, 100);
+      });
     },
 
     form_search() {
-      console.log('点击了查询')
-      this.getList()
+      console.log("点击了查询");
+      this.getList();
     },
     handleRefresh() {
-      this.table.parammaps.tname = ''
-      this.table.parammaps.inputDatetime = null
-      this.getList()
+      this.table.parammaps.tname = "";
+      this.table.parammaps.inputDatetime = null;
+      this.getList();
     },
     handleRunning_trajectory(row) {
       this.runDate = row;
-      console.log('点击了运行轨迹',this.runDate );
+      console.log("点击了运行轨迹", this.runDate);
 
-      this.run.dialogStatus = 'run'
-      this.run.dialogFormVisible = true
-      this.run.temp = Object.assign({}, row)
-      this.getRuningList()
+      this.run.dialogStatus = "run";
+      this.run.dialogFormVisible = true;
+      this.run.temp = Object.assign({}, row);
+      this.getRuningList();
     },
 
     getRuningList() {
-      let url = '/authdata/equipment/muster'
-      let data = '?id=' + this.run.temp.id
+      let url = "/authdata/equipment/muster";
+      let data = "?id=" + this.run.temp.id;
       getJson(url, data).then((response) => {
         // path
         // console.log('table数据', response.data.list)
         if (response.data !== null) {
-          let arrList = []
+          let arrList = [];
           for (let i = 0; i < response.data.length; i++) {
-            let list = []
+            let list = [];
             // let str= `${parseFloat(response.data[i].N)} ${parseFloat(response.data[i].A)} `
             list.push(
               parseFloat(response.data[i].N),
               parseFloat(response.data[i].A)
-            )
+            );
 
-            arrList.push(list)
+            arrList.push(list);
             ////////
             // let testArr =[];
             // testArr.push(parseFloat(response.data[i].A),parseFloat(response.data[i].N));
@@ -396,7 +380,7 @@ export default {
             //////
           }
 
-          this.path = arrList //真实数据
+          this.path = arrList; //真实数据
           //  console.log(JSON.stringify(arrList),'arrList')
           //  console.log(arrList.join('\n'),'9999999');
           // 测试数据
@@ -426,19 +410,19 @@ export default {
           // this.latitude = this.path[0][1] // 实景图所在位置的纬度
           // zoom: 15, // 实景
         } else {
-          this.path = []
+          this.path = [];
         }
-        this.initMap()
-      })
+        this.initMap();
+      });
     },
     async initMap() {
       await AMapLoader.load({
-        key: 'fb6a0e88dbad4931d96a121bcf7c4442', // 替换为你的高德地图API Key
-        version: '2.0',
-        plugins: []
-      }).then(() => {})
+        key: "fb6a0e88dbad4931d96a121bcf7c4442", // 替换为你的高德地图API Key
+        version: "2.0",
+        plugins: [],
+      }).then(() => {});
       // 后续牧场栏舍图
-      var backgroundImageUrl = this.vLoUrl // 示例图片链接
+      var backgroundImageUrl = this.vLoUrl; // 示例图片链接
       var imageLayer = new AMap.ImageLayer({
         url: backgroundImageUrl,
         bounds: new AMap.Bounds(
@@ -449,74 +433,73 @@ export default {
           [113.21478078, 40.87649131], //左下角;
           [113.23067741, 40.88588863] // 右上角
         ), //图片范围大小的经纬度,传入西南和东北的经纬度坐标
-        zooms: [15, 20]
-      })
+        zooms: [15, 20],
+      });
       this.map = new window.AMap.Map(this.$refs.map, {
         zoom: 18,
         // zIndex:2,
         center: [113.21549472999999, 40.879621060000005],
-        layers: [AMap.createDefaultLayer(), imageLayer]
-      })
+        layers: [AMap.createDefaultLayer(), imageLayer],
+      });
       const startMarker = new window.AMap.Marker({
         position: this.path[this.path.length - 1], // 起始点位置
         map: this.map,
-        icon: 'https://webapi.amap.com/theme/v1.3/markers/n/start.png' // 起始点图标
-      })
+        icon: "https://webapi.amap.com/theme/v1.3/markers/n/start.png", // 起始点图标
+      });
       const endMarker = new window.AMap.Marker({
         position: this.path[0],
         map: this.map,
-        icon: 'https://webapi.amap.com/theme/v1.3/markers/n/end.png' // 终点图标
-      })
+        icon: "https://webapi.amap.com/theme/v1.3/markers/n/end.png", // 终点图标
+      });
 
-      this.drawPath()
+      this.drawPath();
     },
     drawPath() {
       const polyline = new window.AMap.Polyline({
         path: this.path,
-        strokeStyle: 'red',
-        strokeColor: '#F9423A',
+        strokeStyle: "red",
+        strokeColor: "#F9423A",
         strokeOpacity: 1,
         strokeWeight: 3,
         map: this.map,
-        dirArrowStyle: true
-      })
+        dirArrowStyle: true,
+      });
 
       // 调整地图视图以适应轨迹
 
-      this.map.setFitView()
-      this.map.setZoom(18)
-    }
-  }
-}
+      this.map.setFitView();
+      this.map.setZoom(18);
+    },
+  },
+};
 </script>
 <style lang="scss" scoped>
-.run-box{
+.run-box {
   height: 600px;
 }
-.run-box-rg{
+.run-box-rg {
   display: flex;
-  justify-content:left;
+  justify-content: left;
   flex-direction: row;
   flex-wrap: wrap;
-  padding:  0px 20px;
-  font-size:16px;
-  border-bottom:1px dotted #eee;
+  padding: 0px 20px;
+  font-size: 16px;
+  border-bottom: 1px dotted #eee;
 }
-.run-box-rg div{
-  margin-bottom:10px;
-  margin-right:15px;
+.run-box-rg div {
+  margin-bottom: 10px;
+  margin-right: 15px;
+}
+.run-box-rg div > span {
+  font-size: 16px !important;
+  font-weight: 600;
 }
-.run-box-rg div>span{
-    font-size: 16px!important;
-    font-weight: 600;
-
-  }
 
 .map-container {
   height: 600px;
   // width: 840px;
   // border-right:1px dotted #eee;
-  padding:0 10px;
+  padding: 0 10px;
 }
 .search {
   clear: both;