Bladeren bron

Merge branch 'dev' of http://10.87.10.227:4000/jzyd_yyds/soc_web into dev

zhulu 2 jaren geleden
bovenliggende
commit
05b8a24ffb

+ 2 - 2
.env.development

@@ -8,9 +8,9 @@ ENV = 'development'
 #测试地址
 #VUE_APP_BASE_API = 'http://10.87.10.91:8080'
 #罗俊
-#VUE_APP_BASE_API = 'http://10.87.10.55:8080'
+#VUE_APP_BASE_API = 'http://10.87.10.49:8080'
 #罗伟
-VUE_APP_BASE_API = 'http://10.87.10.47:8080'
+# VUE_APP_BASE_API = 'http://10.87.10.47:8080'
 #高雄
 #VUE_APP_BASE_API = 'http://10.87.11.94:8080'
 VUE_APP_BASE_API = 'http://localhost:8080'

+ 6 - 0
src/api/system/role.js

@@ -128,5 +128,11 @@ export function findAllRole(query) {
     method: 'get',
     params:query
   })
+
 }
 
+export function findRoleByType(type) {    
+  return request({
+    url: '/system/role/getRoleByType/'+ type,
+    method: 'get',
+  })}

+ 5 - 0
src/assets/styles/element-ui.scss

@@ -93,3 +93,8 @@
   height: calc(100vh - 185px);
   overflow: auto;
 }
+
+.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{
+  background-color:#008CD6 !important;
+  color:#fff;
+}

+ 156 - 152
src/components/orgTreeSelect/index.vue

@@ -1,95 +1,110 @@
 <template>
-    <!--  弹出框  -->
-    <el-popover
-      placement="bottom-start"
-      :disabled="disabled"
-      v-model="visible">
-      <!--  选中的值  -->
-      <div  slot="reference" class="tags-box">
-        <i v-if="sNodeList.length > 0 && !disabled" class="el-icon-circle-close close-icon" @click="clear"></i>
-        <el-tag type="success" v-for="v in sNodeList" :key="v.id">{{v.name}}</el-tag>
-      </div>
+  <!--  弹出框  -->
+  <el-popover placement="bottom-start" :disabled="disabled" v-model="visible">
+    <!--  选中的值  -->
+    <div slot="reference" class="tags-box">
+      <i
+        v-if="sNodeList.length > 0 && !disabled"
+        class="el-icon-circle-close close-icon"
+        @click="clear"
+      ></i>
+      <el-tag type="success" v-for="v in sNodeList" :key="v.id">{{
+        v.name
+      }}</el-tag>
+    </div>
 
-      <!--  文本框    -->
-      <el-input style="width: 100%;margin-bottom: 20px;" v-model="queryForm.value" placeholder="请输入过滤值" clearable></el-input>
-      <!--  下拉框   -->
-      <el-row :gutter="20" type="flex" align="middle">
-        <el-col :span="14" :xs="24">
-          <el-select  v-model="queryForm.type" placeholder="请选择过滤机构类型" clearable>
-            <el-option
-              v-for="dict in dict.type.org_type_number"
-              :key="dict.value"
-              :label="dict.label"
-              :value="`${dict.value}`"
-            ></el-option>
-          </el-select>
-        </el-col>
-        <el-col :span="10" :xs="24" >
-          <el-checkbox v-model="checked">按过滤机构类型勾选</el-checkbox>
-        </el-col>
-      </el-row>
-      <!--  机构树   -->
-      <div class="tree-box">
-        <el-tree
-          ref="tree"
-          :data='orgTree'
-          :props="props"
-          node-key="id"
-          show-checkbox
-          check-strictly
-          :expand-on-click-node="false"
-          :default-checked-keys="nodes"
-          @node-click="handleNodeClick"
-          @check="onCheck"
-          :filter-node-method="filterNode">
-        </el-tree>
-      </div>
+    <!--  文本框    -->
+    <el-input
+      style="width: 100%; margin-bottom: 20px"
+      v-model="queryForm.value"
+      @input="serchTreeHandler"
+      placeholder="请输入过滤值"
+      clearable
+    ></el-input>
+    <!--  下拉框   -->
+    <el-row :gutter="20" type="flex" align="middle">
+      <el-col :span="14" :xs="24">
+        <el-select
+          v-model="queryForm.type"
+          placeholder="请选择过滤机构类型"
+          clearable
+          @change="serchTreeHandler"
+        >
+          <el-option
+            v-for="dict in dict.type.sys_org_type"
+            :key="dict.value"
+            :label="dict.label"
+            :value="`${dict.value}`"
+          ></el-option>
+        </el-select>
+      </el-col>
+      <el-col :span="10" :xs="24">
+        <el-checkbox v-model="checked">按过滤机构类型勾选</el-checkbox>
+      </el-col>
+    </el-row>
+    <!--  机构树   -->
+    <div class="tree-box">
+      <el-tree
+        ref="tree"
+        :data="orgTree"
+        :props="defaultProps"
+        node-key="id"
+        show-checkbox
+        check-strictly
+        :expand-on-click-node="false"
+        :default-checked-keys="nodes"
+        @node-click="handleNodeClick"
+        @check="onCheck"
+        :filter-node-method="filterNode"
+      >
+      </el-tree>
+    </div>
   </el-popover>
 </template>
 
 <script>
