|
|
@@ -35,6 +35,10 @@
|
|
|
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
|
|
|
v-hasPermi="['attendance:info:create']">新增</el-button>
|
|
|
</el-col>
|
|
|
+ <el-col :span="1.5">
|
|
|
+ <el-button type="info" plain icon="el-icon-upload2" size="mini" @click="handleImport"
|
|
|
+ v-hasPermi="['attendance:info:import']">导入</el-button>
|
|
|
+ </el-col>
|
|
|
<el-col :span="1.5">
|
|
|
<el-button type="warning" icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
|
|
|
v-hasPermi="['attendance:info:export']">导出</el-button>
|
|
|
@@ -103,29 +107,17 @@
|
|
|
</el-col>
|
|
|
<el-col :span="24">
|
|
|
<el-form-item label="上班打卡" prop="workStartTime">
|
|
|
- <el-time-picker
|
|
|
- v-model="form.workStartTime"
|
|
|
- value-format="HH:mm"
|
|
|
- format="HH:mm"
|
|
|
- :picker-options="{
|
|
|
- selectableRange: '00:00:00 - 23:59:59'
|
|
|
- }"
|
|
|
- style="width: 100%;"
|
|
|
- placeholder="上班时间">
|
|
|
+ <el-time-picker v-model="form.workStartTime" value-format="HH:mm" format="HH:mm" :picker-options="{
|
|
|
+ selectableRange: '00:00:00 - 23:59:59'
|
|
|
+ }" style="width: 100%;" placeholder="上班时间">
|
|
|
</el-time-picker>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="24">
|
|
|
<el-form-item label="下班打卡" prop="workEndTime">
|
|
|
- <el-time-picker
|
|
|
- v-model="form.workEndTime"
|
|
|
- value-format="HH:mm"
|
|
|
- format="HH:mm"
|
|
|
- :picker-options="{
|
|
|
- selectableRange: '00:00:00 - 23:59:59'
|
|
|
- }"
|
|
|
- style="width: 100%;"
|
|
|
- placeholder="下班时间">
|
|
|
+ <el-time-picker v-model="form.workEndTime" value-format="HH:mm" format="HH:mm" :picker-options="{
|
|
|
+ selectableRange: '00:00:00 - 23:59:59'
|
|
|
+ }" style="width: 100%;" placeholder="下班时间">
|
|
|
</el-time-picker>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
@@ -197,6 +189,35 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ </el-dialog>
|
|
|
+ <!-- 导入对话框 -->
|
|
|
+ <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
|
|
|
+ <el-upload
|
|
|
+ ref="upload"
|
|
|
+ :limit="1"
|
|
|
+ accept=".xlsx, .xls"
|
|
|
+ :headers="upload.headers"
|
|
|
+ :action="upload.url + '?updateSupport=' + upload.updateSupport"
|
|
|
+ :disabled="upload.isUploading"
|
|
|
+ :on-progress="handleFileUploadProgress"
|
|
|
+ :on-success="handleFileSuccess"
|
|
|
+ :auto-upload="false"
|
|
|
+ drag
|
|
|
+ >
|
|
|
+ <i class="el-icon-upload"></i>
|
|
|
+ <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
|
|
|
+ <div class="el-upload__tip text-center" slot="tip">
|
|
|
+ <div class="el-upload__tip" slot="tip">
|
|
|
+ <el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的数据
|
|
|
+ </div>
|
|
|
+ <span>仅允许导入xls、xlsx格式文件。</span>
|
|
|
+ <el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate">下载模板</el-link>
|
|
|
+ </div>
|
|
|
+ </el-upload>
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
+ <el-button type="primary" @click="submitFileForm">确 定</el-button>
|
|
|
+ <el-button @click="upload.open = false">取 消</el-button>
|
|
|
+ </div>
|
|
|
</el-dialog>
|
|
|
<PeopleSelect ref="peopleSelect" type="single" :isCheck="true" :open="singlePeopleOpen"
|
|
|
@cancel="singlePeopleOpen = false" @submit="submitSingle"></PeopleSelect>
|
|
|
@@ -211,6 +232,7 @@ import PeopleSelect from "@/components/PeopleSelect/index.vue";
|
|
|
import Treeselect from "@riophae/vue-treeselect";
|
|
|
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
|
|
|
import { listDept } from "@/api/system/dept";
|
|
|
+import { getBaseHeader } from "@/utils/request";
|
|
|
export default {
|
|
|
name: "SystemDictType",
|
|
|
components: {
|
|
|
@@ -238,6 +260,21 @@ export default {
|
|
|
singlePeopleOpen: false,
|
|
|
open: false,
|
|
|
openDetail: false,
|
|
|
+ // 导入参数
|
|
|
+ upload: {
|
|
|
+ // 是否显示弹出层(导入)
|
|
|
+ open: false,
|
|
|
+ // 弹出层标题(导入)
|
|
|
+ title: "",
|
|
|
+ // 是否禁用上传
|
|
|
+ isUploading: false,
|
|
|
+ // 是否更新已经存在的数据
|
|
|
+ updateSupport: 0,
|
|
|
+ // 设置上传的请求头部
|
|
|
+ headers: getBaseHeader(),
|
|
|
+ // 上传的地址
|
|
|
+ url: process.env.VUE_APP_BASE_API + '/admin-api/personnel/attendance/info/import-excel'
|
|
|
+ },
|
|
|
// 查询参数
|
|
|
queryParams: {
|
|
|
pageNo: 1,
|
|
|
@@ -333,17 +370,17 @@ export default {
|
|
|
// 表单重置
|
|
|
reset() {
|
|
|
this.files = [],
|
|
|
- this.form = {
|
|
|
- employeeName: undefined,
|
|
|
- employeeId: undefined,
|
|
|
- deptName: undefined,
|
|
|
- position: undefined,
|
|
|
- employeeMobile: undefined,
|
|
|
- attendanceDate: undefined,
|
|
|
+ this.form = {
|
|
|
+ employeeName: undefined,
|
|
|
+ employeeId: undefined,
|
|
|
+ deptName: undefined,
|
|
|
+ position: undefined,
|
|
|
+ employeeMobile: undefined,
|
|
|
+ attendanceDate: undefined,
|
|
|
|
|
|
- workStartTime: undefined,
|
|
|
- workEndTime: undefined,
|
|
|
- };
|
|
|
+ workStartTime: undefined,
|
|
|
+ workEndTime: undefined,
|
|
|
+ };
|
|
|
this.resetForm("form");
|
|
|
},
|
|
|
/** 搜索按钮操作 */
|
|
|
@@ -427,6 +464,32 @@ export default {
|
|
|
this.$download.excel(response, '员工考勤信息.xls');
|
|
|
this.exportLoading = false;
|
|
|
}).catch(() => { });
|
|
|
+ },
|
|
|
+ /** 导入按钮操作 */
|
|
|
+ handleImport() {
|
|
|
+ this.upload.title = "导入";
|
|
|
+ this.upload.open = true;
|
|
|
+ },
|
|
|
+ /** 下载模板操作 */
|
|
|
+ importTemplate() {
|
|
|
+ this.download('personnel/attendance/info/get-import-template', {
|
|
|
+ }, `template_${new Date().getTime()}.xlsx`)
|
|
|
+ },
|
|
|
+ // 文件上传中处理
|
|
|
+ handleFileUploadProgress(event, file, fileList) {
|
|
|
+ this.upload.isUploading = true;
|
|
|
+ },
|
|
|
+ // 文件上传成功处理
|
|
|
+ handleFileSuccess(response, file, fileList) {
|
|
|
+ this.upload.open = false;
|
|
|
+ this.upload.isUploading = false;
|
|
|
+ this.$refs.upload.clearFiles();
|
|
|
+ this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "导入结果", { dangerouslyUseHTMLString: true });
|
|
|
+ this.getList();
|
|
|
+ },
|
|
|
+ // 提交上传文件
|
|
|
+ submitFileForm() {
|
|
|
+ this.$refs.upload.submit();
|
|
|
}
|
|
|
}
|
|
|
};
|