소스 검색

Merge branch 'v0.1.0_zhulu' into v0.1.1_test

# Conflicts:
#	src/views/warn/index.vue
jingyuanchao 1 년 전
부모
커밋
278529f519
50개의 변경된 파일423개의 추가작업 그리고 187개의 파일을 삭제
  1. 0 0
      src/assets/icons/home/出入审批.png
  2. 9 2
      src/components/userSelector/index.vue
  3. 2 1
      src/utils/request.js
  4. 30 50
      src/utils/util.js
  5. 14 0
      src/views/core/drill/drillDictionaryBranch/index.vue
  6. 6 0
      src/views/core/drill/task/dialog.newtask.vue
  7. 7 0
      src/views/core/drill/task/dialog.perform.vue
  8. 8 0
      src/views/core/drill/task/index.vue
  9. 6 0
      src/views/core/edu/task/dialog.newTask.vue
  10. 9 1
      src/views/core/edu/task/dialog.perform.vue
  11. 8 0
      src/views/core/edu/task/index.vue
  12. 1 1
      src/views/core/outIn/approve/dialog.approve.letter.detail.vue
  13. 1 1
      src/views/core/outIn/approve/dialog.approve.letter.vue
  14. 19 5
      src/views/core/outIn/letter/dialog.addletter.vue
  15. 1 1
      src/views/core/outIn/letter/dialog.letter.detail.vue
  16. 2 2
      src/views/core/outIn/outInLog/dialog.outIn.detail.vue
  17. 1 1
      src/views/core/outIn/outInLog/index.vue
  18. 1 1
      src/views/core/reportForms/monitorAccessReport.vue
  19. 1 1
      src/views/core/reportForms/resumptionReport.vue
  20. 40 6
      src/views/core/reportForms/safetyInspectReport.vue
  21. 8 2
      src/views/core/reportForms/selfInspectReport.vue
  22. 8 1
      src/views/core/task/index.vue
  23. 5 1
      src/views/defenseMonitoring/index.vue
  24. 2 1
      src/views/index.vue
  25. 8 0
      src/views/iot/sensorData/index.vue
  26. 4 1
      src/views/iot/subSystem/index.vue
  27. 9 1
      src/views/question/list/index.vue
  28. 8 0
      src/views/question/reform/index.vue
  29. 1 24
      src/views/registerBook/index.vue
  30. 13 12
      src/views/resumption/ruleManager/dialog.editItem.vue
  31. 7 7
      src/views/resumption/ruleManager/dialog.editPoint.vue
  32. 16 5
      src/views/resumption/ruleManager/index.vue
  33. 4 1
      src/views/resumption/taskManager/index.vue
  34. 9 2
      src/views/safetycheck/plan/dialog.edit.vue
  35. 6 4
      src/views/safetycheck/rule/index.vue
  36. 8 7
      src/views/safetycheck/ruleManager/dialog.editItem.vue
  37. 7 7
      src/views/safetycheck/ruleManager/dialog.editPoint.vue
  38. 9 1
      src/views/safetycheck/ruleManager/index.vue
  39. 1 1
      src/views/safetycheck/task/components/checkRegister.vue
  40. 7 0
      src/views/safetycheck/task/components/register.vue
  41. 9 2
      src/views/safetycheck/task/index.vue
  42. 23 0
      src/views/system/dept/extend.vue
  43. 21 2
      src/views/system/logininfor/index.vue
  44. 1 1
      src/views/system/smsSendLog/index.vue
  45. 0 11
      src/views/system/user/extend.vue
  46. 1 2
      src/views/system/user/index.vue
  47. 33 15
      src/views/system/user/mapperUser.vue
  48. 2 2
      src/views/system/workTimeSet/json.js
  49. 19 0
      src/views/system/workTimeSet/workTime.vue
  50. 8 1
      src/views/warn/index.vue

+ 0 - 0
src/assets/icons/home/来访审批.png → src/assets/icons/home/出入审批.png


+ 9 - 2
src/components/userSelector/index.vue

