Parcourir la source

Merge remote-tracking branch 'origin/V0.0.3' into V0.0.3

jingyuanchao il y a 1 an
Parent
commit
f0077d0593

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

@@ -499,7 +499,7 @@ export default {
           //机构类型
           this.formData.execOrgType = null;
           //角色
-          this.formData.roleList = [];
+          this.formData.roleIds = [];
           //检查次数
           this.formData.count = 1;
           //检查内容
@@ -512,9 +512,10 @@ export default {
           //机构类型
           this.formData.execOrgType = null;
           //角色
-          this.formData.roleList = [];
+          this.formData.roleIds = [];
           //检查次数
           this.formData.count = 1;
+          this.formData.checkOrgTypes=[];
           //检查内容
           this.tableData = null;
           break;

+ 5 - 0
src/views/check/index.vue

@@ -329,6 +329,7 @@
               <template slot-scope="r">
                 <el-button
                   type="text"
+                  size="mini"
                   icon="el-icon-arrow-down"
                   v-if="checkCanPublish(r.row)"
                   @click="showDialogDistribute(r.row)"
@@ -337,6 +338,7 @@
                 >
                 <el-button
                   type="text"
+                  size="mini"
                   icon="el-icon-arrow-down"
                   v-if="newcheckCanPublish(r.row)"
                   @click="newshowDialogDistribute(r.row)"
@@ -346,6 +348,7 @@
                 <el-button
                   type="text"
                   icon="el-icon-top-left"
+                  size="mini"
                   v-if="chehui(r.row)"
                   @click="chhuile(r.row)"
                   v-hasPermi="['core:checkplan:distribute']"
@@ -353,6 +356,7 @@
                 >
                 <el-button
                   v-if="eqOrg(r.row)"
+                  size="mini"
                   type="text"
                   icon="el-icon-edit-outline"
                   @click="onEdit(r.row.id)"
@@ -361,6 +365,7 @@
                 >
                 <el-button
                   v-if="eqOrg2(r.row)"
+                  size="mini"
                   type="text"
                   icon="el-icon-delete"
                   @click="onDel(r.row.id, r.row.planName)"

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

@@ -4,7 +4,7 @@
       <!--机构数据-->
       <el-col :span="4" :xs="24">
                   <org-tree v-model="queryParams.orgId" @defaultKey="getDefaultKey" @defaultOrg="getDefaultOrg" @checkChange="checkChange"
-                    @click="clickTreeNode" :defaultCheckSub="false"></org-tree>
+                    @click="clickTreeNode" :defaultCheckSub="false" hangsheTree></org-tree>
       </el-col>
       <!--搜索栏-->
       <el-col :span="20" :xs="24">
@@ -315,10 +315,10 @@
           orgId: null,
           orgPath: null,
           orgName: null,
-          orgType: null,
-          roleId: null,
-          planCycle: null,
-          planFrequency: null,
+          orgType: "4",
+          roleId: "121",
+          planCycle: "2",
+          planFrequency: 1,
           planStatus: "0",
           immediately:false,
           createTime: null,

+ 2 - 1
src/views/core/message/index.vue

@@ -223,7 +223,8 @@
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" v-if="isSubmit" @click="submitForm">确 定</el-button>
-        <el-button @click="cancel">取 消</el-button>
+        <el-button @click="cancel" v-if="isSubmit">取 消</el-button>
+        <el-button @click="cancel" v-else>关 闭</el-button>
       </div>
    </DialogCom>
 

+ 4 - 4
src/views/core/outIn/approve/index.vue

@@ -97,7 +97,7 @@
             type="text"
             icon="el-icon-view"
             @click="handleDetailInfo(scope.row)"
-            v-hasPermi="['core:letter:edit']"
+            v-hasPermi="['core:letter:query']"
           >详情</el-button>
           <el-button
             size="mini"
@@ -105,7 +105,7 @@
             icon="el-icon-check"
             v-if="canApprove(scope.row)"
             @click="handleApproveLetter(scope.row)"
-            v-hasPermi="['core:letter:edit']"
+            v-hasPermi="['core:letter:approve']"
           >审批</el-button>
         </template>
       </el-table-column>
@@ -206,8 +206,8 @@ export default {
     },
     canApprove(row)
     {
-      // console.log("canApprove",row.status ==1,row.approveStatus ==0,dayjs(dayjs(row.endTime).add(1, 'day')).isAfter(dayjs(new Date())))
-      return row.status ==1 && row.approveStatus ==0 && dayjs(dayjs(row.endTime).add(1, 'day')).isAfter(dayjs(new Date()))
+      //  console.log("canApprove",row.status ==1,row.approveStatus ==0,dayjs(dayjs(row.endTime).add(1, 'day')).isAfter(dayjs(new Date())))
+      return row.status ==1 && row.approveStatus ==0 
     },
     handleDetailInfo(row)
     {

+ 15 - 9
src/views/core/outIn/letter/dialog.addletter.vue

@@ -90,19 +90,19 @@
             </el-col>
           </el-row>
 
-          <el-table :data="formData.userInfos" style="margin-bottom: 10px;">
-            <el-table-column label="人员姓名" align="center" prop="userName" />
-            <el-table-column label="单位" align="center" prop="companyName" />
-            <el-table-column label="证件号码" align="center" prop="idCard">
+          <el-table :data="formData.userInfos" max-height="500" style="margin-bottom: 10px;">
+            <el-table-column label="人员姓名" width="100" align="center" prop="userName" />
+            <el-table-column label="单位" width="100" align="center" prop="companyName" />
+            <el-table-column label="证件号码" width="200" align="center" prop="idCard">
             </el-table-column>
             <el-table-column label="证件照" align="center" prop="imgFile">
-              <template slot-scope="scope">
-                <img width="50" height="50" :src="scope.row.imgFile" />
-              </template> </el-table-column
-            >
+              <template slot-scope="scope">                      
+                      <ImageListPreview v-model="scope.row.imgFile"></ImageListPreview>                  
+                    </template> 
+               </el-table-column>
             <el-table-column
               label="操作"
-              align="center"
+              align="center" width="150"
               class-name="small-padding fixed-width"
             >
               <template slot-scope="scope">
@@ -295,6 +295,7 @@ export default {
     onHide() {
       this.isShow = false;
       this.formData = this.reset();
+      this.$refs["upload"].clearFiles();
     },
     onHideUser() {
       this.open = false;
@@ -306,6 +307,11 @@ export default {
         if (valid) {
           this.open = false;
           console.log("================", this.userInfo);
+          let userIndex = this.formData.userInfos.findIndex(x=>x.idCard==this.userInfo.idCard);
+          if(userIndex>-1)
+          {
+            this.formData.userInfos.splice(userIndex, 1);
+          }
           this.formData.userInfos.push(this.userInfo);
           this.userInfo = this.resetUserInfo();
           this.imageList = [];

+ 36 - 11
src/views/core/outIn/letter/dialog.letter.detail.vue

@@ -62,16 +62,41 @@
               </el-form-item>
             </el-col>
           </el-row>
-          <el-table :data="formData.userInfos" style="margin-bottom: 10px;">
-            <el-table-column label="人员姓名" align="center" prop="userName" />
-            <el-table-column label="单位" align="center" prop="companyName" />
-            <el-table-column label="证件号码" align="center" prop="idCard">
-            </el-table-column>
-            <el-table-column label="证件照" align="center" prop="imgFile">
-              <template slot-scope="scope">
-                <img width="50" height="50" :src="scope.row.imgFile" />
-              </template> </el-table-column>
-          </el-table>
+          <el-row>
+            <el-col :span="24">
+              <el-form-item label="出入人员">
+                <el-table border :data="formData.userInfos" style="margin-bottom: 10px;">
+                  <el-table-column label="人员姓名" width="150" header-align="center" align="center" prop="userName" />
+                  <el-table-column label="单位" width="150" header-align="center" align="center" prop="companyName" />
+                  <el-table-column label="证件号码" width="200" header-align="center" align="center" prop="idCard">
+                  </el-table-column>
+                  <el-table-column label="证件照" header-align="center" align="center" prop="imgFile">
+                    <template slot-scope="scope">                      
+                      <ImageListPreview v-model="scope.row.imgFile"></ImageListPreview>                  
+                    </template> 
+                  </el-table-column>
+                </el-table>
+              </el-form-item>
+            </el-col>
+          </el-row>
+         
+          <el-row>
+            <el-col :span="24">
+              <el-form-item label="接待机构">
+                <el-table border :data="formData.approveInfos" style="margin-bottom: 10px;">
+                  <el-table-column label="机构名称" header-align="center" align="left" prop="orgName" />
+                  <el-table-column label="审批状态" align="center" prop="approveStatus" >
+                    <template slot-scope="scope">
+                      <dict-tag :options="dict.type.out_in_approve_status" :value="scope.row.approveStatus"/>
+                    </template>                    
+                  </el-table-column>
+                  <el-table-column label="审批说明" header-align="center" align="center" prop="approveRemark">
+                  </el-table-column>
+                </el-table>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          
         </el-form>
       </div>
       <div slot="footer" class="dialog-footer">
@@ -108,7 +133,7 @@ export default {
       imageList: [],
     };
   },
-  dicts: ["letter_status"],
+  dicts: ["letter_status","out_in_approve_status"],
   props: {},
   watch: {},
   created() {},

+ 2 - 0
src/views/core/outIn/letter/index.vue

@@ -90,6 +90,7 @@
             size="mini"
             type="text"
             icon="el-icon-edit-outline"
+            v-if="!scope.row.haveOutInRecord"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['core:letter:edit']"
           >修改</el-button>
@@ -196,6 +197,7 @@ export default {
     handleAdd() {
       this.$refs["dialogAddLetter"].show(null,{});
     },
+    
     /** 修改按钮操作 */
     handleUpdate(row) {
       // this.reset();

+ 30 - 16
src/views/core/reportForms/resumptionReport.vue

@@ -19,12 +19,28 @@
               noResultsText="没有搜索结果"
             />
           </el-form-item>
-              <el-form-item label="时间" prop="searchTime">
+          <el-form-item label="统计周期" prop="cycle">
+            <el-select v-model="queryParams.cycle" placeholder="请选择统计周期"  @change="clean">
+    <el-option
+      v-for="item in options"
+      :key="item.value"
+      :label="item.label"
+      :value="item.value">
+    </el-option>
+  </el-select>
+          </el-form-item>
+              <el-form-item label="时间" prop="searchTime" v-if="queryParams.cycle==1 || queryParams.cycle==null">
                 <el-date-picker   value-format='yyyy-MM-dd' v-model="queryParams.searchTime"
-                                align="right" type="date" placeholder="请选择查询时间">
+                                align="right" type="date" placeholder="请选择查询时间" >
                 </el-date-picker>
               </el-form-item>
 
+              <el-form-item label="时间" prop="searchTime" v-if="queryParams.cycle==2">
+              <el-date-picker   value-format='yyyy-MM' v-model="queryParams.searchTime"
+                                align="right" type="month" placeholder="请选择查询时间">
+                </el-date-picker>  
+              </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>
@@ -82,13 +98,13 @@
       dicts: ['sys_normal_disable','sys_org_type','repot_cycle'],
       data() {
         return {
-            startDatepickerOptions: {
-        disabledDate(time) {
-          const date = new Date();
-          date.setTime(date.getTime());
-          return time.getTime() < date;
-        },
-      },
+          options: [{
+          value: 1,
+          label: '日'
+        }, {
+          value: 2,
+          label: '月'
+        }],
           // 遮罩层
           loading: true,
           // 选中数组
@@ -127,7 +143,8 @@
             checkName: null,
             areaId: null,
             orgId: null,
-            searchTime:null
+            searchTime:null,
+            cycle:null
           },
           // 表单参数
           form: {},
@@ -200,7 +217,6 @@
 
         getList() {
           this.loading = true;
-          console.log(this.queryParams.day+"122344")
           listReport(this.queryParams).then(response => {
             this.checkList = response.data;
             this.title=response.title;
@@ -208,13 +224,11 @@
             this.loading = false;
           });
         },
-        getAllOrg() {
-          selectAllOrg().then(response => {
-        this.orgOptions = response.data;
-      })
-    },
 
 
+    clean() {
+     this.queryParams.searchTime=null;
+    },
         // 取消按钮
         cancel() {
           this.open = false;

+ 7 - 4
src/views/core/weather/index.vue

@@ -3,7 +3,7 @@
     <el-row :gutter="20">
       <!--机构数据-->
       <el-col :span="24" :xs="24">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="80px">
 
 
       <el-form-item label="预警标题" prop="taskName">
@@ -16,7 +16,7 @@
       </el-form-item>
 
       <el-form-item label="预警时间" prop="planStartTime">
-        <el-date-picker
+        <el-date-picker clearable
           v-model="queryParams.alarmDates"
           style="width: 240px"
           value-format="yyyy-MM-dd HH:mm:ss"
@@ -32,9 +32,10 @@
 <!--        <el-select v-model="queryParams.code" placeholder="请选择"   clearable>
           <el-option v-for="item in areaList" :key="item.key" :label="item.value" :value="item.key"></el-option>
         </el-select>-->
-        <el-cascader
+        <el-cascader   placeholder="请选择预警区域" clearable
           :options="areaList"
           @change="handleChange"
+          v-model="queryParams.code"
         ></el-cascader>
       </el-form-item>
 
@@ -137,6 +138,7 @@ export default {
       });
     },
     handleChange(value){
+      console.log(value,'value')
           this.queryParams.code=value[1];
     },
 
@@ -147,7 +149,8 @@ export default {
     },
     /** 重置按钮操作 */
     resetQuery() {
-      this.resetForm("queryForm");
+      //this.resetForm("queryForm");
+      this.queryParams.alarmTitle=null;
       this.queryParams.alarmDates = [];
       this.queryParams.code = null;
       this.handleQuery();

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

@@ -579,7 +579,7 @@ export default {
         //如果是  备用电源维护
         case "5":
           //周期
-          this.formData.planCycle = "4";
+          this.formData.planCycle = "5";
           //机构类型
           this.formData.execOrgType = "4";
           this.getRolesByOrg();
@@ -595,7 +595,7 @@ export default {
         //如果是  离行式自助银行巡检
         case "6":
           //周期
-          this.formData.planCycle = "2";
+          this.formData.planCycle = "4";
           //机构类型
           this.formData.execOrgType = "5";
           this.getRolesByOrg();
@@ -604,7 +604,7 @@ export default {
           //履职时间
           this.formData.planExec = "1";
           //履职次数
-          this.formData.count = 1;
+          this.formData.count = 2;
           //履职内容
           this.tableData = null;
           break;

+ 1 - 1
src/views/system/bind/index.vue

@@ -15,7 +15,7 @@
           <div class="main-search-box">
             <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
           <el-form-item label="区域名称" prop="areaName">
-            <el-input v-model="queryParams.areaName" placeholder="请输入区域名称" clearable @keyup.enter.native="handleQuery" />
+            <el-input v-model="queryParams.areaName" placeholder="请输入区域名称" :maxlength="50" clearable @keyup.enter.native="handleQuery" />
           </el-form-item>
 
           <el-form-item label="标签编号" prop="code">

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

@@ -6,7 +6,7 @@
 
             <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
           <el-form-item label="NFC点位" prop="checkName">
-            <el-input v-model="queryParams.checkName" placeholder="请输入NFC点位名称" clearable
+            <el-input v-model="queryParams.checkName" placeholder="请输入NFC点位名称" maxlength="50" clearable
                       @keyup.enter.native="handleQuery"/>
           </el-form-item>
 
@@ -111,7 +111,7 @@
         </el-row>
 
         <el-form-item label="NFC点位" prop="checkName">
-          <el-input v-model="form.checkName" placeholder="请输入NFC点位名称"/>
+          <el-input v-model="form.checkName" placeholder="请输入NFC点位名称" maxlength="50"/>
         </el-form-item>
         <el-row>
 

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

@@ -5,7 +5,7 @@
            <div class="main-search-box">
             <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
       <el-form-item label="角色名称" prop="roleName">
-        <el-input v-model="queryParams.roleName" placeholder="请输入角色名称" clearable style="width: 240px"
+        <el-input v-model="queryParams.roleName" placeholder="请输入角色名称" clearable style="width: 240px" :maxlength="50"
           @keyup.enter.native="handleQuery" />
       </el-form-item>
 
@@ -86,7 +86,7 @@
         <el-row>
           <el-col :span="12">
             <el-form-item label="角色名称" prop="roleName">
-              <el-input v-model="form.roleName" placeholder="请输入角色名称" />
+              <el-input v-model="form.roleName" placeholder="请输入角色名称" :maxlength="50"/>
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -110,7 +110,7 @@
            <el-form-item label="角色顺序" prop="roleSort">
             <el-input-number v-model="form.roleSort"
             style="width: 100%"
-             controls-position="right" :min="0" />
+             controls-position="right" :min="0" :max="1000"/>
           </el-form-item>
           </el-col>
           <el-col :span="12">

+ 179 - 24
src/views/system/user/extend.vue

@@ -34,7 +34,7 @@
                     v-for="dict in dict.type.sys_yes_no"
                     :key="`${dict.value}`"
                     :label="dict.value"
-
+                  
                   >{{ dict.label }}</el-radio
                   >
                 </el-radio-group>
@@ -88,7 +88,7 @@
             </el-col>
 
             <el-col :xs="24" :sm="12" :md="8" :lg="6">
-              <el-form-item prop="entryTime" label="现任职日期">
+              <el-form-item prop="entryTime" label="现任职日期" label-width="240">
                 <el-date-picker style="width: 270px;" v-model="formData.entryTime"  align="right"
                                 type="date" placeholder="选择现任职日期">
                 </el-date-picker>
@@ -117,7 +117,7 @@
             </el-col>
 
             <el-col :xs="24" :sm="12" :md="8" :lg="6">
-              <el-form-item label="最高学历" prop="highestEducation">
+              <el-form-item label="最高学历" prop="highestEducation" label-width="240">
                 <el-select style="width: 270px;" v-model="formData.highestEducation" placeholder="请选择最高学历">
                   <el-option v-for="dict in dict.type.sys_highest_education" :key="dict.value" :label="dict.label"
                              :value="dict.value" />
@@ -143,7 +143,7 @@
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :md="8" :lg="6">
-              <el-form-item label="身份证号码" prop="idCard">
+              <el-form-item label="身份证号码" prop="idCard" label-width="240">
                 <el-input maxlength="18" style="width: 270px;" v-model="formData.idCard"
                           placeholder="请输入身份证号码">
                 </el-input>
@@ -168,14 +168,7 @@
                 </el-select>
               </el-form-item>
             </el-col>
-            <!-- <el-col :xs="24" :sm="12" :md="8" :lg="8">
-              <el-form-item label="专业技术职业资格" v-if="formData.certificateWork != 0" label-width="240"
-                            prop="professionalQualifications">
-                <el-input style="width: 280px;" maxlength="50" v-model="formData.professionalQualifications"
-                          placeholder="请输入初级以上证书名称">
-                </el-input>
-              </el-form-item>
-            </el-col> -->
+ 
 
             <el-col :xs="24" :sm="12" :md="8" :lg="8">
               <el-form-item label="金融安全防范工程专家" prop="financialExperts" label-width="240">
@@ -246,7 +239,7 @@ export default {
         deptId: null,
         duties: null,
         workType: null,
-        isFullTime: "1",
+        isFullTime:"Y",
         highestEducation: null,
         educationType: null,
         certificateWork: "1",
@@ -259,31 +252,42 @@ export default {
         responsibilitiesLeaderDuties: null,
         qualificationCertificateUrl: null,
         userId: null,
+        financialExperts:null,
       },
       rules: {
-        financialExperts:[
-          { required: true, message: '请选择金融安全防范工程专家级别', trigger: 'blur'}
-        ],
         idCard:[
-          { required: true, message: '请输入身份证号码', trigger: 'change'}
+          { required: true, message: '请输入身份证号码', trigger: 'change'},
+          { min: 18, message: "请输入18位身份证号码", trigger: "blur" },   
+          {
+            validator: (rule, value, callback) => {
+              if (
+             this. checkIdCard(value)==false
+              ) {
+                callback(new Error("身份证号码格式不正确"));
+              } else {
+                callback();
+              }
+            },
+            trigger: "blur",
+          },
         ],
         deptId: [
-          { required: true, message: '请选择所属部门', trigger: 'blur' },
+          { required: true, message: '请选择所属部门', trigger: 'change' },
         ],
         duties: [
-          { required: true, message: '请选择职务', trigger: 'blur' },
+          { required: true, message: '请选择职务', trigger: 'change' },
         ],
         workType: [
-          { required: true, message: '请选择用工形式', trigger: 'blur' },
+          { required: true, message: '请选择用工形式', trigger: 'change' },
         ],
         isFullTime: [
           { required: true, message: '请选择是否专职', trigger: 'blur' },
         ],
         highestEducation: [
-          { required: true, message: '请选择最高学历', trigger: 'blur' },
+          { required: true, message: '请选择最高学历', trigger: 'change' },
         ],
         educationType: [
-          { required: true, message: '请选择学历取得形式', trigger: 'blur' },
+          { required: true, message: '请选择学历取得形式', trigger: 'change' },
         ],
         certificateWork: [
           { required: true, message: '请选择是否持证上岗', trigger: 'blur' },
@@ -312,8 +316,8 @@ export default {
         certificateFailReason: [
           { required: true, message: '请输入持证上岗未通过原因', trigger: 'change' }
         ],
-        date2: [
-          { type: 'date', required: true, message: '请选择时间', trigger: 'change' }
+        financialExperts: [
+          { required: true, message: '请选择金融安全防范工程专家级别', trigger: 'change' }
         ],
         type: [
           { type: 'array', required: true, message: '请至少选择一个活动性质', trigger: 'change' }
@@ -407,6 +411,157 @@ export default {
   mounted() {
   },
   methods: {
+//身份证
+checkIdCard(val){
+  
+   //是否为空
+   if (val === '') {
+      // Toast('请输入18位身份证号');
+       return false;
+   }
+   if (val.length != 18) {
+     //  Toast('请输入18位身份证号');
+       return false;
+   }
+
+   //检查号码是否符合规范,包括长度,类型
+   if(this.isCardNo(val) === false){  
+    //  Toast("证件号码不符合规范");
+      return false;
+   }
+
+   //检查省份
+   if(this.checkProvince(val) === false){  
+   //   Toast("证件号码不对校验省份错误");
+      return false;
+   }
+
+   //校验生日
+   if(this.checkBirthday(val) === false){   
+    //   Toast("证件号码校验生日错误");
+       return false;
+   }
+
+   //检验位的检测
+   if (this.checkParity(val) === false) {
+   //  Toast('您的身份证校验位不正确,请重新输入');
+     return false;
+   }
+
+},
+
+
+//检查号码是否符合规范,包括长度,类型
+isCardNo(data){
+    //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X
+    var reg = /(^\d{15}$)|(^\d{17}(\d|X)$)/;
+    if (reg.test(data) === false) {
+         return false;
+    }
+    return true;
+ },
+
+//取身份证前两位,校验省份
+checkProvince(data) {
+    var city={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江 ",
+              31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",
+              43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏 ",
+              61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外 "};
+    var province = data.substr(0,2);
+    if (city[province] == undefined) {
+           return false;
+    }
+    return true
+ },
+
+//检查生日是否正确
+checkBirthday(data) {
+    var len = data.length;
+    //身份证15位时,次序为省(3位)市(3位)年(2位)月(2位)日(2位)校验位(3位),皆为数字
+    if(len == '15')
+      {
+           var re_fifteen = /^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/;
+            var arr_data = data.match(re_fifteen);
+            var year = arr_data[2];
+            var month = arr_data[3];
+            var day = arr_data[4];
+            var birthday = new Date('19'+year+'/'+month+'/'+day);
+            return this.verifyBirthday('19'+year,month,day,birthday);
+       }
+     //身份证18位时,次序为省(3位)市(3位)年(4位)月(2位)日(2位)校验位(4位),校验位末尾可能为X
+     if(len == '18')
+        {
+            var re_eighteen = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/;
+            var arr_data = data.match(re_eighteen);
+            var year = arr_data[2];
+            var month = arr_data[3];
+            var day = arr_data[4];
+            var birthday = new Date(year+'/'+month+'/'+day);
+            return this.verifyBirthday(year,month,day,birthday);
+         }
+       return false;
+  },
+
+//校验日期
+verifyBirthday(year,month,day,birthday) 
+     {
+      var now = new Date();
+      var now_year = now.getFullYear();
+                //年月日是否合理
+                if(birthday.getFullYear() == year && (birthday.getMonth() + 1) == month && birthday.getDate() == day)
+                {
+                    //判断年份的范围(0岁到130岁之间)
+                    var time = now_year - year;
+                    if(time >= 0 && time <= 150)
+                    {
+                        return true;
+                    }
+                    return false;
+                }
+                return false;
+            },
+            //校验位的检测
+            checkParity(data)
+            {
+                //15位转18位
+                data = this.changeFivteenToEighteen(data);
+                var len = data.length;
+                if(len == '18')
+                {
+                    var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
+                    var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
+                    var cardTemp = 0, i, valnum;
+                    for(i = 0; i < 17; i ++)
+                    {
+                        cardTemp += data.substr(i, 1) * arrInt[i];
+                    }
+                    valnum = arrCh[cardTemp % 11];
+                    if (valnum == data.substr(17, 1))
+                    {
+                        return true;
+                    }
+                    return false;
+                }
+                return false;
+            },
+            //15位转18位身份证号
+            changeFivteenToEighteen(data)
+            {
+                if(data.length == '15')
+                {
+                    var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
+                    var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
+                    var cardTemp = 0, i;
+                    data = data.substr(0, 6) + '19' + data.substr(6, data.length - 6);
+                    for(i = 0; i < 17; i ++)
+                    {
+                        cardTemp += data.substr(i, 1) * arrInt[i];
+                    }
+                    data += arrCh[cardTemp % 11];
+                    return data;
+                }
+                return data;
+            },
 
 
     getImgUrl(img) {

+ 22 - 51
src/views/system/user/index.vue

@@ -75,7 +75,7 @@
                   />
                 </el-select>
               </el-form-item>
-              <el-form-item label="安保部门从业人员" prop="isLock">
+              <el-form-item label="安保部门从业人员" prop="onlyManager">
                 <el-switch
                   v-model="queryParams.onlyManager"
                   active-text=""
@@ -83,22 +83,6 @@
                 >
                 </el-switch>
               </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-item label="创建时间">
-                <el-date-picker v-model="dateRange" style="width: 240px" value-format="yyyy-MM-dd" type="daterange"
-                  range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
-              </el-form-item> -->
             </el-form>
             <!--    按纽    -->
             <el-row :gutter="10">
@@ -254,22 +238,22 @@
               </template>
             </el-table-column>
 
-            <el-table-column
+            <!-- <el-table-column
               label="登录IP"
               align="center"
               key="lastIp"
               prop="lastIp"
               v-if="columns[6].visible"
               width="140"
-            />
-            <el-table-column
+            /> -->
+            <!-- <el-table-column
               label="登录时间"
               align="center"
               key="lastTime"
               prop="lastTime"
               v-if="columns[7].visible"
               width="170"
-            />
+            /> -->
             <el-table-column
               label="安保部门从业人员"
               align="center"
@@ -286,7 +270,7 @@
               label="操作"
               align="left"
               header-align="center"
-              width="300"
+              width="350"
               fixed="right"
               class-name="small-padding fixed-width"
             >
@@ -323,33 +307,6 @@
                   @click="handleResetPwd(scope.row)"
                   v-hasPermi="['system:user:resetPwd']"
                 >重置密码</el-button>
-                <!-- <el-divider direction="vertical"></el-divider> -->
-                <!-- <el-dropdown
-                  size="mini"
-                  @command="(command) => handleCommand(command, scope.row)"
-                  v-hasPermi="['system:user:resetPwd', 'system:user:edit']">
-                  <el-button size="mini" type="text" icon="el-icon-menu">更多</el-button>
-                  <el-dropdown-menu slot="dropdown">
-                    <el-dropdown-item
-                      command="handleResetPwd"
-                      icon="el-icon-key"
-                      v-hasPermi="['system:user:resetPwd']"
-                      >重置密码</el-dropdown-item
-                    >
-                    <el-dropdown-item
-                      command="handleAuthRole"
-                      v-if="false"
-                      icon="el-icon-circle-check"
-                      v-hasPermi="['system:user:edit']"
-                      >分配角色</el-dropdown-item
-                    >
-                    <el-dropdown-item
-                      command="handleDelete"
-                      icon="el-icon-delete"
-                      v-hasPermi="['system:user:remove']"
-                    >删除</el-dropdown-item>
-                  </el-dropdown-menu>
-                </el-dropdown> -->
               </template>
             </el-table-column>
           </el-table>
@@ -441,7 +398,7 @@
         </el-row>
         <el-row>
           <el-col :span="10">
-            <el-form-item label="用户角色" prop="roleIds">
+            <el-form-item label="用户角色">
               <el-select
                 :popper-append-to-body="false"
                 @visible-change="selectRoles"
@@ -652,6 +609,8 @@ export default {
         checkSub: true,
         onlyManager: false,
         name: null,
+        roleId:null,
+        isLock:null
       },
       // 列信息
       columns: [
@@ -679,7 +638,7 @@ export default {
           { required: true, message: "用户名称不能为空", trigger: "blur" },
         ],
         roleIds: [
-          { required: true, message: "用户角色不能为空", trigger: "blur" },
+          { required: true, message: "用户角色不能为空", trigger: "change" },
         ],
         password: [
           { required: true, message: "密码不能为空", trigger: "blur" },
@@ -698,6 +657,18 @@ export default {
             },
             trigger: "blur",
           },
+          {
+            validator: (rule, value, callback) => {
+              if (
+                /[\u4E00-\u9FA5]/g.test(value)
+              ) {
+                callback(new Error("密码不能包含中文字符"));
+              } else {
+                callback();
+              }
+            },
+            trigger: "blur",
+          },
         ],
         orgId: [
           { required: true, message: "所属机构不能为空", trigger: "blur" },

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

@@ -46,7 +46,7 @@
                   <el-time-select
                       :picker-options="pickerOptions"
                       v-model="formData.workTime"
-                      :disabled="!formData.isEnable || formData.isEnable === false"/>
+                      :disabled="formData.isEnable != '1'"/>
                 </template>
               </el-form-item>
             </el-col>
@@ -56,7 +56,7 @@
                   <el-time-select
                     :picker-options="pickerOptions"
                     v-model="formData.workOffTime"
-                    :disabled="!formData.isEnable || formData.isEnable === false"/>
+                    :disabled="formData.isEnable != '1'"/>
                 </template>
               </el-form-item>
             </el-col>