|
@@ -0,0 +1,170 @@
|
|
|
+<template>
|
|
|
+ <div class="mainContentBox">
|
|
|
+ <avue-crud
|
|
|
+ ref="crudRef"
|
|
|
+ v-model:search="search"
|
|
|
+ v-model="form"
|
|
|
+ :data="data"
|
|
|
+ :option="option"
|
|
|
+ v-model:page="page"
|
|
|
+ @row-save="createRow"
|
|
|
+ @row-del="deleteRow"
|
|
|
+ @row-update="updateRow"
|
|
|
+ @search-change="searchChange"
|
|
|
+ @search-reset="resetChange"
|
|
|
+ @size-change="dataList"
|
|
|
+ @current-change="dataList"
|
|
|
+ @selection-change="selectionChange"
|
|
|
+ :before-open="onBeforeOpen"
|
|
|
+ >
|
|
|
+ </avue-crud>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+<script setup lang="ts">
|
|
|
+import {ref, getCurrentInstance} from "vue";
|
|
|
+import {useCrud} from "@/hooks/userCrud";
|
|
|
+
|
|
|
+// 传入一个url,后面不带/
|
|
|
+const {form, data, option, search, page, toDeleteIds, Methords, Utils} =
|
|
|
+ useCrud({
|
|
|
+ src: "/api/v1/attendanceStatistics",
|
|
|
+ });
|
|
|
+const {dataList, createRow, updateRow, deleteRow, searchChange, resetChange} =
|
|
|
+ Methords; //增删改查
|
|
|
+const {selectionChange, multipleDelete} = Methords; //选中和批量删除事件
|
|
|
+const {checkBtnPerm, downloadTemplate, exportData} = Utils; //按钮权限等工具
|
|
|
+const deptTypes = ref([])
|
|
|
+const crudRef = ref(null); //crudRef.value 获取avue-crud对象
|
|
|
+
|
|
|
+onMounted(() => {
|
|
|
+ // console.log("crudRef", crudRef)
|
|
|
+ dataList();
|
|
|
+});
|
|
|
+const multipleRow = ref(true);
|
|
|
+const productionLineRef = ref(null);
|
|
|
+const startCreat = () => {
|
|
|
+ productionLineRef.value?.mergeOption({
|
|
|
+ selection: true,
|
|
|
+ reserveSelection: true,
|
|
|
+ });
|
|
|
+};
|
|
|
+const addNumbers = () => {
|
|
|
+ nextTick(() => {
|
|
|
+ if (productionLineRef.value) {
|
|
|
+ productionLineRef.value?.mergeOption({
|
|
|
+ selection: true,
|
|
|
+ reserveSelection: true,
|
|
|
+ });
|
|
|
+ productionLineRef.value.startSelect();
|
|
|
+ }
|
|
|
+ });
|
|
|
+};
|
|
|
+// 设置表格列或者其他自定义的option
|
|
|
+option.value = Object.assign(option.value, {
|
|
|
+ searchEnter: false,
|
|
|
+ selection: false,
|
|
|
+ menuWidth: 200,
|
|
|
+ border: true,
|
|
|
+ index: true,
|
|
|
+ delBtn: true,
|
|
|
+ addBtn: false,
|
|
|
+ viewBtn: false,
|
|
|
+ editBtn: false,
|
|
|
+ rowKey: "id",
|
|
|
+ column: [
|
|
|
+ {
|
|
|
+ label: "班组名称",
|
|
|
+ prop: "deptName",
|
|
|
+ search: true,
|
|
|
+ overHidden: true,
|
|
|
+ rules: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: "请输入deptName",
|
|
|
+ trigger: "blur",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "班组人数",
|
|
|
+ prop: "deptNum",
|
|
|
+ search: false,
|
|
|
+ overHidden: true,
|
|
|
+ type: "number",
|
|
|
+ min: 1,
|
|
|
+ max: 99999,
|
|
|
+ rules: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: "班组人数不能为空",
|
|
|
+ trigger: "trigger",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "应出勤",
|
|
|
+ prop: "answerNum",
|
|
|
+ search: false,
|
|
|
+ overHidden: true,
|
|
|
+ type: "number",
|
|
|
+ min: 1,
|
|
|
+ max: 99999,
|
|
|
+ rules: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: "应出勤人数不能为空",
|
|
|
+ trigger: "trigger",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "实出勤",
|
|
|
+ prop: "practicalNum",
|
|
|
+ search: false,
|
|
|
+ overHidden: true,
|
|
|
+ type: "number",
|
|
|
+ min: 1,
|
|
|
+ max: 99999,
|
|
|
+ rules: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: "实出勤人数不能为空",
|
|
|
+ trigger: "trigger",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "出勤率",
|
|
|
+ prop: "attendanceRate",
|
|
|
+ search: false,
|
|
|
+ overHidden: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "创建时间",
|
|
|
+ prop: "created",
|
|
|
+ display: false,
|
|
|
+ },
|
|
|
+ ],
|
|
|
+});
|
|
|
+
|
|
|
+const tableData = ref<any[]>([]); //选中的行
|
|
|
+const onBeforeOpen = (done) => {
|
|
|
+ console.log("before open");
|
|
|
+ tableData.value = [];
|
|
|
+ form.value.dtos = [];
|
|
|
+ done();
|
|
|
+};
|
|
|
+const onSelectedFinish = (selectedValue) => {
|
|
|
+ let toAddRow = JSON.parse(JSON.stringify(selectedValue));
|
|
|
+ let tableData_ids = tableData.value.map((item) => item.id);
|
|
|
+ toAddRow = toAddRow.filter((item) => {
|
|
|
+ return tableData_ids.indexOf(item.id) === -1;
|
|
|
+ });
|
|
|
+ tableData.value.push(...toAddRow);
|
|
|
+ form.value.dtos = tableData.value;
|
|
|
+};
|
|
|
+const deleteTableRow = (index: number) => {
|
|
|
+ tableData.value.splice(index, 1);
|
|
|
+ form.value.dtos = tableData.value;
|
|
|
+};
|
|
|
+</script>
|