-import {deptTreeSelect} from "@/api/system/public";
+import { deptTreeSelect } from "@/api/system/public";
 
 export default {
-  dicts:['org_type_number'],
+  dicts: ["sys_org_type"],
   props: {
     defaultNode: {
       type: Array,
-      required: false
+      required: false,
     },
-    disabled:{
+    disabled: {
       type: Boolean,
-      default:false,
-      required: false
-    }
+      default: false,
+      required: false,
+    },
   },
-  data (){
+  data() {
     return {
       //清除图标
-      showClearable:false,
+      showClearable: false,
       //弹窗显示
-      visible:false,
+      visible: false,
       //结构树
-      orgTree:null,
+      orgTree: null,
       //自定义字段
-      props: {
-        label: 'name',
+      defaultProps: {
+        label: "name",
       },
       //过滤条件
-      queryForm:{
-        value:null,
-        type:null,
+      queryForm: {
+        value: null,
+        type: null,
       },
       //受否全选
-      checked:false,
+      checked: false,
       //默认展示的node
       //defaultNode:[],
       //已选中的node
-      sNodeList:[],
-      nodes:[],
-    }
+      sNodeList: [],
+      nodes: [],
+    };
   },
-  mounted(){
+  mounted() {
     this.getDeptTree();
   },
   watch: {
@@ -102,129 +117,118 @@ export default {
         });
       },
     },
-    queryForm:{
-      deep:true,
-      handler(n,o) {
-        this.$refs.tree.filter(n);
-      },
-    },
+    // queryForm: {
+    //   deep: true,
+    //   handler(n, o) {
+       
+    //     if(!n.value&&!n.type){
+    //       this.$refs.tree.filter({});
+    //     }else{
+
+    //       this.$refs.tree.filter(n);
+    //     }
+    //   },
+    // },
   },
   // computed: {
   //   defaultNode:
   //   //pv: sync("value"),
   // },
-  model:{
-    prop: 'defaultNode',
-    event: 'change'
+  model: {
+    prop: "defaultNode",
+    event: "change",
   },
-  methods:{
-    clear(){
+  methods: {
+    clear() {
       this.sNodeList = [];
       this.$refs.tree.setCheckedKeys([]);
       this.$refs.tree.setCurrentKey(null);
       this.$emit("selectNode", JSON.stringify(this.sNodeList));
     },
+    //筛选条件变化
+    serchTreeHandler(){
+      this.$refs.tree.filter(this.queryForm)
+    },
     /** 查询机构树 */
     getDeptTree() {
-      deptTreeSelect().then(response => {
+      deptTreeSelect().then((response) => {
         this.orgTree = response.data;
       });
     },
     filterNode(value,data,node){
+      
       if (this.queryForm.value && this.queryForm.type) {
-        return data.name.indexOf(this.queryForm.value) >= 0 && data.type == this.queryForm.type;
+        return data.name.indexOf(this.queryForm.value) !== -1 && data.type == this.queryForm.type;
       }
       if (this.queryForm.value) {
-        return data.name.indexOf(this.queryForm.value) >= 0;
+        return data.name.indexOf(this.queryForm.value) !== -1;
       }
       if (this.queryForm.type) {
         return data.type == this.queryForm.type;
       }
       return true
     },
-    handleNodeClick(){
-
-    },
+    
+    handleNodeClick() {},
     onCheck(data, checked, tree) {
-        if (this.queryForm.type && this.checked) {
-          let subOrgIds = [];
-          let currentCheckedIndex = checked.checkedKeys.findIndex(
-            (x) => {
-              x == data.id
-            }
-          );
-          checked.checkedKeys.splice(currentCheckedIndex, 1);
-          let checkValue = currentCheckedIndex > -1;
-          this.getSubOrgIdsByOrgType(data, this.queryForm.type, subOrgIds);
-          console.log(subOrgIds,checkValue,'subOrgIds')
-          if (!checkValue) {
-            subOrgIds.forEach((x) => checked.checkedKeys.push(x.id));
-          } else {
-            subOrgIds.forEach((x) => {
-              let index = checked.checkedKeys.findIndex((y) => x.id == y);
-              if (index > -1) {
-                checked.checkedKeys.splice(index, 1);
-              }
-            });
-          }
-          console.log(checked,'checked')
-          this.$refs.tree.setCheckedKeys(checked.checkedKeys);
-      }
+      
       this.sNodeList = this.$refs.tree.getCheckedNodes();
       this.$emit("selectNode", JSON.stringify(this.sNodeList));
     },
     getSubOrgIdsByOrgType(topOrg, orgType, orgIdList) {
-        if (!topOrg) return;
-        if (topOrg.type == orgType) {orgIdList.push(topOrg)};
-        if (topOrg.children && topOrg.children.length > 0) {
-          topOrg.children.forEach((item) => {
-            this.getSubOrgIdsByOrgType(item, orgType, orgIdList);
-          });
-        }
+      if (!topOrg) return;
+      if (topOrg.type == orgType) {
+        orgIdList.push(topOrg);
+      }
+      if (topOrg.children && topOrg.children.length > 0) {
+        topOrg.children.forEach((item) => {
+          this.getSubOrgIdsByOrgType(item, orgType, orgIdList);
+        });
+      }
     },
-  }
-}
+  },
+};
 </script>
 
 <style scoped lang="scss">
-  .tags-box{
-    background-color: #fff;
-    border-radius: 4px;
-    border: 1px solid #DCDFE6;
-    color: #606266;
-    outline: 0;
-    padding: 0 15px 0 5px;
-    width: 100%;
-    min-height: 40px;
-    max-height: 40px;
-    position: relative;
-    overflow: hidden;
-    display: inline-block;
-    text-overflow: ellipsis;
-    white-space: nowrap;
-    cursor: pointer;
-    >span{
-      margin: 5px 10px;
-    }
-    &:hover{
-      .close-icon{
-        display: block;
-        color: #666;
-      }
-    }
-    .close-icon{
-      position: absolute;
-      top:30%;
-      right: 5px;
-      display: none;
-      cursor: pointer;
+.tags-box {
+  background-color: #fff;
+  border-radius: 4px;
+  border: 1px solid #dcdfe6;
+  color: #606266;
+  outline: 0;
+  padding: 0 15px 0 5px;
+  width: 100%;
+  min-height: 40px;
+  max-height: 40px;
+  position: relative;
+  overflow: hidden;
+  display: inline-block;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  cursor: pointer;
+  > span {
+    margin: 5px 10px;
+  }
+  &:hover {
+    .close-icon {
+      display: block;
+      color: #666;
     }
   }
-  .tree-box{
-    margin-top: 20px;
-    max-height: 300px;
-    overflow: auto;
-    border-radius: 4px;
-    border: 1px solid #DCDFE6;
+  .close-icon {
+    position: absolute;
+    top: 30%;
+    right: 5px;
+    display: none;
+    cursor: pointer;
   }
+}
+.tree-box {
+  margin-top: 20px;
+  max-height: 300px;
+  overflow: auto;
+  border-radius: 4px;
+  border: 1px solid #dcdfe6;
+}
 </style>

+ 1 - 0
src/mixins/tableList.js

@@ -10,6 +10,7 @@ export default {
       // 遮罩层
       loading: false,
       queryParams:{},
+      dateRange:[],
     }
   },
   methods:{

+ 64 - 0
src/plugins/date.js

@@ -0,0 +1,64 @@
+import Vue from "vue";
+import dayjs from "dayjs";
+
+// 默认中文
+require("dayjs/locale/zh-cn");
+dayjs.locale("zh-cn");
+
+Vue.prototype.$date = dayjs;
+Vue.filter("date", function(value) {
+    return value && dayjs(value).format("YYYY-MM-DD");
+});
+
+Vue.filter("dateTime", function(value, format = "YYYY-MM-DD HH:mm:ss") {
+    if ((value + "").length == 10) {
+        value *= 1000;
+    }
+    return value && dayjs(value).format(format);
+});
+const week = "周一、周二、周三、周四、周五、周六、周曰".split("、");
+Vue.filter("week", function(v) {
+    return week[v];
+});
+
+Vue.prototype.$dateRange = {
+    //
+    startToEnd: (unit) => {
+        const v = [
+            dayjs()
+                .startOf(unit)
+                .toDate(),
+            dayjs()
+                .endOf(unit)
+                .toDate()
+        ];
+        return v;
+    },
+
+    //
+    before: (days) => {
+        return [
+            dayjs()
+                .add(days, "day")
+                .startOf("d")
+                .toDate(),
+            dayjs()
+                .endOf("d")
+                .toDate()
+        ];
+    },
+
+    //
+    yesterday: (days) => {
+        return [
+            dayjs()
+                .add(days, "day")
+                .startOf("d")
+                .toDate(),
+            dayjs()
+                .add(days, "day")
+                .endOf("d")
+                .toDate()
+        ];
+    }
+};

+ 13 - 13
src/plugins/index.js

@@ -1,20 +1,20 @@
-import tab from './tab'
-import auth from './auth'
-import cache from './cache'
-import modal from './modal'
-import download from './download'
-
+import tab from "./tab";
+import auth from "./auth";
+import cache from "./cache";
+import modal from "./modal";
+import download from "./download";
+import "./date";
 export default {
   install(Vue) {
     // 页签操作
-    Vue.prototype.$tab = tab
+    Vue.prototype.$tab = tab;
     // 认证对象
-    Vue.prototype.$auth = auth
+    Vue.prototype.$auth = auth;
     // 缓存对象
-    Vue.prototype.$cache = cache
+    Vue.prototype.$cache = cache;
     // 模态框对象
-    Vue.prototype.$modal = modal
+    Vue.prototype.$modal = modal;
     // 下载文件
-    Vue.prototype.$download = download
-  }
-}
+    Vue.prototype.$download = download;
+  },
+};

+ 2 - 2
src/utils/ruoyi.js

@@ -30,7 +30,7 @@ export function parseTime(value, format = "YYYY-MM-DD HH:mm:ss") {
     return value && dayjs(value).format(format);
   }
   if(format == 'dddd'){
-    const weeks =  ["周一",'周二','周三','周四','周五','周六','周曰'];
+    const weeks =  ['周曰',"周一",'周二','周三','周四','周五','周六'];
     return weeks[dayjs(value).day()];
   }
 }
@@ -213,7 +213,7 @@ export function tansParams(params) {
               result += subPart + encodeURIComponent(value[key].toLocaleString()) + "&";
             }else{
               result += subPart + encodeURIComponent(value[key]) + "&";
-            }            
+            }
           }
         }
       } else {

+ 22 - 14
src/views/core/accessPlan/index.vue

@@ -89,7 +89,7 @@
             <template slot-scope="scope">
               <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
                 v-hasPermi="['system:plan:edit']">修改</el-button>
-              <el-button size="mini" type="text" v-if="scope.row.createType == 0" icon="el-icon-add"
+              <el-button size="mini" type="text" v-if="scope.row.isDistribute == 0" icon="el-icon-add"
                 @click="handDistribute(scope.row)" v-hasPermi="['system:plan:add']">下发</el-button>
               <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
                 v-hasPermi="['system:device:remove']">删除</el-button>
@@ -111,7 +111,7 @@
         </el-form-item>
 
         <el-form-item label="调阅机构类型" prop="orgType">
-          <el-select style="width: 100%;" v-model="form.orgType" placeholder="请选择">
+          <el-select style="width: 100%;" v-model="form.orgType" placeholder="请选择" @change="changeSelect">
             <el-option v-for="dict in dict.type.sys_org_type" :key="dict.value" :label="dict.label"
               :value="`${dict.value}`"></el-option>
           </el-select>
@@ -123,14 +123,14 @@
           </el-select>
         </el-form-item>
 
-      
-            <el-form-item label="计划状态" prop="planStatus">
-              <el-radio-group v-model="form.planStatus">
-                <el-radio v-for="dict in dict.type.plan_status" :key="dict.value" :label="dict.value">{{ dict.label
-                }}</el-radio>
-              </el-radio-group>
-            </el-form-item>
-         
+
+        <el-form-item label="计划状态" prop="planStatus">
+          <el-radio-group v-model="form.planStatus">
+            <el-radio v-for="dict in dict.type.plan_status" :key="dict.value" :label="dict.value">{{ dict.label
+            }}</el-radio>
+          </el-radio-group>
+        </el-form-item>
+
 
 
         <el-form-item style="width: 100%;" v-if="form.planCycle == 0" label="开始时间" prop="startTime">
@@ -172,7 +172,7 @@
 
 <script>
 import { listPlan, getPlan, delPlan, addPlan, updatePlan, distribute } from "@/api/core/accessPlan";
-import { listRole } from "@/api/system/role";
+import { listRole, findRoleByType } from "@/api/system/role";
 import tableList from "@/mixins/tableList";
 import orgTree from "@/components/orgTree";
 import { deptTreeSelect } from "@/api/system/public";
@@ -180,8 +180,8 @@ import KFileUpload from "@/components/K-FileUpload/index.vue";
 
 export default {
   name: "Plan",
-  dicts: ['sys_org_type', 'sys_access_cycle', 'sys_normal_disable','plan_status'],
-  components:{
+  dicts: ['sys_org_type', 'sys_access_cycle', 'sys_normal_disable', 'plan_status'],
+  components: {
     orgTree
   },
   data() {
@@ -221,7 +221,8 @@ export default {
         planFrequency: null,
         planStatus: null,
         description: null,
-        isDeleted: null
+        isDeleted: null,
+        isDistribute: null,
       },
       // 表单参数
       form: {},
@@ -294,6 +295,13 @@ export default {
       this.queryParams.orgId = data.id;
       this.handleQuery();
     },
+
+    changeSelect(val) {
+  
+      findRoleByType(val).then(response => {
+        this.roleList = response;
+      })
+    },
     /** 查询机构树数据 */
     getDeptTree() {
       deptTreeSelect().then(response => {

+ 1 - 1
src/views/core/edu/plan/index.vue

@@ -404,7 +404,7 @@ export default {
     },
     //所属机构为当前用户登录机构时才显示 “编辑、删除”按钮
     checkCanEdit(row) {
-      return row.belongOrgId === this.$store.getters.orgId && row.issue == 0
+      return row.belongOrgId === this.$store.getters.orgId
     },
     checkCanDel(row) {
       //计划创建机构为当前机构且不是顶级机构创建的计划才显示“删除”按钮

+ 19 - 19
src/views/core/edu/task/dialog.info.vue

@@ -61,13 +61,13 @@
                         <!-- 开始日期 -->
                         <!-- <el-col :span="12">
                             <el-form-item prop="dateTime" label="开始日期">{{
-                                formData.startDate 
+                                formData.startDate
                             }}</el-form-item>
                         </el-col> -->
                         <!-- 截止日期 -->
                         <!-- <el-col :span="12">
                             <el-form-item prop="dateTime" label="截止日期">{{
-                                formData.endDate 
+                                formData.endDate
                             }}</el-form-item>
                         </el-col> -->
                         <!-- 内容 -->
@@ -218,25 +218,25 @@ export default {
             };
             xhr.send();
         },
-        saveAs(blob, filename) {
-            if (window.navigator.msSaveOrOpenBlob) {
-                navigator.msSaveBlob(blob, filename);
-            } else {
-                var link = document.createElement("a");
-                var body = document.querySelector("body");
+       saveAs(blob, filename) {
+            // if (window.navigator.msSaveOrOpenBlob) {
+            //     navigator.msSaveBlob(blob, filename);
+            // } else {
+               // var link = document.createElement("a");
+                //var body = document.querySelector("body");
 
-                link.href = window.URL.createObjectURL(blob);
-                link.download = filename;
+                // link.href = window.URL.createObjectURL(blob);
+                // link.download = filename;
+                //
+                // // fix Firefox
+                // link.style.display = "none";
+                // body.appendChild(link);
+                //
+                // link.click();
+                // body.removeChild(link);
 
-                // fix Firefox
-                link.style.display = "none";
-                body.appendChild(link);
-
-                link.click();
-                body.removeChild(link);
-
-                window.URL.revokeObjectURL(link.href);
-            }
+               // window.URL.revokeObjectURL(link.href);
+         //   }
         },
         // 事件
         //apimark//

+ 1 - 1
src/views/resumption/plan/dialog.edit.vue

@@ -166,7 +166,7 @@
         </el-form>
         <el-button @click="openSelect">新增履职内容</el-button>
        
-        <el-table :data="tableData" style="width: 100%">
+        <el-table :data="tableData" style="width: 100%" height="400px">
           <el-table-column  label="是否扫描" >
             <template v-slot="{ row }"> 
               <el-switch

+ 52 - 6
src/views/resumption/plan/distribute.vue

@@ -4,15 +4,44 @@
     :visible.sync="isShow"
     class="g-dialog-select-safe-check"
     :close-on-click-modal="false"
-    width="55%"
+    width="700px"
     top="10vh"
     append-to-body
   >
     <div class="el-dialog-div">
-      <el-table :data="info.orgAndStatus" height="400px">
+      <el-row :gutter="10" class="mb8">
+        <el-col :span="1.5">
+          <el-input
+            size="mini"
+            v-model="filterName"
+            placeholder="按机构名称过滤"
+            @input="filterbyOrgName"
+            clearable
+          ></el-input>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button
+            type="primary"
+            plain
+            size="mini"
+            @click="handleAllStatus('1')"
+            >全部启用</el-button
+          >
+        </el-col>
+        <el-col :span="1.5">
+          <el-button
+            type="danger"
+            plain
+            size="mini"
+            @click="handleAllStatus('0')"
+            >全部禁用</el-button
+          >
+        </el-col>
+      </el-row>
+      <el-table :data="tableData" height="400px">
         <el-table-column type="index" label="序号" width="80"></el-table-column>
         <el-table-column prop="orgName" label="机构名称"></el-table-column>
-        <el-table-column prop="status" label="计划状态">
+        <el-table-column prop="status" label="计划状态" width="150px">
           <template slot-scope="r">
             <el-switch
               v-model="r.row.status"
@@ -39,11 +68,13 @@
 import { listByTypes } from "@/api/system/org.js";
 
 export default {
-  components: {  },
+  components: {},
   data() {
     return {
       isShow: false,
       info: this.emptyInfo(),
+      tableData: [],
+      filterName: null,
     };
   },
   computed: {},
@@ -67,14 +98,29 @@ export default {
         this.info.orgAndStatus = r.data.map((d) => {
           return { orgId: d.id, orgName: d.name, status: "1" };
         });
+        this.tableData = this.info.orgAndStatus;
       });
     },
+    handleAllStatus(status) {
+      this.tableData.forEach((element) => {
+        element.status = status;
+      });
+    },
+    filterbyOrgName(val) {
+      if (!val || !val.trim()) {
+        this.tableData = this.info.orgAndStatus;
+      } else {
+        this.tableData = this.info.orgAndStatus.filter(
+          (o) => o.orgName.indexOf(val) >= 0
+        );
+      }
+    },
     onHide() {
-      this.info=this.emptyInfo();
+      this.info = this.emptyInfo();
       this.isShow = false;
     },
     onSubmit() {
-      console.info(this.info)
+      console.info(this.info);
       this.$emit("select", this.info);
       this.onHide();
     },

+ 4 - 0
src/views/resumption/plan/index.vue

@@ -205,6 +205,7 @@
           <el-table-column
             prop="execOrgType"
             label="履职机构类型"
+            width="120px"
             v-if="columns[6].visible"
           >
             <template slot-scope="r"
@@ -220,6 +221,7 @@
           <el-table-column
             prop="planCycle"
             label="履职周期"
+            width="80px"
             v-if="columns[6].visible"
           >
             <template slot-scope="r"
@@ -238,6 +240,7 @@
           <el-table-column
             prop="planExec"
             label="履职时间"
+            width="80px"
             v-if="columns[6].visible"
           >
             <template slot-scope="r"
@@ -256,6 +259,7 @@
           <el-table-column
             prop="planStatus"
             label="计划状态"
+            width="80px"
             v-if="columns[6].visible"
           >
             <template slot-scope="r"

+ 8 - 5
src/views/resumption/protection/index.vue

@@ -194,10 +194,9 @@
                 v-hasPermi="['device:protection']"
                 >布撤防历史</el-button
               >
-              <el-popover
-                placement="top-start"
+              <el-popconfirm
                 @confirm="onDel(r.row.id)"
-                content="点击确定删除防区"
+                title="点击确定删除防区"
               >
                 <el-button
                   size="mini"
@@ -207,7 +206,7 @@
                   slot="reference"
                   >删除</el-button
                 >
-              </el-popover>
+              </el-popconfirm>
             </template>
           </el-table-column>
         </el-table>
@@ -317,7 +316,11 @@ export default {
       this.$refs.historyDialog.show(row);
     },
     async onDel(id) {
-      await api.del(id);
+      let b=(await api.del(id)).data;
+      if(b){
+        this.$message.info("删除成功");
+      }
+      
       this.getList();
     },
     updateStatus(id, status) {

+ 30 - 33
src/views/resumption/taskManager/index.vue

@@ -20,7 +20,7 @@
           v-show="showSearch"
           label-width="100px"
         >
-          <el-form-item label="履职计划">
+          <el-form-item label="履职计划" prop="planId">
             <el-select
               v-model="queryParams.planId"
               filterable
@@ -36,7 +36,7 @@
               </el-option>
             </el-select>
           </el-form-item>
-          <el-form-item label="履职角色">
+          <el-form-item label="履职角色" prop="executeRole">
             <el-select
               v-model="queryParams.executeRole"
               placeHolder="请选择履职角色"
@@ -50,11 +50,10 @@
               ></el-option>
             </el-select>
           </el-form-item>
-          <el-form-item label="履职周期">
+          <el-form-item label="履职周期" prop="executeCycle">
             <el-select
               v-model="queryParams.executeCycle"
-              placeHolder="请选择履职周期"
-              clearable
+              placeHolder="请选择履职周期"              
               @change="changeType($event)"
             >
               <el-option
@@ -65,7 +64,7 @@
               ></el-option>
             </el-select>
           </el-form-item>
-          <el-form-item label="任务状态">
+          <el-form-item label="任务状态" prop="status">
             <el-select
               v-model="queryParams.status"
               placeHolder="请选择任务状态"
@@ -360,8 +359,8 @@
           >
             <template slot-scope="r">
               <span>
-                <i class="circle" :style="statusColor(r.row.status,true)" />
-                <label :style="statusColor(r.row.status,false)">
+                <i class="circle" :style="statusColor(r.row.status, true)" />
+                <label :style="statusColor(r.row.status, false)">
                   {{
                     getLabel(dict.type.resumption_status, r.row.status)
                   }}</label
@@ -383,13 +382,13 @@
               <el-button
                 type="text"
                 @click="showDetail(r.row)"
-                v-show="r.row.status != 2 || r.row.status != 3"
+                v-show="r.row.status == 2 || r.row.status == 3"
                 >查看</el-button
               >
               <el-button
                 type="text"
                 @click="showscanRecord(r.row)"
-                v-show="r.row.status != 2 || r.row.status != 3"
+                v-show="r.row.status == 2 || r.row.status == 3"
                 >扫描记录</el-button
               >
             </template>
@@ -683,9 +682,11 @@ export default {
     },
     resetQuery() {
       this.resetForm("queryParams");
-      this.queryParams.orgId = undefined;
-      this.queryParams.checkSub = false;
-      this.$refs.tree.setCurrentKey(null);
+      this.queryParams.executeCycle="2";
+      this.changeType("2");
+      // this.queryParams.orgId = undefined;
+      // this.queryParams.checkSub = false;
+      // this.$refs.tree.setCurrentKey(null);
       this.getList();
     },
     async getList() {
@@ -753,29 +754,29 @@ export default {
       if (this.queryParams.executeCycle == 3) {
         if (!this.week) this.week = new Date();
 
-        let oneDayLong = 24 * 60 * 60 * 1000;
-        let c_day = this.week.getDay();
-        let monday = this.week - (c_day == 0 ? 6 : c_day - 1) * oneDayLong;
-        let sunday = this.week + (c_day == 0 ? 0 : 7 - c_day) * oneDayLong;
-
-        this.weekStart = `${monday.getYear()}-${monday.getMonth()}-${monday.getDate()}`;
-        this.weekEnd = `${sunday.getYear()}-${sunday.getMonth()}-${sunday.getDate()}`;
-        // this.weekChanged();
+        this.updateWeekDateRange(this.week);
       }
       this.resetRangeParam();
       this.loadPlanList();
       this.loadRoles();
     },
-
     weekChanged() {
-      var date = this.$moment(this.week).isoWeekday(1);
-      this.weekStart = date.weekday(1).format("YYYY-MM-DD");
-      this.weekEnd = date.weekday(7).format("YYYY-MM-DD");
+      this.updateWeekDateRange(this.week);
       this.resetRangeParam();
     },
     monthChanged() {
       this.resetRangeParam();
     },
+    updateWeekDateRange(week) {
+      let oneDayLong = 24 * 60 * 60 * 1000;
+      let c_day = week.getDay();
+      this.weekStart = new Date(
+        week.valueOf() - (c_day == 0 ? 6 : c_day - 1) * oneDayLong
+      );
+      this.weekEnd = new Date(
+        week.valueOf() + (c_day == 0 ? 0 : 7 - c_day) * oneDayLong
+      );
+    },
     async resetRangeParam() {
       if (this.queryParams.executeCycle == 5) {
         let yearSval = this.yearS.getFullYear();
@@ -959,10 +960,7 @@ export default {
           this.queryParams.range = [new Date(sMDate), new Date(eMData)];
         }
       } else if (this.queryParams.executeCycle == 3) {
-        this.queryParams.range = [
-          new Date(this.weekStart),
-          new Date(this.weekEnd),
-        ];
+        this.queryParams.range = [this.weekStart, this.weekEnd];
       } else if (
         this.queryParams.executeCycle === 1 ||
         this.queryParams.executeCycle == 2
@@ -970,7 +968,7 @@ export default {
         this.queryParams.range = this.$dateRange.before(0);
       }
     },
-    statusColor(status,isBackground) {
+    statusColor(status, isBackground) {
       let color = "";
       switch (status) {
         case "1":
@@ -987,12 +985,11 @@ export default {
           break;
       }
 
-      if(isBackground){
+      if (isBackground) {
         return "background-color:" + color;
-      }else{
+      } else {
         return "color:" + color;
       }
-      
     },
   },
   async mounted() {

File diff suppressed because it is too large
+ 665 - 157
src/views/system/dept/extend.vue


+ 2 - 2
src/views/system/dept/index.vue

@@ -97,7 +97,7 @@
               size="mini"
               @click="handleAdd(row)"
               v-hasPermi="['system:dept:add']"
-              >新增中心业务库</el-button
+              >新增机构</el-button
             >
           </el-col>
           <right-toolbar
@@ -235,7 +235,7 @@
                 v-model="form.type"
                 placeholder="请选择机构类型"
                 clearable
-              >
+              >1699249064069677058
                 <el-option
                   v-for="dict in dict.type.sys_org_type"
                   :key="dict.value"

+ 147 - 83
src/views/system/device/index.vue

@@ -1,86 +1,110 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-
-      <el-form-item label="设备名称" prop="deviceName">
-        <el-input v-model="queryParams.deviceName" placeholder="请输入设备名称" clearable @keyup.enter.native="handleQuery" />
-      </el-form-item>
-      <el-form-item label="资产类别" prop="assetType">
-
-        <el-select style="width: 100%;" v-model="queryParams.assetType" placeholder="请选择">
-          <el-option v-for="dict in dict.type.sys_asset_type" :key="dict.value" :label="dict.label"
-            :value="`${dict.value}`"></el-option>
-        </el-select>
-      </el-form-item>
-
-      <el-form-item label="设备分类" prop="deviceType">
-
-        <el-select style="width: 100%;" v-model="queryParams.deviceType" placeholder="请选择">
-          <el-option v-for="dict in dict.type.sys_device_type" :key="dict.value" :label="dict.label"
-            :value="`${dict.value}`"></el-option>
-        </el-select>
-      </el-form-item>
-      <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-form>
-
-    <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:device:add']">新增</el-button>
+    <el-row :gutter="20">
+
+      <!--部门数据-->
+      <el-col :span="4" :xs="24">
+        <div class="head-container">
+          <el-input v-model="deptName" placeholder="请输入部门名称" clearable size="small" prefix-icon="el-icon-search"
+            style="margin-bottom: 20px" />
+        </div>
+        <div class="tree-container">
+          <div style="margin-bottom: 10px;">
+            <el-checkbox v-model="queryParams.checkSub" @change="changeCheckBox">是否关联下级机构</el-checkbox>
+          </div>
+          <el-tree :data="deptOptions" :props="defaultProps" :expand-on-click-node="false"
+            :filter-node-method="filterNode" ref="tree" node-key="id" :default-expanded-keys="defaultKeys"
+            :default-checked-keys="defaultKeys" @node-click="handleNodeClick" />
+        </div>
       </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:device: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:device:remove']">删除</el-button>
+
+      <el-col :span="20" :xs="24">
+        <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+
+          <el-form-item label="设备名称" prop="deviceName">
+            <el-input v-model="queryParams.deviceName" placeholder="请输入设备名称" clearable
+              @keyup.enter.native="handleQuery" />
+          </el-form-item>
+          <el-form-item label="资产类别" prop="assetType">
+
+            <el-select style="width: 100%;" v-model="queryParams.assetType" placeholder="请选择">
+              <el-option v-for="dict in dict.type.sys_asset_type" :key="dict.value" :label="dict.label"
+                :value="`${dict.value}`"></el-option>
+            </el-select>
+          </el-form-item>
+
+          <el-form-item label="设备分类" prop="deviceType">
+
+            <el-select style="width: 100%;" v-model="queryParams.deviceType" placeholder="请选择">
+              <el-option v-for="dict in dict.type.sys_device_type" :key="dict.value" :label="dict.label"
+                :value="`${dict.value}`"></el-option>
+            </el-select>
+          </el-form-item>
+          <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-form>
+
+        <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:device: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:device: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:device:remove']">删除</el-button>
+          </el-col>
+          <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+        </el-row>
+
+        <el-table v-loading="loading" :data="deviceList" @selection-change="handleSelectionChange">
+          <el-table-column type="selection" width="55" align="center" />
+          <el-table-column label="所属机构" align="center" prop="orgName" />
+          <el-table-column label="设备名称" align="center" prop="deviceName" />
+
+
+          <el-table-column label="资产类别" align="center" key="assetType" prop="assetType" width="80">
+            <template slot-scope="scope">
+              <dict-tag :options="dict.type.sys_asset_type" :value="scope.row.assetType" />
+            </template>
+          </el-table-column>
+
+          <el-table-column label="设备分类" align="center" key="deviceType" prop="deviceType" width="80">
+            <template slot-scope="scope">
+              <dict-tag :options="dict.type.sys_device_type" :value="scope.row.deviceType" />
+            </template>
+          </el-table-column>
+
+
+          <el-table-column label="设备品牌" align="center" prop="deviceBrand" />
+          <el-table-column label="验收日期" align="center" prop="checkTime" width="160">
+          </el-table-column>
+          <el-table-column label="保修期限" align="center" prop="maintenanceTerm" />
+          <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:device:edit']">修改</el-button>
+              <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
+                v-hasPermi="['system:device: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-col>
-      <!-- <el-col :span="1.5">
-        <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
-          v-hasPermi="['system:device:export']">导出</el-button>
-      </el-col> -->
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <el-table v-loading="loading" :data="deviceList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="所属机构" align="center" prop="orgName" />
-      <el-table-column label="设备名称" align="center" prop="deviceName" />
-
-
-      <el-table-column label="资产类别" align="center" key="assetType" prop="assetType" width="80">
-        <template slot-scope="scope">
-          <dict-tag :options="dict.type.sys_asset_type" :value="scope.row.assetType" />
-        </template>
-      </el-table-column>
-
-      <el-table-column label="设备分类" align="center" key="deviceType" prop="deviceType" width="80">
-        <template slot-scope="scope">
-          <dict-tag :options="dict.type.sys_device_type" :value="scope.row.deviceType" />
-        </template>
-      </el-table-column>
-
-
-      <el-table-column label="设备品牌" align="center" prop="deviceBrand" />
-      <el-table-column label="验收日期" align="center" prop="checkTime" width="160">
-      </el-table-column>
-      <el-table-column label="保修期限" align="center" prop="maintenanceTerm" />
-      <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:device:edit']">修改</el-button>
-          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
-            v-hasPermi="['system:device: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-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
@@ -173,15 +197,26 @@
 </template>
 
 <script>
-import OrgTree from '@/components/orgTree'
-import { listDevice, getDevice, delDevice, addDevice, updateDevice, getHostByOrgId } from "@/api/system/device";
+
+import treeselect from '@riophae/vue-treeselect'
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 import { deptTreeSelect } from "@/api/system/public";
+import { listDevice, getDevice, delDevice, addDevice, updateDevice, getHostByOrgId } from "@/api/system/device";
 export default {
   dicts: ['sys_asset_type', 'sys_device_type'],
   name: "Device",
+  components: { treeselect },
   data() {
     return {
-
+      checkList: [],
+      roleOptions: [],
+      defaultKeys: [],
+      //是否关联下级
+      checked: false,
+      defaultProps: {
+        children: "children",
+        label: "name"
+      },
       rules: {
         deviceName: [
           { required: true, message: '请输入设备名称', trigger: 'change' },
@@ -268,6 +303,11 @@ export default {
     this.getList();
   },
   methods: {
+
+    /** 下穿状态改变*/
+    changeCheckBox() {
+      this.getList();
+    },
     /** 查询机构树数据 */
     getDeptTree() {
       deptTreeSelect().then(response => {
@@ -286,7 +326,11 @@ export default {
         children: node.children
       }
     },
-
+    // 节点单击事件
+    handleNodeClick(data) {
+      this.queryParams.orgId = data.id;
+      this.handleQuery();
+    },
     changeSelect(val) {
       getHostByOrgId(val).then(response => {
         this.form.hostId = null;
@@ -303,6 +347,26 @@ export default {
         this.loading = false;
       });
     },
+    /** 查询部门下拉树结构 */
+    getDeptTree() {
+      deptTreeSelect().then(response => {
+        this.deptOptions = response.data;
+        console.log(this.deptOptions, ' this.deptOptions')
+        this.defaultKeys.push(response.data[0].id);
+        this.queryParams.orgId = response.data[0].id;
+        this.handleQuery();
+      });
+    },
+    tenantIdnormalizer(node, instanceId) {
+      if (node.children && !node.children.length) {
+        delete node.children
+      }
+      return {
+        id: node.id,
+        label: node.name,
+        children: node.children
+      }
+    },
     // 取消按钮
     cancel() {
       this.open = false;
@@ -343,7 +407,7 @@ export default {
     // 多选框选中数据
     handleSelectionChange(selection) {
       this.ids = selection.map(item => item.id)
-      this.names= selection.map(item => item.deviceName)
+      this.names = selection.map(item => item.deviceName)
       this.single = selection.length !== 1
       this.multiple = !selection.length
     },
@@ -390,7 +454,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      const names=row.deviceName || this.names;
+      const names = row.deviceName || this.names;
       this.$modal.confirm('是否确认删除名称为"' + names + '"的数据项?').then(function () {
         return delDevice(ids);
       }).then(() => {

+ 7 - 1
src/views/system/menu/index.vue

@@ -102,11 +102,17 @@
           />
         </template>
       </el-table-column>
-      <el-table-column prop="icon" label="图标" align="center" width="100">
+      <el-table-column prop="icon" v-if="activeName==1" label="图标" align="center" width="100">
         <template slot-scope="scope">
           <svg-icon :icon-class="scope.row.icon" />
         </template>
       </el-table-column>
+      <el-table-column prop="icon" v-if="activeName==0" label="图标" align="center" width="100">
+        <template slot-scope="scope">
+          <img :src="scope.row.icon" alt="">
+         
+        </template>
+      </el-table-column>
       <el-table-column
         prop="orderNum"
         label="排序"

+ 2 - 2
src/views/system/role/index.vue

@@ -78,7 +78,7 @@
             v-hasPermi="['system:role:edit']">修改</el-button>
           <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
             v-hasPermi="['system:role:remove']">删除</el-button>
-          <el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)"
+          <!-- <el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)"
             v-hasPermi="['system:role:edit']">
             <el-button size="mini" type="text" icon="el-icon-d-arrow-right">更多</el-button>
             <el-dropdown-menu slot="dropdown">
@@ -87,7 +87,7 @@
               <el-dropdown-item command="handleAuthUser" icon="el-icon-user"
                 v-hasPermi="['system:role:edit']">分配用户</el-dropdown-item>
             </el-dropdown-menu>
-          </el-dropdown>
+          </el-dropdown> -->
         </template>
       </el-table-column>
     </el-table>

+ 15 - 16
src/views/system/workTimeSet/dialog.add.vue

@@ -18,8 +18,7 @@
                 <template slot-scope="r" >
                   <el-date-picker
                     style="width: 100%"
-                    v-model="r.row.date"
-                    value-format="yyyy-MM-dd hh:mm:ss"
+                    v-model="r.row.ymdDate"
                     :clearable=false
                     popper-class="no-atTheMoment"
                     :picker-options="startDatepickerOptions"
@@ -30,7 +29,7 @@
               </el-table-column>
               <el-table-column label="星期" width="80px">
                 <template slot-scope="r">
-                  <span>{{parseTime(r.row.date ,'dddd')}}</span>
+                  <span>{{parseTime(r.row.ymdDate ,'dddd')}}</span>
                 </template>
               </el-table-column>
               <el-table-column label="状态" width="160px">
@@ -132,6 +131,7 @@ import BtnTip from "@/components/btnTip";
 import dayjs from "dayjs";
 import {formatTime, timeCheck} from "@/utils/ruoyi";
 import {addWorkTimeDay} from "@/views/system/workTimeSet/api";
+import day from "@/components/Crontab/day";
 
 
 export default {
@@ -183,18 +183,18 @@ export default {
       //获取workTimeList最后一条数据
       let workTime = {
         isEnable: 1,
-        workTime: '07:00',
+        workTime: '08:30',
         openTime: '09:00',
-        noonbreakStart: null,
-        noonbreakEnd: null,
+        noonbreakStart: '12:00',
+        noonbreakEnd: '14:00',
         closeTime: '17:00',
-        workOffTime: '20:00',
-        date: new Date(),
+        workOffTime: '17:30',
+        ymdDate: new Date(),
         disabled: false,
       };
       if(this.workTimeList.length>0){
-        if(this.workTimeList[this.workTimeList.length-1].date!=null){
-          workTime.date = dayjs(this.workTimeList[this.workTimeList.length-1].date).add(1,'day').toDate();
+        if(this.workTimeList[this.workTimeList.length-1].ymdDate!=null){
+          workTime.ymdDate = dayjs(this.workTimeList[this.workTimeList.length-1].ymdDate).add(1,'day').toDate()
         }
       }
       this.workTimeList.push(workTime);
@@ -218,11 +218,11 @@ export default {
     },
     //
     check(other) {
-      if(!other.date){
+      if(!other.ymdDate){
         this.$message.error(`日期不能为空`);
         return;
       }
-      const ds = this.formatTime(other.date,"YYYY-MM-DD");
+      const ds = this.formatTime(other.ymdDate,"YYYY-MM-DD");
       console.log(other,'ds')
       if ( !other.isEnable === null && !other.disabled ) {
         this.$message.error(`${ds}未进行配置`);
@@ -283,9 +283,8 @@ export default {
       let dateList = [];
       let workTimeList = JSON.parse(JSON.stringify(this.workTimeList))
       for (let v of workTimeList) {
-        if (v.date) {
-          let date = this.formatTime(v.date,"YYYY-MM-DD");
-          v.ymdDate = date;
+        if (v.ymdDate) {
+          let date = this.formatTime(v.ymdDate,"YYYY-MM-DD");
           if (dateList.indexOf(date) > -1) {
             this.$message.error(`日期: ${date} 重复`);
             return;
@@ -304,7 +303,7 @@ export default {
         workTimeList:workTimeList
       }
       addWorkTimeDay(data).then(res=>{
-        this.$emit("success");
+        this.$emit("ok");
         this.handleClose();
       })
 

+ 26 - 2
src/views/system/workTimeSet/dialog.edit.vue

@@ -2,7 +2,7 @@
   <div class="question-infos">
     <el-dialog title="编辑作息" @close="handleClose" :visible="show" width="800px">
       <div class="page-body">
-        <el-form :model="formData" :rules="formData.isEnable?formDataRules:null" size="small" ref="form" label-position="right"
+        <el-form :model="formData" :rules="formData.isEnable?formDataRules:{}" size="small" ref="form" label-position="right"
                  label-width="120px" label-prefix=":">
           <el-row :gutter="20">
             <el-col :span="12">
@@ -71,6 +71,26 @@
                 </template>
               </el-form-item>
             </el-col>
+            <el-col :span="12">
+              <el-form-item prop="openTime" label="营业开始:">
+                <template >
+                  <el-time-select
+                    :picker-options="pickerOptions"
+                    v-model="formData.openTime"
+                    :disabled="!formData.isEnable || formData.isEnable === false"/>
+                </template>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item prop="closeTime" label="营业结束:">
+                <template >
+                  <el-time-select
+                    :picker-options="pickerOptions"
+                    v-model="formData.closeTime"
+                    :disabled="!formData.isEnable || formData.isEnable === false"/>
+                </template>
+              </el-form-item>
+            </el-col>
           </el-row>
         </el-form>
       </div>
@@ -102,9 +122,11 @@ export default {
       formDataRules: {
         isEnable: [{ required: true, message: "请选择状态" }],
         workTime: [{ required: true, message: "请输入上班时间" }],
+        workOffTime: [{ required: true, message: "请输入下班时间" }],
+        noonbreakStart: [{ required: true, message: "请输入午休开始时间" }],
+        noonbreakEnd: [{ required: true, message: "请输入午休结束时间" }],
         openTime: [{ required: true, message: "请输入营业时间" }],
         closeTime: [{ required: true, message: "请输入营业终了时间" }],
-        workOffTime: [{ required: true, message: "请输入下班时间" }],
       },
 
     };
@@ -153,6 +175,8 @@ export default {
     handleClose() {
       this.show = false;
       this.formData = this.reset();
+      console.log(this.$refs.form,'from')
+      this.$refs.form.clearValidate();
       this.id=null;
     },
     onSubmit() {

+ 10 - 10
src/views/system/workTimeSet/json.js

@@ -7,8 +7,8 @@ export let json = [
     "dayOfWeekText": "星期一",
     "workTime": "07:00",
     "openTime": "09:00",
-    "noonbreakStart": null,
-    "noonbreakEnd": null,
+    "noonbreakStart": "12:00",
+    "noonbreakEnd": "14:00",
     "closeTime": "17:00",
     "workOffTime": "20:00"
   },
@@ -20,8 +20,8 @@ export let json = [
     "dayOfWeekText": "星期二",
     "workTime": "07:00",
     "openTime": "09:00",
-    "noonbreakStart": null,
-    "noonbreakEnd": null,
+    "noonbreakStart": "12:00",
+    "noonbreakEnd": "14:00",
     "closeTime": "17:00",
     "workOffTime": "20:00"
   },
@@ -33,8 +33,8 @@ export let json = [
     "dayOfWeekText": "星期三",
     "workTime": "07:00",
     "openTime": "09:00",
-    "noonbreakStart": null,
-    "noonbreakEnd": null,
+    "noonbreakStart": "12:00",
+    "noonbreakEnd": "14:00",
     "closeTime": "17:00",
     "workOffTime": "20:00"
   },
@@ -46,8 +46,8 @@ export let json = [
     "dayOfWeekText": "星期四",
     "workTime": "07:00",
     "openTime": "09:00",
-    "noonbreakStart": null,
-    "noonbreakEnd": null,
+    "noonbreakStart": "12:00",
+    "noonbreakEnd": "14:00",
     "closeTime": "17:00",
     "workOffTime": "20:00"
   },
@@ -59,8 +59,8 @@ export let json = [
     "dayOfWeekText": "星期五",
     "workTime": "07:00",
     "openTime": "09:00",
-    "noonbreakStart": null,
-    "noonbreakEnd": null,
+    "noonbreakStart": "12:00",
+    "noonbreakEnd": "14:00",
     "closeTime": "17:00",
     "workOffTime": "20:00"
   },

+ 21 - 10
src/views/system/workTimeSet/workTime.vue

@@ -25,6 +25,7 @@
             :filter-node-method="filterNode"
             ref="tree"
             node-key="id"
+            highlight-current
             :default-expanded-keys="defaultKeys"
             :default-checked-keys="defaultKeys"
             @node-click="handleNodeClick"
@@ -98,7 +99,7 @@
             <span slot-scope="scope">{{scope.row.ymdDate}}</span>
           </el-table-column>
           <el-table-column v-if="columns[2].visible" label="营业状态">
-            <template slot-scope="r">{{r.row.isEnable!=true?'歇业':'营业'}}</template>
+            <template slot-scope="r">{{r.row.isEnable?'营业':'歇业'}}</template>
           </el-table-column>
           <el-table-column v-if="columns[3].visible" label="上下班时间段">
             <template slot-scope="r">
@@ -129,8 +130,8 @@
         <pagination
           v-show="pages.total>0"
           :total="pages.total"
-          :page.sync="pages.page"
-          :limit.sync="pages.size"
+          :page.sync="pages.pageNum"
+          :limit.sync="pages.pageSize"
           @pagination="getList"
         />
       </el-col>
@@ -139,7 +140,7 @@
     <!--  编辑作息  -->
     <dialog-edit ref="modalEdit" @ok="getList" ></dialog-edit>
     <!--  指定日期配置  -->
-    <dialog-add ref="modalAdd" ></dialog-add>
+    <dialog-add ref="modalAdd" @ok="getList" ></dialog-add>
 
   </div>
 </template>
@@ -153,7 +154,11 @@ import DialogAdd from './dialog.add'
 import { deptTreeSelect } from "@/api/system/public";
 import { tableList } from "./api";
 import {formatTime} from "@/utils/ruoyi";
-
+//初始化查询日期
+let timea = new Date();
+timea.setHours(0, 0, 0, 0);
+let timeb = new Date(timea.getTime() - 3600 * 1000 * 24 * 30);
+timeb.setHours(0, 0, 0, 0);
 export default {
   /**  得先引入字典才能使用 */
   dicts: ['sys_business_type'],
@@ -161,11 +166,6 @@ export default {
   mixins:[tableListMixins],
   components: {DialogEdit,DialogAdd},
   data() {
-    //初始化查询日期
-    let timea = new Date();
-    timea.setHours(0, 0, 0, 0);
-    let timeb = new Date(timea.getTime() - 3600 * 1000 * 24 * 30);
-    timeb.setHours(0, 0, 0, 0);
     return {
       //选中的行
       selectRow:null,
@@ -190,6 +190,7 @@ export default {
       queryParams: {
         checkSub: false,
         orgId: null,
+        isEnable:'1',
         range: [formatTime(timeb), formatTime(timea)],
       },
       // 列信息
@@ -249,6 +250,7 @@ export default {
         this.deptOptions = response.data;
         this.defaultKeys.push(response.data[0].id);
         this.queryParams.orgId = response.data[0].id;
+        this.$refs.tree.setCurrentKey(response.data[0].id);
         this.handleQuery();
       });
     },
@@ -282,6 +284,15 @@ export default {
         ...this.queryParams
       }, `user_${new Date().getTime()}.xlsx`)
     },
+    /* 重置搜索 */
+    resetForm(name){
+      this.queryParams = {
+        orgId: null,
+        isEnable:'1',
+        range: [formatTime(timeb), formatTime(timea)],
+      }
+    },
   }
 };
+
 </script>

+ 12 - 7
src/views/system/workTimeSet/workTimeWeek.vue

@@ -25,6 +25,7 @@
             :filter-node-method="filterNode"
             ref="tree"
             node-key="id"
+            highlight-current
             :default-expanded-keys="defaultKeys"
             :default-checked-keys="defaultKeys"
             @node-click="handleNodeClick"
@@ -38,7 +39,7 @@
         <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
           <el-form-item label="生效日期">
             <el-date-picker
-              v-model="queryParams.effectiveDate"
+              v-model="dateRange"
               style="width: 240px"
               value-format="yyyy-MM-dd hh:mm:ss"
               type="daterange"
@@ -94,8 +95,8 @@
         <pagination
           v-show="pages.total >0"
           :total="pages.total"
-          :page.sync="pages.page"
-          :limit.sync="pages.size"
+          :page.sync="pages.pageNum"
+          :limit.sync="pages.pageSize"
           @pagination="getList"
         />
       </el-col>
@@ -110,11 +111,9 @@
 <script>
 import tableListMixins  from '@/mixins/tableList'
 import DialogTemplate from './dialog.template'
-import {json} from'./json'
 /** 引入节点树接口*/
 import { deptTreeSelect} from "@/api/system/public";
 import {weekTableList} from './api'
-
 export default {
   /**  得先引入字典才能使用 */
   dicts: ['sys_business_type'],
@@ -146,7 +145,6 @@ export default {
         checkSub: false,
         orgId: null,
         isEnable:false,
-        effectiveDate: null,
       },
       // 列信息
       columns: [
@@ -205,7 +203,7 @@ export default {
         ...this.queryParams,
         ...this.pages
       }
-      weekTableList(data).then(response => {
+      weekTableList(this.addDateRange(data, this.dateRange)).then(response => {
           this.tableList = response.data.records;
           this.pages.total = response.data.total;
           this.loading = false;
@@ -245,6 +243,13 @@ export default {
         ...this.queryParams
       }, `user_${new Date().getTime()}.xlsx`)
     },
+    /* 重置搜索 */
+    resetForm(name){
+      this.queryParams = {
+          orgId: null,
+          isEnable:false,
+      }
+    },
   }
 };
 </script>

+ 202 - 0
src/views/tool/pageTest/index.vue

@@ -0,0 +1,202 @@
+<template>
+  <div class='app-container'>
+    <el-row style="margin-bottom: 10px;" :gutter="10">
+        <el-col :span="16">
+          <el-row>
+            <el-col>
+              <el-card class="box-card">
+                <div slot="header" class="clearfix">
+                  <span>卡片名称</span>
+                  <span style="float: right; padding: 3px 0;">操作按钮</span>
+                </div>
+                <el-table
+                  :data="tableData"
+                  style="width: 100%">
+                  <el-table-column
+                    prop="date"
+                    label="日期"
+                    width="180">
+                  </el-table-column>
+                  <el-table-column
+                    prop="name"
+                    label="姓名"
+                    width="180">
+                  </el-table-column>
+                  <el-table-column
+                    prop="address"
+                    label="地址">
+                  </el-table-column>
+                </el-table>
+                <p>卡片名称</p>
+                <el-table
+                  :data="tableData"
+                  style="width: 100%">
+                  <el-table-column
+                    prop="date"
+                    label="日期"
+                    width="180">
+                  </el-table-column>
+                  <el-table-column
+                    prop="name"
+                    label="姓名"
+                    width="180">
+                  </el-table-column>
+                  <el-table-column
+                    prop="address"
+                    label="地址">
+                  </el-table-column>
+                </el-table>
+              </el-card>
+            </el-col>
+          </el-row>
+        </el-col>
+        <el-col :span="8">
+          <el-row style="padding-bottom: 5px;">
+              <el-col>
+                <el-card class="box-card">
+                  <div slot="header" class="clearfix">
+                    <span>卡片名称</span>
+                    <span style="float: right; padding: 3px 0;">操作按钮</span>
+                  </div>
+                  <bar-chart style="height: 186px;"></bar-chart>
+                </el-card>
+              </el-col>
+          </el-row>
+          <el-row style="padding-top: 5px;">
+            <el-col>
+              <el-card class="box-card">
+                <div slot="header" class="clearfix">
+                  <span>卡片名称</span>
+                  <span style="float: right; padding: 3px 0;">操作按钮</span>
+                </div>
+                <bar-chart style="height: 186px"></bar-chart>
+              </el-card>
+            </el-col>
+          </el-row>
+        </el-col>
+    </el-row>
+    <el-row :gutter="10">
+      <el-col :span="16">
+        <el-row>
+          <el-col>
+            <el-card class="box-card">
+              <div slot="header" class="clearfix">
+                <span>卡片名称</span>
+                <span style="float: right; padding: 3px 0;">操作按钮</span>
+              </div>
+              <el-table
+                :data="tableData"
+                style="width: 100%">
+                <el-table-column
+                  prop="date"
+                  label="日期"
+                  width="180">
+                </el-table-column>
+                <el-table-column
+                  prop="name"
+                  label="姓名"
+                  width="180">
+                </el-table-column>
+                <el-table-column
+                  prop="address"
+                  label="地址">
+                </el-table-column>
+              </el-table>
+              <p>卡片名称</p>
+              <el-table
+                :data="tableData"
+                style="width: 100%">
+                <el-table-column
+                  prop="date"
+                  label="日期"
+                  width="180">
+                </el-table-column>
+                <el-table-column
+                  prop="name"
+                  label="姓名"
+                  width="180">
+                </el-table-column>
+                <el-table-column
+                  prop="address"
+                  label="地址">
+                </el-table-column>
+              </el-table>
+            </el-card>
+          </el-col>
+        </el-row>
+      </el-col>
+      <el-col :span="8">
+        <el-row style="padding-bottom: 5px;">
+          <el-col>
+            <el-card class="box-card">
+              <div slot="header" class="clearfix">
+                <span>卡片名称</span>
+                <span style="float: right; padding: 3px 0;">操作按钮</span>
+              </div>
+              <bar-chart style="height: 186px;"></bar-chart>
+            </el-card>
+          </el-col>
+        </el-row>
+        <el-row style="padding-top: 5px;">
+          <el-col>
+            <el-card class="box-card">
+              <div slot="header" class="clearfix">
+                <span>卡片名称</span>
+                <span style="float: right; padding: 3px 0;">操作按钮</span>
+              </div>
+              <bar-chart style="height: 186px"></bar-chart>
+            </el-card>
+          </el-col>
+        </el-row>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+<script>
+import BarChart from '../../dashboard/BarChart'
+export default {
+  components: {BarChart},
+  props: [],
+  data() {
+    return {
+      formData: {},
+      rules: {},
+      tableData: [{
+        date: '2016-05-02',
+        name: '王小虎',
+        address: '上海市普陀区金沙江路 1518 弄'
+      }, {
+        date: '2016-05-04',
+        name: '王小虎',
+        address: '上海市普陀区金沙江路 1517 弄'
+      }, {
+        date: '2016-05-01',
+        name: '王小虎',
+        address: '上海市普陀区金沙江路 1519 弄'
+      }, {
+        date: '2016-05-03',
+        name: '王小虎',
+        address: '上海市普陀区金沙江路 1516 弄'
+      }]
+    }
+  },
+  computed: {},
+  watch: {},
+  created() {},
+  mounted() {},
+  methods: {
+    submitForm() {
+      this.$refs['elForm'].validate(valid => {
+        if (!valid) return
+        // TODO 提交表单
+      })
+    },
+    resetForm() {
+      this.$refs['elForm'].resetFields()
+    },
+  }
+}
+
+</script>
+<style>
+</style>

+ 1 - 1
vue.config.js

@@ -23,7 +23,7 @@ module.exports = {
   publicPath:"./",
 
   // 在npm run build 或 yarn build 时 ,生成文件的目录名称(要和baseUrl的生产环境路径一致)(默认dist)
-  outputDir: 'dist',
+  outputDir: 'web',
   // 用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下)
   assetsDir: 'static',
   // 是否开启eslint保存检测,有效值:ture | false | 'error'

Some files were not shown because too many files changed in this diff