Explorar o código

Merge branch 'master' of http://223.75.76.159:9090/xiao547607/smart-community-server-portal

xiao547607 %!s(int64=5) %!d(string=hai) anos
pai
achega
4e7d0dc097

+ 7 - 1
src/api/base/personInfo.js

@@ -72,6 +72,11 @@ function enabledApp(formData) {
   return request.post(constant.serverUrl + "/base/personInfo/enabledApp", formData);
 }
 
+function enabledWechatNotice(formData) {
+  //接收微信通知
+  return request.post(constant.serverUrl + "/base/personInfo/enabledWechatNotice", formData);
+}
+
 function enabledGuest(formData) {
   //访客授权
   return request.post(constant.serverUrl + "/base/personInfo/enabledGuest", formData);
@@ -88,5 +93,6 @@ function dataSync(idList) {
 
 export default {
   pageList, create, edit, add, update, remove, batchRemove, exportXls,
-  enabledFace, enabledCard, enabledApp, enabledGuest, dataSync, enabledFaceList
+  enabledFace, enabledCard, enabledApp, enabledGuest, dataSync, enabledFaceList,
+  enabledWechatNotice
 }

+ 5 - 2
src/api/business/workAttendance.js

@@ -1,11 +1,14 @@
 import request from '@/utils/request'
 import constant from '@/constant'
 
+function statList(formData){
+  return request.post(constant.serverUrl + "/business/workAttendance/statList", formData);
+}
+
 function exportXls(formData){
   return request.post(constant.serverUrl + "/business/workAttendance/exportXls", formData);
 }
 
-
 export default {
-  exportXls
+  statList,exportXls
 }

+ 9 - 9
src/views/base/messageNotice-detail.vue

@@ -27,7 +27,7 @@
             placeholder="请选择"
             style="width:100% "
           >
-            <el-option
+            <el-option 
               v-for="company in companyResult"
               :key="company.id"
               :label="company.name"
@@ -69,7 +69,14 @@ export default {
       loading: false,
       submitting: false,
       formModel: {},
-      companyResult: ""
+      companyResult: "",
+      editorOption: {
+        modules: {
+          toolbar: "title" // 设置文本编辑器的头部是否展示
+        },
+        placeholder: "请输入通知内容", // 文本框为空时 , 占位文本
+        theme: "snow" // 或者为 `bubble`
+      }
     };
   },
   methods: {
@@ -114,13 +121,6 @@ export default {
           });
         }
       });
