spring
2 天以前 a4f4241f24d171c49b52f81eae364bf79a7d7005
fix: 甘肃祁连牧场企业合同中缺失转正和调岗这两个功能
已添加2个文件
已修改5个文件
312 ■■■■■ 文件已修改
src/api/personnelManagement/employeeRecord.js 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/inventoryManagement/issueManagement/index.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/personnelManagement/employeeRecord/components/regularizeDia.vue 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/personnelManagement/employeeRecord/components/transferDia.vue 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/personnelManagement/employeeRecord/index.vue 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/personnelManagement/onboarding/components/formDia.vue 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/personnelManagement/onboarding/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/personnelManagement/employeeRecord.js
@@ -15,4 +15,22 @@
        method: 'get',
        params: query,
    })
}
// å‘˜å·¥è½¬æ­£
export function staffRegularize(data) {
    return request({
        url: '/staff/staffOnJob/regularize',
        method: 'post',
        data,
    })
}
// å‘˜å·¥è°ƒå²—
export function staffTransferPost(data) {
    return request({
        url: '/staff/staffOnJob/transferPost',
        method: 'post',
        data,
    })
}
src/views/inventoryManagement/issueManagement/index.vue
@@ -53,14 +53,14 @@
    </div>
    <el-dialog v-model="dialogFormVisible" :title="'新增出库'" width="40%" @close="closeDia">
      <el-form :model="form" label-width="140px" label-position="top" :rules="rules" ref="formRef">
        <el-form-item label="出库数量:" prop="salesContractNo">
        <el-form-item label="出库数量:" prop="inboundQuantity">
          <el-input-number :step="0.01" :min="0" style="width: 100%" v-model="form.inboundQuantity" placeholder="请输入" clearable />
        </el-form-item>
        <el-form-item label="出库日期:" prop="projectName">
        <el-form-item label="出库日期:" prop="inboundTime">
          <el-date-picker style="width: 100%" v-model="form.inboundTime" value-format="YYYY-MM-DD" format="YYYY-MM-DD"
            type="date" placeholder="请选择" clearable />
        </el-form-item>
        <el-form-item label="出库人:" prop="entryPerson">
        <el-form-item label="出库人:" prop="nickName">
          <el-select v-model="form.nickName" placeholder="请选择" clearable>
            <el-option v-for="item in userList" :key="item.userId" :label="item.nickName" :value="item.userId" />
          </el-select>
@@ -121,7 +121,7 @@
  rules: {
    inboundTime: [{ required: true, message: "请选择", trigger: "change" }],
    inboundQuantity: [{ required: true, message: "请输入", trigger: "blur" }],
    nickname: [{ required: true, message: "请选择", trigger: "change" }]
    nickName: [{ required: true, message: "请选择", trigger: "change" }]
  }
})
const { searchForm, form, rules } = toRefs(data)
src/views/personnelManagement/employeeRecord/components/regularizeDia.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,128 @@
<template>
  <el-dialog v-model="visible" title="员工转正" width="600px" destroy-on-close>
    <el-form ref="formRef" :model="form" :rules="rules" label-width="110px">
      <el-form-item label="员工编号" prop="staffNo">
        <el-input v-model="form.staffNo" disabled />
      </el-form-item>
      <el-form-item label="员工姓名" prop="staffName">
        <el-input v-model="form.staffName" disabled />
      </el-form-item>
      <el-form-item label="当前岗位" prop="currentPost">
        <el-input v-model="form.currentPost" disabled />
      </el-form-item>
      <el-form-item label="转正日期" prop="regularDate">
        <el-date-picker
            v-model="form.regularDate"
            value-format="YYYY-MM-DD"
            type="date"
            placeholder="请选择转正日期"
            style="width: 100%"
        />
      </el-form-item>
      <el-form-item label="试用评估" prop="assessmentResult">
        <el-select v-model="form.assessmentResult" placeholder="请选择评估结果" style="width: 100%">
          <el-option label="通过" value="通过" />
          <el-option label="延期" value="延期" />
          <el-option label="不通过" value="不通过" />
        </el-select>
      </el-form-item>
      <el-form-item v-if="form.assessmentResult === '延期'" label="延期月份数" prop="delayMonths">
        <el-input-number v-model="form.delayMonths" :min="1" :max="24" :step="1" style="width: 100%" />
      </el-form-item>
      <el-form-item label="备注" prop="remark">
        <el-input v-model="form.remark" type="textarea" :rows="3" maxlength="200" show-word-limit />
      </el-form-item>
    </el-form>
    <template #footer>
      <el-button @click="visible = false">取消</el-button>
      <el-button type="primary" :loading="loading" @click="submit">确认</el-button>
    </template>
  </el-dialog>
