ソースを参照

fix:班组出勤统计

liziliang 1 ヶ月 前
コミット
a092582543
1 ファイル変更170 行追加0 行削除
  1. 170 0
      src/views/plan/attendanceStatistics/index.vue

+ 170 - 0
src/views/plan/attendanceStatistics/index.vue

@@ -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>