@@ -167,8 +167,8 @@ export default {
      */
     show(defaultSelect) {
       this.search = this.emptySearch();
+      this.refresh();
       this.isShow = true;
-      // this.refresh()
     },
     clearSelected() {
       this.selectList = [];
@@ -182,6 +182,8 @@ export default {
       this.refresh();
     },
     onHide() {
+      this.search = this.emptySearch();
+      this.refresh();
       this.isShow = false;
     },
     onSelect(item) {
@@ -194,6 +196,9 @@ export default {
     },
     refresh() {
       this.$nextTick(() => {
+        if(!this.search.orgId ){
+          this.search.orgId = this.$store.state.user.orgId;
+        }
         this.$refs.searchTable.refresh();
       });
     },
@@ -204,6 +209,8 @@ export default {
     },
     onSubmit() {
       this.$emit("select", this.selectList);
+      this.search = this.emptySearch();
+      this.refresh();
       this.onHide();
     },
     getDefaultKey(key) {
@@ -239,7 +246,7 @@ export default {
           name: null,
         };
       }
-      
+
     },
   },
   mounted() {},

+ 2 - 1
src/utils/request.js

@@ -18,7 +18,7 @@ const service = axios.create({
   // axios中请求配置有baseURL选项,表示请求URL公共部分
   baseURL: process.env.NODE_ENV === 'development'? '/dev-api' : process.env.VUE_APP_BASE_API,
   // 超时
-  timeout: 15000
+  timeout: 5 * 60 * 1000
 })
 
 // request拦截器
@@ -193,6 +193,7 @@ export function exportFile(
 }
 // 通用下载方法
 export function download(url, params, filename, config) {
+  console.log("download",filename)
   downloadLoadingInstance = Loading.service({ text: "正在下载数据,请稍候", spinner: "el-icon-loading", background: "rgba(0, 0, 0, 0.7)", })
   return service.post(url, params, {
     transformRequest: [(params) => { return tansParams(params) }],

+ 30 - 50
src/utils/util.js

@@ -1,56 +1,36 @@
-export function arabicToChinese(num) {
-  const units = [
-    "",
-    "十",
-    "百",
-    "千",
-    "万",
-    "十万",
-    "百万",
-    "千万",
-    "亿",
-    "十亿",
-    "百亿",
-    "千亿",
-    "万亿",
-    "十万亿",
-    "百万亿",
-    "千万亿",
-  ];
-  const digits = ["", "一", "二", "三", "四", "五", "六", "七", "八", "九"];
-  const tenDigits = [
-    "十",
-    "二十",
-    "三十",
-    "四十",
-    "五十",
-    "六十",
-    "七十",
-    "八十",
-    "九十",
-  ];
+export function arabicToChinese(value) {
+  const digitMap = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
+  const unitMap = ['', '十', '百', '千', '万', '亿'];
+  let chineseNumber = '';
+  let digits = value.toString().split('');
+  let hasZero = false;
+  let lastUnit = '';
 
-  if (num === 0) {
-    return "零";
-  }
+  for (let i = digits.length - 1; i >= 0; i--) {
+    let digit = digits[i];
+    let unit = unitMap[digits.length - i - 1];
 
-  let result = "";
-  let unitIndex = 0;
-  if (num == 10) {
-    return "十";
+    if (digit === '0') {
+      if ((unit === '十' || unit === '百') && i > 0 && digits[i - 1] !== '0') {
+        // 如果是十位或百位上的零,并且后面跟着非零数字,则保留零
+        chineseNumber = digitMap[digit] + chineseNumber;
+      }
+      hasZero = true;
+    } else {
+      chineseNumber = digitMap[digit] + unit + chineseNumber;
+      if (unit === '十' && hasZero && lastUnit === '百') {
+        // 如果是十位并且之前有零,并且上一个单位是“百”,则在十位后插入零
+        chineseNumber = '零' + chineseNumber;
+      }
+      hasZero = false;
+    }
+    lastUnit = unit;
   }
-  while (num > 0) {
-    const digit = num % 10;
-    const isTenDigit =
-      unitIndex > 0 && digit === 1 && result.length > 0 && result[0] !== "零";
-    const unit = isTenDigit ? tenDigits[unitIndex - 1] : units[unitIndex];
-    const digitChinese = digit === 1 && isTenDigit ? "" : digits[digit];
-
-    result = digitChinese + unit + result;
 
-    num = Math.floor(num / 10);
-    unitIndex++;
-  }
+  // 去除开头的“零”
+  chineseNumber = chineseNumber.replace(/^零+/, '');
 
-  return result;
+  return chineseNumber || '零';
 }
+
+

+ 14 - 0
src/views/core/drill/drillDictionaryBranch/index.vue

@@ -122,6 +122,20 @@
               </template>
             </el-table-column>
             <el-table-column
+              label="地区"
+              align="center"
+              width="100"
+              prop="affiliatedArea"
+            />
+
+            <el-table-column
+              label="行社"
+              align="center"
+              width="200"
+              prop="affiliatedBank"
+            />
+
+            <el-table-column
               label="机构名称"
               align="center"
               width="250"

+ 6 - 0
src/views/core/drill/task/dialog.newtask.vue

@@ -261,6 +261,9 @@ export default {
     },
     async show(id, other = {}) {
       this.isShow = true;
+      this.$nextTick(() => {
+        this.$refs.form.clearValidate(); // 确保在 DOM 更新之后清除表单验证状态
+      });
     },
     imageListChanged(list) {
       this.formData.imageList = list;
@@ -345,6 +348,9 @@ export default {
       this.formData = this.reset();
       this.$refs["uploadimage"].clearFiles();
       this.$refs["upload"].clearFiles();
+      this.$nextTick(() => {
+        this.$refs.form.clearValidate(); // 确保在 DOM 更新之后清除表单验证状态
+      });
     },
     // async onSave() {
     //   if (!this.validatePerson()) {

+ 7 - 0
src/views/core/drill/task/dialog.perform.vue

@@ -209,6 +209,7 @@ export default {
         drillStartTime: null,
         drillEndTime: null,
         content: null,
+        comment: null,
         drillSite: null,
         type: null,
         presetCase: null,
@@ -269,6 +270,9 @@ export default {
       this.id = id;
       await this.refresh(id, other);
       this.isShow = true;
+      this.$nextTick(() => {
+        this.$refs.form.clearValidate(); // 确保在 DOM 更新之后清除表单验证状态
+      });
     },
     imageListChanged(list) {
       this.formData.imageList = list;
@@ -321,6 +325,9 @@ export default {
       this.formData = this.reset();
       this.$refs["uploadimage"].clearFiles();
       this.formFileListDefualtValue = [];
+      this.$nextTick(() => {
+        this.$refs.form.clearValidate(); // 确保在 DOM 更新之后清除表单验证状态
+      });
     },
     async onSave() {
       if (!this.validatePerson()) {

+ 8 - 0
src/views/core/drill/task/index.vue

@@ -595,6 +595,14 @@ export default {
       this.$refs["newTaskDialog"].show(id, {});
     },
     handleExport() {
+      if (this.total==null || this.total===0){
+        this.$modal.alert("暂无可用数据导出");
+        return;
+      }
+      if (this.total>50000){
+        this.$modal.alert("导出数据超过5万条,请缩小查询范围后重试");
+        return;
+      }
       this.download(
         "core/drill/task/export",
         {

+ 6 - 0
src/views/core/edu/task/dialog.newTask.vue

@@ -286,6 +286,9 @@ export default {
     },*/
     async show(id, other = {}) {
       this.isShow = true;
+      this.$nextTick(() => {
+        this.$refs.newTask.clearValidate(); // 确保在 DOM 更新之后清除表单验证状态
+      });
     },
     imageListChanged(list) {
       this.formData.imageList = list;
@@ -371,6 +374,9 @@ export default {
       this.formData = this.reset();
       this.$refs["uploadimage"].clearFiles();
       this.$refs["upload"].clearFiles();
+      this.$nextTick(() => {
+        this.$refs.newTask.clearValidate(); // 确保在 DOM 更新之后清除表单验证状态
+      });
     },
     async onSave() {
       if (!this.validatePerson()) {

+ 9 - 1
src/views/core/edu/task/dialog.perform.vue

@@ -175,6 +175,7 @@ export default {
         absenceList: [{required: true, type: "array", message: "请选择参会人员"}],
         trainingStartDateTime: [{required: true, message: "请输入培训开始时间"}],
         trainingEndDateTime: [{required: true, message: "请输入培训结束时间"}],
+        site: [{required: true, message: "请输入地点"}],
         note: [{required: true, message: "请输入培训总结"}],
         imageList: [{required: true, message: "请上传培训图片"}],
       },
@@ -206,6 +207,8 @@ export default {
         // dueCount: null,
         // actualCount: null,
         content: null,
+        hostName: null,
+        site: null,
         title: null,
         eduJobId: null,
         imageList: "",
@@ -267,7 +270,9 @@ export default {
       this.id = id;
       await this.refresh(id, other);
       this.isShow = true;
-      console.log("show", this.formData);
+      this.$nextTick(() => {
+        this.$refs.perform.clearValidate(); // 确保在 DOM 更新之后清除表单验证状态
+      });
     },
     imageListChanged(list) {
       this.formData.imageList = list;
@@ -320,6 +325,9 @@ export default {
       this.formData = this.reset();
       this.$refs["uploadimage"].clearFiles();
       this.formFileListDefualtValue=[];
+      this.$nextTick(() => {
+        this.$refs.perform.clearValidate(); // 确保在 DOM 更新之后清除表单验证状态
+      });
     },
     async onSave() {
       if (!this.validatePerson()) {

+ 8 - 0
src/views/core/edu/task/index.vue

@@ -512,6 +512,14 @@ export default {
     },
     /** 导出按钮操作 */
     handleExport() {
+      if (this.total==null || this.total===0){
+        this.$modal.alert("暂无可用数据导出");
+        return;
+      }
+      if (this.total>50000){
+        this.$modal.alert("导出数据超过5万条,请缩小查询范围后重试");
+        return;
+      }
       this.download(
         "core/eduTask/export",
         {

+ 1 - 1
src/views/core/outIn/approve/dialog.approve.letter.detail.vue

@@ -40,7 +40,7 @@
         </el-row>
         <el-table border size="small" :data="formData.userInfos" height="300">
           <el-table-column label="序号"  align="center"  type="index" width="70" />
-          <el-table-column label="所属单位" width="100" align="center" prop="companyName" />
+          <el-table-column label="申请单位" width="100" align="center" prop="companyName" />
           <el-table-column label="出入人员" width="100" align="center" prop="userName" />
           <el-table-column label="证件类型" width="100" align="center" prop="idType">
             <template slot-scope="scope">

+ 1 - 1
src/views/core/outIn/approve/dialog.approve.letter.vue

@@ -70,7 +70,7 @@
           </el-row>
           <el-table border size="small" :data="formData.userInfos" height="300">
                   <el-table-column label="序号"  align="center"  type="index" width="70" />
-                  <el-table-column label="所属单位" width="100" align="center" prop="companyName" />
+                  <el-table-column label="申请单位" width="100" align="center" prop="companyName" />
                   <el-table-column label="出入人员" width="100" align="center" prop="userName" />
                   <el-table-column label="证件类型" width="100" align="center" prop="idType">
                     <template slot-scope="scope">

+ 19 - 5
src/views/core/outIn/letter/dialog.addletter.vue

@@ -57,7 +57,6 @@
                 <el-date-picker style="width:100%"
                   v-model="formData.startTime"
                   type="date"
-                  :picker-options="startDatepickerOptions"
                   placeholder="请选择开具日期"
                   >
                 </el-date-picker>
@@ -118,7 +117,7 @@
 
           <el-table border size="small" :data="formData.userInfos" max-height="500" style="margin-bottom: 10px;">
             <el-table-column label="序号"  align="center"  type="index" width="70" />
-            <el-table-column label="所属单位" width="100" align="center" prop="companyName" />
+            <el-table-column label="申请单位" width="100" align="center" prop="companyName" />
             <el-table-column label="出入人员" width="100" align="center" prop="userName" />
             <el-table-column label="证件类型" width="100" align="center" prop="idType">
               <template slot-scope="scope">
@@ -163,8 +162,8 @@
           :rules="userInfoRules"
           label-width="140px"
         >
-          <el-form-item label="所属单位" prop="companyName">
-            <el-input v-model="userInfo.companyName" maxlength="20" placeholder="请输入所属单位" />
+          <el-form-item label="申请单位" prop="companyName">
+            <el-input v-model="userInfo.companyName" maxlength="20" placeholder="请输入申请单位" />
           </el-form-item>
           <el-form-item label="出入人员" prop="userName">
             <el-input v-model="userInfo.userName" maxlength="10" placeholder="请输入出入人员" />
@@ -242,7 +241,7 @@ export default {
       },
       userInfoRules: {
         userName: [{ required: true, message: "请输入出入人员" }],
-        companyName: [{ required: true, message: "请输入所属单位" }],
+        companyName: [{ required: true, message: "请输入申请单位" }],
         idType: [{ required: true, message: "请选择证件类型" }],
         idCard: [{ required: true, message: "请输入证件号码" }],
         //imgFile: [{ required: true, message: "请上传证件图片" }],
@@ -300,6 +299,9 @@ export default {
       if (id) {
         this.title = "编辑介绍信";
         this.isShow = true;
+        this.$nextTick(() => {
+          this.$refs.form.clearValidate(); // 确保在 DOM 更新之后清除表单验证状态
+        });
         getLetter(id).then((response) => {
           // let tempRange=[];
           // tempRange.push(dayjs(response.data.startTime));
@@ -365,6 +367,9 @@ export default {
       this.isShow = false;
       this.formData = this.reset();
       //this.$refs["uploadFile"].clearFiles();
+      this.$nextTick(() => {
+        this.$refs.form.clearValidate(); // 确保在 DOM 更新之后清除表单验证状态
+      });
     },
     onHideUser() {
       this.open = false;
@@ -394,6 +399,15 @@ export default {
             this.$message.error("请添加人员");
             return;
           }
+          //判断介绍信是否过期
+          const inputDate = dayjs(this.formData.startTime);
+          const newDate = inputDate.add(this.formData.effectiveDays,'day').startOf('day');
+          const currentDate = dayjs();
+          if (!dayjs(newDate).isAfter(dayjs(currentDate))){
+            this.$message.error("介绍信已过有效期,请重新选择开具日期或有效天数!");
+            return;
+          }
+
           console.log("================", this.formData);
           if (this.formData.id != null) {
             updateLetter(this.formData).then((response) => {

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

@@ -114,7 +114,7 @@
         </el-row>
         <el-table border size="small" :data="formData.userInfos" max-height="500" style="margin-bottom: 10px;">
           <el-table-column label="序号"  align="center"  type="index" width="70" />
-          <el-table-column label="所属单位" width="150" align="center" prop="companyName" />
+          <el-table-column label="申请单位" width="150" align="center" prop="companyName" />
           <el-table-column label="出入人员" width="100" align="center" prop="userName" />
           <el-table-column label="证件类型" width="100" align="center" prop="idType">
             <template slot-scope="scope">

+ 2 - 2
src/views/core/outIn/outInLog/dialog.outIn.detail.vue

@@ -33,7 +33,7 @@
           <el-descriptions-item label="有效天数">{{
             formData.effectiveDays
           }}</el-descriptions-item>
-          <el-descriptions-item label="所属单位">{{
+          <el-descriptions-item label="申请单位">{{
             formData.companyName
           }}</el-descriptions-item>
           <el-descriptions-item label="出入人员">{{
@@ -57,7 +57,7 @@
           <el-descriptions-item label="介绍信附件">
             <image-file-list-preview v-model="formData.letterFile"></image-file-list-preview>
           </el-descriptions-item>
-          <el-descriptions-item label="核验结果" span="2" labelClassName="gx_info_label">
+          <el-descriptions-item label="联网核查结果" span="2" labelClassName="gx_info_label">
             <ImageListPreview v-model="formData.checkImage"></ImageListPreview>
           </el-descriptions-item>
 <!--          <el-descriptions-item label="登记签名" span="2" labelClassName="gx_info_label">

+ 1 - 1
src/views/core/outIn/outInLog/index.vue

@@ -106,7 +106,7 @@
             :data="outInRecrodList"
           >
             <el-table-column
-              label="所属单位"
+              label="申请单位"
               prop="companyName"
               align="center"
               width="180"

+ 1 - 1
src/views/core/reportForms/monitorAccessReport.vue

@@ -196,7 +196,7 @@ export default {
 
   created() {
     //this.getDeptTree();
-  this. getList();
+  // this. getList();
   },
   computed: {
     ...mapGetters(["orgId"]),

+ 1 - 1
src/views/core/reportForms/resumptionReport.vue

@@ -213,7 +213,7 @@ export default {
 
   created() {
   //  this.getDeptTree();
-  this. getList();
+  // this. getList();
   },
   computed: {
     ...mapGetters(["orgId"]),

+ 40 - 6
src/views/core/reportForms/safetyInspectReport.vue

@@ -53,7 +53,22 @@
             placeholder="选择年份">
           </el-date-picker>
         </el-form-item>
+<!--        <el-form-item label="统计范围" prop="part">
+          <el-select
+            style="width: 100%"
+            v-model="queryParams.part"
+            placeholder="请选择统计范围"
+            clearable
+          >
+            <el-option
+              v-for="item in halfYearOptions"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value">
+            </el-option>
 
+          </el-select>
+        </el-form-item>-->
       </el-form>
 
       <el-row :gutter="10" >
@@ -112,8 +127,7 @@ import tableList from '@/mixins/tableList'
 import {listReport, selectAllOrg} from "@/api/core/reportForms/safetyInspectReport";
 import treeselect from '@riophae/vue-treeselect'
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
-import {deptTreeSelect, businessTreeSelect} from "@/api/system/public";
-//import orgTree from "@/components/orgTree";
+import dayjs from "dayjs";
 import OrgTree from "@/components/orgTree/orgQuerySelector.vue";
 export default {
   dicts: ['sys_normal_disable', 'sys_org_type'],
@@ -161,6 +175,7 @@ export default {
         pageSize: 10,
         orgId: null,
         year: new Date(),
+       // part : 0,
       },
       // 表单参数
       form: {},
@@ -182,8 +197,14 @@ export default {
           {required: true, message: '请输入NFC点位名称', trigger: 'change'}
         ],
       },
-      defaultKeys: []
-
+      defaultKeys: [],
+      halfYearOptions: [{
+        label: "上半年",
+        value: 0
+      }, {
+        label: "下半年",
+        value: 1
+      }],
     };
   },
 
@@ -195,13 +216,15 @@ export default {
   },
 
   created() {
+    //this.setInitialPartValue();
     //this.getDeptTree();
-    this.getList();
+    // this.getList();
   },
   computed: {
     ...mapGetters(["orgId"]),
   },
   methods: {
+    dayjs,
     getDefaultOrg(node) {
       this.queryParams.orgId = node.id;
       this.selectedOrgName = node.shortName;
@@ -262,7 +285,18 @@ export default {
       })
     },
 
-
+    setInitialPartValue() {
+      const now = dayjs();
+      const startOfYear = dayjs().startOf('year'); // 1月1日 00:00:00
+      const endOfFirstHalf = dayjs().month(5).endOf('month'); // 6月30日 23:59:59
+      console.log("startOfYear", startOfYear)
+      console.log("endOfFirstHalf", endOfFirstHalf)
+      if (now.isAfter(startOfYear) && now.isBefore(endOfFirstHalf)) {
+        this.queryParams.part = 0; // 上半年
+      } else {
+        this.queryParams.part = 1; // 下半年
+      }
+    },
     // 取消按钮
     cancel() {
       this.open = false;

+ 8 - 2
src/views/core/reportForms/selfInspectReport.vue

@@ -162,7 +162,7 @@ export default {
         orgId: null,
         year: new Date(),
         cycle: 1,
-        date:[new Date(),new Date()]
+        date:[this.formatDate(new Date()),this.formatDate(new Date())]
       },
       // 表单参数
       form: {},
@@ -197,12 +197,18 @@ export default {
   },
 
   created() {
-    this.getList();
+    // this.getList();
   },
   computed: {
     ...mapGetters(["orgId"]),
   },
   methods: {
+    formatDate(date) {
+      const year = date.getFullYear();
+      const month = (date.getMonth() + 1).toString().padStart(2, '0');
+      const day = date.getDate().toString().padStart(2, '0');
+      return `${year}-${month}-${day}`;
+    },
     getDefaultOrg(node) {
       this.queryParams.orgId = node.id;
       this.selectedOrgName = node.shortName;

+ 8 - 1
src/views/core/task/index.vue

@@ -426,7 +426,14 @@ export default {
 
     /** 导出按钮操作 */
     handleExport() {
-      console.log(this);
+      if (this.total==null || this.total===0){
+        this.$modal.alert("暂无可用数据导出");
+        return;
+      }
+      if (this.total>50000){
+        this.$modal.alert("导出数据超过5万条,请缩小查询范围后重试");
+        return;
+      }
       this.download(
         "core/retrievalTask/export",
         {

+ 5 - 1
src/views/defenseMonitoring/index.vue

@@ -177,7 +177,7 @@
               label="登记人/数据来源"
               show-overflow-tooltip
               width="150"
-              
+
             >
             <template slot-scope="{row}">
               <div>
@@ -367,6 +367,10 @@ export default {
         return;
       }
 
+      if (this.total>50000){
+        this.$modal.alert("导出数据超过5万条,请缩小查询范围后重试");
+        return;
+      }
       this.download(
         "/core/resumption/protection/export",
         {

+ 2 - 1
src/views/index.vue

@@ -543,7 +543,8 @@ export default {
       margin-left: 34px;
       margin-right: 34px;
       color: #777;
-      height: 450px;
+      max-height: 450px;
+      min-height: 50px;
       overflow: auto;
       background-color: #f5f5f5;
       padding: 10px;

+ 8 - 0
src/views/iot/sensorData/index.vue

@@ -343,6 +343,14 @@ export default {
 
     /** 导出按钮操作 */
     handleExport() {
+      if (this.total==null || this.total===0){
+        this.$modal.alert("暂无可用数据导出");
+        return;
+      }
+      if (this.total>50000){
+        this.$modal.alert("导出数据超过5万条,请缩小查询范围后重试");
+        return;
+      }
       this.download(
         "iot/sensor/export",
         {

+ 4 - 1
src/views/iot/subSystem/index.vue

@@ -381,7 +381,10 @@ export default {
         });
         return;
       }
-
+      if (this.total>50000){
+        this.$modal.alert("导出数据超过5万条,请缩小查询范围后重试");
+        return;
+      }
       this.download(
         "/core/resumption/protection/export",
         {

+ 9 - 1
src/views/question/list/index.vue

@@ -41,7 +41,7 @@
               <el-form-item prop="confirmStatus" label="隐患状态">
                 <el-select
                   label="隐患状态"
-                  v-model="queryParams.confirmStatus"                  
+                  v-model="queryParams.confirmStatus"
                   placeholder="请选择隐患状态"
                   clearable
                 >
@@ -412,6 +412,14 @@ export default {
     },
     /** 导出按钮操作 */
     handleExport() {
+      if (this.total==null || this.total===0){
+        this.$modal.alert("暂无可用数据导出");
+        return;
+      }
+      if (this.total>50000){
+        this.$modal.alert("导出数据超过5万条,请缩小查询范围后重试");
+        return;
+      }
       this.download(
         "core/question/export",
         {

+ 8 - 0
src/views/question/reform/index.vue

@@ -366,6 +366,14 @@ export default {
     },
     /** 导出按钮操作 */
     handleExport() {
+      if (this.total==null || this.total===0){
+        this.$modal.alert("暂无可用数据导出");
+        return;
+      }
+      if (this.total>50000){
+        this.$modal.alert("导出数据超过5万条,请缩小查询范围后重试");
+        return;
+      }
       this.download(
         "core/questionreform/export",
         {

+ 1 - 24
src/views/registerBook/index.vue

@@ -174,7 +174,7 @@
               label="所属机构"
               align="center"
               prop="orgName"
-              min-width="20%"
+              min-width="40%"
             />
             <el-table-column
               label="统计日期"
@@ -182,9 +182,6 @@
               prop="date"
               min-width="20%"
             >
-              <!--              <template slot-scope="scope">
-                              <span>{{ parseTime(scope.row.date, '{y}-{m}-{d}') }}</span>
-                            </template>-->
             </el-table-column>
 
             <el-table-column label="文件名称" align="center" prop="fileName">
@@ -197,26 +194,6 @@
                 >
               </template>
             </el-table-column>
-            <!--            <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-                          <template slot-scope="scope">
-                            <el-button
-                              size="mini"
-                              type="text"
-                              icon="el-icon-edit"
-                              @click="handleUpdate(scope.row)"
-                              v-hasPermi="['core:registerBook:edit']"
-                            >修改
-                            </el-button>
-                            <el-button
-                              size="mini"
-                              type="text"
-                              icon="el-icon-delete"
-                              @click="handleDelete(scope.row)"
-                              v-hasPermi="['core:registerBook:remove']"
-                            >删除
-                            </el-button>
-                          </template>
-                        </el-table-column>-->
           </el-table>
 
           <pagination

+ 13 - 12
src/views/resumption/ruleManager/dialog.editItem.vue

@@ -17,6 +17,18 @@
           >
             <el-row>
               <el-col :span="20">
+                <el-form-item prop="sort" label="履职项序号">
+                  <el-input-number
+                    v-model="formData.sort"
+                    :min="1"
+                    :max="999999"
+                    controls-position="right"
+                  />
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="20">
                 <el-form-item prop="name" label="履职项">
                   <el-input
                     v-model.trim="formData.name"
@@ -28,17 +40,6 @@
                 </el-form-item>
               </el-col>
             </el-row>
-            <el-row>
-              <el-col :span="20">
-                <el-form-item prop="sort" label="履职项序号">
-                  <el-input-number
-                    v-model="formData.sort"
-                    :min="1"
-                    controls-position="right"
-                  />
-                </el-form-item>
-              </el-col>
-            </el-row>
           </el-form>
         </div>
         <div class="box">
@@ -71,7 +72,7 @@
               align="center"
             >
             </el-table-column>
-            
+
             <el-table-column label="操作" width="140" align="center">
               <template slot-scope="scope">
                 <el-button

+ 7 - 7
src/views/resumption/ruleManager/dialog.editPoint.vue

@@ -16,6 +16,13 @@
               @input="formData.pointNum = Number(formData.pointNum)"
             ></el-input>
           </el-form-item> -->
+          <el-form-item label="履职内容序号" prop="sort">
+            <el-input-number
+              v-model="formData.sort"
+              :min="1"
+              controls-position="right"
+            />
+          </el-form-item>
           <el-form-item label="履职内容" prop="name">
             <el-input  type="textarea" :rows="3" v-model="formData.name" placeholder="请输入履职内容" maxlength="255"></el-input>
           </el-form-item>
@@ -32,13 +39,6 @@
             </el-select>
             <span style="color:rgb(184,189,192)"><i class="el-icon-info"></i>履职区域、履职点位至少选择一个</span>
           </el-form-item>
-          <el-form-item label="履职内容序号" prop="sort">
-            <el-input-number
-              v-model="formData.sort"
-              :min="1"
-              controls-position="right"
-            />
-          </el-form-item>
           <el-form-item label="数据来源" prop="businessType">
             <el-select style="width: 100%;" v-model="formData.businessType" placeholder="请选择数据来源" clearable>
               <el-option v-for="item in pointDataSource" :key="item.value" :label="item.label"

+ 16 - 5
src/views/resumption/ruleManager/index.vue

@@ -450,13 +450,24 @@ export default {
       return "";
     },
     spanMethod({ row, column, rowIndex, columnIndex }) {
-      if (columnIndex < 3) {
-        if (row.rowSpan > 0) {
-          return [row.rowSpan, 1];
-        } else {
-          return [0, 0];
+      if(this.rule && this.rule.orgId == this.orgId && this.rule.status == 0){
+        if (columnIndex < 3) {
+          if (row.rowSpan > 0) {
+            return [row.rowSpan, 1];
+          } else {
+            return [0, 0];
+          }
+        }
+      }else{
+        if (columnIndex < 2) {
+          if (row.rowSpan > 0) {
+            return [row.rowSpan, 1];
+          } else {
+            return [0, 0];
+          }
         }
       }
+
     },
   },
 };

+ 4 - 1
src/views/resumption/taskManager/index.vue

@@ -414,7 +414,10 @@ export default {
         });
         return;
       }
-
+      if (this.total>200000){
+        this.$modal.alert("导出数据超过20万条,请缩小查询范围后重试");
+        return;
+      }
       this.download(
         "/core/resumption/record/export",
         {

+ 9 - 2
src/views/safetycheck/plan/dialog.edit.vue

@@ -729,7 +729,6 @@ export default {
         planStatus: null,
         execOrgType: null,
         roleNames: null,
-        count: null,
         description: null,
         tableData: null,
         itemList: null,
@@ -874,7 +873,7 @@ export default {
             id: selectList[i].id,
             businessType: selectList[i].businessType,
           };
-          
+
           if (tem.itemName != null && tem.itemName != undefined) {
             this.tableData.push(tem);
           }
@@ -892,6 +891,10 @@ export default {
       await this.refresh(id, other);
       this.getRolesByOrg();
       this.isShow = true;
+      this.$nextTick(() => {
+        this.$refs.form.clearValidate(); // 确保在 DOM 更新之后清除表单验证状态
+      });
+
     },
     removeRow(row) {
       this.$modal
@@ -906,6 +909,10 @@ export default {
     // 事件
     onHide() {
       this.isShow = false;
+      this.$refs["form"].clearValidate(["planName"]);
+      this.$nextTick(() => {
+        this.$refs.form.clearValidate(); // 确保在 DOM 更新之后清除表单验证状态
+      });
     },
     getIteamF() {
       // if (this.id == null) {

+ 6 - 4
src/views/safetycheck/rule/index.vue

@@ -176,7 +176,7 @@
                     size="mini"
                     type="text"
                     icon="el-icon-edit-outline"
-                    @click="onManageContent(r.row.id)"
+                    @click="onManageContent(r.row.id,'edit')"
                     v-if="r.row.status == 0 && orgId == r.row.orgId"
                     v-hasPermi="['safetycheck:rule:contentmanage']"
                     >管理检查内容</el-button
@@ -185,7 +185,7 @@
                     size="mini"
                     type="text"
                     icon="el-icon-view"
-                    @click="onManageContent(r.row.id)"
+                    @click="onManageContent(r.row.id,'view')"
                     v-if="r.row.status != 0 || orgId != r.row.orgId"
                     v-hasPermi="['safetycheck:rule:contentmanage']"
                     >查看检查内容</el-button
@@ -313,9 +313,11 @@ export default {
     onEdit(id, other = {}) {
       this.$refs.editDialog.show(id, other);
     },
-    onManageContent(id) {
+    onManageContent(id,type) {
       let path = `/core/safetycheck/rule/content/${id}`;
-      this.$router.push(path);
+      //路由名称:safetycheckRuleManager
+      this.$router.push({ name:"safetycheckRuleManager",params:{id:id,showType:type}});
+      //this.$router.push(path);
     },
     onDel(id) {
       this.$modal

+ 8 - 7
src/views/safetycheck/ruleManager/dialog.editItem.vue

@@ -15,6 +15,14 @@
             :rules="formDataRules"
             label-width="110px"
           >
+            <el-form-item prop="sort" label="检查项序号">
+              <el-input-number
+                v-model="formData.sort"
+                :min="1"
+                :max="999999"
+                controls-position="right"
+              />
+            </el-form-item>
             <el-form-item prop="name" label="检查项">
               <el-input
                 v-model.trim="formData.name"
@@ -24,13 +32,6 @@
                 clearable
               />
             </el-form-item>
-            <el-form-item prop="sort" label="检查项序号">
-              <el-input-number
-                v-model="formData.sort"
-                :min="1"
-                controls-position="right"
-              />
-            </el-form-item>
           </el-form>
         </div>
         <div class="box">

+ 7 - 7
src/views/safetycheck/ruleManager/dialog.editPoint.vue

@@ -29,6 +29,13 @@
               @input="formData.pointNum = Number(formData.pointNum)"
             ></el-input>
           </el-form-item> -->
+          <el-form-item label="检查内容序号" prop="sort">
+            <el-input-number
+              v-model="formData.sort"
+              :min="1"
+              controls-position="right"
+            />
+          </el-form-item>
           <el-form-item label="检查内容" prop="name">
             <el-input
               type="textarea"
@@ -54,13 +61,6 @@
               ></el-option>
             </el-select>
           </el-form-item>
-          <el-form-item label="检查内容序号" prop="sort">
-            <el-input-number
-              v-model="formData.sort"
-              :min="1"
-              controls-position="right"
-            />
-          </el-form-item>
           <el-form-item label="数据来源" prop="businessType">
             <el-select
               style="width: 100%"

+ 9 - 1
src/views/safetycheck/ruleManager/index.vue

@@ -210,6 +210,7 @@ export default {
   dicts: ["point_data_source"],
   data() {
     return {
+      showType: 'view',
       queryParams: {
         ruleId: null,
         itemName: null,
@@ -273,6 +274,7 @@ export default {
 
   mounted() {
     let id = this.$route.params.id;
+    this.showType = this.$route.params.showType;
     if (!id) {
       this.$tab.closePageAndPushPrev();
       return;
@@ -317,6 +319,7 @@ export default {
       }
       page(this.queryParams)
         .then((data) => {
+          console.log("112233445566")
           // debugger
           this.loading=false;
           let d = [];
@@ -439,7 +442,12 @@ export default {
       return "";
     },
     spanMethod({ row, column, rowIndex, columnIndex }) {
-      if (columnIndex < 3) {
+      let compareColumnIndex = 3;
+      if(this.showType === 'view'){
+        compareColumnIndex = 2;
+      }
+
+      if (columnIndex < compareColumnIndex) {
         if (row.rowSpan > 0) {
           return [row.rowSpan, 1];
         } else {

+ 1 - 1
src/views/safetycheck/task/components/checkRegister.vue

@@ -314,7 +314,7 @@ export default {
     onCheckOrgSelect(node) {
       if (node == null) {
         this.prevCheckOrgType = null;
-        this.roleOptions = [];
+        /*this.roleOptions = [];*/
         this.checkRoleId = null;
         return;
       }

+ 7 - 0
src/views/safetycheck/task/components/register.vue

@@ -427,8 +427,15 @@ export default {
         this.$modal.alert("任务已逾期,不能操作");
         return;
       }
+      if (this.taskInfo.startTime){
+        this.taskInfo.startTime = dayjs(this.taskInfo.startTime).format("YYYY-MM-DD HH:mm:ss");
+      }
+      if (this.taskInfo.endTime){
+        this.taskInfo.endTime = dayjs(this.taskInfo.endTime).format("YYYY-MM-DD HH:mm:ss");
+      }
       this.taskInfo.isSubmit = 0;
       this.taskInfo.signImg = this.signImg;
+      console.log("13",this.taskInfo.startTime,this.taskInfo.endTime)
       api.submit(this.taskInfo).then((r) => {
         this.$message.info("保存成功");
       });

+ 9 - 2
src/views/safetycheck/task/index.vue

@@ -36,9 +36,8 @@
                   v-model="queryParams.title"
                   placeholder="请输入任务名称"
                   clearable
-                  @keyup.enter.native="handleQuery"
+
                   :maxlength="50"
-                  @input="inputTitle"
                 />
               </el-form-item>
               <el-form-item label="检查人员" prop="roleId">
@@ -743,6 +742,14 @@ export default {
     // },
     /** 导出按钮操作 */
     handleExport() {
+      if (this.total==null || this.total===0){
+        this.$modal.alert("暂无可用数据导出");
+        return;
+      }
+      if (this.total>50000){
+        this.$modal.alert("导出数据超过5万条,请缩小查询范围后重试");
+        return;
+      }
       this.download(
         "core/safetyTask/export",
         {

+ 23 - 0
src/views/system/dept/extend.vue

@@ -154,6 +154,18 @@
                 placeholder="请选择气象行政区域"
               ></el-cascader>
             </el-descriptions-item>
+            <el-descriptions-item v-if="type === org_type.hangse" labelClassName="info_label_required" :contentStyle='contentStyle' :labelStyle='labelStyle' label="是否设置安全保卫独立机构">
+              <el-radio-group v-model="aloneDept">
+                <el-radio
+                  v-for="dict in dict.type.sys_yes_no"
+                  :key="`${dict.value}`"
+                  :label="dict.value"
+
+                >{{ dict.label }}</el-radio
+                >
+              </el-radio-group>
+            </el-descriptions-item>
+
             <el-descriptions-item v-if="type === org_type.yewd" labelClassName="info_label_required" label="产权类型" :contentStyle='contentStyle' :labelStyle='labelStyle'>
               <el-select
                 clearable
@@ -598,6 +610,7 @@ export default {
     "org_extend_detached_standard",
     "org_extend_is",
     "property_situation",
+    'sys_yes_no',
 
   ],
 
@@ -635,6 +648,7 @@ export default {
         yewd: '4',
         lhzz: '5',
         zxywk: '6',
+        hangse: '3',
       },
       reqmsg: false,
       imageViewer: false,
@@ -681,6 +695,7 @@ export default {
       weatherAreaCode: null,
       premisesArea: null,
       ownership: null,
+      aloneDept:null,
       outsideArea: null,
       askari: null,
       businessLibrary: null,
@@ -1074,6 +1089,7 @@ export default {
             this.isAskariCertificate=0;
           }
           this.extendId = data.data.id;
+          this.aloneDept = data.data.aloneDept;
           this.constructionTime = data.data.constructionTime;
           this.lastUpdateTime = data.data.lastUpdateTime;
           this.platformBrand = data.data.platformBrand;
@@ -1619,6 +1635,8 @@ export default {
         cashAddingRoomRemoteControl: this.cashAddingRoomRemoteControl,
         hdCameraCount: this.hdCameraCount,
         totalCameraCount: this.totalCameraCount,
+        aloneDept: this.aloneDept,
+
       };
       // console.log(dat);
       if (this.extendId) {
@@ -1640,6 +1658,11 @@ export default {
         this.$modal.msgError("气象行政区域不能为空,请选择气象行政区域");
         return false;
       }
+      if(this.type === this.org_type.hangse && this.aloneDept == null){
+        this.$modal.msgError("是否独立部门不能为空,请选择是否独立部门");
+        return false;
+      }
+
       if (this.type === this.org_type.yewd && this.ownership == null) {
         this.$modal.msgError("产权类型不能为空,请选择产权类型");
         return false;

+ 21 - 2
src/views/system/logininfor/index.vue

@@ -128,6 +128,7 @@
 
 <script>
 import { list, delLogininfor, cleanLogininfor, unlockLogininfor } from "@/api/system/logininfor";
+import dayjs from "dayjs";
 
 export default {
   name: "Logininfor",
@@ -168,6 +169,7 @@ export default {
     this.getList();
   },
   methods: {
+    dayjs,
     /** 查询登录日志列表 */
     getList() {
       this.loading = true;
@@ -232,11 +234,28 @@ export default {
       }).catch(() => {});
     },
     /** 导出按钮操作 */
-    handleExport() {
+    handleExport1() {
       this.download('system/logininfor/export', {
         ...this.queryParams
       }, `logininfor_${new Date().getTime()}.xlsx`)
-    }
+    },
+    handleExport() {
+      if (this.total==null || this.total===0){
+        this.$modal.alert("暂无可用数据导出");
+        return;
+      }
+      if (this.total>50000){
+        this.$modal.alert("导出数据超过5万条,请缩小查询范围后重试");
+        return;
+      }
+      this.download(
+        'system/logininfor/export',
+        {
+          ...this.queryParams,
+        },
+        `${this.$tab.getCurrentTabName()}-${dayjs().format("YYYYMMDD")}.xlsx`
+      );
+    },
   }
 };
 </script>

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

@@ -144,7 +144,7 @@
             <el-table-column label="内容" align="center" prop="contentData"/>
             <el-table-column label="发送结果" align="center" prop="result">
               <template slot-scope="scope">
-                {{ scope.row.result=='0'?'成功':'失败' }}
+                {{ scope.row.result== '0' ?'成功':'失败' }}
               </template>
             </el-table-column>
             <el-table-column label="短信内容" align="center" prop="reqDetail" show-overflow-tooltip/>

+ 0 - 11
src/views/system/user/extend.vue

@@ -36,17 +36,6 @@
                   >
                 </el-radio-group>
               </el-form-item>
-              <el-form-item v-if ="formData.duties==1" label="是否独立机构" prop="aloneDept">
-                <el-radio-group v-model="formData.aloneDept">
-                  <el-radio
-                    v-for="dict in dict.type.sys_yes_no"
-                    :key="`${dict.value}`"
-                    :label="dict.value"
-
-                  >{{ dict.label }}</el-radio
-                  >
-                </el-radio-group>
-              </el-form-item>
 
             </el-col>
             <el-col :xs="24" :sm="12" :md="8" :lg="6">

+ 1 - 2
src/views/system/user/index.vue

@@ -557,7 +557,6 @@
                   v-for="dict in dict.type.sys_normal_disable"
                   :key="`${dict.value}`"
                   :label="dict.value"
-                  :disabled="form.source == 1"
                 >{{ dict.label }}
                 </el-radio
                 >
@@ -565,7 +564,7 @@
             </el-form-item>
           </el-col>
           <el-col :span="10">
-            <el-form-item label="管理人员" label-width="180">
+            <el-form-item label="安保部门从业人员" label-width="180">
               <el-radio-group v-model="form.isManage">
                 <el-radio
                   v-for="dict in dict.type.sys_yes_no"

+ 33 - 15
src/views/system/user/mapperUser.vue

@@ -25,12 +25,12 @@
           关联人员列表
         </h3>
         <div style="margin-bottom: 10px">
-          <el-button
-            @click="openSelect"            
+          <el-button v-if="userSource === 1"
+            @click="openSelect"
             ><span class="requiredlabel">选择关联人员</span></el-button
           >
           <el-button
-            @click="deleteSelected"            
+            @click="deleteSelected"
             >批量删除</el-button
           >
         </div>
@@ -60,16 +60,31 @@
           >
           </el-table-column>
           <el-table-column
-            prop="subUserRoleNames"
+            prop="roleNames"
             label="角色"
             width="300px"
             align="center"
             show-overflow-tooltip
           >
-          </el-table-column>         
+          </el-table-column>
+          <el-table-column
+            prop="associated"
+            label="关联关系"
+            width="300px"
+            align="center"
+            show-overflow-tooltip
+          >
+            <template slot-scope="r">
+              {{
+                r.row.associated == 1
+                  ? "被关联"
+                  : "关联"
+              }}
+            </template>
+          </el-table-column>
           <el-table-column label="操作" align="center">
             <template v-slot="{ row }">
-              <el-button               
+              <el-button
                 type="text"
                 @click="removeRow(row)"
                 >删除</el-button
@@ -113,6 +128,7 @@ export default {
       selectedRows:[],
       searchUserPrap:{ source:0},
 
+      userSource: 0,
       //基础信息key
       infoKeys: [
         { label: '用户名称', key: 'username' },
@@ -143,7 +159,7 @@ export default {
       total: 0,
     };
   },
-  computed: {    
+  computed: {
   },
   created() {
   },
@@ -155,8 +171,8 @@ export default {
     },
     async show(id, other = {}) {
       this.userId=id;
-      this.tableData=[];      
-      await this.getInfo(id, other);  
+      this.tableData=[];
+      await this.getInfo(id, other);
       this.isShow = true;
     },
     getInfo(userId) {
@@ -170,6 +186,7 @@ export default {
         this.roleName = data.roleName;
         this.sex = data.sex;
         this.status = data.status;
+        this.userSource = data.source;
       });
       getUserMapper(userId).then((data) => {
         if (!data.data) return;
@@ -199,7 +216,7 @@ export default {
         }
 
       // this.tableData = this.tableData.filter((d) => selectedIds.includes(d.id));
-      
+
       // 一个机构下人只能关联一个自建账号
       for (let i = 0; i < selectList.length; i++) {
         let item = selectList[i];
@@ -214,7 +231,7 @@ export default {
             subUserOrgId: item.orgId,
             subUserOrgName: item.orgName,
             subUserAccount: item.userName,
-            subUserRoleNames: item.roleNames,
+            roleNames: item.roleNames,
           };
           this.tableData.push(tem);
           // console.log(tem,"tem")
@@ -249,7 +266,8 @@ export default {
       this.tableData.map((item) => item.subUserId);
       let data = {
         masterUserId: this.userId,
-        mapperUserIds: this.tableData && this.tableData.length>0 ? this.tableData.map((item) => item.subUserId):[]
+        mapperUserIds: this.tableData && this.tableData.length>0 ? this.tableData.map((item) => item.subUserId):[],
+        userSource: this.userSource
       }
       updateUserMapper(data).then((response) => {
         this.$modal.msgSuccess("关联成功");
@@ -260,9 +278,9 @@ export default {
     onClose()
     {
       this.userId=null;
-      this.tableData=[]; 
-      this.isShow=false;     
-    } 
+      this.tableData=[];
+      this.isShow=false;
+    }
   }
 };
 </script>

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

@@ -71,7 +71,7 @@ export let json = [
   },
   {
     "id": null,
-    "isDuty": '1',
+    "isDuty": '0',
     "workTimeSetId": null,
     "isWorkday": '0',
     "dayOfWeek": 7,
@@ -85,7 +85,7 @@ export let json = [
   },
   {
     "id": null,
-    "isDuty": '1',
+    "isDuty": '0',
     "workTimeSetId": null,
     "isWorkday": '0',
     "dayOfWeek": 1,

+ 19 - 0
src/views/system/workTimeSet/workTime.vue

@@ -67,6 +67,17 @@
                   />
                 </el-select>
               </el-form-item>
+                <el-form-item label="值班打卡" prop="isDuty">
+                  <el-select v-model="queryParams.isDuty" clearable placeholder="请选择">
+
+                    <el-option
+                      v-for="item in dutys"
+                      :key="item.value"
+                      :label="item.label"
+                      :value="item.value">
+                    </el-option>
+                  </el-select>
+              </el-form-item>
               <el-form-item label="未配置作息" prop="noWorkTime">
                 <el-switch
                   v-model="queryParams.noWorkTime"
@@ -247,6 +258,13 @@ export default {
   components: { DataRangePicker, OrgTree, DialogEdit, DialogAdd,DialogDetail },
   data() {
     return {
+      dutys:[{
+        value: 1,
+        label: '是'
+      }, {
+        value: 0,
+        label: '否'
+      }],
       nowTime: null,
       // 遮罩层
       loading: false,
@@ -278,6 +296,7 @@ export default {
         isEnable: null,
         pageNum: 1,
         pageSize: 10,
+        isDuty: null,
         orgType:null,
         range: [sDate, eDate],
         noWorkTime:false,

+ 8 - 1
src/views/warn/index.vue

@@ -482,7 +482,14 @@ export default {
 
     /** 导出按钮操作 */
     handleExport() {
-      console.log(this);
+      if (this.total==null || this.total===0){
+        this.$modal.alert("暂无可用数据导出");
+        return;
+      }
+      if (this.total>50000){
+        this.$modal.alert("导出数据超过5万条,请缩小查询范围后重试");
+        return;
+      }
       this.download(
         "core/retrievalTask/export",
         {