فهرست منبع

Merge branch 'V0.0.2' of http://10.87.10.227:4000/jzyd_yyds/soc_web into V0.0.2

# Conflicts:
#	src/components/orgTree/index.vue
jiawuxian 2 سال پیش
والد
کامیت
59447651da

+ 8 - 0
src/api/core/task.js

@@ -50,3 +50,11 @@ export function roleList() {
     params: null
   })
 }
+export function exportExcel(data) {
+  return request({
+    url: 'core/retrievalTask/export',
+    method: 'post',
+    params: data,
+    showLoading:true
+  })
+}

+ 1 - 0
src/api/system/check.js

@@ -56,3 +56,4 @@ export function delCheck(id) {
     method: 'delete'
   })
 }
+

+ 1 - 0
src/api/system/device.js

@@ -16,6 +16,7 @@ export function getDevice(id) {
     method: 'get'
   })
 }
+
 // 查询主机
 export function getHostByOrgId(orgId) {
   return request({

+ 7 - 1
src/api/system/dict/data.js

@@ -24,7 +24,13 @@ export function getDicts(dictType) {
     method: 'get'
   })
 }
-
+// 根据资产类别查询设备分类
+export function getDeviceType(assetType) {
+  return request({
+    url: '/system/dict/data/deviceType/' + assetType,
+    method: 'get'
+  })
+}
 // 新增字典数据
 export function addData(data) {
   return request({

+ 4 - 3
src/components/K-FileUpload/index.vue

@@ -6,6 +6,7 @@
       :before-upload="handleBeforeUpload"
       :file-list="fileList"
       :limit="limit"
+      :accept="accept"
       :http-request="uploadFile"
       :show-file-list="false"
       :headers="headers"
@@ -81,6 +82,7 @@ export default {
         Authorization: "Bearer " + getToken(),
       },
       fileList: [],
+      accept: ".pdf,.jpg,.png,.bmp",
     };
   },
   watch: {
@@ -192,7 +194,6 @@ export default {
 
     //自定义上传方式(自带的成功回调及失败回调会失效)
     uploadFile(fileObj) {
-      console.log(fileObj, 'fileObj')
       let formData = new FormData();
       formData.append('file', fileObj.file);
       upload(formData, 'image').then(res => {
@@ -200,9 +201,9 @@ export default {
         this.$modal.closeLoading();
         //let imgUrl = process.env.VUE_APP_BASE_API + res.data.url;
         let arr = [];
-        arr.push({name: res.data.name, url: res.data.url})
+        arr.push({name: res.data.realName, url: res.data.url})
         this.fileList = arr;
-        this.$emit("input", this.listToString(this.fileList));
+        this.$emit("input", this.fileList);
       }).catch(err => {
         /*上传失败*/
         this.$modal.closeLoading();

+ 11 - 5
src/components/orgTree/index.vue

@@ -109,9 +109,14 @@ export default {
         this.treeList = response.data;
         this.defaultKeys.push(response.data[0].id);
         this.$emit("defaultKey", response.data[0].id);
+        this.$emit('defaultOrg',response.data[0]);
         this.defaultKey = response.data[0].id;
         setTimeout(() => {
+<<<<<<< .mine
           this.$refs.tree.setCurrentKey(response.data[0].id);
+=======
+          this.$refs.tree.setCurrentKey(response.data[0].id)
+>>>>>>> .theirs
         }, 100);
       });
     },
@@ -128,11 +133,12 @@ export default {
 };
 </script>
 
-<style lang="scss" scoped>
-.el-tree-ex {
-  overflow: auto;
-  ::v-deep .is-current > .el-tree-node__content {
-    background-color: #d1e0f1 !important;
+<style lang='scss' scoped>
+  .el-tree-ex {
+    overflow: auto;
+    ::v-deep .is-current > .el-tree-node__content {
+      background-color: #d1e0f1 !important;
+    }
   }
 }
 </style>

+ 12 - 2
src/views/check/dialog.edit.vue

@@ -114,6 +114,7 @@
                   v-model="formData.checkOrgType"
                   placeholder="请选择受检机构类型"
                   clearable
+                  
                 >
                   <el-option
                     v-for="item in dict.type.sys_org_type"
@@ -172,6 +173,7 @@
                 <orgDropDown
                   v-model="formData.execOrg"
                   placeholder="选择检查机构"
+                  multiple
                   @select="onexecOrgSelect"
                 />
               </el-form-item>
@@ -248,6 +250,8 @@
 <script>
 import { mapGetters } from "vuex";
 import orgDropDown from "@/components/orgTree/orgDropDown.vue";
+import OrgTree from "@/components/orgTree";
+import korgTree from "@/components/k-orgTree";
 import * as api from "@/api/safetycheck/plan";
 import { statusOptions } from "@/views/commonOption";
 import { findAllRole } from "@/api/system/role";
@@ -343,7 +347,7 @@ export default {
       this.formData.buildTaskNow = !this.formData.buildTaskNow;
     },
     onexecOrgSelect(node) {
-      this.formData.execOrg = node.id;
+      this.formData.execOrgIds = node.val;
       console.log(node, "onexecOrgSelect");
     },
     oncheckOrgSelect(node) {
@@ -372,6 +376,12 @@ export default {
         execOrg: null,
         checkOrg: null,
         buildTaskNow: false,
+        checkOrgList:null,
+        execOrgList:null,
+        rulePointList:null,
+        checkOrgIds:null,
+        execOrgIds:null,
+        rulePointIds:null,
       };
     },
     getRolesByOrg() {
@@ -482,7 +492,7 @@ export default {
     //apimark//
   },
   mounted() {},
-  components: { DialogSelect, orgDropDown },
+  components: { DialogSelect, orgDropDown,OrgTree,korgTree },
 };
 </script>
 

+ 2 - 2
src/views/core/accessPlan/index.vue

@@ -134,7 +134,7 @@
 
 
         <el-form-item style="width: 100%;" v-if="form.planCycle == 0" label="开始时间" prop="startTime">
-          <el-date-picker clearable v-model="form.startTime" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
+          <el-date-picker clearable v-model="form.startTime" type="date" value-format="yyyy-MM-dd HH:mm:ss"
             placeholder="请选择时间">
           </el-date-picker>
         </el-form-item>
@@ -143,7 +143,7 @@
 
 
         <el-form-item style="width: 100%;" v-if="form.planCycle == 0" label="结束时间" prop="endTime">
-          <el-date-picker clearable v-model="form.endTime" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
+          <el-date-picker clearable v-model="form.endTime" type="date" value-format="yyyy-MM-dd HH:mm:ss"
             placeholder="请选择时间">
           </el-date-picker>
         </el-form-item>

+ 29 - 2
src/views/core/drill/drillDictionary/index.vue

@@ -1,7 +1,12 @@
 <template>
   <div class="app-container">
     <el-row :gutter="20">
-      <el-col :span="24" :xs="24">
+      <!--机构数据-->
+      <el-col :span="4" :xs="24">
+        <org-tree v-model="queryParams.orgId" @defaultKey="getDefaultKey" @checkChange="checkChange"
+                  @click="clickTreeNode" hangsheTree></org-tree>
+      </el-col>
+      <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="id">
             <el-input v-model="queryParams.id" placeholder="请输入编号" clearable
@@ -56,7 +61,7 @@
               <dict-tag :options="dict.type.core_drill_type" :value="scope.row.drillType"/>
             </template>
           </el-table-column>
-          <el-table-column  label="演练项目" scoped-slot="drillProjects" align="center" prop="drillProjects">
+          <el-table-column  label="解决方案" scoped-slot="drillProjects" align="center" prop="drillProjects">
             <template slot-scope="scope">
               <div class="ellipsis" :title="scope.row.drillProjects">{{ scope.row.drillProjects }}</div>
             </template>
@@ -138,6 +143,7 @@ import OrgTree from "@/components/orgTree";
 import kOrgTree from "@/components/k-orgTree";
 import KFileUpload from "@/components/K-FileUpload";
 import tableList from "@/mixins/tableList";
+import {queryKnowledgeList} from "@/api/core/edu/knowledge";
 export default {
   name: "DrillDictionary",
   components: {OrgTree},
@@ -200,12 +206,33 @@ export default {
     reset() {
       this.form = {
         id: null,
+        orgId: this.queryParams.orgId,
         drillType: null,
         drillProjects: null,
         defaultCause: null,
       };
       this.resetForm("form");
     },
+    getDefaultKey(key) {
+      this.queryParams.orgId = key;
+      this.getList();
+    },
+    //单选框状态改变
+    checkChange(state) {
+      this.queryParams.checkSub = state;
+      this.handleQuery();
+    },
+
+    // 节点单击事件
+    clickTreeNode(data) {
+      this.queryParams.orgId = data.id;
+      this.handleQuery();
+    },
+    initKnowledgeList() {
+      queryKnowledgeList().then(response => {
+        this.knowledgeList = response;
+      })
+    },
     /** 搜索按钮操作 */
     handleQuery() {
       this.queryParams.pageNum = 1;

+ 19 - 27
src/views/core/drill/task/dialog.perform.vue

@@ -25,44 +25,42 @@
             </el-col>
             <el-col :span="12">
               <el-form-item prop="content" label="演练地点">
-                <el-input v-model="formData.content" placeholder="请输入演练地点" :length="2000"/>
+                <el-input v-model="formData.drillSite" placeholder="请输入演练地点" :length="2000"/>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item prop="type" label="演练项目">
-                <el-select v-model="formData.type" clearable placeholder="请选择演练项目">
-                  <el-option
-                    v-for="item in this.drillTypeOptions"
-                    :key="item.id"
-                    :label="item.name"
-                    :value="item.id">
+              <el-form-item label="演练类型" prop="type">
+                <el-select v-model="formData.type" placeholder="请选择演练类型">
+                  <el-option v-for="dict in dict.type.core_drill_type" :key="dict.value" :label="dict.label"
+                             :value="parseInt(dict.value)">
+
                   </el-option>
                 </el-select>
               </el-form-item>
             </el-col>
 
             <el-col :span="24">
-              <el-form-item prop="content" label="预设案由">
-                <k-textarea v-model="formData.content" placeholder="请输入预设案由" :length="2000"/>
+              <el-form-item prop="presetCase" label="预设案由">
+                <k-textarea v-model="formData.presetCase" placeholder="请输入预设案由" :length="2000"/>
               </el-form-item>
             </el-col>
 
             <el-col :span="24">
-              <el-form-item v-if="formData.id" prop="note" label="演练情况">
-                <k-textarea v-model="formData.note" placeholder="请输入演练情况" :length="1000"/>
+              <el-form-item v-if="formData.id" prop="drillSituation" label="演练情况">
+                <k-textarea v-model="formData.drillSituation" placeholder="请输入演练情况" :length="1000"/>
               </el-form-item>
             </el-col>
 
             <el-col :span="12">
               <el-form-item v-if="formData.id" label="参与人员">
-                <k-select :multiple="true" v-model="formData.absenceList" url="/user/find/all"
+                <k-select :multiple="true" v-model="formData.taskUserList" url="/user/find/all"
                           :params="{ orgId: formData.orgId }" placeholder="请选择缺席人员"
                           @select="absenceUserSelectChanged"></k-select>
               </el-form-item>
             </el-col>
             <el-col :span="12">
               <el-form-item v-if="formData.id" label="缺席人员">
-                <k-select :multiple="true" v-model="formData.absentList" url="/user/find/all"
+                <k-select :multiple="true" v-model="formData.taskUserList" url="/user/find/all"
                           :params="{ orgId: formData.orgId }" @select="absentUserSelectChanged"
                           placeholder="请选择缺席人员">
                 </k-select>
@@ -71,7 +69,6 @@
             <el-col :span="24">
               <el-form-item prop="imageList" label="上传图片">
                 <imgUpload type="more" :value="formData.imageList" @input="imageListChanged"></imgUpload>
-                <!-- <k-multi-upload v-model="formData.imageList" limit="4" byModule moduleName="edu-training" /> -->
               </el-form-item>
             </el-col>
 
@@ -107,10 +104,11 @@ export default {
       isShow: false,
       formData: this.reset(),
       formDataRules: {
-        type: [{required: true, message: "请选择类型"}],
-        content: [{required: true, message: "请输入内容"}],
-        drillTime: [{required: true, message: "请输入培训时间"}],
-        note: [{required: true, message: "请输入总结"}],
+        drillTime: [{required: true, message: "请选择演练时间"}],
+        drillSite: [{required: true, message: "请输入演练地点"}],
+        type: [{required: true, message: "请选择演练类型"}],
+        presetCase: [{required: true, message: "请输入预设案由"}],
+        drillSituation: [{required: true, message: "请输入预设案由"}],
       },
       startDatepickerOptions: {
         disabledDate(time) {
@@ -123,7 +121,7 @@ export default {
       drillTypeOptions: [],
     };
   },
-  dicts: ['edu_type', 'edu_task_status'],
+  dicts: ['core_drill_type', 'edu_task_status'],
   props: {},
   watch: {},
   computed: {
@@ -147,7 +145,6 @@ export default {
       };
     },
     async refresh(id, other) {
-      this.initDrillTypeOptions();
       if (!id) {
         this.reset(other);
         return;
@@ -312,14 +309,9 @@ export default {
         console.log("trainingEndDateTime", this.formData.trainingEndDateTime)
       }
     },
-    initDrillTypeOptions() {
-      initList().then(response => {
-        this.drillTypeOptions = response.data;
-      })
-    }
   },
   mounted() {
-    this.initDrillTypeOptions()
+
   },
 };
 </script>

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

@@ -408,7 +408,6 @@ export default {
     },
     checkCanDel(row) {
       //计划创建机构为当前机构且不是顶级机构创建的计划才显示“删除”按钮
-      console.log(row,"row");
       return row.belongOrgId == this.$store.getters.orgId && row.createByTopOrg == 1 && row.issue == 0 || row.done !=1
     },
     //省联社下发的计划不显示“删除”按钮

+ 0 - 1
src/views/core/materials/index.vue

@@ -317,7 +317,6 @@ export default {
     checkCanEditOpen(row) {
       return row.createId == this.$store.getters.userId;
     },
-
     // 节点单击事件
     clickTreeNode(data) {
       this.queryParams.orgId = data.id;

+ 23 - 7
src/views/core/task/index.vue

@@ -3,7 +3,7 @@
     <el-row :gutter="20">
       <!--机构数据-->
       <el-col :span="4" :xs="24">
-        <org-tree v-model="queryParams.orgId" @defaultKey="getDefaultKey" @checkChange="checkChange"
+        <org-tree v-model="queryParams.orgId" @defaultKey="getDefaultKey" @defaultOrg="getDefaultOrg" @checkChange="checkChange"
                     @click="clickTreeNode"></org-tree>
       </el-col>
       <el-col :span="20" :xs="24">
@@ -64,7 +64,7 @@
 
     <el-row :gutter="10" class="mb8">
 
-<!--      <el-col :span="1.5">
+     <el-col :span="1.5">
         <el-button
           type="primary"
           plain
@@ -73,7 +73,7 @@
           @click="handleExport"
           v-hasPermi="['core:task:export']"
         >导出</el-button>
-      </el-col>-->
+      </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
@@ -89,7 +89,7 @@
         <template slot-scope="scope">
           <dict-tag :options="dict.type.sys_access_cycle" :value="scope.row.cycle" />
         </template>
-      </el-table-column>>
+      </el-table-column>
       <el-table-column label="开始时间" align="center" prop="planStartTime" width="180">
 <!--        <template slot-scope="scope">
           <span>{{ parseTime(scope.row.planStartTime, '{y}-{m}-{d}') }}</span>
@@ -148,10 +148,11 @@
 </template>
 
 <script>
-import { listTask, getTask, delTask, addTask, updateTask,roleList } from "@/api/core/task";
+import { listTask, getTask, delTask, addTask, updateTask,roleList,exportExcel } from "@/api/core/task";
 import OrgTree from "@/components/orgTree";
 import DialogInfo from "./dialog.info";
 import {listPlanRole} from "@/api/core/edu/plan";
+import {formatTime} from "@/utils/ruoyi";
 export default {
   components: {OrgTree,DialogInfo},
   name: "Task",
@@ -192,6 +193,7 @@ export default {
       rules: {
       },
       roleList: [],
+      orgName:'',
     };
   },
   created() {
@@ -208,6 +210,19 @@ export default {
         this.loading = false;
       });
     },
+/*    handleExport() {
+      console.log(this,'this')
+      this.$http()
+        .post('/core/task/export',this.queryParams)
+
+     /!* exportExcel(this.queryParams).then(res => {
+        let file = new File([res],res.getHeader())
+        console.log(res,'res111')
+      });*!/
+    },*/
+    getDefaultOrg(org){
+      this.orgName = org.name;
+    },
     initRoleList() {
       roleList({}).then(response => {
         this.roleList = response.data;
@@ -224,6 +239,7 @@ export default {
     // 节点单击事件
     clickTreeNode(data) {
       this.queryParams.orgId = data.id;
+      this.orgName = data.name;
       this.handleQuery();
     },
     /** 下穿状态改变*/
@@ -297,10 +313,10 @@ export default {
     },
 
     /** 导出按钮操作 */
-    handleExport() {
+   handleExport() {
       this.download('core/retrievalTask/export', {
         ...this.queryParams
-      }, `task_${new Date().getTime()}.xlsx`)
+      }, `${this.orgName+'-监控调阅任务记录-'+this.formatTime(new Date(),'YYYYMMhh')}.xlsx`)
     }
   }
 };

+ 39 - 45
src/views/system/device/index.vue

@@ -63,8 +63,6 @@
         <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">
@@ -78,11 +76,10 @@
             </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 label="有效期至" align="center" prop="checkTime" width="160">
           </el-table-column>
-          <el-table-column label="保修期限" align="center" prop="maintenanceTerm" />
+          <!--    <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)"
@@ -105,39 +102,40 @@
 
 
     <!-- 添加或修改【请填写功能名称】对话框 -->
-    <DialogCom :title="title" :visible.sync="open"  width="800px" append-to-body>
+    <el-dialog :title="title" :visible="open" width="800px" append-to-body @close="cancel">
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
         <el-row>
           <el-col :span="10">
-            <el-form-item label="设备名称" prop="deviceName">
-              <el-input v-model="form.deviceName" placeholder="请输入" />
-            </el-form-item>
-          </el-col>
-          <el-col :span="10">
             <el-form-item label="所属机构" prop="orgId">
               <tree-select v-model="form.orgId" :options="deptOptions" :show-count="true" :normalizer="tenantIdnormalizer"
-                :props="{ checkStrictly: true, label: 'name' }" placeholder="请选择归属机构" @select="changeSelect">
+                placeholder="请选择归属机构" @select="changeSelect">
               </tree-select>
             </el-form-item>
           </el-col>
-        </el-row>
-        <el-row>
+
           <el-col :span="10">
             <el-form-item label="资产类别" prop="assetType">
-              <el-select style="width: 100%;" v-model="form.assetType" placeholder="请选择">
+              <el-select style="width: 100%;" v-model="form.assetType" placeholder="请选择" @change="changeSelectDevice">
                 <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-col>
+        </el-row>
+        <el-row>
+
           <el-col :span="10">
             <el-form-item label="设备分类" prop="deviceType">
-              <el-select style="width: 100%;" v-model="form.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 v-model="form.deviceType" placeholder="请选择">
+                <el-option v-for="item in devices" :key="item.id" :label="item.dictLabel" :value="item.id"></el-option>
               </el-select>
             </el-form-item>
           </el-col>
+          <el-col :span="10">
+            <el-form-item label="设备名称" prop="deviceName">
+              <el-input v-model="form.deviceName" placeholder="请输入" />
+            </el-form-item>
+          </el-col>
         </el-row>
 
         <el-row>
@@ -166,30 +164,21 @@
           </el-col>
 
           <el-col :span="10">
-            <el-form-item style="width: 517px;" label="验收日期" prop="checkTime">
+            <el-form-item style="width: 517px;" v-if="form.assetType == 0" label="有效期至" prop="checkTime">
               <el-date-picker clearable v-model="form.checkTime" type="date" value-format="yyyy-MM-dd HH:mm:ss"
                 placeholder="请选择时间">
               </el-date-picker>
             </el-form-item>
           </el-col>
-
         </el-row>
         <el-row>
-
-          <el-col :span="10">
-            <el-form-item label="保修期限" prop="maintenanceTerm">
-              <el-input v-model="form.maintenanceTerm" placeholder="请输入" maxlength="11" />
-            </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>
-    </DialogCom>
+    </el-dialog>
 
   </div>
 </template>
@@ -199,7 +188,7 @@ import tableList from '@/mixins/tableList'
 import treeselect from '@riophae/vue-treeselect'
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 import { deptTreeSelect } from "@/api/system/public";
-
+import { getDeviceType } from "@/api/system/dict/data";
 import { listDevice, getDevice, delDevice, addDevice, updateDevice, getHostByOrgId } from "@/api/system/device";
 export default {
   /** 引入基础minxins*/
@@ -234,7 +223,9 @@ export default {
           { required: true, message: '请选择设备分类', trigger: 'blur' },
 
         ],
-
+        checkTime: [
+          { required: true, message: '请选择有效期', trigger: 'blur' },
+        ]
 
 
       },
@@ -254,6 +245,7 @@ export default {
       total: 0,
       // 【请填写功能名称】表格数据
       deviceList: [],
+      devices: null,
       //主机集合
       hostList: [],
       deviceType: 0,
@@ -293,11 +285,12 @@ export default {
 
       //修改新增中的机构树
       deptOptions: [],
+      selectOrgId: null,
     };
   },
   created() {
     this.getDeptTree();
-    this.getList();
+    //this.getList();
   },
   watch: {
     // 根据名称筛选部门树
@@ -305,8 +298,9 @@ export default {
       this.$refs.tree.filter(val);
     }
   },
+
   methods: {
-   
+
     /** 下穿状态改变*/
     changeCheckBox() {
       this.getList();
@@ -319,16 +313,7 @@ export default {
     },
     /** 查询机构树数据 */
 
-    /** 查询部门下拉树结构 */
-    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();
-      });
-    },
+
     /** treeSelect组件自定义数据*/
     tenantIdnormalizer(node, instanceId) {
       if (node.children && !node.children.length) {
@@ -343,6 +328,7 @@ export default {
     // 节点单击事件
     handleNodeClick(data) {
       this.queryParams.orgId = data.id;
+      this.selectOrgId = data.id;
       this.handleQuery();
     },
     changeSelect(val) {
@@ -359,8 +345,10 @@ export default {
         this.deviceList = response.rows;
         this.total = response.total;
         this.loading = false;
+        console.log(this.form, '66666')
       });
     },
+
     /** 查询部门下拉树结构 */
     getDeptTree() {
       deptTreeSelect().then(response => {
@@ -368,6 +356,8 @@ export default {
         console.log(this.deptOptions, ' this.deptOptions')
         this.defaultKeys.push(response.data[0].id);
         this.queryParams.orgId = response.data[0].id;
+        this.selectOrgId = response.data[0].id;
+        console.log(this.form, '5555555')
         this.handleQuery();
       });
     },
@@ -427,10 +417,14 @@ export default {
     },
     /** 新增按钮操作 */
     handleAdd() {
-
-      this.reset();
       this.open = true;
       this.title = "新增";
+      this.form.orgId = this.selectOrgId;
+    },
+    changeSelectDevice(val) {
+      getDeviceType(val).then(response => {
+        this.devices = response.data;
+      })
     },
     /** 修改按钮操作 */
     handleUpdate(row) {

+ 13 - 3
src/views/system/user/index.vue

@@ -341,8 +341,18 @@ export default {
           { required: true, message: "用户角色不能为空", trigger: "blur" }
         ],
         password: [
-          { required: true, message: "用户密码不能为空", trigger: "blur" },
-          { min: 5, max: 20, message: '用户密码长度必须介于 5 和 20 之间', trigger: 'blur' }
+          { required: true, message: '密码不能为空', trigger: 'blur' },
+          { min: 8, message: '密码至少为8位', trigger: 'blur' },
+          {
+            validator: (rule, value, callback) => {
+              if (!/[a-z]/.test(value) || !/[A-Z]/.test(value) || !/\d/.test(value)) {
+                callback(new Error('密码必须包含大小写字母和数字'));
+              } else {
+                callback();
+              }
+            },
+            trigger: 'blur',
+          },
         ],
         orgId: [
           { required: true, message: "所属机构不能为空", trigger: "blur" }
@@ -578,7 +588,7 @@ export default {
     handleDelete(row) {
       console.log(row);
       const userIds = row.id || this.ids;
-      this.$modal.confirm('是否确认删除用户编号为"' + userIds + '"的数据项?').then(function () {
+      this.$modal.confirm('是否确认删除用户昵称为"' + row.name + '"的数据项?').then(function () {
         return delUser(userIds);
       }).then(() => {
         this.getList();