</template>
<script setup>
import {reactive, ref} from "vue";
import dayjs from "dayjs";
import {ElMessage} from "element-plus";
import {staffRegularize} from "@/api/personnelManagement/employeeRecord.js";
const emit = defineEmits(["success"]);
const visible = ref(false);
const loading = ref(false);
const formRef = ref();
const form = reactive({
  id: undefined,
  staffNo: "",
  staffName: "",
  currentPost: "",
  regularDate: "",
  assessmentResult: "通过",
  delayMonths: undefined,
  remark: "",
});
const validateDelayMonths = (rule, value, callback) => {
  if (form.assessmentResult !== "延期") {
    callback();
    return;
  }
  if (!value) {
    callback(new Error("请选择延期月份数"));
    return;
  }
  callback();
};
const validateRegularDate = (rule, value, callback) => {
  if (form.assessmentResult === "延期") {
    callback();
    return;
  }
  if (!value) {
    callback(new Error("请选择转正日期"));
    return;
  }
  callback();
};
const rules = {
  regularDate: [{validator: validateRegularDate, trigger: "change"}],
  assessmentResult: [{required: true, message: "请选择试用评估", trigger: "change"}],
  delayMonths: [{validator: validateDelayMonths, trigger: "change"}],
};
const openDialog = (row) => {
  form.id = row.id;
  form.staffNo = row.staffNo || "";
  form.staffName = row.staffName || "";
  form.currentPost = row.postJob || "";
  form.regularDate = dayjs().format("YYYY-MM-DD");
  form.assessmentResult = "通过";
  form.delayMonths = undefined;
  form.remark = "";
  visible.value = true;
};
const submit = () => {
  formRef.value?.validate(async (valid) => {
    if (!valid) return;
    loading.value = true;
    try {
      await staffRegularize({
        ...form,
        regularDate: form.assessmentResult === "延期" ? undefined : form.regularDate,
        delayMonths: form.assessmentResult === "延期" ? form.delayMonths : undefined,
        staffState: 1,
      });
      ElMessage.success("转正成功");
      visible.value = false;
      emit("success");
    } finally {
      loading.value = false;
    }
  });
};
defineExpose({
  openDialog,
});
</script>
<style scoped></style>
src/views/personnelManagement/employeeRecord/components/transferDia.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,105 @@
<template>
  <el-dialog v-model="visible" title="员工调岗" width="600px" destroy-on-close>
    <el-form ref="formRef" :model="form" :rules="rules" label-width="110px">
      <el-form-item label="员工编号" prop="staffNo">
        <el-input v-model="form.staffNo" disabled />
      </el-form-item>
      <el-form-item label="员工姓名" prop="staffName">
        <el-input v-model="form.staffName" disabled />
      </el-form-item>
      <el-form-item label="原岗位" prop="originPost">
        <el-input v-model="form.originPost" disabled />
      </el-form-item>
      <el-form-item label="新岗位" prop="targetPost">
        <el-input v-model="form.targetPost" placeholder="请输入新岗位" />
      </el-form-item>
      <el-form-item label="调岗日期" prop="transferDate">
        <el-date-picker
            v-model="form.transferDate"
            value-format="YYYY-MM-DD"
            type="date"
            placeholder="请选择调岗日期"
            style="width: 100%"
        />
      </el-form-item>
      <el-form-item label="调岗类型" prop="transferType">
        <el-select v-model="form.transferType" placeholder="请选择调岗类型" style="width: 100%">
          <el-option label="平调" value="平调" />
          <el-option label="晋升" value="晋升" />
          <el-option label="降级" value="降级" />
          <el-option label="临时调岗" value="临时调岗" />
        </el-select>
      </el-form-item>
      <el-form-item label="调岗原因" prop="transferReason">
        <el-input v-model="form.transferReason" type="textarea" :rows="3" maxlength="200" show-word-limit />
      </el-form-item>
    </el-form>
    <template #footer>
      <el-button @click="visible = false">取消</el-button>
      <el-button type="primary" :loading="loading" @click="submit">确认</el-button>
    </template>
  </el-dialog>