-    },
-    editorOption: {
-      modules: {
-        toolbar: "title" // 设置文本编辑器的头部是否展示
-      },
-      placeholder: "文本占位", // 文本框为空时 , 占位文本
-      theme: "snow" // 或者为 `bubble`
     }
   },
   mounted: function() {

+ 26 - 4
src/views/base/personInfo-list.vue

@@ -242,6 +242,17 @@
           ></el-switch>
         </template>
       </el-table-column>
+      <el-table-column label="接收微信通知">
+        <template slot-scope="{row}">
+          <el-switch
+            v-model="row.wechatNoticeEnabled"
+            @change="enabledTo(row,'wechatNotice','')"
+            active-color="#13ce66"
+            inactive-color="#ff4949"
+            :disabled="disabled"
+          ></el-switch>
+        </template>
+      </el-table-column>
       <el-table-column prop="openId" label="微信openid" width="180"></el-table-column>
       <el-table-column label="操作" width="300" fixed="right">
         <template slot-scope="{row}">
@@ -786,6 +797,14 @@ export default {
     },
     enabledTo(row, type, value) {
       var self = this;
+
+      if(type=="wechatNotice"){
+        var formData = new FormData();
+        formData.append("id", row.id);
+
+        personInfoApi.enabledWechatNotice(formData);
+      }
+      else{
       this.$confirm("该操作会对设备上的信息进行操作,请确认?", "提示", {
         confirmButtonText: "确定",
         cancelButtonText: "取消",
@@ -804,14 +823,16 @@ export default {
               personInfoApi.enabledApp(formData);
             } else if ("guest" == type) {
               personInfoApi.enabledGuest(formData);
+            }else if ("wechatNotice" == type) {
+              personInfoApi.enabledWechatNotice(formData);
             }
 
             //关闭开关,是自动同步到服务器
             //打开开关需要手动同步服务器
-            if (!value) {
-              //如果是打开开关,则修改状态
-              row.faceBound = false;
-            }
+            // if (!value) {
+            //   //如果是打开开关,则修改状态
+            //   row.faceBound = false;
+            // }
 
             self.disabled = true;
 
@@ -834,6 +855,7 @@ export default {
             row.faceEnabled = true;
           }
         });
+      }
     },
     uploadData(record) {
       //同步人脸数据

+ 150 - 17
src/views/business/workAttendance-list.vue

@@ -50,12 +50,18 @@
           ></el-date-picker>
         </el-form-item>
         <el-form-item>
+           <el-button
+            type="primary"
+            size="mini"
+            style="margin-left: 8px"
+            @click="handleQuery('queryForm')"
+          >查询</el-button>&nbsp;
           <el-button
             type="info"
             size="mini"
             style="margin-left: 8px"
             @click="handleReset('queryForm')"
-          >重置</el-button>&nbsp;
+          >重置</el-button>
         </el-form-item>
       </div>
     </el-form>
@@ -67,9 +73,39 @@
         plain
         icon="el-icon-download"
         :loading="downloadLoading"
-        @click="downloadXls"
+        @click="exportXls"
       >导出数据</el-button>
     </el-row>
+    <el-table
+      ref="table"
+      stripe
+      :data="tableData"
+      :height="tableHeight"
+      style="width: 100%">
+      <el-table-column label="序号" fixed="left" type="index"></el-table-column>
+      <el-table-column label="姓名" fixed="left" prop="name"></el-table-column>
+      <el-table-column label="单位" prop="company"></el-table-column>
+      <el-table-column label="部门" prop="department"></el-table-column>
+      <el-table-column label="工号" prop="jobNumber"></el-table-column>
+      <el-table-column label="出勤天数" prop="workDays"></el-table-column>
+      <el-table-column label="休息天数" prop="restDays"></el-table-column>
+      <el-table-column label="迟到次数" prop="lateNum"></el-table-column>
+      <el-table-column label="早退次数" prop="leaveNum"></el-table-column>
+      <el-table-column label="上班缺卡次数" prop="missCardOnWorkCount"></el-table-column>
+      <el-table-column label="下班缺卡次数" prop="missCardOffWorkCount"></el-table-column>
+      <el-table-column label="旷工天数" prop="missCardAllDayCount"></el-table-column>
+      <template v-for="col in dayColumns">
+        <el-table-column :label="col.label" :prop="col.name" :key="col.name" width="200px">
+          <template slot-scope="{row}">
+            <div style="display:flex;flex-direction:column;">
+            <template v-for="(item,index) in row.workAttendanceMap[col.name]">
+                <div v-html="showItem(item)" :key="index"></div>
+            </template>
+            </div>
+          </template> 
+        </el-table-column>
+      </template>
+    </el-table>
   </div>
 </template>
 <script>
@@ -110,7 +146,17 @@ export default {
       downloadLoading: false,
       tableHeight: "",
       timeRangesDefaultTime: [],
-      companyResult: ""
+      companyResult: "",
+      editorOption: {
+        modules: {
+          toolbar: "title" // 设置文本编辑器的头部是否展示
+        },
+        placeholder: "", // 文本框为空时 , 占位文本
+        theme: "snow" // 或者为 `bubble`
+      },
+      downloadUrl: "",
+      dayColumns: [],
+      tmplKey: ""
     };
   },
   created() {
@@ -127,15 +173,52 @@ export default {
     this.getCurrentMonthFirst();
   },
   methods: {
-    handleReset(name) {
-      this.$refs[name].resetFields();
+    showItem(item){
+      var content = [];
+
+      var arr = item.recordTime.split(' ');
+
+      if(arr.length>1){
+        content.push(arr[1]);
+      }
+      else{
+        content.push(arr[0]);
+      }
+
+      content.push(" ");
+
+      if(item.classifier==1){
+        content.push("上班");
+      }
+      else{
+        content.push("下班");
+      }
+
+      var fontColor = "";
+
+      if(item.result=="0"){
+        content.push("缺卡");
+        fontColor = "red";
+      }
+      else if(item.result=="1"){
+        content.push("打卡");
+        fontColor = "green";
+      }
+      else if(item.result=="2"){
+        content.push("迟到");
+      }
+      else if(item.result=="3"){
+        content.push("早退");
+      }
+
+      return `<font color='${fontColor}'>` + content.join("") + '</font>';
     },
-    downloadXls() {
-      //导出
+    handleQuery(){
       var self = this;
+
       this.$refs["queryForm"].validate(valid => {
         if (valid) {
-          self.downloadLoading = true;
+          self.downloadLoading = true;      
           var formData = new FormData();
 
           formData.append("companyId", self.queryModel.companyId);
@@ -153,19 +236,69 @@ export default {
           formData.append("startDate", startDate);
           formData.append("endDate", endDate);
 
+          workAttendanceApi.statList(formData).then(function(response) {
+            var jsonData = response.data;
+
+            self.downloadLoading = false;
+            
+            if (jsonData.result) {
+              self.tableData = jsonData.data.list;
+              self.tableHeight = window.innerHeight - 280;
+              self.dayColumns = jsonData.data.dayColumns;
+              self.tmplKey = jsonData.data.tmplKey;
+            } else {
+              self.$message({
+                type: "warning",
+                message: jsonData.message
+              });
+            }
+          });
+        }
+      });
+    },
+    handleReset(name) {
+      this.$refs[name].resetFields();
+    },
+    exportXls() {
+      var self = this;
+
+      //导出
+      this.$refs["queryForm"].validate(valid => {
+        if (valid) {
+          if(self.tmplKey==null || self.tmplKey.length==0){
+            self.$message.warning("请先查询!");
+            return;
+          }
+
+          self.downloadLoading = true;
+
+          var formData = new FormData();
+          formData.append("tmplKey", self.tmplKey);
+          
+          var startDate = "";
+          var endDate = "";
+          var timeRanges = self.queryModel.timeRanges + "";
+
+          if (timeRanges != "" && timeRanges != null) {
+            timeRanges = timeRanges.split(",");
+            startDate = timeRanges[0];
+            endDate = timeRanges[1];
+          }
+
+          formData.append("startDate", startDate);
+          formData.append("endDate", endDate);
+
           workAttendanceApi.exportXls(formData).then(function(response) {
             var jsonData = response.data;
+
             self.downloadLoading = false;
+            
             if (jsonData.result) {
-              if (jsonData.data != null) {
-                self.$message({
-                  type: "success",
-                  showClose: true,
-                  dangerouslyUseHTMLString: true,
-                  message: `导出成功,<a href="${jsonData.data}" target="_blank">请点击下载考勤报表</a>&nbsp;`,
-                  duration: 30000
-                });
-              }
+              self.$message({
+                type: "success",
+                message: `报表已生成,<a href="${jsonData.data}">请点击链接下载</a>`,
+                dangerouslyUseHTMLString: true
+              });
             } else {
               self.$message({
                 type: "warning",