Browse Source

Merge remote-tracking branch 'origin/master'

LIVE_YE 3 months ago
parent
commit
74ae99bec5

+ 1 - 1
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/Task.java

@@ -43,7 +43,7 @@ public class Task {
      * @throws Exception
      */
     @Async
-    //@Scheduled(cron = "0 0 23 * * ? ")
+    @Scheduled(cron = "0 0 23 * * ? ")
     public void popover() throws Exception {
         // 获取当前日期
         LocalDate currentDate = LocalDate.now();

+ 2 - 1
ruoyi-ui/.env.development

@@ -5,7 +5,8 @@ VUE_APP_TITLE = 园区安防监控数据管理平台
 ENV = 'development'
 
 # 园区安防监控数据管理平台/开发环境
-VUE_APP_BASE_API = '/dev-api'
+VUE_APP_BASE_API = 'dev-api'
+# dev-api
 
 # 路由懒加载
 VUE_CLI_BABEL_TRANSPILE_MODULES = true

+ 3 - 0
ruoyi-ui/package.json

@@ -58,9 +58,12 @@
     "quill": "1.3.7",
     "screenfull": "5.0.2",
     "sortablejs": "1.10.2",
+    "videojs-contrib-hls": "^5.15.0",
     "videojs-flash": "^2.2.1",
     "videojs-flvjs-es6": "^1.0.1",
     "vue": "2.6.12",
+    "vue-amap": "^0.5.10",
+    "vue-baidu-map": "^0.21.22",
     "vue-calendar-component": "^2.8.2",
     "vue-count-to": "1.0.13",
     "vue-cropper": "0.5.5",

+ 44 - 0
ruoyi-ui/src/api/system/box.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询包厢菜单列表
+export function listBox(query) {
+  return request({
+    url: '/system/box/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询包厢菜单详细
+export function getBox(menuBoxId) {
+  return request({
+    url: '/system/box/' + menuBoxId,
+    method: 'get'
+  })
+}
+
+// 新增包厢菜单
+export function addBox(data) {
+  return request({
+    url: '/system/box',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改包厢菜单
+export function updateBox(data) {
+  return request({
+    url: '/system/box/put',
+    method: 'post',
+    data: data
+  })
+}
+
+// 删除包厢菜单
+export function delBox(menuBoxId) {
+  return request({
+    url: '/system/box/delete/' + menuBoxId,
+    method: 'get'
+  })
+}

+ 18 - 2
ruoyi-ui/src/api/system/management.js

@@ -8,6 +8,14 @@ export function listInfo(query) {
     params: query
   })
 }
+export function noPage(query) {
+  return request({
+    url: '/system/user/list/noPage',
+    method: 'get',
+    params: query
+  })
+}
+
 
 // 查询打卡人员信息详细
 export function getInfo(userId) {
@@ -17,14 +25,22 @@ export function getInfo(userId) {
   })
 }
 
-// 新增打卡人员信息
+// 修改新增
 export function addInfo(data) {
   return request({
-    url: '/system/info',
+    url: '/system/info/add/all',
     method: 'post',
     data: data
   })
 }
+// 新增打卡人员信息
+// export function addInfo(data) {
+//   return request({
+//     url: '/system/info',
+//     method: 'post',
+//     data: data
+//   })
+// }
 
 // 修改打卡人员信息
 export function updateInfo(data) {

+ 25 - 0
ruoyi-ui/src/api/system/record.js

@@ -9,6 +9,31 @@ export function listRecord(query) {
   })
 }
 
+export function listRecordtj(query) {
+  return request({
+    url: '/system/clock/all/month',
+    method: 'get',
+    params: query
+  })
+}
+
+export function abnormal(query) {
+  return request({
+    url: '/system/clock/abnormal',
+    method: 'get',
+    params: query
+  })
+}
+export function details(query) {
+  return request({
+    url: '/system/clock/pc/details',
+    method: 'get',
+    params: query
+  })
+}
+
+
+
 // 查询打卡记录详细
 export function getRecord(clockId) {
   return request({

+ 1 - 1
ruoyi-ui/src/api/tongj/reservat.js

@@ -46,7 +46,7 @@ export function getReservat(reservatId) {
 // 新增陵园预约
 export function addReservat(data) {
   return request({
-    url: '/system/reservat',
+    url: '/system/reservat/add',
     method: 'post',
     data: data
   })

+ 226 - 0
ruoyi-ui/src/components/ImageUploadgdx/index.vue

@@ -0,0 +1,226 @@
+<template>
+  <div class="component-upload-image">
+    <el-upload
+      multiple
+      :action="uploadImgUrl"
+      list-type="picture-card"
+      :on-success="handleUploadSuccess"
+      :before-upload="handleBeforeUpload"
+      :limit="limit"
+      :on-error="handleUploadError"
+      :on-exceed="handleExceed"
+      ref="imageUpload"
+      :on-remove="handleDelete"
+      :show-file-list="true"
+      :headers="headers"
+      :file-list="fileList"
+      :on-preview="handlePictureCardPreview"
+      :class="{hide: this.fileList.length >= this.limit}"
+    >
+      <i class="el-icon-plus"></i>
+    </el-upload>
+    
+    <!-- 上传提示 -->
+    <div class="el-upload__tip" slot="tip" v-if="showTip">
+      请上传
+      <template v-if="fileSize"> 大小不超过 <b style="color: #f56c6c">{{ fileSize }}MB</b> </template>
+      <template v-if="fileType"> 格式为 <b style="color: #f56c6c">{{ fileType.join("/") }}</b> </template>
+      的文件
+    </div>
+
+    <el-dialog
+      :visible.sync="dialogVisible"
+      title="预览"
+      width="800"
+      append-to-body
+    >
+      <img
+        :src="dialogImageUrl"
+        style="display: block; max-width: 100%; margin: 0 auto"
+      />
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { getToken } from "@/utils/auth";
+
+export default {
+  props: {
+    value: [String, Object, Array],
+    // 图片数量限制
+    limit: {
+      type: Number,
+      default:20,
+    },
+    // 大小限制(MB)
+    fileSize: {
+       type: Number,
+      default: 900,
+    },
+    // 文件类型, 例如['png', 'jpg', 'jpeg']
+    fileType: {
+      type: Array,
+      default: () => ["png", "jpg", "jpeg"],
+    },
+    // 是否显示提示
+    isShowTip: {
+      type: Boolean,
+      default: true
+    }
+  },
+  data() {
+    return {
+      number: 0,
+      uploadList: [],
+      dialogImageUrl: "",
+      dialogVisible: false,
+      hideUpload: false,
+      baseUrl: process.env.VUE_APP_BASE_API,
+      uploadImgUrl: process.env.VUE_APP_BASE_API + "/common/upload", // 上传的图片服务器地址
+      headers: {
+        Authorization: "Bearer " + getToken(),
+      },
+      fileList: []
+    };
+  },
+  watch: {
+    value: {
+      handler(val) {
+        if (val) {
+          // 首先将值转为数组
+          const list = Array.isArray(val) ? val : this.value.split(',');
+          // 然后将数组转为对象数组
+          this.fileList = list.map(item => {
+            if (typeof item === "string") {
+              if (item.indexOf(this.baseUrl) === -1) {
+                  item = { name: this.baseUrl + item, url: this.baseUrl + item };
+              } else {
+                  item = { name: item, url: item };
+              }
+            }
+            return item;
+          });
+        } else {
+          this.fileList = [];
+          return [];
+        }
+      },
+      deep: true,
+      immediate: true
+    }
+  },
+  computed: {
+    // 是否显示提示
+    showTip() {
+      return this.isShowTip && (this.fileType || this.fileSize);
+    },
+  },
+  methods: {
+    // 上传前loading加载
+    handleBeforeUpload(file) {
+      let isImg = false;
+      if (this.fileType.length) {
+        let fileExtension = "";
+        if (file.name.lastIndexOf(".") > -1) {
+          fileExtension = file.name.slice(file.name.lastIndexOf(".") + 1);
+        }
+        isImg = this.fileType.some(type => {
+          if (file.type.indexOf(type) > -1) return true;
+          if (fileExtension && fileExtension.indexOf(type) > -1) return true;
+          return false;
+        });
+      } else {
+        isImg = file.type.indexOf("image") > -1;
+      }
+
+      if (!isImg) {
+        this.$modal.msgError(`文件格式不正确, 请上传${this.fileType.join("/")}图片格式文件!`);
+        return false;
+      }
+      if (this.fileSize) {
+        const isLt = file.size / 1024 / 1024 < this.fileSize;
+        if (!isLt) {
+          this.$modal.msgError(`上传头像图片大小不能超过 ${this.fileSize} MB!`);
+          return false;
+        }
+      }
+      this.$modal.loading("正在上传图片,请稍候...");
+      this.number++;
+    },
+    // 文件个数超出
+    handleExceed() {
+      this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`);
+    },
+    // 上传成功回调
+    handleUploadSuccess(res, file) {
+      if (res.code === 200) {
+        this.uploadList.push({ name: res.fileName, url: res.fileName });
+        this.uploadedSuccessfully();
+      } else {
+        this.number--;
+        this.$modal.closeLoading();
+        this.$modal.msgError(res.msg);
+        this.$refs.imageUpload.handleRemove(file);
+        this.uploadedSuccessfully();
+      }
+    },
+    // 删除图片
+    handleDelete(file) {
+      const findex = this.fileList.map(f => f.name).indexOf(file.name);
+      if(findex > -1) {
+        this.fileList.splice(findex, 1);
+        this.$emit("input", this.listToString(this.fileList));
+      }
+    },
+    // 上传失败
+    handleUploadError() {
+      this.$modal.msgError("上传图片失败,请重试");
+      this.$modal.closeLoading();
+    },
+    // 上传结束处理
+    uploadedSuccessfully() {
+      if (this.number > 0 && this.uploadList.length === this.number) {
+        this.fileList = this.fileList.concat(this.uploadList);
+        this.uploadList = [];
+        this.number = 0;
+        this.$emit("input", this.listToString(this.fileList));
+        this.$modal.closeLoading();
+      }
+    },
+    // 预览
+    handlePictureCardPreview(file) {
+      this.dialogImageUrl = file.url;
+      this.dialogVisible = true;
+    },
+    // 对象转成指定字符串分隔
+    listToString(list, separator) {
+      let strs = "";
+      separator = separator || ",";
+      for (let i in list) {
+        if (list[i].url) {
+          strs += list[i].url.replace(this.baseUrl, "") + separator;
+        }
+      }
+      return strs != '' ? strs.substr(0, strs.length - 1) : '';
+    }
+  }
+};
+</script>
+<style scoped lang="scss">
+// .el-upload--picture-card 控制加号部分
+::v-deep.hide .el-upload--picture-card {
+    display: none;
+}
+// 去掉动画效果
+::v-deep .el-list-enter-active,
+::v-deep .el-list-leave-active {
+    transition: all 0s;
+}
+
+::v-deep .el-list-enter, .el-list-leave-active {
+    opacity: 0;
+    transform: translateY(0);
+}
+</style>
+

+ 226 - 0
ruoyi-ui/src/components/ImageUploadxianz/index.vue

@@ -0,0 +1,226 @@
+<template>
+  <div class="component-upload-image">
+    <el-upload
+      multiple
+      :action="uploadImgUrl"
+      list-type="picture-card"
+      :on-success="handleUploadSuccess"
+      :before-upload="handleBeforeUpload"
+      :limit="limit"
+      :on-error="handleUploadError"
+      :on-exceed="handleExceed"
+      ref="imageUpload"
+      :on-remove="handleDelete"
+      :show-file-list="true"
+      :headers="headers"
+      :file-list="fileList"
+      :on-preview="handlePictureCardPreview"
+      :class="{hide: this.fileList.length >= this.limit}"
+    >
+      <i class="el-icon-plus"></i>
+    </el-upload>
+    
+    <!-- 上传提示 -->
+    <div class="el-upload__tip" slot="tip" v-if="showTip">
+      请上传
+      <template v-if="fileSize"> 大小不超过 <b style="color: #f56c6c">{{ fileSize }}MB</b> </template>
+      <template v-if="fileType"> 格式为 <b style="color: #f56c6c">{{ fileType.join("/") }}</b> </template>
+      的文件
+    </div>
+
+    <el-dialog
+      :visible.sync="dialogVisible"
+      title="预览"
+      width="800"
+      append-to-body
+    >
+      <img
+        :src="dialogImageUrl"
+        style="display: block; max-width: 100%; margin: 0 auto"
+      />
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { getToken } from "@/utils/auth";
+
+export default {
+  props: {
+    value: [String, Object, Array],
+    // 图片数量限制
+    limit: {
+      type: Number,
+      default:1,
+    },
+    // 大小限制(MB)
+    fileSize: {
+       type: Number,
+      default: 900,
+    },
+    // 文件类型, 例如['png', 'jpg', 'jpeg']
+    fileType: {
+      type: Array,
+      default: () => ["png", "jpg", "jpeg"],
+    },
+    // 是否显示提示
+    isShowTip: {
+      type: Boolean,
+      default: true
+    }
+  },
+  data() {
+    return {
+      number: 0,
+      uploadList: [],
+      dialogImageUrl: "",
+      dialogVisible: false,
+      hideUpload: false,
+      baseUrl: process.env.VUE_APP_BASE_API,
+      uploadImgUrl: process.env.VUE_APP_BASE_API + "/common/upload", // 上传的图片服务器地址
+      headers: {
+        Authorization: "Bearer " + getToken(),
+      },
+      fileList: []
+    };
+  },
+  watch: {
+    value: {
+      handler(val) {
+        if (val) {
+          // 首先将值转为数组
+          const list = Array.isArray(val) ? val : this.value.split(',');
+          // 然后将数组转为对象数组
+          this.fileList = list.map(item => {
+            if (typeof item === "string") {
+              if (item.indexOf(this.baseUrl) === -1) {
+                  item = { name: this.baseUrl + item, url: this.baseUrl + item };
+              } else {
+                  item = { name: item, url: item };
+              }
+            }
+            return item;
+          });
+        } else {
+          this.fileList = [];
+          return [];
+        }
+      },
+      deep: true,
+      immediate: true
+    }
+  },
+  computed: {
+    // 是否显示提示
+    showTip() {
+      return this.isShowTip && (this.fileType || this.fileSize);
+    },
+  },
+  methods: {
+    // 上传前loading加载
+    handleBeforeUpload(file) {
+      let isImg = false;
+      if (this.fileType.length) {
+        let fileExtension = "";
+        if (file.name.lastIndexOf(".") > -1) {
+          fileExtension = file.name.slice(file.name.lastIndexOf(".") + 1);
+        }
+        isImg = this.fileType.some(type => {
+          if (file.type.indexOf(type) > -1) return true;
+          if (fileExtension && fileExtension.indexOf(type) > -1) return true;
+          return false;
+        });
+      } else {
+        isImg = file.type.indexOf("image") > -1;
+      }
+
+      if (!isImg) {
+        this.$modal.msgError(`文件格式不正确, 请上传${this.fileType.join("/")}图片格式文件!`);
+        return false;
+      }
+      if (this.fileSize) {
+        const isLt = file.size / 1024 / 1024 < this.fileSize;
+        if (!isLt) {
+          this.$modal.msgError(`上传头像图片大小不能超过 ${this.fileSize} MB!`);
+          return false;
+        }
+      }
+      this.$modal.loading("正在上传图片,请稍候...");
+      this.number++;
+    },
+    // 文件个数超出
+    handleExceed() {
+      this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`);
+    },
+    // 上传成功回调
+    handleUploadSuccess(res, file) {
+      if (res.code === 200) {
+        this.uploadList.push({ name: res.fileName, url: res.fileName });
+        this.uploadedSuccessfully();
+      } else {
+        this.number--;
+        this.$modal.closeLoading();
+        this.$modal.msgError(res.msg);
+        this.$refs.imageUpload.handleRemove(file);
+        this.uploadedSuccessfully();
+      }
+    },
+    // 删除图片
+    handleDelete(file) {
+      const findex = this.fileList.map(f => f.name).indexOf(file.name);
+      if(findex > -1) {
+        this.fileList.splice(findex, 1);
+        this.$emit("input", this.listToString(this.fileList));
+      }
+    },
+    // 上传失败
+    handleUploadError() {
+      this.$modal.msgError("上传图片失败,请重试");
+      this.$modal.closeLoading();
+    },
+    // 上传结束处理
+    uploadedSuccessfully() {
+      if (this.number > 0 && this.uploadList.length === this.number) {
+        this.fileList = this.fileList.concat(this.uploadList);
+        this.uploadList = [];
+        this.number = 0;
+        this.$emit("input", this.listToString(this.fileList));
+        this.$modal.closeLoading();
+      }
+    },
+    // 预览
+    handlePictureCardPreview(file) {
+      this.dialogImageUrl = file.url;
+      this.dialogVisible = true;
+    },
+    // 对象转成指定字符串分隔
+    listToString(list, separator) {
+      let strs = "";
+      separator = separator || ",";
+      for (let i in list) {
+        if (list[i].url) {
+          strs += list[i].url.replace(this.baseUrl, "") + separator;
+        }
+      }
+      return strs != '' ? strs.substr(0, strs.length - 1) : '';
+    }
+  }
+};
+</script>
+<style scoped lang="scss">
+// .el-upload--picture-card 控制加号部分
+::v-deep.hide .el-upload--picture-card {
+    display: none;
+}
+// 去掉动画效果
+::v-deep .el-list-enter-active,
+::v-deep .el-list-leave-active {
+    transition: all 0s;
+}
+
+::v-deep .el-list-enter, .el-list-leave-active {
+    opacity: 0;
+    transform: translateY(0);
+}
+</style>
+

+ 8 - 0
ruoyi-ui/src/main.js

@@ -45,11 +45,15 @@ import FileUploadssss from "@/components/FileUploadssss"
 import FileUploadsssss from "@/components/FileUploadsssss"
 
 
+
 // 图片上传组件
 import ImageUpload from "@/components/ImageUpload"
 import ImageUploads from "@/components/ImageUploads"
+import ImageUploadgdx from "@/components/ImageUploadgdx"
+
 // 图片预览组件
 import ImagePreview from "@/components/ImagePreview"
+import ImageUploadxianz from "@/components/ImageUploadxianz"
 // 字典标签组件
 import DictTag from '@/components/DictTag'
 // 头部标签组件
@@ -82,7 +86,10 @@ Vue.component('FileUploadsssss', FileUploadsssss)
 
 Vue.component('ImageUpload', ImageUpload)
 Vue.component('ImageUploads', ImageUploads)
+Vue.component('ImageUploadgdx', ImageUploadgdx)
 Vue.component('ImagePreview', ImagePreview)
+Vue.component('ImageUploadxianz', ImageUploadxianz)
+
  Vue.component('vue-ueditor-wrap', VueUeditorWrap)
 
 Vue.use(directive)
@@ -104,6 +111,7 @@ VueAMap.initAMapApiLoader({
   v: '1.4.4'
 });
 DictData.install()
+
 /**
  * If you don't want to use mock-server
  * you want to use MockJs for mock api

+ 4 - 3
ruoyi-ui/src/settings.js

@@ -1,8 +1,9 @@
 module.exports = {
-	// urls: `https://zxyyq.qs163.cn`,
+	// urls: `http://10.90.90.52:8065`,
+	// https://yun.qs163.cn
   // http://47.99.82.249:5010
-	urls:`http://192.168.101.168:8065`,
-  // http://192.168.101.168:8065
+	urls:`http://47.99.82.249:5010`,
+  // urls: `http://10.90.90.53:8065` 
   /**
    * 侧边栏主题 深色主题theme-dark,浅色主题theme-light
    */

+ 1 - 1
ruoyi-ui/src/views/login.vue

@@ -135,7 +135,7 @@ export default {
       },
       loading: false,
       // 验证码开关
-      captchaEnabled: true,
+      captchaEnabled: false,
       // 注册开关
       register: false,
       redirect: undefined,

+ 2 - 2
ruoyi-ui/src/views/system/bjqs/index.vue

@@ -72,8 +72,8 @@
 			  <!-- <el-button :disabled="issumiteh" type="primary" @click="submitForm">确 定</el-button> -->
 			  <el-button size="mini" @click="cancel">取 消</el-button>
 			  <el-button style="background-color: #FFEAEA; border-color: #FF0000; color: #FF0000;" icon="" size="mini" @click="handleDelete(form)">删除</el-button>
-			  <el-button style="background-color: #E9EFFF; border-color: #3464EB; color: #3464EB;" icon="" size="mini" @click="infoBtn(form)" v-if=" (scope.row.visitType == 1) ">拒绝</el-button>
-			  <el-button style="background-color: #3464EB; border-color: #3464EB; color: #fff;" icon="" size="mini" @click="getPass(form)" v-if=" (scope.row.visitType == 1) ">同意</el-button>
+			  <el-button style="background-color: #E9EFFF; border-color: #3464EB; color: #3464EB;" icon="" size="mini" @click="infoBtn(form)" v-if=" (form.visitType == 1) ">拒绝</el-button>
+			  <el-button style="background-color: #3464EB; border-color: #3464EB; color: #fff;" icon="" size="mini" @click="getPass(form)" v-if=" (form.visitType == 1) ">同意</el-button>
 			</div>
 		</div>
 

+ 19 - 4
ruoyi-ui/src/views/system/user/index.vue

@@ -310,6 +310,18 @@
               </el-select>
             </el-form-item>
           </el-col>
+		  <el-col :span="12" v-if="isshoue == true">
+		    <el-form-item label="是否考勤">
+		      <el-select v-model="form.isclock"  placeholder="请选择是否需要打卡考勤">
+		        <el-option
+		          v-for="dict in dict.type.sys_yes_no"
+		          :key="dict.value"
+		          :label="dict.label"
+		          :value="dict.value"
+		        ></el-option>
+		      </el-select>
+		    </el-form-item>
+		  </el-col>
         </el-row>
         <el-row>
           <el-col :span="24">
@@ -365,7 +377,7 @@ import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 
 export default {
   name: "User",
-  dicts: ['sys_normal_disable', 'sys_user_sex','usertype'],
+  dicts: ['sys_normal_disable', 'sys_user_sex','usertype','sys_yes_no'],
   components: { Treeselect },
   data() {
     return {
@@ -470,8 +482,8 @@ export default {
             trigger: "blur"
           }
         ],
-
-      }
+      },
+	  isshoue:false
     };
   },
   watch: {
@@ -545,7 +557,8 @@ export default {
         remark: undefined,
         postIds: [],
         roleIds: [],
-        userType:'00'
+        userType:'00',
+		isclock:"Y"
       };
       this.resetForm("form");
     },
@@ -590,6 +603,7 @@ export default {
         this.open = true;
         this.title = "添加用户";
         this.form.password = this.initPassword;
+		this.isshoue = true
       });
     },
     /** 修改按钮操作 */
@@ -605,6 +619,7 @@ export default {
         this.open = true;
         this.title = "修改用户";
         this.form.password = "";
+		this.isshoue = false
       });
     },
     /** 重置密码按钮操作 */

+ 459 - 0
ruoyi-ui/src/views/tongj/box/index.vue

@@ -0,0 +1,459 @@
+<template>
+  <div class="app-container">
+   <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="140px" class="nghfs">
+       <p class="lqw" style="font-weight: 700;font-size: 15px;"> <img src="../../../assets/images/icon_yq_htgl_btzs.png" alt="" style="width:10px;height: 10px;margin-right: 10px;"> 搜索条件</p>
+      <el-row>
+		  <el-col :span="8">
+			<el-form-item label="是否推荐" prop="suggest">
+			 <el-select v-model="queryParams.suggest" placeholder="请选择是否推荐" clearable>
+			           <el-option
+			             v-for="dict in dict.type.sys_yes_no"
+			             :key="dict.value"
+			             :label="dict.label"
+			             :value="dict.value"
+			           />
+			         </el-select>
+			</el-form-item>  
+		  </el-col>
+		  <el-col :span="8">
+		  	<el-form-item label="菜品名称" prop="foodName">
+		  	  <el-input
+		  	    v-model="queryParams.foodName"
+		  	    placeholder="请输入菜品名称"
+		  	    clearable
+		  	    @keyup.enter.native="handleQuery"
+		  	  />
+		  	</el-form-item>		  
+		  </el-col>
+		  <el-col :span="5">
+		  	<el-form-item>
+		  	  <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+		  	  <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+		  	</el-form-item>		  
+		  </el-col>
+	  </el-row>
+    </el-form>
+
+   <div class="ntgs" >
+   <div style="display: flex;align-items: center; margin-bottom: 10px;">
+     <p class="lqw" style="font-weight: 700;font-size: 15px; margin: 0; margin-bottom: 0;"> <img src="../../../assets/images/icon_yq_htgl_btzs.png" alt="" style="width:10px;height: 10px;margin-right: 10px;">  包厢食谱</p>
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['system:box:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="info"
+          plain
+          icon="el-icon-sort"
+          size="mini"
+          @click="toggleExpandAll"
+        >展开/折叠</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+	</div>
+	
+	
+	<el-table
+	  v-if="refreshTable"
+	  v-loading="loading"
+	  :data="boxList"
+	  row-key="menuBoxId"
+	  :default-expand-all="isExpandAll"
+	  :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
+	>
+	  <el-table-column prop="foodName" label="菜谱名称" width="260"></el-table-column>
+	 <el-table-column label="菜品图片" align="center" prop="foodPhoto" >
+		 <template slot-scope="scope">
+		 	<image-preview :src="scope.row.foodPhoto" :width="50" :height="50"/>
+		   </template>
+	</el-table-column>
+	 <el-table-column label="是否推荐" align="center" prop="suggest" >
+	 <template slot-scope="scope">
+	     <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.suggest"/>
+	   </template>
+	 </el-table-column>
+	  <el-table-column label="创建时间" align="center" prop="createTime" width="200">
+	    <template slot-scope="scope">
+	      <span>{{ parseTime(scope.row.createTime) }}</span>
+	    </template>
+	  </el-table-column>
+	  <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+	    <template slot-scope="scope">
+	      <el-button
+	        size="mini"
+	        type="text"
+	        icon="el-icon-edit"
+	        @click="handleUpdate(scope.row)"
+	        v-hasPermi="['system:box:edit']"
+	      >修改</el-button>
+	      <el-button
+	        size="mini"
+	        type="text"
+	        icon="el-icon-plus"
+	        @click="handleAdd(scope.row)"
+	        v-hasPermi="['system:box:add']"
+	      >新增</el-button>
+	      <el-button
+	        size="mini"
+	        type="text"
+	        icon="el-icon-delete"
+	        @click="handleDelete(scope.row)"
+	        v-hasPermi="['system:box:remove']"
+	      >删除</el-button>
+	    </template>
+	  </el-table-column>
+	</el-table>
+    </div>
+	
+    <!-- 添加或修改包厢菜单对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="900px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+		  <el-row>
+			  <el-col :span="8">
+				<el-form-item label="父级食谱" prop="parentId">
+				  <treeselect v-model="form.parentId" :options="boxOptions" :normalizer="normalizer" placeholder="请选择父级菜单" />
+				</el-form-item>  
+			  </el-col>
+			  <el-col :span="8">
+				<el-form-item label="菜品名称" prop="foodName">
+				  <el-input v-model="form.foodName" placeholder="请输入菜品名称" />
+				</el-form-item>  
+			  </el-col>
+			  <el-col :span="8">
+				  <el-form-item label="是否推荐" prop="suggest">
+				   <el-select v-model="form.suggest" placeholder="请选择是否推荐" clearable>
+				             <el-option
+				               v-for="dict in dict.type.sys_yes_no"
+				               :key="dict.value"
+				               :label="dict.label"
+				               :value="dict.value"
+				             />
+				           </el-select>
+				  </el-form-item>
+			  </el-col>
+			  <el-col :span="24">
+				<el-form-item label="菜品图片" prop="foodPhoto">
+				  <imageUploadxianz v-model="form.foodPhoto"/>
+				</el-form-item>  
+			  </el-col>
+		  </el-row>
+       
+        
+        
+        
+       <!-- <el-form-item label="推荐等级" prop="suggestLv">
+          <el-input v-model="form.suggestLv" placeholder="请输入推荐等级" />
+        </el-form-item>
+        <el-form-item label="删除标志" prop="isDel">
+          <el-input v-model="form.isDel" placeholder="请输入删除标志" />
+        </el-form-item> -->
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listBox, getBox, delBox, addBox, updateBox } from "@/api/system/box";
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+
+export default {
+  name: "Box",
+  dicts: ['sys_yes_no'],
+  components: {
+    Treeselect
+  },
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 包厢菜单表格数据
+      boxList: [],
+      // 包厢菜单树选项
+      boxOptions: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 是否展开,默认全部展开
+      isExpandAll: true,
+      // 重新渲染表格状态
+      refreshTable: true,
+      // 查询参数
+      queryParams: {
+        parentId: null,
+        ancestors: null,
+        foodName: null,
+        foodPhoto: null,
+        suggest: null,
+        suggestLv: null,
+        isDel: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+		  foodName: [
+		    { required: true, message: "不能为空", trigger: "blur" }
+		  ],
+		  suggest: [
+		    { required: true, message: "不能为空", trigger: "blur" }
+		  ],
+		  
+      }
+    };
+  },
+  created() {
+    this.getList();
+	this.getTreeselect()
+  },
+  methods: {
+    /** 查询包厢菜单列表 */
+    getList() {
+      this.loading = true;
+      listBox(this.queryParams).then(response => {
+        this.boxList = this.handleTree(response.data, "menuBoxId", "parentId");
+        this.loading = false;
+      });
+    },
+    /** 转换包厢菜单数据结构 */
+    normalizer(node) {
+      if (node.children && !node.children.length) {
+        delete node.children;
+      }
+      return {
+        id: node.menuBoxId,
+        label: node.foodName,
+        children: node.children
+      };
+    },
+	/** 查询包厢菜单下拉树结构 */
+    getTreeselect() {
+      listBox().then(response => {
+        this.boxOptions = [];
+        const data = { menuBoxId: 0, foodName: '顶级节点', children: [] };
+        data.children = this.handleTree(response.data, "menuBoxId", "parentId");
+        this.boxOptions.push(data);
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        menuBoxId: null,
+        parentId: null,
+        ancestors: null,
+        foodName: null,
+        foodPhoto: null,
+        suggest: 'N',
+        suggestLv: null,
+        isDel: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    /** 新增按钮操作 */
+    handleAdd(row) {
+      this.reset();
+      this.getTreeselect();
+      if (row != null && row.menuBoxId) {
+        this.form.parentId = row.menuBoxId;
+      } else {
+        this.form.parentId = 0;
+      }
+      this.open = true;
+      this.title = "添加包厢菜单";
+    },
+    /** 展开/折叠操作 */
+    toggleExpandAll() {
+      this.refreshTable = false;
+      this.isExpandAll = !this.isExpandAll;
+      this.$nextTick(() => {
+        this.refreshTable = true;
+      });
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      this.getTreeselect();
+      if (row != null) {
+        this.form.parentId = row.parentId;
+      }
+      getBox(row.menuBoxId).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改包厢菜单";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.menuBoxId != null) {
+            updateBox(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addBox(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      this.$modal.confirm('是否确认删除包厢菜单编号为"' + row.menuBoxId + '"的数据项?').then(function() {
+        return delBox(row.menuBoxId);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    }
+  }
+};
+</script>
+<style lang="scss">
+	.nhgrlsw{
+		.el-dialog__body{
+			padding-top: 10px;
+		}
+	}
+  .hyr{
+    span{
+      text-decoration:underline;
+    }
+  }
+</style>
+<style scoped lang="scss">
+  .iuer{
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    .ite{
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+      p{
+        margin: 0;
+        font-size: 15px;
+        font-family: PingFang SC;
+        font-weight: 500;
+        color: #AAAAAA;
+        padding: 4px 12px;
+        background: #F7F8FA;
+        border-radius: 4px;
+        margin-right: 20px;
+      }
+      .actt{
+        background: #E6EBFF;
+        border: 1px solid #5974E0;
+        border-radius: 4px;
+        color: #5974E0;
+      }
+
+    }
+  }
+  .lqw{
+    padding: 0 10px;
+    margin: 0;
+    margin-bottom: 20px;
+  }
+.nhgel{
+  height: 170px;
+  background-color: #313b61;
+  width: 100%;
+  position: absolute;
+  top:0;
+  left:0;
+  z-index: 0;
+}
+	.app-container{
+		background-color: #f3f4f6;
+		padding-top: 10px;
+	   
+	}
+	.ntgs{
+	position: relative;
+		background-color: #fff;
+		padding: 5px;
+		// border-radius: 5px;
+		padding-top: 10px;
+	     padding: 10px 20px;
+		 padding-left: 10px;
+		.pagination-container{
+			height: 50px;
+		}
+	}
+	.nghfs{
+	position: relative;
+		background-color: #fff;
+		padding-top: 18px !important;
+		padding: 5px;
+		// border-radius: 5px;
+		// margin-bottom: 20px;
+	}
+	.ksf{
+		img{
+			width:100%;
+			height: 100%;
+		}
+	}
+	.yaunbei{
+		background: url('../../../assets/images/pic_bzsp_ymbg.png') no-repeat;
+		background-size: 100% 100%;
+		padding-bottom: 90px;
+	}
+	.yaunbei_one{
+		height: 290px;
+		width: 550px;
+		background: url('../../../assets/images/pic_bzsp_btbg.png') no-repeat;
+		background-size: 549px 290px;
+		margin-left: 50%;
+		transform: translateX(-50%);
+	}
+	.yaunbei_two{
+		width: 650px;
+		padding: 150px 65px 180px 65px;
+		background: url('../../../assets/images/pic_bzsp_cpbjb_bg.png') no-repeat;
+		background-size: 649px 100%;
+		margin-left: 50%;
+		transform: translateX(-50%);
+	}
+
+</style>

+ 264 - 62
ruoyi-ui/src/views/tongj/foodRecord/index.vue

@@ -2,13 +2,13 @@
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="140px" class="nghfs">
         <p class="lqw" style="font-weight: 700;font-size: 15px;"> <img src="../../../assets/images/icon_yq_htgl_btzs.png" alt="" style="width:10px;height: 10px;margin-right: 10px;"> 搜索条件</p>
-      <el-form-item label="食谱日期 周一" prop="menuFoodTime">
-        <el-select v-model="queryParams.menuFoodTime" placeholder="请选择食谱日期 周一" clearable>
+      <el-form-item label="食谱日期" prop="menuFoodTime">
+        <el-select v-model="queryParams.menuFoodTime" placeholder="请选择食谱日期" clearable>
           <el-option
             v-for="dict in dict.type.week"
             :key="dict.value"
             :label="dict.label"
-            :value="dict.value"
+            :value="dict.label"
           />
         </el-select>
       </el-form-item>
@@ -61,6 +61,16 @@
           v-hasPermi="['system:foodRecord:remove']"
         >删除</el-button>
       </el-col> -->
+	  <!-- <el-col :span="1.5">
+	    <el-button
+	      type="primary"
+	      plain
+	      icon="el-icon-plus"
+	      size="mini"
+	      @click="handleAddmr"
+	      v-hasPermi="['system:foodRecord:add']"
+	    >查看每日食谱</el-button>
+	  </el-col> -->
       <el-col :span="1.5">
         <el-button
           type="warning"
@@ -78,28 +88,41 @@
 	<div>
 					 <div>
 						 <el-row :gutter="20" v-if="foodRecordList.length !=0">
-							 <el-col :span="8" v-for="(item,index) in foodRecordList" :key="index" style="margin-bottom: 20px;">
-								 <div class="foord">
-									<div class="foorso" style="height: 60px;">
-										<p ><span style="margin-right: 10px;"></span><dict-tag :options="dict.type.week" :value="item.menuFoodTime" /></p>
-										<p>{{item.recordTime == null?'暂无数据' : item.recordTime}}</p>
-									</div> 
-									<div style="border-bottom: 1px solid #DADADA;padding-top: 15px;padding-bottom: 15px;" class="foorset">
-										<div>
-											<span>午餐:</span><p>{{item.menuFoodDetailLu == null?'暂无数据' : item.menuFoodDetailLu}}</p>
-										</div>
-										<div>
-											<span style="color: #28C529;">晚餐:</span><p>{{item.menuFoodDetailDi == null?'暂无数据' : item.menuFoodDetailDi}}</p>
-										</div>
-									</div>
-									<div style="display: flex;align-items: center;height: 40px;">
-										<p @click="handleDelete(item)"
-								v-hasPermi="['system:foodRecord:remove']" style="flex:1;line-height: 40px; text-align: center; border-right: 1px solid #DADADA;color: #FF6969;font-weight: bold;font-size: 14px;">删除</p>
-										<!-- <p  @click="handleUpdate(item)"
-								v-hasPermi="['system:menuFood:edit']" style="flex:1;line-height: 40px;text-align: center;color: #5F8BF4;font-weight: bold;font-size: 14px;">修改</p> -->
-									</div>
-								 </div>
-							 </el-col>
+								 <el-col :span="8" v-for="(item,index) in foodRecordList" :key="index" style="margin-bottom: 20px;">
+								 								 <div class="foord">
+								 									<div class="foorso" style="height: 60px;">
+								 										<p ><span style="margin-right: 10px;"></span><dict-tag :options="dict.type.week" :value="item.menuFoodTime" /></p>
+								 										<p>{{item.recordTime == null?'暂无数据' : item.recordTime}}</p>
+								 									</div>
+								 									 <div style="width: 100%;" class="ingsek">
+								 									 	<el-carousel :interval="4000"  arrow="hover" height="200px;width:100%;" indicator-position="none" v-if="item.nsjge.length !=0">
+								 									 	    <el-carousel-item v-for="(itemt,index) in item.nsjge" :key="index" >
+								 									 											<div style="position: relative;" @click="imge(itemt.url)">
+								 									 												<img :src="defaultSettings.urls+baseUrl +itemt.url" alt="" style="width: 100%;height: 200px;">
+								 									 												<p style="position: absolute;bottom: 0;left: 0;font-weight: 500; height: 24px;background-color: rgba(0,0,0,.5);color: #fff;font-size: 14px;width: 100%;padding-left: 10px;line-height: 24px;margin: 0;">{{itemt.title}}</p>
+								 									 											</div>
+								 									 	    </el-carousel-item>
+								 									 	  </el-carousel>
+								 									 									<div v-if="item.nsjge.length ==0" style="height: 200px;" class="egle">
+								 									 										<el-empty description="暂无数据"></el-empty>
+								 									 									</div>
+								 									 </div>
+								 									<div style="border-bottom: 1px solid #DADADA;padding-top: 15px;padding-bottom: 15px;" class="foorset">
+								 										<div>
+								 											<span>午餐:</span><p>{{item.menuFoodDetailLu == null?'暂无数据' : item.menuFoodDetailLu}}</p>
+								 										</div>
+								 										<div>
+								 											<span style="color: #28C529;">晚餐:</span><p>{{item.menuFoodDetailDi == null?'暂无数据' : item.menuFoodDetailDi}}</p>
+								 										</div>
+								 									</div>
+								 									<div style="display: flex;align-items: center;height: 40px;">
+								 										<p @click="handleDelete(item)"
+								 								v-hasPermi="['system:foodRecord:remove']" style="flex:1;line-height: 40px; text-align: center; border-right: 1px solid #DADADA;color: #FF6969;font-weight: bold;font-size: 14px;">删除</p>
+								 										<!-- <p  @click="handleUpdate(item)"
+								 								v-hasPermi="['system:menuFood:edit']" style="flex:1;line-height: 40px;text-align: center;color: #5F8BF4;font-weight: bold;font-size: 14px;">修改</p> -->
+								 									</div>
+								 								 </div>
+								 </el-col>
 						 </el-row>
 						 <div v-if="foodRecordList.length ==0">
 						 						 <el-empty description="暂无数据"></el-empty>
@@ -107,41 +130,7 @@
 					 </div>
 	</div>
 
-    <!-- <el-table v-loading="loading" :data="foodRecordList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="食谱日期" align="center" prop="menuFoodTime">
-        <template slot-scope="scope">
-          <dict-tag :options="dict.type.week" :value="scope.row.menuFoodTime"/>
-        </template>
-      </el-table-column>
-      <el-table-column label="食谱早餐详情" align="center" prop="menuFoodDetailBk" />
-      <el-table-column label="食谱中餐详情" align="center" prop="menuFoodDetailLu" />
-      <el-table-column label="食谱晚餐详情" align="center" prop="menuFoodDetailDi" />
-      <el-table-column label="记录时间" align="center" prop="recordTime" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.recordTime, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="备注" align="center" prop="remark" />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-        <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['system:foodRecord:edit']"
-          >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['system:foodRecord:remove']"
-          >删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table> -->
+    
     
     <pagination
       v-show="total>0"
@@ -200,12 +189,71 @@
         <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
+	<el-dialog title="查看图片" :visible.sync="opentp" width="700px" append-to-body>
+		<div>
+			<img :src="defaultSettings.urls+baseUrl+iges" alt="" style="width: 100%;height: 100%;">
+		</div>
+	</el-dialog>
+	<el-dialog title="每日食谱" :visible.sync="openm" width="780px" append-to-body>
+		 <div>
+		 	  						 <div class="yaunbei" style="position: relative;">
+		 	  							 <div class="yaunbei_one" style="position: relative; z-index: 22;">
+		 	  								 <p style="font-size: 29px;color: #FFFFFE;position: absolute;top: 143px;left: 183px;">{{weekst}}</p>
+		 	  							 </div>
+		 	  							 <div class="yaunbei_two" style="position: relative;margin-top: -140px; ">
+		 	  								<div v-for="(item,index) in  menuFoodList" :key="index" style="margin-top: 30px;">
+		 	  									<img style="width: 100%;height: 56px;" src="../../../assets/images/pic_bzsp_z1.png" alt="" v-if="item.menuFoodTime == '星期一'">
+												<img style="width: 100%;height: 56px;" src="../../../assets/images/pic_bzsp_z2.png" alt="" v-if="item.menuFoodTime == '星期二'">
+												<img style="width: 100%;height: 56px;" src="../../../assets/images/pic_bzsp_z3.png" alt="" v-if="item.menuFoodTime == '星期三'">
+												<img style="width: 100%;height: 56px;" src="../../../assets/images/pic_bzsp_z4.png" alt="" v-if="item.menuFoodTime == '星期四'">
+												<img style="width: 100%;height: 56px;" src="../../../assets/images/pic_bzsp_z5.png" alt="" v-if="item.menuFoodTime == '星期五'">
+												<img style="width: 100%;height: 56px;" src="../../../assets/images/pic_bzsp_z6.png" alt="" v-if="item.menuFoodTime == '星期六'">
+												<img style="width: 100%;height: 56px;" src="../../../assets/images/pic_bzsp_z7.png" alt="" v-if="item.menuFoodTime == '星期日'">
+		 	  								   <div style="display: flex;
+		 									   align-items: flex-start;padding: 0 12px; margin-top: 25px;">
+		 										   <span style="background: #FFE0AE;
+		                                    border-radius: 16px;font-weight: 400;
+		 											font-size: 25px;color: #161616;
+		 											width: 24%;text-align: center;padding: 3px 0;">午餐</span>
+		 										   <p style="margin: 0; margin-left: 20px; 
+		 										   font-weight: 400;font-size: 25px;color: #382324;">{{item.menuFoodDetailLu == null?'暂无数据' : item.menuFoodDetailLu}}</p>
+		 									   </div>
+		 									   <div style="display: flex;
+		 									   align-items: flex-start;padding: 0 12px; margin-top: 25px;">
+		 									   		<span style="background: #DCF1FF;
+		 									        border-radius: 16px;font-weight: 400;
+		 									   		font-size: 25px;color: #161616;
+		 									   		width: 24%;text-align: center;padding: 3px 0;">晚餐</span>
+		 									   		<p style="margin: 0; margin-left: 20px; 
+		 									   		font-weight: 400;font-size: 25px;color: #382324;">{{item.menuFoodDetailDi == null?'暂无数据' : item.menuFoodDetailDi}}</p>
+		 									   </div>
+		 									</div>
+											<div style="position: absolute; bottom: -60px; right: 0;">
+												<img style="width: 580px;height: 265px;" src="../../../assets/images/pic_bzsp_dbbg.png" alt="">
+											</div>
+											<img src="../../../assets/images/pic_bzsp_cpbjb_xqbg.png" alt="" style="position: absolute; top: 300px;left: -20px;height: 72%;">
+		 	  							 </div>
+										 
+		 	  						 </div>
+									 <!-- <div slot="footer" class="dialog-footer">
+									   <el-button @click="cancel">取 消</el-button>
+									 </div> -->
+		 	  						 
+		 	  					 </div>
+	</el-dialog>
   </div>
 </template>
 
 <script>
 import { listFoodRecord, getFoodRecord, delFoodRecord, addFoodRecord, updateFoodRecord } from "@/api/system/foodRecord";
-
+import {
+		listMenuFood,
+		getMenuFood,
+		delMenuFood,
+		addMenuFood,
+		updateMenuFood
+	} from "@/api/system/menuFood";
+const defaultSettings = require("@/settings.js");
 export default {
   name: "FoodRecord",
   dicts: ['week'],
@@ -219,6 +267,8 @@ export default {
       single: true,
       // 非多个禁用
       multiple: true,
+	  baseUrl: process.env.VUE_APP_BASE_API,
+	  defaultSettings:defaultSettings,
       // 显示搜索条件
       showSearch: true,
       // 总条数
@@ -227,8 +277,11 @@ export default {
       foodRecordList: [],
       // 弹出层标题
       title: "",
+	  menuFoodList:[],
       // 是否显示弹出层
       open: false,
+	  opentp:false,
+	  openm:false,
       // 查询参数
       queryParams: {
         pageNum: 1,
@@ -243,22 +296,123 @@ export default {
       form: {},
       // 表单校验
       rules: {
-      }
+      },
+	  iges:''
     };
   },
   created() {
     this.getList();
   },
   methods: {
+	  imge(row){
+	  	console.log(row)
+	  	this.iges = row
+	  	this.opentp = true
+	  	
+	  },
     /** 查询每日食谱记录列表 */
     getList() {
       this.loading = true;
       listFoodRecord(this.queryParams).then(response => {
         this.foodRecordList = response.rows;
+		this.foodRecordList.filter(rou=>{
+			rou.nsjge = []
+			if(rou.menuFoodDetailLuPhoto !=null){
+				if(rou.menuFoodDetailLuPhoto !=''){
+					rou.menuFoodDetailLuPhoto = rou.menuFoodDetailLuPhoto.split(',')
+					rou.menuFoodDetailLuPhoto.filter(rout=>{
+						let nhfe={title:'中餐',url:rout}
+						rou.nsjge.push(nhfe)
+					})
+					
+				}
+			}
+			if(rou.menuFoodDetailDiPhoto !=null){
+				if(rou.menuFoodDetailDiPhoto !=''){
+					rou.menuFoodDetailDiPhoto = rou.menuFoodDetailDiPhoto.split(',')
+					rou.menuFoodDetailDiPhoto.filter(routt=>{
+						let nhfe={title:'晚餐',url:routt}
+						rou.nsjge.push(nhfe)
+					})
+				}
+			}
+		})
         this.total = response.total;
         this.loading = false;
       });
     },
+	getListm() {
+		this.loading = true;
+		let nsgs={'pageNum': 1,'pageSize': 7,'isUse':'Y'}
+		listMenuFood(nsgs).then(response => {
+			// this.menuFoodList = response.rows;
+			let ilseli =['星期一','星期二','星期三','星期四','星期五','星期六','星期日']
+			let ilselif =['星期一','星期二','星期三','星期四','星期五','星期六','星期日']
+			let njgw = []
+				response.rows.filter(rou=>{
+					rou.menuFoodTime = rou.menuFoodTime.replace(/\s*/g,'');
+					for(var i=0;i< ilseli.length;i++ ){
+						if(rou.menuFoodTime == ilseli[i]){
+							ilseli.splice(i,1)
+						}
+					}
+				})
+				if(response.rows.length < 7){
+				for(var h=0;h< ilseli.length;h++ ){
+					let nhg={'menuFoodTime':ilseli[h],'menuFoodDetailDi':'暂无数据','menuFoodDetailLu':'暂无数据'}
+				    response.rows.push(nhg)
+				}
+				 response.rows.filter(roug=>{
+					 if(roug.menuFoodTime == '星期一'){
+						ilselif[0] = roug
+					 }
+					 if(roug.menuFoodTime == '星期二'){
+					 	ilselif[1] =roug
+					 }
+					 if(roug.menuFoodTime == '星期三'){
+					 	ilselif[2] = roug
+					 }
+					 if(roug.menuFoodTime == '星期四'){
+					 	ilselif[3] = roug
+					 }
+					 if(roug.menuFoodTime == '星期五'){
+					 	ilselif[4] = roug 
+					 }
+					 if(roug.menuFoodTime == '星期六'){
+					 	ilselif[5] = roug
+					 }
+					 if(roug.menuFoodTime == '星期日'){
+					 	ilselif[6] = roug
+					 }
+					 
+				 })
+				 this.menuFoodList = ilselif
+			}
+			this.total = response.total;
+			this.loading = false;
+		});
+	},
+	getWeek (day) {
+	         var today = new Date();
+	         var targetday_milliseconds=today.getTime() + 1000*60*60*24*day;
+	         today.setTime(targetday_milliseconds);
+	         var tYear = today.getFullYear();
+	         var tMonth = today.getMonth();
+	         var tDate = today.getDate();
+	         tMonth = this.doHandleMonth(tMonth + 1);
+	         tDate =  this.doHandleMonth(tDate);
+	         return tMonth+"/"+tDate;
+	     },
+	     doHandleMonth(month){
+	        var m = month;
+	        if(month.toString().length == 1){
+	           m = "0" + month;
+	        }
+	        return m;
+	     },
+		 handleAddmr(){
+			this.openm = true 
+		 },
     // 取消按钮
     cancel() {
       this.open = false;
@@ -357,6 +511,19 @@ export default {
 };
 </script>
 <style lang="scss">
+	.egle{
+		.el-empty{
+			height: 180px;
+		}
+		.el-empty__image svg{
+			height: 140px;
+		}
+	}
+	.ingsek{
+	 .el-carousel__container{
+		 height: 200px;
+	 }	
+	}
 	.nhgrls {
 		.el-dialog__body {
 			padding: 0;
@@ -506,4 +673,39 @@ export default {
 			}
 		}
 	}
+	.nghfs{
+	position: relative;
+		background-color: #fff;
+		padding-top: 18px !important;
+		padding: 5px;
+		// border-radius: 5px;
+		// margin-bottom: 20px;
+	}
+	.ksf{
+		img{
+			width:100%;
+			height: 100%;
+		}
+	}
+	.yaunbei{
+		background: url('../../../assets/images/pic_bzsp_ymbg.png') no-repeat;
+		background-size: 100% 100%;
+		padding-bottom: 90px;
+	}
+	.yaunbei_one{
+		height: 290px;
+		width: 550px;
+		background: url('../../../assets/images/pic_bzsp_btbg.png') no-repeat;
+		background-size: 549px 290px;
+		margin-left: 50%;
+		transform: translateX(-50%);
+	}
+	.yaunbei_two{
+		width: 650px;
+		padding: 150px 65px 180px 65px;
+		background: url('../../../assets/images/pic_bzsp_cpbjb_bg.png') no-repeat;
+		background-size: 649px 100%;
+		margin-left: 50%;
+		transform: translateX(-50%);
+	}
 </style>

+ 61 - 23
ruoyi-ui/src/views/tongj/management/index.vue

@@ -97,8 +97,6 @@
 
     <el-table v-loading="loading" :data="infoList" @selection-change="handleSelectionChange">
           <el-table-column type="selection" width="55" align="center" />
-          <!-- <el-table-column label="人员ID" align="center" prop="userId" />
-          <el-table-column label="所属部门ID" align="center" prop="deptId" /> -->
           <el-table-column label="所属部门名称" align="center" prop="deptName" />
           <el-table-column label="人员姓名" align="center" prop="userName" />
           <el-table-column label="手机号码" align="center" prop="phonenumber" />
@@ -137,28 +135,30 @@
     <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
         <el-row>
-        			  <el-col :span="12">
+        			  <!-- <el-col :span="12">
         				 <el-form-item label="所属部门" prop="deptId">
         				    <treeselect @select="nhgseh" v-model="form.deptId" :options="deptOptions" :show-count="true" placeholder="请选择归属部门" />
         				</el-form-item> 
-        			  </el-col>
-        			  <el-col :span="12">
-        			  	 <el-form-item label="人员姓名" prop="userName">
-        			  	          <el-input v-model="form.userName" placeholder="请输入人员姓名" />
+        			  </el-col> -->
+        			  <el-col :span="24">
+        			  	 <el-form-item label="人员姓名" prop="nickName">
+							<el-select
+							    v-model="form.nickName"
+							    multiple
+							    filterable
+							    allow-create
+							    default-first-option
+								style="width:100%;"
+							    placeholder="请选择人员姓名">
+							    <el-option
+							      v-for="item in options"
+							      :key="item.userId"
+							      :label="item.nickName"
+							      :value="item.userId">
+							    </el-option>
+							</el-select>
         			  	</el-form-item>			  
         			  </el-col>
-					  <el-col :span="24">
-						  <el-col :span="12">
-						  	 <el-form-item label="手机号码" prop="phonenumber">
-						  	          <el-input v-model="form.phonenumber" placeholder="请输入手机号码" />
-						  	</el-form-item>			  
-						  </el-col>
-						  <el-col :span="12">
-						  	<el-form-item label="身份证号" prop="idCard">
-						  	          <el-input v-model="form.idCard" placeholder="请输入人员身份证号" />
-						  	</el-form-item>			  
-						  </el-col>
-					  </el-col>			
         			  <el-col :span="24">
         			  	<el-form-item label="备注" prop="remark">
         			  	  <el-input v-model="form.remark" placeholder="请输入备注" />
@@ -175,7 +175,7 @@
 </template>
 
 <script>
-import { listInfo, getInfo, delInfo, addInfo, updateInfo } from "@/api/system/management";
+import { listInfo, getInfo, delInfo, addInfo, updateInfo,noPage } from "@/api/system/management";
 import {deptTreeSelect } from "@/api/system/user";
 import Treeselect from "@riophae/vue-treeselect";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
@@ -225,12 +225,16 @@ export default {
 		  { required: true, message: "不能为空", trigger: "blur" }
 		],
 		
-      }
+      },
+	  options:[],
+	  osgw:[]
     };
   },
   created() {
 	  this.getDeptTree()
     this.getList();
+	this.getListn()
+	
   },
   methods: {
     /** 查询打卡人员信息列表 */
@@ -242,6 +246,13 @@ export default {
         this.loading = false;
       });
     },
+	getListn() {
+	  noPage().then(response => {
+	    this.options = response.rows;
+		this.osgw = response.rows;
+	  });
+	},
+	
     // 取消按钮
     cancel() {
       this.open = false;
@@ -267,7 +278,8 @@ export default {
         createTime: null,
         updateBy: null,
         updateTime: null,
-        remark: null
+        remark: null,
+		nickName:[]
       };
       this.resetForm("form");
     },
@@ -292,6 +304,24 @@ export default {
       this.reset();
       this.open = true;
       this.title = "添加打卡人员信息";
+	  this.form.nickName = []
+	  let ndj = []
+	  let ns = []
+	  let soj = []
+	  this.osgw.filter(tou=>{
+		 ndj.push(tou.userId) 
+	  })
+	  for(var i=0;i<ndj.length;i++){
+		this.infoList.filter(rout=>{
+			if(ndj[i] == rout.userId){
+				ndj.splice(i,1)
+			}		  
+		})  
+	  }
+	  ndj.filter(rou=>{
+		  ns.push(rou)
+	  })
+	  this.form.nickName = ns
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
@@ -314,7 +344,15 @@ export default {
               this.getList();
             });
           } else {
-            addInfo(this.form).then(response => {
+			  let nhsgl=[]
+			  this.osgw.filter(rou=>{
+				this.form.nickName.filter(ru =>{
+					if(rou.userId == ru){
+						nhsgl.push(rou)
+					}
+				})  
+			  })
+            addInfo(nhsgl).then(response => {
               this.$modal.msgSuccess("新增成功");
               this.open = false;
               this.getList();

+ 129 - 40
ruoyi-ui/src/views/tongj/menuFood/index.vue

@@ -10,14 +10,20 @@
 					<el-form-item label="食谱日期" prop="menuFoodTime">
 						<el-select v-model="queryParams.menuFoodTime" placeholder="请选择食谱日期 周一" clearable>
 							<el-option v-for="dict in dict.type.week" :key="dict.value" :label="dict.label"
-								:value="dict.value" />
+								:value="dict.label" />
 						</el-select>
 					</el-form-item>
 				</el-col>
 				<el-col :span="8">
 					<el-form-item label="是否启用" prop="isUse">
-						<el-input v-model="queryParams.isUse" placeholder="请输入是否启用" clearable
-							@keyup.enter.native="handleQuery" />
+						<el-select v-model="queryParams.isUse" placeholder="请选择是否启用" clearable>
+						  <el-option
+						    v-for="dict in dict.type.sys_yes_no"
+						    :key="dict.value"
+						    :label="dict.label"
+						    :value="dict.value"
+						  />
+						</el-select>
 					</el-form-item>
 				</el-col>
 				<el-col :span="6">
@@ -61,13 +67,26 @@
 									  inactive-value="N"
 									  @change="handleStatusChange(item)"
 									></el-switch>
-								</div> 
+								</div>
+								 <div style="width: 100%;" class="ingsek">
+								 	<el-carousel :interval="4000"  arrow="hover" height="200px;width:100%;" indicator-position="none" v-if="item.nsjge.length !=0">
+								 	    <el-carousel-item v-for="(itemt,index) in item.nsjge" :key="index" >
+											<div style="position: relative;" @click="imge(itemt.url)">
+												<img :src="defaultSettings.urls+baseUrl +itemt.url" alt="" style="width: 100%;height: 200px;">
+												<p style="margin: 0;position: absolute;bottom: 0;left: 0;font-weight: 500; height: 24px;background-color: rgba(0,0,0,.5);color: #fff;font-size: 14px;width: 100%;padding-left: 10px;line-height: 24px;">{{itemt.title}}</p>
+											</div>
+								 	    </el-carousel-item>
+								 	  </el-carousel>
+									<div v-if="item.nsjge.length ==0" style="height: 200px;" class="egle">
+										<el-empty description="暂无数据"></el-empty>
+									</div>
+								 </div>
 								<div style="border-bottom: 1px solid #DADADA;padding-top: 15px;padding-bottom: 15px;" class="foorset">
 									<div>
-										<span>午餐:</span><p>{{item.menuFoodDetailLu == null?'暂无数据' : item.menuFoodDetailLu}}</p>
+										<span>午餐:</span><p>{{item.menuFoodDetailLu == null?'暂无数据' : item.menuFoodDetailLu == ''? '暂无数据' : item.menuFoodDetailLu }}</p>
 									</div>
 									<div>
-										<span style="color: #28C529;">晚餐:</span><p>{{item.menuFoodDetailDi == null?'暂无数据' : item.menuFoodDetailDi}}</p>
+										<span style="color: #28C529;">晚餐:</span><p>{{item.menuFoodDetailDi == null?'暂无数据' : item.menuFoodDetailDi == '' ? '暂无数据' : item.menuFoodDetailDi}}</p>
 									</div>
 								</div>
 								<div style="display: flex;align-items: center;height: 40px;">
@@ -84,35 +103,6 @@
 					 </div>
 				 </div>
 			 </div>
-			<!-- <el-table v-loading="loading" :data="menuFoodList" @selection-change="handleSelectionChange">
-				<el-table-column type="selection" width="55" align="center" />
-				<el-table-column label="食谱日期" align="center" prop="menuFoodTime">
-					<template slot-scope="scope">
-						<dict-tag :options="dict.type.week" :value="scope.row.menuFoodTime" />
-					</template>
-				</el-table-column>
-				<el-table-column label="食谱早餐详情" align="center" prop="menuFoodDetailBk" />
-				<el-table-column label="食谱中餐详情" align="center" prop="menuFoodDetailLu" />
-				<el-table-column label="食谱晚餐详情" align="center" prop="menuFoodDetailDi" />
-				<el-table-column label="是否启用" align="center"  >
-				  <template slot-scope="scope">
-				    <el-switch
-				      v-model="scope.row.isUse"
-				      active-value="Y"
-				      inactive-value="N"
-				      @change="handleStatusChange(scope.row)"
-				    ></el-switch>
-				  </template>
-				</el-table-column>
-				<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-					<template slot-scope="scope">
-						<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
-							v-hasPermi="['system:menuFood:edit']">修改</el-button>
-						<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
-							v-hasPermi="['system:menuFood:remove']">删除</el-button>
-					</template>
-				</el-table-column>
-			</el-table> -->
 
 			<pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum"
 				:limit.sync="queryParams.pageSize" @pagination="getList" />
@@ -143,6 +133,16 @@
 								<el-input type="textarea"  v-model="item.menuFoodDetailDi" placeholder="请输入是晚餐食谱,用“,”隔开…" />
 							</el-form-item>
 						</el-col>
+						<el-col :span="12" class="shit">
+							<el-form-item label="午餐图片" >
+								<ImageUploadgdx v-model="item.menuFoodDetailLuPhoto"/>
+							</el-form-item>
+						</el-col>
+						<el-col :span="12" class="shit">
+							<el-form-item label="晚餐图片" >
+								<ImageUploadgdx v-model="item.menuFoodDetailDiPhoto"/>
+							</el-form-item>
+						</el-col>
 						<el-col :span="24">
 							<el-form-item label="是否启用" >
 								<el-radio-group v-model="item.isUse">
@@ -169,6 +169,16 @@
 								<el-input type="textarea"  v-model="form.menuFoodDetailDi" placeholder="请输入是晚餐食谱,用“,”隔开…" />
 							</el-form-item>
 						</el-col>
+						<el-col :span="12" class="shit">
+							<el-form-item label="午餐图片" >
+								<ImageUploadgdx v-model="form.menuFoodDetailLuPhoto"/>
+							</el-form-item>
+						</el-col>
+						<el-col :span="12" class="shit">
+							<el-form-item label="晚餐图片" >
+								<ImageUploadgdx v-model="form.menuFoodDetailDiPhoto"/>
+							</el-form-item>
+						</el-col>
 						<el-col :span="24">
 							<el-form-item label="是否启用" >
 								<el-radio-group v-model="form.isUse">
@@ -195,6 +205,12 @@
 				<el-button @click="cancel">取 消</el-button>
 			</div>
 		</el-dialog>
+		<el-dialog title="查看图片" :visible.sync="opentp" width="700px" append-to-body>
+			<div>
+				<img :src="defaultSettings.urls+baseUrl+iges" alt="" style="width: 100%;height: 100%;">
+			</div>
+		</el-dialog>
+		
 	</div>
 </template>
 
@@ -206,7 +222,7 @@
 		addMenuFood,
 		updateMenuFood
 	} from "@/api/system/menuFood";
-
+const defaultSettings = require("@/settings.js");
 	export default {
 		name: "MenuFood",
 		dicts: ['week','sys_yes_no'],
@@ -220,6 +236,8 @@
 				single: true,
 				// 非多个禁用
 				multiple: true,
+				baseUrl: process.env.VUE_APP_BASE_API,
+				defaultSettings:defaultSettings,
 				// 显示搜索条件
 				showSearch: true,
 				// 总条数
@@ -230,6 +248,7 @@
 				title: "",
 				// 是否显示弹出层
 				open: false,
+				opentp:false,
 				// 查询参数
 				queryParams: {
 					pageNum: 1,
@@ -247,14 +266,15 @@
 				rules: {},
 				forlise:[],
 				lsgsi:[],
-				ishoexx:false
+				ishoexx:false,
+				iges:''
 				
 			};
 		},
 		created() {
 			this.forlise = []
 			for(var i=0 ; i < 7; i++){
-				let nhe={menuFoodDetailLu:null,week:i+1,menuFoodDetailDi:null,isUse:'Y',menuFoodTime:null}
+				let nhe={menuFoodDetailLu:null,week:i+1,menuFoodDetailDi:null,isUse:'Y',menuFoodTime:null,menuFoodDetailLuPhoto:null,menuFoodDetailDiPhoto:null}
 				if(i == 1){
 						nhe.menuFoodTime ='星期一'
 					}else if(i == 2){
@@ -275,11 +295,39 @@
 			this.getList();
 		},
 		methods: {
+			imge(row){
+				console.log(row)
+				this.iges = row
+				this.opentp = true
+				
+			},
 			/** 查询每日食谱列表 */
 			getList() {
 				this.loading = true;
 				listMenuFood(this.queryParams).then(response => {
 					this.menuFoodList = response.rows;
+					this.menuFoodList.filter( rou=>{
+						rou.nsjge = []
+						if(rou.menuFoodDetailLuPhoto !=null){
+							if(rou.menuFoodDetailLuPhoto !=''){
+								rou.menuFoodDetailLuPhotot = rou.menuFoodDetailLuPhoto.split(',')
+								rou.menuFoodDetailLuPhotot.filter(rout=>{
+									let nhfe={title:'中餐',url:rout}
+									rou.nsjge.push(nhfe)
+								})
+								
+							}
+						}
+						if(rou.menuFoodDetailDiPhoto !=null){
+							if(rou.menuFoodDetailDiPhoto !=''){
+								rou.menuFoodDetailDiPhotot = rou.menuFoodDetailDiPhoto.split(',')
+								rou.menuFoodDetailDiPhotot.filter(routt=>{
+									let nhfe={title:'晚餐',url:routt}
+									rou.nsjge.push(nhfe)
+								})
+							}
+						}
+					})
 					this.total = response.total;
 					this.loading = false;
 				});
@@ -332,7 +380,7 @@
 				this.open = true;
 				this.forlise = []
 				for(var i=0 ; i < 7; i++){
-					let nhe={menuFoodDetailLu:null,week:i+1,menuFoodDetailDi:null,isUse:'Y',menuFoodTime:null}
+					let nhe={menuFoodDetailLu:null,week:i+1,menuFoodDetailDi:null,isUse:'Y',menuFoodTime:null,menuFoodDetailLuPhoto:null,menuFoodDetailDiPhoto:null}
 					if(i == 0){
 							nhe.menuFoodTime ='星期一'
 						}else if(i == 1){
@@ -357,6 +405,20 @@
 			// 用户状态修改
 			handleStatusChange(row) {
 			  let text = row.isUse == "Y" ? "启用" : "停用";
+			  // if(row.menuFoodDetailLuPhoto !=null){
+			  // 	if(row.menuFoodDetailLuPhoto !=''){
+			  // 		if(row.menuFoodDetailLuPhoto.length !=0){
+			  // 			row.menuFoodDetailLuPhoto = row.menuFoodDetailLuPhoto.join(',')
+			  // 		}
+			  // 	}
+			  // }
+			  // if(row.menuFoodDetailDiPhoto !=null){
+			  // 	if(row.menuFoodDetailDiPhoto !=''){
+			  // 		if(row.menuFoodDetailDiPhoto.length !=0){
+			  // 			row.menuFoodDetailDiPhoto = row.menuFoodDetailDiPhoto.join(',')
+			  // 		}
+			  // 	}
+			  // }
 			  this.$modal.confirm('确认要"' + text + '""' + row.menuFoodTime + '"食谱吗?').then(function() {
 			    return updateMenuFood(row);
 			  }).then(() => {
@@ -387,6 +449,7 @@
 									return
 								}
 							}
+							
 							console.log(this.form)
 							// return
 							updateMenuFood(this.form).then(response => {
@@ -441,11 +504,37 @@
 				this.download('system/menuFood/export', {
 					...this.queryParams
 				}, `menuFood_${new Date().getTime()}.xlsx`)
-			}
+			},
+		
 		}
 	};
 </script>
 <style lang="scss">
+	.egle{
+		.el-empty{
+			height: 180px;
+		}
+		.el-empty__image svg{
+			height: 140px;
+		}
+	}
+	.ingsek{
+	 .el-carousel__container{
+		 height: 200px;
+	 }	
+	}
+	
+	.shit{
+		.el-upload--picture-card{
+			width: 80px;
+			height: 80px;
+			line-height: 80px;
+		}
+		.el-upload-list--picture-card .el-upload-list__item{
+		width: 80px;
+		height: 80px;	
+		}
+	}
 	.nhgrls {
 		.el-dialog__body {
 			padding: 0;

+ 1 - 31
ruoyi-ui/src/views/tongj/orderme/index.vue

@@ -155,19 +155,6 @@
     <el-dialog :title="title" :visible.sync="open" width="900px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="120px">
 		  <el-row>
-			  <!-- <el-col :span="12">
-			  	 <el-form-item label="会议室名称" prop="conferenceRoomName">
-			  	 <el-select style="width:100%"  v-model="form.conferenceRoomName" placeholder="请选择会议室名称" clearable>
-			  	   <el-option
-			  	   @click.native="ishsue(dict)"
-			  	     v-for="dict in orderListg"
-			  	     :key="dict.conferenceRoomId"
-			  	     :label="dict.conferenceRoomName"
-			  	     :value="dict.conferenceRoomName"
-			  	   />
-			  	 </el-select>
-			  	 </el-form-item> 
-			  </el-col> -->
 			  
 			  <el-col :span="24" style="margin-bottom: 20px;" class="ingq" v-if="isnshe">
 				<el-form-item label="会议室名称" prop="conferenceRoomName">
@@ -200,24 +187,7 @@
 				  </div>
 				</el-form-item>   
 			  </el-col>
-		  			  <!-- <el-col :span="24">
-		  				 <el-form-item label="会议室名称" prop="conferenceRoomName">
-		  				 <el-select style="width:100%"  v-model="form.conferenceRoomName" placeholder="请选择会议室名称" clearable>
-		  				   <el-option
-						   @click.native="ishsue(dict)"
-		  				     v-for="dict in orderListg"
-		  				     :key="dict.conferenceRoomId"
-		  				     :label="dict.conferenceRoomName"
-		  				     :value="dict.conferenceRoomName"
-		  				   />
-		  				 </el-select>
-						 </el-form-item> 
-		  			  </el-col> -->
-		  			  <!-- <el-col :span="12">
-		  			  	<el-form-item label="会议室地址" prop="conferenceRoomAddress">
-		  			  	  <el-input v-model="form.conferenceRoomAddress" placeholder="请输入会议室地址" />
-		  			  	</el-form-item>			  
-		  			  </el-col> -->
+		  			 
 					  <el-col :span="12">
 					  	<el-form-item label="会议名称" prop="conferenceName">
 					  	  <el-input v-model="form.conferenceName"  placeholder="请输入内容" />

+ 43 - 8
ruoyi-ui/src/views/tongj/record/index.vue

@@ -132,8 +132,8 @@
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 	</div>
-	<div style="display: flex;" class="nblqwt">
-		<p @click="iscvf(item)" :class=" ingsnum == item.dictValue? 'iscd' : ''" v-for="(item,index) in lishgew" :key="index">{{item.dictLabel}}<span>(45人)</span></p>
+	<div style="display: flex;" class="nblqwt" v-if="nhgwe == true">
+		<p @click="iscvf(item)" :class=" ingsnum == item.dictValue? 'iscd' : ''" v-for="(item,index) in lishgew" :key="index">{{item.dictLabel}}<span v-if="item.dictValue != 1">({{item.tj == undefined?'' : item.tj}}人)</span></p>
 	</div>
 
     <el-table v-loading="loading" :data="recordList" @selection-change="handleSelectionChange">
@@ -238,7 +238,7 @@
 </template>
 
 <script>
-import { listRecord, getRecord, delRecord, addRecord, updateRecord } from "@/api/system/record";
+import { listRecord, getRecord, delRecord, addRecord, updateRecord,abnormal } from "@/api/system/record";
 
 export default {
   name: "Record",
@@ -275,7 +275,9 @@ export default {
         recordTime: null,
         workingTime: null,
         dutyTime: null,
-		isOutwork:'1'
+		isOutwork:'1',
+		startTime:null,
+		endTime:null
       },
       // 表单参数
       form: {},
@@ -286,16 +288,19 @@ export default {
         ],
       },
 	  lishgew:[],
-	  ingsnum:1
+	  ingsnum:1,
+	  nhgwe:false
+	  
     };
   },
   created() {
 	  this.queryParams.startTime=  this.getNowDate()
-    this.getList();
-	this.getDicts("is_outwork").then(response => {
+	  this.queryParams.endTime=  this.getNowDate()
+      this.getList();
+	  this.getDicts("is_outwork").then(response => {
 	          this.lishgew = response.data;
+			  this.getti()
 	    });
-	
   },
   methods: {
 	  getNowDate() {
@@ -318,6 +323,34 @@ export default {
         this.loading = false;
       });
     },
+	getti(){
+	  this.nhgwe = false
+	  let jgwe={'startTime':this.queryParams.startTime,'endTime':this.queryParams.endTime}
+	  abnormal(jgwe).then(response => {
+		// this.lishgew = response.data;
+		// for()
+		this.lishgew.filter(rou=>{
+			if(rou.dictValue == 2){
+				// 外勤
+				rou.tj = response.data.wq
+			}
+			if(rou.dictValue == 3){
+				// 迟到
+				rou.tj = response.data.cd
+			}
+			if(rou.dictValue == 4){
+				// 早退
+				rou.tj = response.data.zt
+			}
+			if(rou.dictValue == 5){
+				// 未打卡
+				rou.tj = response.data.wdk
+			}
+			this.nhgwe = true
+		})
+		
+	  });	
+	},
     // 取消按钮
     cancel() {
       this.open = false;
@@ -347,6 +380,7 @@ export default {
     handleQuery() {
       this.queryParams.pageNum = 1;
       this.getList();
+	  this.getti()
     },
     /** 重置按钮操作 */
     resetQuery() {
@@ -416,6 +450,7 @@ export default {
 		this.queryParams.isOutwork = item.dictValue
 		this.queryParams.pageNum = 1
 		this.getList()
+		this.getti()
 	}
   }
 };

+ 433 - 0
ruoyi-ui/src/views/tongj/recordtj/index.vue

@@ -0,0 +1,433 @@
+<template>
+  <div class="app-container">
+	<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="140px" class="nghfs">
+	    <p class="lqw" style="font-weight: 700;font-size: 15px;"> <img src="../../../assets/images/icon_yq_htgl_btzs.png" alt="" style="width:10px;height: 10px;margin-right: 10px;"> 搜索条件</p>
+	     <el-row>
+			 <el-col :span="8">
+			   <el-form-item label="日期" prop="recordDate">
+			     <el-date-picker clearable
+			       v-model="queryParams.recordDate"
+			       type="month"
+			       value-format="yyyy-MM"
+			       placeholder="请选择日期">
+			     </el-date-picker>
+			   </el-form-item>
+			 </el-col>
+			 
+	         <el-col :span="4"  style="margin-top: 3px;">
+	           <el-button type="primary" style="background-color: #5974E0; border-color: #5974E0;" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+	          <el-button style="background-color: #fff; border-color: #3464EB; color: #3464EB;" icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+	         </el-col>
+	     </el-row>
+	    </el-form>
+   <div class="ntgs" >
+   <div style="display: flex;align-items: center; margin-bottom: 10px;">
+     <p class="lqw" style="font-weight: 700;font-size: 15px; margin: 0; margin-bottom: 0;"> <img src="../../../assets/images/icon_yq_htgl_btzs.png" alt="" style="width:10px;height: 10px;margin-right: 10px;">  打卡记录</p>
+    <el-row :gutter="10" class="mb8">
+      <!-- <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['system:record:add']"
+        >新增</el-button>
+      </el-col> -->
+      <!-- <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['system:record:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['system:record:remove']"
+        >删除</el-button>
+      </el-col> -->
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['system:clock:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+	</div>
+	
+	<!-- <div style="display: flex;" class="nblqwt">
+		<p @click="iscvf(item)" :class=" ingsnum == item.dictValue? 'iscd' : ''" v-for="(item,index) in lishgew" :key="index">{{item.dictLabel}}<span>(45人)</span></p>
+	</div> -->
+
+    <el-table v-loading="loading" :data="recordList" @selection-change="handleSelectionChange">
+      <el-table-column label="人员姓名" align="center" prop="name" />
+	  <el-table-column label="迟到" align="center" prop="type">
+	   <template slot-scope="scope">
+	    <span style="color: #ff6969;">{{scope.row.cd}}</span>
+	    </template>
+	  </el-table-column>
+	  <el-table-column label="早退" align="center" prop="type">
+		  <template slot-scope="scope">
+	    <span style="color: #ff8a00;">{{scope.row.zt}}</span>
+	    </template>
+	  </el-table-column>
+	  <el-table-column label="外勤" align="center" prop="type">
+		  <template slot-scope="scope">
+	    <span style="color: #28c529;">{{scope.row.wq}}</span>
+	    </template>
+	  </el-table-column>
+	  <el-table-column label="未打卡" align="center" prop="type">
+		  <template slot-scope="scope">
+	    <span style="color: #4775ea ;">{{scope.row.wdk}}</span>
+	    </template>
+	  </el-table-column>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-view"
+            @click="chale(scope.row)"
+            v-hasPermi="['system:clock:remove']"
+          >查看</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+	</div>
+
+    <!-- 添加或修改打卡记录对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-collapse v-model="activeName" >
+		  <ul class="infinite-list"  style="overflow:auto;height: 300px;padding: 0;">
+		    <el-collapse-item :title="item.time" :name="index + ''" v-for="(item,index) in nghweg " :key="index">
+		      <div style="color: #ff8a00 ;" >{{item.details}}</div>
+		    </el-collapse-item>
+		  </ul>
+       
+        
+      </el-collapse>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listRecordtj, getRecord, delRecord, addRecord, updateRecord,details } from "@/api/system/record";
+
+export default {
+  name: "Record",
+  dicts: ['sys_yes_no','week','is_outwork'],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 打卡记录表格数据
+      recordList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+	  activeName: ['0', '1','2','3'],
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        userId: null,
+        deptName: null,
+        recordDate: null,
+        phonenumber: null,
+        idCard: null,
+        recordTime: null,
+        workingTime: null,
+        dutyTime: null,
+		isOutwork: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        userName: [
+          { required: true, message: "人员姓名不能为空", trigger: "blur" }
+        ],
+      },
+	  lishgew:[],
+	  ingsnum:1,
+	  nghweg:[]
+    };
+  },
+  created() {
+	  this.queryParams.recordDate=  this.getNowDate()
+    this.getList();
+	this.getDicts("is_outwork").then(response => {
+	          this.lishgew = response.data;
+	    });
+	
+  },
+  methods: {
+	  getNowDate() {
+	        const timeOne = new Date()
+	        const year = timeOne.getFullYear()
+	        let month = timeOne.getMonth() + 1
+	        let day = timeOne.getDate()
+	        month = month < 10 ? '0' + month : month
+	        day = day < 10 ? '0' + day : day
+	        const NOW_MONTHS_AGO = `${year}-${month}`
+	        return NOW_MONTHS_AGO
+	      },
+
+    /** 查询打卡记录列表 */
+    getList() {
+      this.loading = true;
+      listRecordtj(this.queryParams).then(response => {
+        this.recordList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+	chale(row){
+		const clockId = row.clockId || this.ids
+		let nsgwe = {'userId':row.userId,'recordDate':this.queryParams.recordDate}
+		details(nsgwe).then(response => {
+		  this.nghweg = response.data;
+		  this.open = true;
+		  this.title='查看详情'
+		});
+	},
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        clockId: null,
+        userId: null,
+        deptName: null,
+        userName: null,
+        phonenumber: null,
+        idCard: null,
+        recordTime: null,
+        workingTime: null,
+        dutyTime: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null,
+        remark: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.clockId)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加打卡记录";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const clockId = row.clockId || this.ids
+	  let nsgwe = {'userId':row.userId,'recordDate':this.queryParams.recordDate}
+      details(nsgwe).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改打卡记录";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.clockId != null) {
+            updateRecord(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addRecord(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const clockIds = row.clockId || this.ids;
+      this.$modal.confirm('是否确认删除打卡记录编号为"' + clockIds + '"的数据项?').then(function() {
+        return delRecord(clockIds);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('system/record/export', {
+        ...this.queryParams
+      }, `record_${new Date().getTime()}.xlsx`)
+    },
+	iscvf(item){
+		this.ingsnum = item.dictValue
+		this.queryParams.isOutwork = item.dictValue
+		this.queryParams.pageNum = 1
+		this.getList()
+	}
+  }
+};
+</script>
+<style lang="scss">
+	.nhgrls{
+		.el-dialog__body{
+			padding: 0;
+		}
+	}
+  .hyr{
+    span{
+      text-decoration:underline;
+    }
+  }
+</style>
+<style scoped lang="scss">
+	.nblqwt{
+		padding-left: 10px;
+		p{
+			padding: 5px 14px ;
+			background-color: #eaeaea;
+			border-radius: 3px;
+			margin-right: 5px;
+			color: #666666 ;
+		}
+		.iscd{
+			border: 1px solid #3565ed;
+			background-color: #fff;
+			color: #3565ed ;
+		}
+	}
+  .iuer{
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    .ite{
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+      p{
+        margin: 0;
+        font-size: 15px;
+        font-family: PingFang SC;
+        font-weight: 500;
+        color: #AAAAAA;
+        padding: 4px 12px;
+        background: #F7F8FA;
+        border-radius: 4px;
+        margin-right: 20px;
+      }
+      .actt{
+        background: #E6EBFF;
+        border: 1px solid #5974E0;
+        border-radius: 4px;
+        color: #5974E0;
+      }
+
+    }
+  }
+  .lqw{
+    padding: 0 10px;
+    margin: 0;
+    margin-bottom: 20px;
+  }
+.nhgel{
+  height: 170px;
+  background-color: #313b61;
+  width: 100%;
+  position: absolute;
+  top:0;
+  left:0;
+  z-index: 0;
+}
+	.app-container{
+		background-color: #f3f4f6;
+		padding-top: 10px;
+	   
+	}
+	.ntgs{
+	position: relative;
+		background-color: #fff;
+		padding: 5px;
+		// border-radius: 5px;
+		padding-top: 10px;
+	     padding: 10px 20px;
+		 padding-left: 10px;
+		.pagination-container{
+			height: 50px;
+		}
+	}
+	.nghfs{
+	position: relative;
+		background-color: #fff;
+		padding-top: 18px !important;
+		padding: 5px;
+		// border-radius: 5px;
+		// margin-bottom: 20px;
+	}
+	.ksf{
+		img{
+			width:100%;
+			height: 100%;
+		}
+	}
+
+</style>

+ 21 - 7
ruoyi-ui/src/views/tongj/renyuan/index.vue

@@ -214,13 +214,9 @@
   			 </el-tooltip>
   	</template>
   </el-table-column>
-  <el-table-column label="补充事由" align="center" prop="visitRemark" >
+  <el-table-column label="人脸图片" align="center" prop="humanFaceData" >
   	  <template slot-scope="scope">
-  		 <el-tooltip class="item" effect="dark" :content="scope.row.visitRemark" placement="top">
-  		 	    <p style="white-space: nowrap;
-  		 text-overflow: ellipsis;
-  		 overflow: hidden;width:100%;">{{  scope.row.visitRemark}}</p>
-  		 	 </el-tooltip>
+  		  <image-preview :src="scope.row.humanFaceData" :width="50" :height="50"/>
   	</template>
   </el-table-column>
   <el-table-column label="审核状态" align="center" prop="visitType" >
@@ -385,6 +381,12 @@
 				 </el-col>
 				 
 			  </el-col>
+			  <el-col :span="24" class="enlad">
+			  		<el-form-item label="人脸图片" prop="humanFaceData">
+			  		    <image-upload :limit="1" v-model="forms.humanFaceData"/>
+			  		</el-form-item>
+			  				 
+			  </el-col>
 			  
       </el-row>
       </el-form>
@@ -600,6 +602,7 @@ export default {
       this.form = {
 		    receptionId:undefined,
         receptionPhone:undefined,
+		humanFaceData:undefined,
         // postSort: 0,
         // status: "0",
         receptionName: undefined
@@ -632,7 +635,7 @@ export default {
     },
     handleDeleteh(row){
       this.$router.push({
-        path: '/tongj/bjqs',
+        path: '/fangke/tongj/bjqs',
       		query: {
       			'id':row.reservatId,
       			'name':null,
@@ -898,6 +901,17 @@ export default {
 </script>
 
 <style lang="scss">
+	.enlad{
+		.el-upload--picture-card{
+			height: 80px;
+			width: 80px;
+			line-height: 80px;
+		}
+		.el-upload-list--picture-card .el-upload-list__item{
+			height: 80px;
+			width: 80px;
+		}
+	}
 	.nhgrls{
 		.el-dialog__body{
 			padding: 0;

+ 2 - 53
ruoyi-ui/src/views/tongj/room/index.vue

@@ -87,43 +87,7 @@
     </el-row>
 	</div>
 
-    <!-- <el-table stripe v-loading="loading" :data="roomList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="会议室名称" align="center" prop="conferenceRoomName" />
-      <el-table-column label="会议室地址" align="center" prop="conferenceRoomAddress" />
-      <el-table-column label="图片" align="center" prop="conferenceRoomUrl" >
-		    <template slot-scope="scope">
-				 <image-preview :src="scope.row.conferenceRoomUrl" :width="80" :height="80"/>
-		  </template>
-	 </el-table-column>
-      <el-table-column label="备注" align="center" prop="remark" />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-        <template slot-scope="scope">
-            <el-button
-              size="mini"
-              type="text"
-              @click="handleUpdate(scope.row)"
-          	style="color:#28C529"
-              v-hasPermi="['system:room:edit']"
-            >修改</el-button>
-            <el-button
-              size="mini"
-              type="text"
-          	style="color:#F7052B"
-              @click="handleDelete(scope.row)"
-              v-hasPermi="['system:room:remove']"
-            >删除</el-button>
-          </template>
-        </el-table-column>
-    </el-table>
-    
-    <pagination
-      v-show="total>0"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
-      @pagination="getList"
-    /> -->
+  
 	<el-row :gutter="20">
 	  <el-col :span="6" v-for="(item,index) in roomList" :key="index" >
 	  <div style="background: #FFFFFF;box-shadow: 0px 0px 10px 0px #CDCDCD;border-radius: 4px;">
@@ -142,22 +106,7 @@
 	  </el-col>
 	
 	</el-row>
-	   <!-- <div style="display: flex;align-items: center;justify-content: flex-start;flex-wrap: wrap;">
-		   <div v-for="(item,index) in 4" :key="index" style="background: #FFFFFF;box-shadow: 0px 0px 10px 0px #CDCDCD;border-radius: 4px;width: 24%; margin-right: 10px;">
-			  <div style="padding: 16px;" class="sgne">
-				  <img src="../../../assets/images/pic_yq_htgl_banner.png" alt="" style="width: 100%;">
-				  <p>会议室名称:101室</p>
-				  <p>会议室地址:一楼东南角</p>
-				  <p>备注:可容纳最多12人</p>
-			  </div>
-			  <div style="border-top: 1px solid #DADADA;" class="fieg">
-				<p class="pges">修改</p>
-				<p class="pges" style="color: red;border-left: 1px solid #DADADA;">删除</p>
-			  </div>
-		   </div>
-		   
-		   
-	   </div> -->
+	  
 		</div>
 
     <!-- 添加或修改会议室对话框 -->

+ 2 - 0
ruoyi-ui/src/views/tongj/schedule/index.vue

@@ -134,6 +134,7 @@
 		  				     v-model="form.startWorkTime"
 		  				     value-format="HH:mm:ss"
 		  				     format="HH:mm:ss"
+							 style="width: 100%;"
 		  				     placeholder="请选择上班时间">
 		  				   </el-time-picker>
 		  				 </el-form-item> 
@@ -149,6 +150,7 @@
 		  					  	    v-model="form.endWorkTime"
 		  					  	   value-format="HH:mm:ss"
 		  					  	   format="HH:mm:ss"
+								   style="width: 100%;"
 		  					  	    placeholder="请选择下班时间">
 		  					  	  </el-time-picker>
 		  					  	</el-form-item>		  

+ 30 - 15
ruoyi-ui/src/views/tongj/shebe/index.vue

@@ -14,17 +14,18 @@
               />
             </el-select>
 			<div class="ksfpofg" @click="handleQuery">
-						  <img src="../../../assets/images/icon_sslb_ss.png" alt="" style="width:10px;height: 10px;">
-						  搜索</div>
+				<img src="../../../assets/images/icon_sslb_ss.png" alt="" style="width:10px;height: 10px;">
+						  搜索
+						  </div>
        </div>
-	   <div class="ite">
+	   <!-- <div class="ite">
 	      <div class="ksfpo" @click="osge"  v-hasPermi="['system:camera:openDz']">
 			  <img src="../../../assets/images/icon_ssjk_kman_open.png" alt="" style="width:10px;height: 10px;">
 			  开门</div>
 		  <div class="ksfpo ksfpok" @click="osgef" v-hasPermi="['system:camera:closeDz']">
 		  			  <img src="../../../assets/images/icon_ssjk_kman_close.png" alt="" style="width:10px;height: 10px;">
 		  			  关门</div>
-	   </div>
+	   </div> -->
 <!--  -->
      </div>
       <!-- <el-col :span="1.5">
@@ -73,7 +74,7 @@
 							</el-tab-pane>
 						  </el-tabs>
 					</el-col>
-					<el-col :span='20' style="padding-left: 30px;">
+					<el-col :span='20' style="padding-left: 30px;" v-if="isshoe">
 						<video
 						      class="videosmall"
 						      ref="videosmallone"
@@ -81,18 +82,18 @@
 						      muted
 						      autoplay
 							  width="95%"
-							  
 						      type="rtmp/flv"
 						    >
 						      <source src="" />
 						    </video>
 					</el-col>
+					
 					    
 						 <!-- <div class="nghwgq" v-if="!isshiwa">
 							  <img src="../../../assets/images/jiaz.png" alt="" style="width: 90px;height: 86px;">
 							  <div>加载中,请稍后</div>
 						  </div> -->
-						  <!-- <video
+						 <!-- <video
 						          id="myFlvVideo"
 						          muted
 						          autoplay
@@ -105,6 +106,7 @@
 						  <!-- <p class='p'>南大门出入口</p> -->
 				</div> 
 			</el-col>
+			
 			<!-- <el-col :span="24">
 				<div class="ihgswq wrapper"  ref="wrapper" style=" overflow: hidden;">
 						  <div class="fijge content nhgwesvq" ref="content" style="width:1610px;">
@@ -252,7 +254,7 @@ export default {
 	  opent:false,
 	  bg:null,
     titles:'',
-	editableTabsValue:'5',
+	editableTabsValue:'6',
     opens:false,
 	  imageUrl:'@/assets/logo/logo.png',
 	  printObj: {
@@ -288,7 +290,7 @@ export default {
       // 查询参数
       queryParams: {
         pageNo: 1,
-        pageSize:50,
+        pageSize:500,
 		name:null,
         postCode: undefined,
         postName: undefined,
@@ -333,7 +335,8 @@ export default {
 	player: null,
 	name:null,
 	isshiwa:false,
-	isjfwe:{}
+	isjfwe:{},
+	isshoe:false
 	
 
     };
@@ -355,12 +358,14 @@ export default {
 		this.$nextTick(() => {
 		        this.initScroll()
 		    })   
-	
+	 
   },
    beforeDestroy() {
       this.destoryVideo()
     },
   methods: {
+	  
+
 	  init(val) { //这个val 就是一个地址,例如: http://192.168.2.201:85/live/9311272c49b845baa2b2810ad9bf3f68.flv 这是个服务器返回给我的一个监控视频流地址
 	        setTimeout(() => { //使用定时器是因为,在mounted声明周期里调用,可能会出现DOM没加载出来的原因
 	          var videoElement = this.$refs.videosmallone; // 获取到html中的video标签
@@ -390,10 +395,18 @@ export default {
 	                lazyLoad: false,
 	              }
 	            );
+				this.isshoe = true
 	            this.player.attachMediaElement(videoElement); //放到dom中去
-	            this.player.load();//准备完成
+	            
 	            //!!!!!!这里需要注意,有的时候load加载完成不一定可以播放,要是播放不成功,用settimeout 给下面的this.player.play() 延时几百毫秒再播放
-	            this.player.play();//播放
+	            // setTimeout(this.player.play(), 48000);
+				setTimeout(() =>{
+					//到时间时只执行一次就停止
+					this.player.load();//准备完成
+					this.player.play()
+					console.log('播放')
+				},900)
+				
 				
 	          }
 	        }, 500);
@@ -406,10 +419,10 @@ export default {
 			  console.log(videoElement,flvjs)
 	          this.flvPlayer = flvjs.createPlayer(
 	            {
-	              type: 'flv',
+	              type: 'application/x-mpegURL',
 	              isLive: true,
 	              hasAudio: false,
-	              url:'http://60.171.161.56:8950/openUrl/KAkHQw8/live.flv'
+	              url:'https://stream1.freetv.fun/86d463c0006da643e45e26b34875df87059dcba13e69d0a5471b185793c122a2.m3u8'
 	            },
 	            {
 	              cors: true, // 是否跨域
@@ -507,8 +520,10 @@ export default {
 		this.isjfwe = val
 		let nhge={cameraIndexCode:val.indexCode}
 		this.isshiwa = false
+		this.isshoe= false
 	   cameraIndexCode(nhge.cameraIndexCode).then(response => {
 		   console.log(response.data.data.url)
+		   this.isshoe= true
 		  this.init(response.data.data.url)
 		   this.isshiwa = true
 	  // this.postList = response.rows;

+ 1107 - 0
ruoyi-ui/src/views/tongj/shebedianshi/index.vue

@@ -0,0 +1,1107 @@
+<template>
+  <div class="app-container" style="padding-top: 20px;height: 140vh;">
+    <div class="ntgs">
+    <el-row :gutter="10" class="mb8">
+     <div class="iuer" style="margin-bottom:10px;">
+       <div style="display: flex;align-items: center; " class="ingaqe">
+		    <p class="lqw" style="font-weight: 700;font-size: 15px; margin-bottom: 0;"> <img src="../../../assets/images/icon_yq_htgl_btzs.png" alt="" style="width:10px;height: 10px;margin-right: 10px;"> 门禁信息</p>
+            <el-select v-model="queryParams.name" placeholder="请选监控名称" clearable>
+              <el-option
+                v-for="dict in postList"
+                :key="dict.indexCode"
+                :label="dict.name"
+                :value="dict.name"
+              />  
+            </el-select>
+			<div class="ksfpofg" @click="handleQuery">
+						  <img src="../../../assets/images/icon_sslb_ss.png" alt="" style="width:10px;height: 10px;">
+						  搜索</div>
+       </div>
+	   <div class="ite">
+	      <div class="ksfpo" @click="osge"  v-hasPermi="['system:camera:openDz']">
+			  <img src="../../../assets/images/icon_ssjk_kman_open.png" alt="" style="width:10px;height: 10px;">
+			  开门</div>
+		  <div class="ksfpo ksfpok" @click="osgef" v-hasPermi="['system:camera:closeDz']">
+		  			  <img src="../../../assets/images/icon_ssjk_kman_close.png" alt="" style="width:10px;height: 10px;">
+		  			  关门</div>
+	   </div>
+<!--  -->
+     </div>
+      <!-- <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['investigate:table:add']"
+        >新增</el-button>
+      </el-col>
+
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['investigate:table:remove']"
+        >删除</el-button>
+      </el-col> -->
+     <!-- <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['investigate:table:export']"
+        >导出</el-button>
+      </el-col> -->
+      <!-- <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> -->
+    </el-row>
+	
+	<div>
+		<el-row>
+			<el-col :span="24">
+				<div class='shotw isjses' style="margin-bottom: 30px; ">
+					<el-col :span='4'>
+						<el-tabs v-model="editableTabsValue" :tab-position="tabPosition" style="height: 500px;">
+						    <el-tab-pane v-for="(item,index) in postList" :key="index">
+							<span slot="label"  @click="isfgw(item)" class="ingwfaq"><img src="../../../assets/images/icon_yqht_ssjk_lb_normal.png" alt="" style="width: 14px;height: 16px;"> {{item.name}}</span>
+							</el-tab-pane>
+						  </el-tabs>
+					</el-col>
+					<el-col :span='20' style="padding-left: 30px;">
+						<video
+						      class="videosmall"
+						      ref="videosmallone"
+						      preload="auto"
+						      muted
+						      autoplay
+							  width="95%"
+s						      type="application/x-mpegURL"
+						    >
+						      <source src="" />
+						    </video>
+					</el-col>
+					
+					    
+						 <!-- <div class="nghwgq" v-if="!isshiwa">
+							  <img src="../../../assets/images/jiaz.png" alt="" style="width: 90px;height: 86px;">
+							  <div>加载中,请稍后</div>
+						  </div> -->
+						 <!-- <video
+						          id="myFlvVideo"
+						          muted
+						          autoplay
+						  		  controls 
+						          width="100%"
+						          height="300px"
+						        /> -->
+								
+								
+						  <!-- <p class='p'>南大门出入口</p> -->
+				</div> 
+			</el-col>
+			
+			<!-- <el-col :span="24">
+				<div class="ihgswq wrapper"  ref="wrapper" style=" overflow: hidden;">
+						  <div class="fijge content nhgwesvq" ref="content" style="width:1610px;">
+									<div class='shotw '   v-for="(item,index) in postList" :key="index" @click="isfgw(item)" >
+											  <img src="../../../assets/images/fengm.png" alt=""> 
+												<img src="../../../assets/images/icon_spjk_play.png" alt="" class="iges"> 
+											  <p style="font-size: 14px;">{{item.name}}</p>
+									</div>  
+						  </div> 
+				</div>
+			</el-col> -->
+		</el-row>
+	   
+	   
+	   <pagination
+	     v-show="total>0"
+	     :total="total"
+	     :page.sync="queryParams.pageNo"
+	     :limit.sync="queryParams.pageSize"
+	     @pagination="getList"
+	   />
+	</div>
+
+    
+	</div>
+
+    <!-- 添加或修改岗位对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+		  <el-row>
+			  <el-col :span="24">
+			  		<el-form-item label="接待人员" prop="receptionId">
+			  			<el-select  style="width:100%;" v-model="form.receptionId" placeholder="请选择">
+			  			    <el-option
+			  			      v-for="item in ksjegsg"
+			  			      :key="item.receptionId"
+			  			      :label="item.receptionName"
+			  			      :value="item.receptionId"
+                    @click.native="nhgwel(item)"
+			  			      >
+			  			    </el-option>
+			  			  </el-select>
+			  		</el-form-item>
+			  </el-col>
+		  </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+
+    <el-dialog :title="titles" :visible.sync="opens" width="1000px" append-to-body>
+      <el-form ref="forms" :model="forms" :rules="ruless" label-width="120px">
+      <el-row>
+    	  <el-col :span="8">
+    	  		<el-form-item label="人员类型" prop="recordType">
+    	        <el-select v-model="forms.recordType" placeholder="请选择人员类型" >
+    	          <el-option
+    	            v-for="dict in dict.type.fange"
+    	            :key="dict.value"
+    	            :label="dict.label"
+    	            :value="dict.value"
+    	          />
+    	        </el-select>
+    	  		 </el-form-item>
+    	  </el-col>
+    	  <el-col :span="8">
+    	  		<el-form-item label="联系人" prop="recordName">
+    	  		          <el-input v-model="forms.recordName" placeholder="请输入联系人" />
+    	  		        </el-form-item>
+    	  </el-col>
+    	  <el-col :span="8">
+    	  		 <el-form-item label="联系方式" prop="recordPhone">
+    	  		          <el-input v-model="forms.recordPhone" placeholder="请输入联系方式" />
+    	  		        </el-form-item>
+    	  </el-col>
+
+    	  <el-col :span="8">
+    	  		<el-form-item label="出入时间" prop="recordDateTime">
+    	  		          <el-date-picker style="width:100%" clearable
+    	  		            v-model="forms.recordDateTime"
+    	  		            type="date"
+    	  		            value-format="yyyy-MM-dd"
+    	  		            placeholder="请选择	出入时间">
+    	  		          </el-date-picker>
+    	  		        </el-form-item>
+    	  </el-col>
+    	  <el-col :span="8">
+    	  		<el-form-item label="记录来源" prop="recordSource">
+    	        <el-select v-model="forms.recordSource" placeholder="请选择记录来源" >
+    	          <el-option
+    	            v-for="dict in dict.type.jluly"
+    	            :key="dict.value"
+    	            :label="dict.label"
+    	            :value="dict.value"
+    	          />
+    	        </el-select>
+    	  		 </el-form-item>
+    	  </el-col>
+    	  <el-col :span="8">
+    	  		<el-form-item label="备注" prop="visitRemark">
+    	  		          <el-input v-model="forms.visitRemark" placeholder="请输入备注" />
+    	  		        </el-form-item>
+    	  </el-col>
+      </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForms">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+
+	<el-dialog title="页面二维码" :visible.sync="opent" width="200px" style="padding: 0;" class="nhgrls" append-to-body>
+	  <div v-show="opent" style="display: flex;justify-content: center;align-items: center;">
+		  <!-- <span>{{'https://qszdh.qs163.cn/pages/index/index?id=' + this.bg}}</span> -->
+			   <vue-qr   :text="'https://qszdh.qs163.cn/pages/index/index?id=' + this.bg" :size="200"></vue-qr>
+	  </div>
+	</el-dialog>
+  </div>
+</template>
+
+<script>
+import { listPost, getPost, delPost, addPost, updatePost,updateFs,updateGx } from "@/api/kaoch/renyuan";
+import { listReservat,camera,cameraIndexCode, listReservatd, getReservat, delReservat, addReservat, updateReservat,setPass,delReservathx,openDz,closeDz } from "@/api/tonggi/houtai";
+import vueQr from "vue-qr";
+import videojs from 'video.js'
+import 'video.js/dist/video-js.css'
+import {videoPlayer} from 'vue-video-player'
+import 'videojs-flash'
+// import flvjs from 'flv.js/dist/flv.min.js'
+import flvjs from "flv.js";
+import Bscroll from "better-scroll";
+export default {  
+  name: "Post",
+  dicts: ['sys_normal_disable','sys_yes_no','youke','tjzh','youkes','lafafen','fange','jluly'],
+  components: {
+      vueQr,
+	  videoPlayer
+    },
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+	  opent:false,
+	  bg:null,
+    titles:'',
+	editableTabsValue:'5',
+    opens:false,
+	  imageUrl:'@/assets/logo/logo.png',
+	  printObj: {
+	           id: "nhgrew", // 这里是要打印元素的ID
+	           popTitle: "", // 打印的标题
+	         },
+	  pickerOptions:{
+	            disabledDate (time) {
+	              //disabledDate 文档上:设置禁用状态,参数为当前日期,要求返回 Boolean
+	              // return time.getTime() > Date.now()//选当前时间之前的时间
+	              return time.getTime() < Date.now()  - 8.64e7;//选当前时间之后的时间
+	            }
+	        },
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+	  checkedScoreDataDetails: [],
+	  scoreDataDetailsList:[],
+	  tabPosition:'left',
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 岗位表格数据
+      postList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNo: 1,
+        pageSize:50,
+		name:null,
+        postCode: undefined,
+        postName: undefined,
+        status: undefined,
+        reservatType:undefined
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        receptionId: [
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],
+
+
+      },
+      ruless:{
+        visitName: [
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],
+        visitPhone: [
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],
+        visitNum: [
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],
+        visitDate: [
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],
+        visitTime: [
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],
+
+      },
+      forms:{},
+			tableMaxHeight:'200',
+      kje:0,
+      ksjegsg:[],
+	   Scroll: null,
+	   videoShow: false,
+	flvPlayer:null,
+	player: null,
+	name:null,
+	isshiwa:false,
+	isjfwe:{}
+	
+
+    };
+  },
+  created() {
+    this.getList();
+    // this.getListh()
+  window.onresize = () => {
+  	      this.changeTableMaxHeight()
+  	    }
+  	    this.changeTableMaxHeight()
+  },
+  mounted() {
+  	window.onresize = () => {
+  	          this.changeTableMaxHeight()
+  	        }
+  	        this.changeTableMaxHeight()
+   
+		this.$nextTick(() => {
+		        this.initScroll()
+		    })   
+	 
+  },
+   beforeDestroy() {
+      this.destoryVideo()
+    },
+  methods: {
+	  
+
+	  init(val) { //这个val 就是一个地址,例如: http://192.168.2.201:85/live/9311272c49b845baa2b2810ad9bf3f68.flv 这是个服务器返回给我的一个监控视频流地址
+	        setTimeout(() => { //使用定时器是因为,在mounted声明周期里调用,可能会出现DOM没加载出来的原因
+	          var videoElement = this.$refs.videosmallone; // 获取到html中的video标签
+			  this.isshiwa = true
+	          if (flvjs.isSupported()) {
+	          //因为我这个是复用组件,进来先判断 player是否存在,如果存在,销毁掉它,不然会占用TCP名额
+	            if (this.player !== null) {
+	              this.player.pause();
+	              this.player.unload();
+	              this.player.detachMediaElement();
+	              this.player.destroy();
+	              this.player = null;
+	            }
+	            this.player = flvjs.createPlayer( //创建直播流,加载到DOM中去
+	              {
+	                type: "application/x-mpegURL",
+	                url: val, //你的url地址
+	                isLive: true, //数据源是否为直播流
+	                hasAudio: true, //数据源是否包含有音频
+	                hasVideo: true, //数据源是否包含有视频
+	                enableStashBuffer: true, //是否启用缓存区
+	              },
+	              {
+	                enableWorker: false, //不启用分离线程
+	                enableStashBuffer: false, //关闭IO隐藏缓冲区
+	                autoCleanupSourceBuffer: true, //自动清除缓存
+	                lazyLoad: false,
+	              }
+	            );
+	            this.player.attachMediaElement(videoElement); //放到dom中去
+	            this.player.load();//准备完成
+	            //!!!!!!这里需要注意,有的时候load加载完成不一定可以播放,要是播放不成功,用settimeout 给下面的this.player.play() 延时几百毫秒再播放
+	            this.player.play();//播放
+				
+	          }
+	        }, 500);
+	      },
+
+	  createVideo() {
+	        if (flvjs.isSupported()) {
+				console.log(1)
+	          var videoElement = document.getElementById('myFlvVideo')
+			  console.log(videoElement,flvjs)
+	          this.flvPlayer = flvjs.createPlayer(
+	            {
+	              type: 'application/x-mpegURL',
+	              isLive: true,
+	              hasAudio: false,
+	              url:'https://stream1.freetv.fun/86d463c0006da643e45e26b34875df87059dcba13e69d0a5471b185793c122a2.m3u8'
+	            },
+	            {
+	              cors: true, // 是否跨域
+	              enableWorker: false, // 是否多线程工作
+	              enableStashBuffer: false, // 是否启用缓存
+	              stashInitialSize: 400, // 缓存大小(kb)  默认384kb
+	              autoCleanupSourceBuffer: true // 是否自动清理缓存
+	            }
+	          )
+	          this.flvPlayer.attachMediaElement(videoElement)
+	          this.flvPlayer.load()
+	          this.flvPlayer.play()
+			  console.log(1244)
+	          // 报错重连
+	          this.flvPlayer.on(flvjs.Events.ERROR, (errType, errDetail) => {
+	            console.log('errorType:', errType)
+	            console.log('errorDetail:', errDetail)
+	            if (this.flvPlayer) {
+	              this.destoryVideo()
+	              this.createVideo()
+	            }
+	          })
+	        }
+			
+			console.log(this.flvPlayer.play())
+	      },
+	      destoryVideo() {
+	        this.player.pause()
+	        this.player.unload()
+	        this.player.detachMediaElement()
+	        this.player.destroy()
+	        this.player = null
+	      },
+
+	  initScroll() {
+	    	  // 给内层盒子设置宽度,不设置宽度的话无法滚动
+	    	  // let width = this.goods.length * 60
+	    	  // // 如果有外边距,可以这样写。需要去掉最后一个元素的外边距,在后面减一下
+	    	  // let width = this.goodslength * (60 + 10) - 10
+			  let width = 6 * (200 + 10) - 10
+	        this.$refs.content.style.width = width + 'px'
+	        this.$nextTick(()=>{
+	          if(!this.Scroll) {
+	            this.Scroll = new Bscroll(this.$refs.wrapper,{
+	              click: true,      // 配置允许点击事件
+	              scrollX: true,    // 开启横向滚动
+	              eventPassthrough: 'vertical',  // 当设置 eventPassthrough 为 'vertical' 的时候,scrollY 无效
+				  mouseWheel: true,
+				  scrollbar: { // 滚动条, 要加相对位置
+				              fade: true
+				            }
+	            })
+	          } else {
+	            this.Scroll.refresh()     // 重新计算 better-scroll,当 DOM 结构发生变化的时确保滚动效果正常
+	          }
+	        })
+	      },
+
+    /** 查询岗位列表 */
+    getList() {
+      this.loading = true;
+	  // this.queryParams
+      camera(this.queryParams).then(response => {
+        this.postList = response.data.data.list;
+		if(response.data.data != null){
+		if(response.data.data.list.length != 0){
+			let ne = response.data.data.list[0]
+			response.data.data.list.filter(rtu=>{
+				if(rtu.name == '后门道闸'){
+					console.log(3,rtu)
+					ne = rtu
+					return
+				}
+			})
+			this.isfgw(ne)
+			this.isjfwe =ne
+			
+		}	
+		}
+        // this.postList=[{'nsje':null,'visitPhone':null,'isReception':'Y'}]
+        this.total = response.data.data.total;
+        this.loading = false;
+      });
+    },
+    getListh() {
+      this.loading = true;
+      listReservatd().then(response => {
+        // this.postList = response.rows;
+        this.ksjegsg= response.data
+        // this.total = response.total;
+        this.loading = false;
+      });
+    },
+	isfgw(val){
+		this.isjfwe = val
+		let nhge={cameraIndexCode:val.indexCode}
+		this.isshiwa = false
+	   cameraIndexCode(nhge.cameraIndexCode).then(response => {
+		   console.log(response.data.data.url)
+		  // this.init(response.data.data.url)
+		  this.init('http://stream.fs1.tv:8080/hls/webstream.m3u8')
+		   this.isshiwa = true
+	  // this.postList = response.rows;
+	  // this.total = response.total;
+	  });
+		console.log(val,4)
+	},
+	osge(){
+		console.log(this.isjfwe,45)
+		if(this.isjfwe.name == '后门道闸'){
+			this.isjfwe.name ='后门抓拍一体机1'
+		}
+		let nge={equipmentName:this.isjfwe.name}
+		openDz(nge).then(response => {
+		 
+		});
+	},
+	osgef(){
+		if(this.isjfwe.name == '后门道闸'){
+			this.isjfwe.name ='后门抓拍一体机1'
+		}
+		let nge={equipmentName:this.isjfwe.name}
+		closeDz(nge).then(response => {
+		  // this.postList = response.rows;
+		});
+	},
+
+    ilw(row,val){
+      this.kje = val
+      // console.log(row)
+      if(row.value == 0){
+          this.queryParams.reservatType = undefined
+      }else{
+        this.queryParams.reservatType = row.value
+      }
+    console.log(this.kje)
+      this.queryParams.pageNum  = 1
+      this.getList()
+    },
+  nhgwel(item){
+    this.form.receptionId = item.receptionId
+    this.form.receptionName = item.receptionName
+    this.form.receptionPhone = item.phonenumber
+
+  },
+    getPass(row) {
+      const _this = this
+      this.$confirm('是否审核通过', "提醒", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(function() {
+        return setPass({
+        visitType: 3,
+        reservatId: row.reservatId,
+        // xmStatus:row.xmStatus
+      })
+      }).then(() => {
+    	   _this.getList();
+        _this.msgSuccess("提交成功");
+      })
+    },
+    infoBtn(row) {
+    	const _this = this
+    	this.$confirm('是否拒绝', "提醒", {
+    	  confirmButtonText: "确定",
+    	  cancelButtonText: "取消",
+    	  type: "warning"
+    	}).then(function() {
+    	  return setPass({
+    	  visitType: 2,
+    	   reservatId: row.reservatId,
+    	  // xmStatus:row.xmStatus
+    	})
+    	}).then(() => {
+    	  _this.getList();
+    	  _this.msgSuccess("提交成功");
+    	})
+
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+	  this.opens = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+		receptionId:undefined,
+        receptionPhone:undefined,
+        // postSort: 0,
+        // status: "0",
+        receptionName: undefined
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.reservatId)
+      this.single = selection.length!=1
+      this.multiple = !selection.length
+    },
+    nhgeo(row){
+      this.reset();
+     this.open = true;
+     this.title = "分配接待人员";
+     this.form.reservatId = row.reservatId;
+     this.form.reservatConfigTimeId=row.reservatConfigTimeId;
+     this.form.visitDate=row.visitDate
+    },
+    handleDeleteh(row){
+      this.$router.push({
+        path: '/bjqs',
+      		query: {
+      			'id':row.reservatId,
+      			'name':null,
+      			'names':null,
+      			'isxz':1
+      		}
+      })
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.forms = {
+        reservatType:'1'
+      }
+      this.opens = true;
+      this.titles = "添加预约人员";
+	  // this.scoreDataDetailsList = []
+	  // this.$router.push({
+	  //   path: '/system/bjq',
+	  // })
+	  // this.$router.push({
+	  //   path: '/bjqs',
+	  // 		query: {
+	  // 			'id':null,
+	  // 			'name':null,
+	  // 			'names':null,
+	  // 			'isxz':1
+	  // 		}
+	  // })
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+           const recordId = row.recordId || this.ids
+           getReservat(recordId).then(response => {
+             this.forms = response.data;
+             this.opens = true;
+             this.title = "修改访问记录";
+           });
+    },
+    /** 提交按钮 */
+    submitForm: function() {
+      this.$refs["form"].validate(valid => {
+              if (valid) {
+                // if (this.form.reservatId != null) {
+                  updateReservat(this.form).then(response => {
+                    this.$modal.msgSuccess("操作成功");
+                    this.open = false;
+                    this.getList();
+                  });
+                // } else {
+                //   addReservat(this.form).then(response => {
+                //     this.$modal.msgSuccess("新增成功");
+                //     this.open = false;
+                //     this.getList();
+                //   });
+                // }
+              }
+            });
+    },
+    submitForms: function() {
+      this.$refs["forms"].validate(valid => {
+              if (valid) {
+                // if (this.form.reservatId != null) {
+                  // updateReservat(this.forms).then(response => {
+                  //   this.$modal.msgSuccess("操作成功");
+                  //   this.open = false;
+                  //   this.getList();
+                  // });
+                // } else {
+                  this.forms.visitTime = this.forms.visitTime + '-' + this.forms.visitTime
+                  addReservat(this.forms).then(response => {
+                    this.$modal.msgSuccess("新增成功");
+                    this.opens = false;
+                    this.getList();
+                  });
+                // }
+              }
+            });
+    },
+
+	nglqw(val){
+		this.opent = true
+		this.bg = val.investigateTableId
+	},
+
+
+	iszheg(event){
+	 console.log(event);
+
+
+	 // 校验身份证:
+	 console.log(reg.test(this.form.idCard),23741)
+	 		if ( reg.test(this.form.idCard)|| _IDre15.test(this.form.idCard)) {
+	 			// this.idea();
+	 			this.go(this.form.idCard);
+	 			// callback()
+	 		} else {
+	   if(ncjsle.test(this.form.idCard) || nhyeli.test(this.form.idCard)){
+	      console.log(3)
+	   }else{
+	     if(gnse.test(this.form.idCard)  ){
+	         console.log(4)
+	     }else{
+	       if(tw.test(this.form.idCard) || twe.test(this.form.idCard)){
+	         console.log(5)
+	       }else{
+	         this.$message.error('证件格式不正确');
+	       }
+	     }
+
+	   }
+	 		}
+	},
+	erw(row){
+		this.$router.push({
+		  path: '/reny/ewm',
+		  query:{
+			   'tenantId':row.investigateTableId
+			  }
+		})
+	},
+
+	hussar_17Click(val) {
+	        const _this = this
+	        var url =process.env.VUE_APP_BASE_API + 'pages/index/index?id=' + val.investigateTableId;
+			 console.log(url,this.$refs.canvas,6)
+			this.opent = true
+	        QRCode.toCanvas(
+	                      canvas,
+	                      url,//生成二维码的数据
+	                      {width: 100, height:100, margin: 1.5},//margin调整二维码的白边大小
+	                      function (error) {
+	                        if (error) {
+	                          console.log(error);
+	                        }
+	                      }
+	                    );
+
+	        // console.log(qrcode,987)
+	      },
+	/** 成绩_子添加按钮操作 */
+	handleAddScoreDataDetails() {
+
+	  let obj = {};
+	  obj.duty = "";
+	  obj.idCard = "";
+	  obj.phonenumber = "";
+	  obj.userName = "";
+	  this.scoreDataDetailsList.push(obj);
+	  console.log(this.scoreDataDetailsList)
+	},
+	/** 成绩_子删除按钮操作 */
+	handleDeleteScoreDataDetails() {
+	  if (this.checkedScoreDataDetails.length == 0) {
+	    this.$modal.msgError("请先选择要删除的数据");
+	  } else {
+	    const scoreDataDetailsList = this.scoreDataDetailsList;
+	    const checkedScoreDataDetails = this.checkedScoreDataDetails;
+	    this.scoreDataDetailsList = scoreDataDetailsList.filter(function(item) {
+	      return checkedScoreDataDetails.indexOf(item.index) == -1
+	    });
+	  }
+	},
+	/** 复选框选中数据 */
+	handleScoreDataDetailsSelectionChange(selection) {
+	  this.checkedScoreDataDetails = selection.map(item => item.index)
+	},
+	/** 成绩_子序号 */
+	rowScoreDataDetailsIndex({ row, rowIndex }) {
+	  row.index = rowIndex + 1;
+	},
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const postIds = row.recordId || this.ids;
+      delReservat(postIds).then(response => {
+       this.$modal.msgSuccess("操作成功");
+        this.getList();
+      });
+
+      // this.$modal.confirm('是否确认删除数据项?').then(function() {
+      //   return delPost(postIds);
+      // }).then(() => {
+      //   this.getList();
+      //   this.$modal.msgSuccess("删除成功");
+      // }).catch(() => {});
+    },
+    handleDeletehx(row) {
+      const postIds = row.reservatId || this.ids;
+      let nhg={}
+      nhg.reservatId = postIds
+      delReservathx(nhg).then(response => {
+       this.$modal.msgSuccess("操作成功");
+        this.getList();
+      });
+
+      // this.$modal.confirm('是否确认删除数据项?').then(function() {
+      //   return delPost(postIds);
+      // }).then(() => {
+      //   this.getList();
+      //   this.$modal.msgSuccess("删除成功");
+      // }).catch(() => {});
+    },
+	// 发送短信
+	handleUpdatefas(row){
+		updateFs(row).then(response => {
+		 this.$modal.msgSuccess("发送成功");
+		  // this.getList();
+		});
+	},
+	handleDeletegx(row){
+		updateGx(row).then(response => {
+		  this.$modal.msgSuccess("发送成功");
+		  // this.getList();
+		});
+	},
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('system/reservat/export', {
+        ...this.queryParams
+      }, `预约人员.xlsx`)
+    },
+		// 获取屏幕高度
+		showFilterForm () {
+		      this.filterActive = !this.filterActive
+		      this.changeTableMaxHeight()
+		    },
+
+		    changeTableMaxHeight () {
+		      let height = document.body.offsetHeight // 网页可视区域高度
+		      // if (this.filterActive) {
+		      //   this.tableMaxHeight = height - 320
+		      // } else {
+		        this.tableMaxHeight = height - 350
+		      // }
+		      console.log(height)
+		    }
+  }
+};
+</script>
+
+<style lang="scss">
+	.isjses{
+		.el-tabs--left .el-tabs__nav-wrap.is-left::after{
+			width:6px;
+		}
+		.el-tabs--left .el-tabs__active-bar.is-left,{
+			width:6px;
+		}
+	}
+	.ingaqe{
+		.el-input--medium{
+			width:100%;
+		}
+	}
+	.nhgrls{
+		.el-dialog__body{
+			padding: 0;
+		}
+	}
+  .hyr{
+    span{
+      text-decoration:underline;
+    }
+  }
+</style>
+<style scoped lang="scss">
+	.nghwgq{
+		display: flex;
+		flex-direction: column;
+		justify-content: center;
+		align-items: center;
+		margin-top: 90px;
+		div{
+			color:#aaa;
+		}
+	}
+	.ihgswq{
+		// width:100%;
+		// overflow-x: hidden;
+		// margin-top: 30px;
+	}
+	.fijge{
+		// width: 110%;
+		display: flex;
+		display: -webkit-flex; 
+		justify-content: space-between;
+		.shotw{
+			position: relative;
+			// width:32%;
+			width: 238px;
+			height: 140px;
+			margin-left: 0;
+			margin-right: 20px;
+			margin-bottom: 15px;
+			img{
+				height: 100%;
+				cursor:pointer;
+			}
+		  p{
+			  // bottom:-10px;
+			  margin: 0;
+			  font-weight: bold;
+			  font-size: 16px;
+			   padding: 5px  10px;
+			   cursor:pointer;
+		  }
+		  .iges{
+			position: absolute;
+			top:50%;
+			left:50%;  
+			width:30px;
+			height: 30px;
+			transform: translate(-50%,-50%);
+			cursor:pointer;
+		  }
+		}
+	}
+	.nhgwesvq{
+		width:1610px !important;
+	}
+	.shotw{
+		position: relative;
+		margin-left: -20px;
+		margin-right: -20px;
+		img{
+			width:100%;
+			height: 80vh;
+		}
+	  p{
+	     position: absolute;  
+		 bottom: 0;
+		 left:0;
+		 background-color: rgba(0, 0, 0, .5);
+		 width: 100%;
+		 padding: 13px  5px;
+		 color:#fff;
+		 font-weight: bold;
+		 font-size: 18px;
+	  }
+	  .p{
+		  top:0px;
+		  height: 60px;
+		  margin: 0;
+		  padding-left: 20px;
+	  }
+	}
+	
+	
+	.ksfpo{
+		background-color: #3464EB;
+		padding: 6px 12px;
+		border-radius: 4px ;
+		color:#fff;
+		cursor:pointer;
+	}
+	.ksfpok{
+		background-color: #FFFFFF;
+		padding: 5px 11px;
+		border-radius: 4px;
+		color:#3464EB;
+		border: 1px solid #3464EB;
+		margin-left: 10px;
+		cursor:pointer;
+	}
+	.ksfpofg{
+		background-color: #75DB75;
+		padding: 5px 11px;
+		border-radius: 4px;
+		color:#FFFFFF;
+		border: 1px solid #75DB75;
+		margin-left: 10px;
+		cursor:pointer;
+	}
+  .iuer{
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    .ite{
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+      p{
+        cursor:pointer;
+        margin: 0;
+        font-size: 15px;
+        font-family: PingFang SC;
+        font-weight: 500;
+        color:#666666;
+        padding: 4px 12px;
+        background: #Fff;
+        border-radius: 4px;
+        margin-right: 20px;
+		position: relative;
+      }
+      .actt{
+        background: #fff;
+        // border-bottom: 3px solid #5974E0;
+        // border-radius: 0;
+		// border-bottom-right-radius: 4px;
+        color: #5974E0;
+      }
+	  .actt{
+		    &::after {
+		          content: "";
+		          width: 40%;
+		          height: 5px;
+				  border-radius: 3px;
+		          transform: translate(-50%);
+		          background-color: #5974E0;
+		          position: absolute;
+		          left: 50%;
+		          bottom:-3px;
+		        }
+
+	  }
+
+    }
+  }
+  .lqw{
+    padding: 0 10px;
+    margin: 0;
+    margin-bottom: 20px;
+  }
+.nhgel{
+  height: 170px;
+  background-color: #313b61;
+  width: 100%;
+  position: absolute;
+  top:0;
+  left:0;
+  z-index: 0;
+}
+	.app-container{
+		background-color: #f3f4f6;
+		padding-top: 10px;
+		height: 180vh;
+	   
+	}
+	.ntgs{
+	position: relative;
+		background-color: #fff;
+		padding: 5px;
+		// border-radius: 5px;
+		padding-top: 10px;
+	     padding: 10px 20px;
+		.pagination-container{
+			height: 50px;
+		}
+	}
+	.nghfs{
+	position: relative;
+		background-color: #fff;
+		padding-top: 18px !important;
+		padding: 5px;
+		// border-radius: 5px;
+		// margin-bottom: 20px;
+	}
+	.ksf{
+		img{
+			width:100%;
+			height: 100%;
+		}
+	}
+   .ingwfaq{
+	   font-weight: bold;
+	   font-size: 16px;
+   }
+</style>

+ 1118 - 0
ruoyi-ui/src/views/tongj/shebekaimen/index.vue

@@ -0,0 +1,1118 @@
+<template>
+  <div class="app-container" style="padding-top: 20px;height: 140vh;">
+    <div class="ntgs">
+    <el-row :gutter="10" class="mb8">
+     <div class="iuer" style="margin-bottom:10px;">
+       <div style="display: flex;align-items: center; " class="ingaqe">
+		    <p class="lqw" style="font-weight: 700;font-size: 15px; margin-bottom: 0;"> <img src="../../../assets/images/icon_yq_htgl_btzs.png" alt="" style="width:10px;height: 10px;margin-right: 10px;"> 门禁信息</p>
+            <el-select v-model="queryParams.name" placeholder="请选监控名称" clearable>
+              <el-option
+                v-for="dict in postList"
+                :key="dict.indexCode"
+                :label="dict.name"
+                :value="dict.name"
+              />
+            </el-select>
+			<div class="ksfpofg" @click="handleQuery">
+				<img src="../../../assets/images/icon_sslb_ss.png" alt="" style="width:10px;height: 10px;">
+						  搜索
+						  </div>
+       </div>
+	   <div class="ite">
+	      <div class="ksfpo" @click="osge"  v-hasPermi="['system:camera:openDz']">
+			  <img src="../../../assets/images/icon_ssjk_kman_open.png" alt="" style="width:10px;height: 10px;">
+			  开门</div>
+		  <div class="ksfpo ksfpok" @click="osgef" v-hasPermi="['system:camera:closeDz']">
+		  			  <img src="../../../assets/images/icon_ssjk_kman_close.png" alt="" style="width:10px;height: 10px;">
+		  			  关门</div>
+	   </div>
+<!--  -->
+     </div>
+      <!-- <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['investigate:table:add']"
+        >新增</el-button>
+      </el-col>
+
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['investigate:table:remove']"
+        >删除</el-button>
+      </el-col> -->
+     <!-- <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['investigate:table:export']"
+        >导出</el-button>
+      </el-col> -->
+      <!-- <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> -->
+    </el-row>
+	
+	<div>
+		<el-row>
+			<el-col :span="24">
+				<div class='shotw isjses' style="margin-bottom: 30px; ">
+					<el-col :span='4'>
+						<el-tabs v-model="editableTabsValue" :tab-position="tabPosition" style="height: 500px;">
+						    <el-tab-pane v-for="(item,index) in postList" :key="index">
+							<span slot="label"  @click="isfgw(item)" class="ingwfaq"><img src="../../../assets/images/icon_yqht_ssjk_lb_normal.png" alt="" style="width: 14px;height: 16px;"> {{item.name}}</span>
+							</el-tab-pane>
+						  </el-tabs>
+					</el-col>
+					<el-col :span='20' style="padding-left: 30px;" v-if="isshoe">
+						<video
+						      class="videosmall"
+						      ref="videosmallone"
+						      preload="auto"
+						      muted
+						      autoplay
+							  width="95%"
+						      type="rtmp/flv"
+						    >
+						      <source src="" />
+						    </video>
+					</el-col>
+					
+					    
+						 <!-- <div class="nghwgq" v-if="!isshiwa">
+							  <img src="../../../assets/images/jiaz.png" alt="" style="width: 90px;height: 86px;">
+							  <div>加载中,请稍后</div>
+						  </div> -->
+						 <!-- <video
+						          id="myFlvVideo"
+						          muted
+						          autoplay
+						  		  controls 
+						          width="100%"
+						          height="300px"
+						        /> -->
+								
+								
+						  <!-- <p class='p'>南大门出入口</p> -->
+				</div> 
+			</el-col>
+			
+			<!-- <el-col :span="24">
+				<div class="ihgswq wrapper"  ref="wrapper" style=" overflow: hidden;">
+						  <div class="fijge content nhgwesvq" ref="content" style="width:1610px;">
+									<div class='shotw '   v-for="(item,index) in postList" :key="index" @click="isfgw(item)" >
+											  <img src="../../../assets/images/fengm.png" alt=""> 
+												<img src="../../../assets/images/icon_spjk_play.png" alt="" class="iges"> 
+											  <p style="font-size: 14px;">{{item.name}}</p>
+									</div>  
+						  </div> 
+				</div>
+			</el-col> -->
+		</el-row>
+	   
+	   
+	   <pagination
+	     v-show="total>0"
+	     :total="total"
+	     :page.sync="queryParams.pageNo"
+	     :limit.sync="queryParams.pageSize"
+	     @pagination="getList"
+	   />
+	</div>
+
+    
+	</div>
+
+    <!-- 添加或修改岗位对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+		  <el-row>
+			  <el-col :span="24">
+			  		<el-form-item label="接待人员" prop="receptionId">
+			  			<el-select  style="width:100%;" v-model="form.receptionId" placeholder="请选择">
+			  			    <el-option
+			  			      v-for="item in ksjegsg"
+			  			      :key="item.receptionId"
+			  			      :label="item.receptionName"
+			  			      :value="item.receptionId"
+                    @click.native="nhgwel(item)"
+			  			      >
+			  			    </el-option>
+			  			  </el-select>
+			  		</el-form-item>
+			  </el-col>
+		  </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+
+    <el-dialog :title="titles" :visible.sync="opens" width="1000px" append-to-body>
+      <el-form ref="forms" :model="forms" :rules="ruless" label-width="120px">
+      <el-row>
+    	  <el-col :span="8">
+    	  		<el-form-item label="人员类型" prop="recordType">
+    	        <el-select v-model="forms.recordType" placeholder="请选择人员类型" >
+    	          <el-option
+    	            v-for="dict in dict.type.fange"
+    	            :key="dict.value"
+    	            :label="dict.label"
+    	            :value="dict.value"
+    	          />
+    	        </el-select>
+    	  		 </el-form-item>
+    	  </el-col>
+    	  <el-col :span="8">
+    	  		<el-form-item label="联系人" prop="recordName">
+    	  		          <el-input v-model="forms.recordName" placeholder="请输入联系人" />
+    	  		        </el-form-item>
+    	  </el-col>
+    	  <el-col :span="8">
+    	  		 <el-form-item label="联系方式" prop="recordPhone">
+    	  		          <el-input v-model="forms.recordPhone" placeholder="请输入联系方式" />
+    	  		        </el-form-item>
+    	  </el-col>
+
+    	  <el-col :span="8">
+    	  		<el-form-item label="出入时间" prop="recordDateTime">
+    	  		          <el-date-picker style="width:100%" clearable
+    	  		            v-model="forms.recordDateTime"
+    	  		            type="date"
+    	  		            value-format="yyyy-MM-dd"
+    	  		            placeholder="请选择	出入时间">
+    	  		          </el-date-picker>
+    	  		        </el-form-item>
+    	  </el-col>
+    	  <el-col :span="8">
+    	  		<el-form-item label="记录来源" prop="recordSource">
+    	        <el-select v-model="forms.recordSource" placeholder="请选择记录来源" >
+    	          <el-option
+    	            v-for="dict in dict.type.jluly"
+    	            :key="dict.value"
+    	            :label="dict.label"
+    	            :value="dict.value"
+    	          />
+    	        </el-select>
+    	  		 </el-form-item>
+    	  </el-col>
+    	  <el-col :span="8">
+    	  		<el-form-item label="备注" prop="visitRemark">
+    	  		          <el-input v-model="forms.visitRemark" placeholder="请输入备注" />
+    	  		        </el-form-item>
+    	  </el-col>
+      </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForms">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+
+	<el-dialog title="页面二维码" :visible.sync="opent" width="200px" style="padding: 0;" class="nhgrls" append-to-body>
+	  <div v-show="opent" style="display: flex;justify-content: center;align-items: center;">
+		  <!-- <span>{{'https://qszdh.qs163.cn/pages/index/index?id=' + this.bg}}</span> -->
+			   <vue-qr   :text="'https://qszdh.qs163.cn/pages/index/index?id=' + this.bg" :size="200"></vue-qr>
+	  </div>
+	</el-dialog>
+  </div>
+</template>
+
+<script>
+import { listPost, getPost, delPost, addPost, updatePost,updateFs,updateGx } from "@/api/kaoch/renyuan";
+import { listReservat,camera,cameraIndexCode, listReservatd, getReservat, delReservat, addReservat, updateReservat,setPass,delReservathx,openDz,closeDz } from "@/api/tonggi/houtai";
+import vueQr from "vue-qr";
+import videojs from 'video.js'
+import 'video.js/dist/video-js.css'
+import {videoPlayer} from 'vue-video-player'
+import 'videojs-flash'
+// import flvjs from 'flv.js/dist/flv.min.js'
+import flvjs from "flv.js";
+import Bscroll from "better-scroll";
+export default {  
+  name: "Post",
+  dicts: ['sys_normal_disable','sys_yes_no','youke','tjzh','youkes','lafafen','fange','jluly'],
+  components: {
+      vueQr,
+	  videoPlayer
+    },
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+	  opent:false,
+	  bg:null,
+    titles:'',
+	editableTabsValue:'0',
+    opens:false,
+	  imageUrl:'@/assets/logo/logo.png',
+	  printObj: {
+	           id: "nhgrew", // 这里是要打印元素的ID
+	           popTitle: "", // 打印的标题
+	         },
+	  pickerOptions:{
+	            disabledDate (time) {
+	              //disabledDate 文档上:设置禁用状态,参数为当前日期,要求返回 Boolean
+	              // return time.getTime() > Date.now()//选当前时间之前的时间
+	              return time.getTime() < Date.now()  - 8.64e7;//选当前时间之后的时间
+	            }
+	        },
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+	  checkedScoreDataDetails: [],
+	  scoreDataDetailsList:[],
+	  tabPosition:'left',
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 岗位表格数据
+      postList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNo: 1,
+        pageSize:500,
+		name:null,
+        postCode: undefined,
+        postName: undefined,
+        status: undefined,
+        reservatType:undefined
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        receptionId: [
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],
+
+
+      },
+      ruless:{
+        visitName: [
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],
+        visitPhone: [
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],
+        visitNum: [
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],
+        visitDate: [
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],
+        visitTime: [
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],
+
+      },
+      forms:{},
+			tableMaxHeight:'200',
+      kje:0,
+      ksjegsg:[],
+	   Scroll: null,
+	   videoShow: false,
+	flvPlayer:null,
+	player: null,
+	name:null,
+	isshiwa:false,
+	isjfwe:{},
+	isshoe:false
+	
+
+    };
+  },
+  created() {
+    this.getList();
+    // this.getListh()
+  window.onresize = () => {
+  	      this.changeTableMaxHeight()
+  	    }
+  	    this.changeTableMaxHeight()
+  },
+  mounted() {
+  	window.onresize = () => {
+  	          this.changeTableMaxHeight()
+  	        }
+  	        this.changeTableMaxHeight()
+   
+		this.$nextTick(() => {
+		        this.initScroll()
+		    })   
+	 
+  },
+   beforeDestroy() {
+      this.destoryVideo()
+    },
+  methods: {
+	  
+
+	  init(val) { //这个val 就是一个地址,例如: http://192.168.2.201:85/live/9311272c49b845baa2b2810ad9bf3f68.flv 这是个服务器返回给我的一个监控视频流地址
+	        setTimeout(() => { //使用定时器是因为,在mounted声明周期里调用,可能会出现DOM没加载出来的原因
+	          var videoElement = this.$refs.videosmallone; // 获取到html中的video标签
+			  this.isshiwa = true
+	          if (flvjs.isSupported()) {
+	          //因为我这个是复用组件,进来先判断 player是否存在,如果存在,销毁掉它,不然会占用TCP名额
+	            if (this.player !== null) {
+	              this.player.pause();
+	              this.player.unload();
+	              this.player.detachMediaElement();
+	              this.player.destroy();
+	              this.player = null;
+	            }
+	            this.player = flvjs.createPlayer( //创建直播流,加载到DOM中去
+	              {
+	                type: "flv",
+	                url: val, //你的url地址
+	                isLive: true, //数据源是否为直播流
+	                hasAudio: false, //数据源是否包含有音频
+	                hasVideo: true, //数据源是否包含有视频
+	                enableStashBuffer: true, //是否启用缓存区
+	              },
+	              {
+	                enableWorker: false, //不启用分离线程
+	                enableStashBuffer: false, //关闭IO隐藏缓冲区
+	                autoCleanupSourceBuffer: true, //自动清除缓存
+	                lazyLoad: false,
+	              }
+	            );
+				this.isshoe = true
+	            this.player.attachMediaElement(videoElement); //放到dom中去
+	            
+	            //!!!!!!这里需要注意,有的时候load加载完成不一定可以播放,要是播放不成功,用settimeout 给下面的this.player.play() 延时几百毫秒再播放
+	            // setTimeout(this.player.play(), 48000);
+				setTimeout(() =>{
+					//到时间时只执行一次就停止
+					this.player.load();//准备完成
+					this.player.play()
+					console.log('播放')
+				},900)
+				
+				
+	          }
+	        }, 500);
+	      },
+
+	  createVideo() {
+	        if (flvjs.isSupported()) {
+				console.log(1)
+	          var videoElement = document.getElementById('myFlvVideo')
+			  console.log(videoElement,flvjs)
+	          this.flvPlayer = flvjs.createPlayer(
+	            {
+	              type: 'application/x-mpegURL',
+	              isLive: true,
+	              hasAudio: false,
+	              url:'https://stream1.freetv.fun/86d463c0006da643e45e26b34875df87059dcba13e69d0a5471b185793c122a2.m3u8'
+	            },
+	            {
+	              cors: true, // 是否跨域
+	              enableWorker: false, // 是否多线程工作
+	              enableStashBuffer: false, // 是否启用缓存
+	              stashInitialSize: 400, // 缓存大小(kb)  默认384kb
+	              autoCleanupSourceBuffer: true // 是否自动清理缓存
+	            }
+	          )
+	          this.flvPlayer.attachMediaElement(videoElement)
+	          this.flvPlayer.load()
+	          this.flvPlayer.play()
+			  console.log(1244)
+	          // 报错重连
+	          this.flvPlayer.on(flvjs.Events.ERROR, (errType, errDetail) => {
+	            console.log('errorType:', errType)
+	            console.log('errorDetail:', errDetail)
+	            if (this.flvPlayer) {
+	              this.destoryVideo()
+	              this.createVideo()
+	            }
+	          })
+	        }
+			
+			console.log(this.flvPlayer.play())
+	      },
+	      destoryVideo() {
+	        this.player.pause()
+	        this.player.unload()
+	        this.player.detachMediaElement()
+	        this.player.destroy()
+	        this.player = null
+	      },
+
+	  initScroll() {
+	    	  // 给内层盒子设置宽度,不设置宽度的话无法滚动
+	    	  // let width = this.goods.length * 60
+	    	  // // 如果有外边距,可以这样写。需要去掉最后一个元素的外边距,在后面减一下
+	    	  // let width = this.goodslength * (60 + 10) - 10
+			  let width = 6 * (200 + 10) - 10
+	        this.$refs.content.style.width = width + 'px'
+	        this.$nextTick(()=>{
+	          if(!this.Scroll) {
+	            this.Scroll = new Bscroll(this.$refs.wrapper,{
+	              click: true,      // 配置允许点击事件
+	              scrollX: true,    // 开启横向滚动
+	              eventPassthrough: 'vertical',  // 当设置 eventPassthrough 为 'vertical' 的时候,scrollY 无效
+				  mouseWheel: true,
+				  scrollbar: { // 滚动条, 要加相对位置
+				              fade: true
+				            }
+	            })
+	          } else {
+	            this.Scroll.refresh()     // 重新计算 better-scroll,当 DOM 结构发生变化的时确保滚动效果正常
+	          }
+	        })
+	      },
+
+    /** 查询岗位列表 */
+    getList() {
+      this.loading = true;
+	  // this.queryParams
+      camera(this.queryParams).then(response => {
+        this.postList = response.data.data.access;
+		if(response.data.data != null){
+		if(response.data.data.access.length != 0){
+			let ne = response.data.data.access[0]
+			response.data.data.access.filter(rtu=>{
+				if(rtu.name == '后门道闸'){
+					console.log(3,rtu)
+					ne = rtu
+					return
+				}
+			})
+			this.isfgw(ne)
+			this.isjfwe =ne
+			
+		}	
+		}
+        // this.postList=[{'nsje':null,'visitPhone':null,'isReception':'Y'}]
+        this.total = response.data.data.total;
+        this.loading = false;
+      });
+    },
+    getListh() {
+      this.loading = true;
+      listReservatd().then(response => {
+        // this.postList = response.rows;
+        this.ksjegsg= response.data
+        // this.total = response.total;
+        this.loading = false;
+      });
+    },
+	isfgw(val){
+		this.isjfwe = val
+		let nhge={cameraIndexCode:val.indexCode}
+		this.isshiwa = false
+		this.isshoe= false
+	   cameraIndexCode(nhge.cameraIndexCode).then(response => {
+		   console.log(response.data.data.url)
+		   this.isshoe= true
+		  this.init(response.data.data.url)
+		   this.isshiwa = true
+	  // this.postList = response.rows;
+	  // this.total = response.total;
+	  });
+		console.log(val,4)
+	},
+	osge(){
+		console.log(this.isjfwe,45)
+		if(this.isjfwe.name == '后门道闸'){
+			this.isjfwe.name ='后门抓拍一体机1'
+		}
+		let nge={equipmentName:this.isjfwe.name}
+		openDz(nge).then(response => {
+		 
+		});
+	},
+	osgef(){
+		if(this.isjfwe.name == '后门道闸'){
+			this.isjfwe.name ='后门抓拍一体机1'
+		}
+		let nge={equipmentName:this.isjfwe.name}
+		closeDz(nge).then(response => {
+		  // this.postList = response.rows;
+		});
+	},
+
+    ilw(row,val){
+      this.kje = val
+      // console.log(row)
+      if(row.value == 0){
+          this.queryParams.reservatType = undefined
+      }else{
+        this.queryParams.reservatType = row.value
+      }
+    console.log(this.kje)
+      this.queryParams.pageNum  = 1
+      this.getList()
+    },
+  nhgwel(item){
+    this.form.receptionId = item.receptionId
+    this.form.receptionName = item.receptionName
+    this.form.receptionPhone = item.phonenumber
+
+  },
+    getPass(row) {
+      const _this = this
+      this.$confirm('是否审核通过', "提醒", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(function() {
+        return setPass({
+        visitType: 3,
+        reservatId: row.reservatId,
+        // xmStatus:row.xmStatus
+      })
+      }).then(() => {
+    	   _this.getList();
+        _this.msgSuccess("提交成功");
+      })
+    },
+    infoBtn(row) {
+    	const _this = this
+    	this.$confirm('是否拒绝', "提醒", {
+    	  confirmButtonText: "确定",
+    	  cancelButtonText: "取消",
+    	  type: "warning"
+    	}).then(function() {
+    	  return setPass({
+    	  visitType: 2,
+    	   reservatId: row.reservatId,
+    	  // xmStatus:row.xmStatus
+    	})
+    	}).then(() => {
+    	  _this.getList();
+    	  _this.msgSuccess("提交成功");
+    	})
+
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+	  this.opens = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+		receptionId:undefined,
+        receptionPhone:undefined,
+        // postSort: 0,
+        // status: "0",
+        receptionName: undefined
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.reservatId)
+      this.single = selection.length!=1
+      this.multiple = !selection.length
+    },
+    nhgeo(row){
+      this.reset();
+     this.open = true;
+     this.title = "分配接待人员";
+     this.form.reservatId = row.reservatId;
+     this.form.reservatConfigTimeId=row.reservatConfigTimeId;
+     this.form.visitDate=row.visitDate
+    },
+    handleDeleteh(row){
+      this.$router.push({
+        path: '/bjqs',
+      		query: {
+      			'id':row.reservatId,
+      			'name':null,
+      			'names':null,
+      			'isxz':1
+      		}
+      })
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.forms = {
+        reservatType:'1'
+      }
+      this.opens = true;
+      this.titles = "添加预约人员";
+	  // this.scoreDataDetailsList = []
+	  // this.$router.push({
+	  //   path: '/system/bjq',
+	  // })
+	  // this.$router.push({
+	  //   path: '/bjqs',
+	  // 		query: {
+	  // 			'id':null,
+	  // 			'name':null,
+	  // 			'names':null,
+	  // 			'isxz':1
+	  // 		}
+	  // })
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+           const recordId = row.recordId || this.ids
+           getReservat(recordId).then(response => {
+             this.forms = response.data;
+             this.opens = true;
+             this.title = "修改访问记录";
+           });
+    },
+    /** 提交按钮 */
+    submitForm: function() {
+      this.$refs["form"].validate(valid => {
+              if (valid) {
+                // if (this.form.reservatId != null) {
+                  updateReservat(this.form).then(response => {
+                    this.$modal.msgSuccess("操作成功");
+                    this.open = false;
+                    this.getList();
+                  });
+                // } else {
+                //   addReservat(this.form).then(response => {
+                //     this.$modal.msgSuccess("新增成功");
+                //     this.open = false;
+                //     this.getList();
+                //   });
+                // }
+              }
+            });
+    },
+    submitForms: function() {
+      this.$refs["forms"].validate(valid => {
+              if (valid) {
+                // if (this.form.reservatId != null) {
+                  // updateReservat(this.forms).then(response => {
+                  //   this.$modal.msgSuccess("操作成功");
+                  //   this.open = false;
+                  //   this.getList();
+                  // });
+                // } else {
+                  this.forms.visitTime = this.forms.visitTime + '-' + this.forms.visitTime
+                  addReservat(this.forms).then(response => {
+                    this.$modal.msgSuccess("新增成功");
+                    this.opens = false;
+                    this.getList();
+                  });
+                // }
+              }
+            });
+    },
+
+	nglqw(val){
+		this.opent = true
+		this.bg = val.investigateTableId
+	},
+
+
+	iszheg(event){
+	 console.log(event);
+
+
+	 // 校验身份证:
+	 console.log(reg.test(this.form.idCard),23741)
+	 		if ( reg.test(this.form.idCard)|| _IDre15.test(this.form.idCard)) {
+	 			// this.idea();
+	 			this.go(this.form.idCard);
+	 			// callback()
+	 		} else {
+	   if(ncjsle.test(this.form.idCard) || nhyeli.test(this.form.idCard)){
+	      console.log(3)
+	   }else{
+	     if(gnse.test(this.form.idCard)  ){
+	         console.log(4)
+	     }else{
+	       if(tw.test(this.form.idCard) || twe.test(this.form.idCard)){
+	         console.log(5)
+	       }else{
+	         this.$message.error('证件格式不正确');
+	       }
+	     }
+
+	   }
+	 		}
+	},
+	erw(row){
+		this.$router.push({
+		  path: '/reny/ewm',
+		  query:{
+			   'tenantId':row.investigateTableId
+			  }
+		})
+	},
+
+	hussar_17Click(val) {
+	        const _this = this
+	        var url =process.env.VUE_APP_BASE_API + 'pages/index/index?id=' + val.investigateTableId;
+			 console.log(url,this.$refs.canvas,6)
+			this.opent = true
+	        QRCode.toCanvas(
+	                      canvas,
+	                      url,//生成二维码的数据
+	                      {width: 100, height:100, margin: 1.5},//margin调整二维码的白边大小
+	                      function (error) {
+	                        if (error) {
+	                          console.log(error);
+	                        }
+	                      }
+	                    );
+
+	        // console.log(qrcode,987)
+	      },
+	/** 成绩_子添加按钮操作 */
+	handleAddScoreDataDetails() {
+
+	  let obj = {};
+	  obj.duty = "";
+	  obj.idCard = "";
+	  obj.phonenumber = "";
+	  obj.userName = "";
+	  this.scoreDataDetailsList.push(obj);
+	  console.log(this.scoreDataDetailsList)
+	},
+	/** 成绩_子删除按钮操作 */
+	handleDeleteScoreDataDetails() {
+	  if (this.checkedScoreDataDetails.length == 0) {
+	    this.$modal.msgError("请先选择要删除的数据");
+	  } else {
+	    const scoreDataDetailsList = this.scoreDataDetailsList;
+	    const checkedScoreDataDetails = this.checkedScoreDataDetails;
+	    this.scoreDataDetailsList = scoreDataDetailsList.filter(function(item) {
+	      return checkedScoreDataDetails.indexOf(item.index) == -1
+	    });
+	  }
+	},
+	/** 复选框选中数据 */
+	handleScoreDataDetailsSelectionChange(selection) {
+	  this.checkedScoreDataDetails = selection.map(item => item.index)
+	},
+	/** 成绩_子序号 */
+	rowScoreDataDetailsIndex({ row, rowIndex }) {
+	  row.index = rowIndex + 1;
+	},
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const postIds = row.recordId || this.ids;
+      delReservat(postIds).then(response => {
+       this.$modal.msgSuccess("操作成功");
+        this.getList();
+      });
+
+      // this.$modal.confirm('是否确认删除数据项?').then(function() {
+      //   return delPost(postIds);
+      // }).then(() => {
+      //   this.getList();
+      //   this.$modal.msgSuccess("删除成功");
+      // }).catch(() => {});
+    },
+    handleDeletehx(row) {
+      const postIds = row.reservatId || this.ids;
+      let nhg={}
+      nhg.reservatId = postIds
+      delReservathx(nhg).then(response => {
+       this.$modal.msgSuccess("操作成功");
+        this.getList();
+      });
+
+      // this.$modal.confirm('是否确认删除数据项?').then(function() {
+      //   return delPost(postIds);
+      // }).then(() => {
+      //   this.getList();
+      //   this.$modal.msgSuccess("删除成功");
+      // }).catch(() => {});
+    },
+	// 发送短信
+	handleUpdatefas(row){
+		updateFs(row).then(response => {
+		 this.$modal.msgSuccess("发送成功");
+		  // this.getList();
+		});
+	},
+	handleDeletegx(row){
+		updateGx(row).then(response => {
+		  this.$modal.msgSuccess("发送成功");
+		  // this.getList();
+		});
+	},
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('system/reservat/export', {
+        ...this.queryParams
+      }, `预约人员.xlsx`)
+    },
+		// 获取屏幕高度
+		showFilterForm () {
+		      this.filterActive = !this.filterActive
+		      this.changeTableMaxHeight()
+		    },
+
+		    changeTableMaxHeight () {
+		      let height = document.body.offsetHeight // 网页可视区域高度
+		      // if (this.filterActive) {
+		      //   this.tableMaxHeight = height - 320
+		      // } else {
+		        this.tableMaxHeight = height - 350
+		      // }
+		      console.log(height)
+		    }
+  }
+};
+</script>
+
+<style lang="scss">
+	.isjses{
+		.el-tabs--left .el-tabs__nav-wrap.is-left::after{
+			width:6px;
+		}
+		.el-tabs--left .el-tabs__active-bar.is-left,{
+			width:6px;
+		}
+	}
+	.ingaqe{
+		.el-input--medium{
+			width:100%;
+		}
+	}
+	.nhgrls{
+		.el-dialog__body{
+			padding: 0;
+		}
+	}
+  .hyr{
+    span{
+      text-decoration:underline;
+    }
+  }
+</style>
+<style scoped lang="scss">
+	.nghwgq{
+		display: flex;
+		flex-direction: column;
+		justify-content: center;
+		align-items: center;
+		margin-top: 90px;
+		div{
+			color:#aaa;
+		}
+	}
+	.ihgswq{
+		// width:100%;
+		// overflow-x: hidden;
+		// margin-top: 30px;
+	}
+	.fijge{
+		// width: 110%;
+		display: flex;
+		display: -webkit-flex; 
+		justify-content: space-between;
+		.shotw{
+			position: relative;
+			// width:32%;
+			width: 238px;
+			height: 140px;
+			margin-left: 0;
+			margin-right: 20px;
+			margin-bottom: 15px;
+			img{
+				height: 100%;
+				cursor:pointer;
+			}
+		  p{
+			  // bottom:-10px;
+			  margin: 0;
+			  font-weight: bold;
+			  font-size: 16px;
+			   padding: 5px  10px;
+			   cursor:pointer;
+		  }
+		  .iges{
+			position: absolute;
+			top:50%;
+			left:50%;  
+			width:30px;
+			height: 30px;
+			transform: translate(-50%,-50%);
+			cursor:pointer;
+		  }
+		}
+	}
+	.nhgwesvq{
+		width:1610px !important;
+	}
+	.shotw{
+		position: relative;
+		margin-left: -20px;
+		margin-right: -20px;
+		img{
+			width:100%;
+			height: 80vh;
+		}
+	  p{
+	     position: absolute;  
+		 bottom: 0;
+		 left:0;
+		 background-color: rgba(0, 0, 0, .5);
+		 width: 100%;
+		 padding: 13px  5px;
+		 color:#fff;
+		 font-weight: bold;
+		 font-size: 18px;
+	  }
+	  .p{
+		  top:0px;
+		  height: 60px;
+		  margin: 0;
+		  padding-left: 20px;
+	  }
+	}
+	
+	
+	.ksfpo{
+		background-color: #3464EB;
+		padding: 6px 12px;
+		border-radius: 4px ;
+		color:#fff;
+		cursor:pointer;
+	}
+	.ksfpok{
+		background-color: #FFFFFF;
+		padding: 5px 11px;
+		border-radius: 4px;
+		color:#3464EB;
+		border: 1px solid #3464EB;
+		margin-left: 10px;
+		cursor:pointer;
+	}
+	.ksfpofg{
+		background-color: #75DB75;
+		padding: 5px 11px;
+		border-radius: 4px;
+		color:#FFFFFF;
+		border: 1px solid #75DB75;
+		margin-left: 10px;
+		cursor:pointer;
+	}
+  .iuer{
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    .ite{
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+      p{
+        cursor:pointer;
+        margin: 0;
+        font-size: 15px;
+        font-family: PingFang SC;
+        font-weight: 500;
+        color:#666666;
+        padding: 4px 12px;
+        background: #Fff;
+        border-radius: 4px;
+        margin-right: 20px;
+		position: relative;
+      }
+      .actt{
+        background: #fff;
+        // border-bottom: 3px solid #5974E0;
+        // border-radius: 0;
+		// border-bottom-right-radius: 4px;
+        color: #5974E0;
+      }
+	  .actt{
+		    &::after {
+		          content: "";
+		          width: 40%;
+		          height: 5px;
+				  border-radius: 3px;
+		          transform: translate(-50%);
+		          background-color: #5974E0;
+		          position: absolute;
+		          left: 50%;
+		          bottom:-3px;
+		        }
+
+	  }
+
+    }
+  }
+  .lqw{
+    padding: 0 10px;
+    margin: 0;
+    margin-bottom: 20px;
+  }
+.nhgel{
+  height: 170px;
+  background-color: #313b61;
+  width: 100%;
+  position: absolute;
+  top:0;
+  left:0;
+  z-index: 0;
+}
+	.app-container{
+		background-color: #f3f4f6;
+		padding-top: 10px;
+		height: 180vh;
+	   
+	}
+	.ntgs{
+	position: relative;
+		background-color: #fff;
+		padding: 5px;
+		// border-radius: 5px;
+		padding-top: 10px;
+	     padding: 10px 20px;
+		.pagination-container{
+			height: 50px;
+		}
+	}
+	.nghfs{
+	position: relative;
+		background-color: #fff;
+		padding-top: 18px !important;
+		padding: 5px;
+		// border-radius: 5px;
+		// margin-bottom: 20px;
+	}
+	.ksf{
+		img{
+			width:100%;
+			height: 100%;
+		}
+	}
+   .ingwfaq{
+	   font-weight: bold;
+	   font-size: 16px;
+   }
+</style>

+ 1 - 1
ruoyi-ui/src/views/tongj/yuypzsj/index.vue

@@ -133,7 +133,7 @@
             size="mini"
             type="text"
             class="hyr"
-            @click="handleDeleteh(scope.row)"
+            @click="handleUpdate(scope.row)"
             style="color: #00B034;"
             v-hasPermi="['system:personnel:edit']"
           >修改</el-button>

+ 4 - 4
ruoyi-ui/vue.config.js

@@ -31,12 +31,12 @@ module.exports = {
     port: port,
     open: true,
     proxy: {
-      // detail: https://cli.vuejs.org/config/#devserver-proxy
-	  // 'https://zxyyq.qs163.cn'
-    // http://47.99.82.249:5010
+         // detail: https://cli.vuejs.org/config/#devserver-proxy
+	    // 'https://zxyyq.qs163.cn'
+       // http://47.99.82.249:5010
 	  // http://192.168.101.168:8065
       [process.env.VUE_APP_BASE_API]: {
-        target: `http://192.168.101.245:8065`,
+        target: `http://47.99.82.249:5010`,
         changeOrigin: true,
         pathRewrite: {
           ['^' + process.env.VUE_APP_BASE_API]: ''