</template>
<script setup>
import {reactive, ref} from "vue";
import dayjs from "dayjs";
import {ElMessage} from "element-plus";
import {staffTransferPost} from "@/api/personnelManagement/employeeRecord.js";
const emit = defineEmits(["success"]);
const visible = ref(false);
const loading = ref(false);
const formRef = ref();
const form = reactive({
  id: undefined,
  staffNo: "",
  staffName: "",
  originPost: "",
  targetPost: "",
  transferDate: "",
  transferType: "",
  transferReason: "",
});
const rules = {
  targetPost: [{required: true, message: "请输入新岗位", trigger: "blur"}],
  transferDate: [{required: true, message: "请选择调岗日期", trigger: "change"}],
  transferType: [{required: true, message: "请选择调岗类型", trigger: "change"}],
  transferReason: [{required: true, message: "请输入调岗原因", trigger: "blur"}],
};
const openDialog = (row) => {
  form.id = row.id;
  form.staffNo = row.staffNo || "";
  form.staffName = row.staffName || "";
  form.originPost = row.postJob || "";
  form.targetPost = "";
  form.transferDate = dayjs().format("YYYY-MM-DD");
  form.transferType = "";
  form.transferReason = "";
  visible.value = true;
};
const submit = () => {
  formRef.value?.validate(async (valid) => {
    if (!valid) return;
    loading.value = true;
    try {
      await staffTransferPost({
        ...form,
      });
      ElMessage.success("调岗成功");
      visible.value = false;
      emit("success");
    } finally {
      loading.value = false;
    }
  });
};
defineExpose({
  openDialog,
});
</script>
<style scoped></style>
src/views/personnelManagement/employeeRecord/index.vue
@@ -14,6 +14,12 @@
        <span  style="margin-left: 10px" class="search_title">合同结束日期:</span>
        <el-date-picker  v-model="searchForm.entryDate" value-format="YYYY-MM-DD" format="YYYY-MM-DD" type="daterange"
                         placeholder="请选择" clearable @change="changeDaterange" />
        <!-- <span style="margin-left: 10px" class="search_title">状态:</span>
        <el-select v-model="searchForm.staffState" clearable placeholder="请选择状态" style="width: 140px">
          <el-option label="离职" :value="0" />
          <el-option label="在职" :value="1" />
          <el-option label="试用" :value="2" />
        </el-select> -->
        <el-button type="primary" @click="handleQuery" style="margin-left: 10px"
        >搜索</el-button
        >
@@ -38,6 +44,8 @@
      ></PIMTable>
    </div>
    <form-dia ref="formDia" @close="handleQuery"></form-dia>
    <regularize-dia ref="regularizeDiaRef" @success="getList" />
    <transfer-dia ref="transferDiaRef" @success="getList" />
  </div>
</template>
@@ -45,6 +53,8 @@
import { Search } from "@element-plus/icons-vue";
import {onMounted, ref} from "vue";
import FormDia from "@/views/personnelManagement/employeeRecord/components/formDia.vue";
import RegularizeDia from "@/views/personnelManagement/employeeRecord/components/regularizeDia.vue";
import TransferDia from "@/views/personnelManagement/employeeRecord/components/transferDia.vue";
import {ElMessageBox} from "element-plus";
import {staffOnJobListPage} from "@/api/personnelManagement/employeeRecord.js";
import dayjs from "dayjs";
@@ -52,6 +62,7 @@
const data = reactive({
  searchForm: {
    staffName: "",
    staffState: 1,
    entryDate: undefined, // å½•入日期
    entryDateStart: undefined,
    entryDateEnd: undefined,
@@ -68,6 +79,8 @@
        return "离职";
      } else if (params == 1) {
        return "在职";
      } else if (params == 2) {
        return "试用";
      } else {
        return null;
      }
@@ -77,6 +90,8 @@
        return "danger";
      } else if (params == 1) {
        return "primary";
      } else if (params == 2) {
        return "warning";
      } else {
        return null;
      }
@@ -154,12 +169,27 @@
    label: "操作",
    align: "center",
    fixed: 'right',
    width: 150,
    operation: [
      {
        name: "详情",
        type: "text",
        clickFun: (row) => {
          openForm("edit", row);
        },
      },
      {
        name: "转正",
        type: "text",
        clickFun: (row) => {
          openRegularizeDialog(row);
        },
      },
      {
        name: "调岗",
        type: "text",
        clickFun: (row) => {
          openTransferDialog(row);
        },
      },
    ],
@@ -174,6 +204,8 @@
  total: 0
});
const formDia = ref()
const regularizeDiaRef = ref()
const transferDiaRef = ref()
const { proxy } = getCurrentInstance()
const changeDaterange = (value) => {
@@ -200,7 +232,7 @@
  tableLoading.value = true;
  const params = { ...searchForm.value, ...page };
  params.entryDate = undefined
  staffOnJobListPage({...params, staffState: 1}).then(res => {
  staffOnJobListPage({...params}).then(res => {
    tableLoading.value = false;
    tableData.value = res.data.records
    page.total = res.data.total;
@@ -219,6 +251,12 @@
    formDia.value?.openDialog(type, row)
  })
};
const openRegularizeDialog = (row) => {
  regularizeDiaRef.value?.openDialog(row)
}
const openTransferDialog = (row) => {
  transferDiaRef.value?.openDialog(row)
}
// å¯¼å‡º
const handleOut = () => {
  ElMessageBox.confirm("选中的内容将被导出,是否确认导出?", "导出", {
@@ -227,7 +265,7 @@
    type: "warning",
  })
      .then(() => {
        proxy.download("/staff/staffOnJob/export", {staffState: 1}, "在职员工台账.xlsx");
        proxy.download("/staff/staffOnJob/export", { ...searchForm.value }, "员工台账.xlsx");
      })
      .catch(() => {
        proxy.$modal.msg("已取消");
src/views/personnelManagement/onboarding/components/formDia.vue
@@ -64,6 +64,11 @@
              <el-input-number v-model="form.age" :precision="0" :step="1" style="width: 100%"/>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="试用月份:" prop="probationPeriod">
              <el-input-number v-model="form.probationPeriod" :precision="0" :step="1" :min="0" style="width: 100%"/>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
@@ -153,6 +158,7 @@
    emergencyContact: "",
    emergencyContactPhone: "",
    contractTerm: 0,
    probationPeriod: 0,
    contractStartTime: "",
    contractEndTime: "",
    staffState: "",
@@ -171,6 +177,7 @@
    emergencyContact: [{ required: true, message: "请输入", trigger: "blur" }],
    emergencyContactPhone: [{ required: true, message: "请输入", trigger: "blur" }],
    contractTerm: [{ required: true, message: "请输入", trigger: "blur" }],
    probationPeriod: [{ required: true, message: "请输入", trigger: "blur" }],
    contractStartTime: [{ required: true, message: "请输入", trigger: "blur" }],
    contractEndTime: [{ required: true, message: "请输入", trigger: "blur" }],
  },
src/views/personnelManagement/onboarding/index.vue
@@ -132,6 +132,10 @@
    prop: "age",
  },
  {
    label: "试用月份",
    prop: "probationPeriod",
  },
  {
    label: "联系电话",
    prop: "phone",
    width:150