From 0160f427f48cdbdacf1ce8466982a1d3c6f3cc05 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期一, 30 六月 2025 15:14:54 +0800
Subject: [PATCH] 人员管理-新增入职、新增离职页面

---
 src/views/personnelManagement/dimission/components/formDia.vue  |  166 ++++++++++++++++
 src/views/personnelManagement/onboarding/components/formDia.vue |  166 ++++++++++++++++
 src/views/personnelManagement/dimission/index.vue               |  191 +++++++++++++++++++
 src/views/personnelManagement/onboarding/index.vue              |   18 +
 4 files changed, 534 insertions(+), 7 deletions(-)

diff --git a/src/views/personnelManagement/dimission/components/formDia.vue b/src/views/personnelManagement/dimission/components/formDia.vue
new file mode 100644
index 0000000..68185cc
--- /dev/null
+++ b/src/views/personnelManagement/dimission/components/formDia.vue
@@ -0,0 +1,166 @@
+<template>
+  <div>
+    <el-dialog
+        v-model="dialogFormVisible"
+        :title="operationType === 'add' ? '鏂板绂昏亴' : '缂栬緫浜哄憳'"
+        width="70%"
+        @close="closeDia"
+    >
+      <el-form :model="form" label-width="140px" label-position="top" :rules="rules" ref="formRef">
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <el-form-item label="鍛樺伐缂栧彿锛�" prop="purchaseContractNumber">
+              <el-input v-model="form.purchaseContractNumber" placeholder="璇疯緭鍏�" clearable/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="濮撳悕锛�" prop="salesLedgerId">
+              <el-input v-model="form.purchaseContractNumber" placeholder="璇疯緭鍏�" clearable/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <el-form-item label="鎬у埆锛�" prop="purchaseContractNumber">
+              <el-input v-model="form.purchaseContractNumber" placeholder="璇疯緭鍏�" clearable/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="绫嶈疮锛�" prop="salesLedgerId">
+              <el-input v-model="form.purchaseContractNumber" placeholder="璇疯緭鍏�" clearable/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <el-form-item label="宀椾綅锛�" prop="purchaseContractNumber">
+              <el-input v-model="form.purchaseContractNumber" placeholder="璇疯緭鍏�" clearable/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="瀹跺涵浣忓潃锛�" prop="salesLedgerId">
+              <el-input v-model="form.purchaseContractNumber" placeholder="璇疯緭鍏�" clearable/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <el-form-item label="绗竴瀛﹀巻锛�" prop="purchaseContractNumber">
+              <el-input v-model="form.purchaseContractNumber" placeholder="璇疯緭鍏�" clearable/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="涓撲笟锛�" prop="salesLedgerId">
+              <el-input v-model="form.purchaseContractNumber" placeholder="璇疯緭鍏�" clearable/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <el-form-item label="韬唤璇佸彿锛�" prop="purchaseContractNumber">
+              <el-input v-model="form.purchaseContractNumber" placeholder="璇疯緭鍏�" clearable/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="骞撮緞锛�" prop="salesLedgerId">
+              <el-input v-model="form.purchaseContractNumber" placeholder="璇疯緭鍏�" clearable/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <el-form-item label="鑱旂郴鐢佃瘽锛�" prop="purchaseContractNumber">
+              <el-input v-model="form.purchaseContractNumber" placeholder="璇疯緭鍏�" clearable/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="绱ф�ヨ仈绯讳汉锛�" prop="salesLedgerId">
+              <el-input v-model="form.purchaseContractNumber" placeholder="璇疯緭鍏�" clearable/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <el-form-item label="绱ф�ヨ仈绯讳汉鑱旂郴鐢佃瘽锛�" prop="purchaseContractNumber">
+              <el-input v-model="form.purchaseContractNumber" placeholder="璇疯緭鍏�" clearable/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="鍚堝悓骞撮檺锛�" prop="salesLedgerId">
+              <el-input v-model="form.purchaseContractNumber" placeholder="璇疯緭鍏�" clearable/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <el-form-item label="鍚堝悓寮�濮嬫棩鏈燂細" prop="purchaseContractNumber">
+              <el-input v-model="form.purchaseContractNumber" placeholder="璇疯緭鍏�" clearable/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="鍚堝悓缁撴潫鏃ユ湡锛�" prop="salesLedgerId">
+              <el-input v-model="form.purchaseContractNumber" placeholder="璇疯緭鍏�" clearable/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" @click="submitForm">纭</el-button>
+          <el-button @click="closeDia">鍙栨秷</el-button>
+        </div>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup>
+import {ref} from "vue";
+
+const dialogFormVisible = ref(false);
+const operationType = ref('')
+const data = reactive({
+  searchForm: {
+    purchaseContractNumber: "",
+  },
+  form: {
+    purchaseContractNumber: "",
+    salesLedgerId: "",
+    projectName: "",
+    recorderId: "",
+    entryDate: "",
+    productData: [],
+    supplierName: "",
+    supplierId: "",
+  },
+  rules: {
+    purchaseContractNumber: [
+      { required: true, message: "璇疯緭鍏�", trigger: "blur" },
+    ],
+    projectName: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+    supplierId: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+  },
+});
+const { form, rules } = toRefs(data);
+
+// 鎵撳紑寮规
+const openDialog = (type, row) => {
+  dialogFormVisible.value = true;
+}
+// 鎻愪氦浜у搧琛ㄥ崟
+const submitForm = () => {
+
+}
+// 鍏抽棴寮规
+const closeDia = () => {
+  // proxy.resetForm("formRef");
+  dialogFormVisible.value = false;
+};
+defineExpose({
+  openDialog,
+});
+</script>
+
+<style scoped>
+
+</style>
\ No newline at end of file
diff --git a/src/views/personnelManagement/dimission/index.vue b/src/views/personnelManagement/dimission/index.vue
new file mode 100644
index 0000000..3692930
--- /dev/null
+++ b/src/views/personnelManagement/dimission/index.vue
@@ -0,0 +1,191 @@
+<template>
+  <div class="app-container">
+    <div class="search_form">
+      <div>
+        <span class="search_title">濮撳悕锛�</span>
+        <el-input
+            v-model="searchForm.customerName"
+            style="width: 240px"
+            placeholder="璇疯緭鍏ュ悕绉版悳绱�"
+            @change="handleQuery"
+            clearable
+            :prefix-icon="Search"
+        />
+        <el-button type="primary" @click="handleQuery" style="margin-left: 10px"
+        >鎼滅储</el-button
+        >
+      </div>
+      <div>
+        <el-button type="primary" @click="openForm('add')">鏂板绂昏亴</el-button>
+      </div>
+    </div>
+    <div class="table_list">
+      <PIMTable
+          rowKey="id"
+          :column="tableColumn"
+          :tableData="tableData"
+          :page="page"
+          :isSelection="true"
+          @selection-change="handleSelectionChange"
+          :tableLoading="tableLoading"
+          @pagination="pagination"
+          :total="total"
+      ></PIMTable>
+    </div>
+    <form-dia ref="formDia"></form-dia>
+  </div>
+</template>
+
+<script setup>
+import { Search } from "@element-plus/icons-vue";
+import { ref } from "vue";
+import FormDia from "@/views/personnelManagement/onboarding/components/formDia.vue";
+
+const data = reactive({
+  searchForm: {
+    customerName: "",
+  },
+  form: {
+    salesLedgerId: "",
+    customerName: "",
+    salesman: "",
+    projectName: "",
+    productData: [],
+  },
+  rules: {
+    salesLedgerId: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
+  },
+});
+const { searchForm, form, rules } = toRefs(data);
+const tableColumn = ref([
+  {
+    label: "鐘舵��",
+    prop: "paymentDate",
+    dataType: "tag",
+    formatData: (params) => {
+      if (params == 0) {
+        return "鍦ㄨ亴";
+      } else if (params == 1) {
+        return "绂昏亴";
+      } else {
+        return null;
+      }
+    },
+    formatType: (params) => {
+      if (params == 0) {
+        return "primary";
+      } else if (params == 1) {
+        return "danger";
+      } else {
+        return null;
+      }
+    },
+  },
+  {
+    label: "鍛樺伐缂栧彿",
+    prop: "supplierName",
+  },
+  {
+    label: "濮撳悕",
+    prop: "currentPaymentAmount",
+  },
+  {
+    label: "鎬у埆",
+    prop: "paymentMethod",
+  },
+  {
+    label: "绫嶈疮",
+    prop: "registrant",
+  },
+  {
+    label: "宀椾綅",
+    prop: "registrationtDate",
+  },
+  {
+    label: "瀹跺涵浣忓潃",
+    prop: "registrationtDate",
+  },
+  {
+    label: "绗竴瀛﹀巻",
+    prop: "registrationtDate",
+  },
+  {
+    label: "涓撲笟",
+    prop: "registrationtDate",
+  },
+  {
+    label: "韬唤璇佸彿",
+    prop: "registrationtDate",
+  },
+  {
+    label: "骞撮緞",
+    prop: "registrationtDate",
+  },
+  {
+    label: "鑱旂郴鐢佃瘽",
+    prop: "registrationtDate",
+  },
+  {
+    label: "绱ф�ヨ仈绯讳汉",
+    prop: "registrationtDate",
+  },
+  {
+    label: "鑱旂郴鐢佃瘽",
+    prop: "registrationtDate",
+  },
+  {
+    label: "鍚堝悓骞撮檺",
+    prop: "registrationtDate",
+  },
+  {
+    label: "鍚堝悓寮�濮嬫棩鏈�",
+    prop: "registrationtDate",
+  },
+  {
+    label: "鍚堝悓缁撴潫鏃ユ湡",
+    prop: "registrationtDate",
+  },
+]);
+const tableData = ref([]);
+const selectedRows = ref([]);
+const tableLoading = ref(false);
+const page = reactive({
+  current: 1,
+  size: 100,
+});
+const total = ref(0);
+const formDia = ref()
+const { proxy } = getCurrentInstance()
+
+// 鏌ヨ鍒楄〃
+/** 鎼滅储鎸夐挳鎿嶄綔 */
+const handleQuery = () => {
+  page.current = 1;
+  getList();
+};
+const pagination = (obj) => {
+  page.current = obj.page;
+  page.size = obj.limit;
+  getList();
+};
+const getList = () => {
+  tableLoading.value = true;
+  
+};
+// 琛ㄦ牸閫夋嫨鏁版嵁
+const handleSelectionChange = (selection) => {
+  console.log("selection", selection);
+  selectedRows.value = selection.filter(
+      (item) => item.salesContractNo !== undefined
+  );
+};
+
+// 鎵撳紑寮规
+const openForm = (type, row) => {
+  nextTick(() => {
+    formDia.value?.openDialog(type, row)
+  })
+};
+</script>
+
+<style scoped></style>
diff --git a/src/views/personnelManagement/onboarding/components/formDia.vue b/src/views/personnelManagement/onboarding/components/formDia.vue
new file mode 100644
index 0000000..c8bd008
--- /dev/null
+++ b/src/views/personnelManagement/onboarding/components/formDia.vue
@@ -0,0 +1,166 @@
+<template>
+  <div>
+    <el-dialog
+        v-model="dialogFormVisible"
+        :title="operationType === 'add' ? '鏂板鍏ヨ亴' : '缂栬緫浜哄憳'"
+        width="70%"
+        @close="closeDia"
+    >
+      <el-form :model="form" label-width="140px" label-position="top" :rules="rules" ref="formRef">
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <el-form-item label="鍛樺伐缂栧彿锛�" prop="purchaseContractNumber">
+              <el-input v-model="form.purchaseContractNumber" placeholder="璇疯緭鍏�" clearable/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="濮撳悕锛�" prop="salesLedgerId">
+              <el-input v-model="form.purchaseContractNumber" placeholder="璇疯緭鍏�" clearable/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <el-form-item label="鎬у埆锛�" prop="purchaseContractNumber">
+              <el-input v-model="form.purchaseContractNumber" placeholder="璇疯緭鍏�" clearable/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="绫嶈疮锛�" prop="salesLedgerId">
+              <el-input v-model="form.purchaseContractNumber" placeholder="璇疯緭鍏�" clearable/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <el-form-item label="宀椾綅锛�" prop="purchaseContractNumber">
+              <el-input v-model="form.purchaseContractNumber" placeholder="璇疯緭鍏�" clearable/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="瀹跺涵浣忓潃锛�" prop="salesLedgerId">
+              <el-input v-model="form.purchaseContractNumber" placeholder="璇疯緭鍏�" clearable/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <el-form-item label="绗竴瀛﹀巻锛�" prop="purchaseContractNumber">
+              <el-input v-model="form.purchaseContractNumber" placeholder="璇疯緭鍏�" clearable/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="涓撲笟锛�" prop="salesLedgerId">
+              <el-input v-model="form.purchaseContractNumber" placeholder="璇疯緭鍏�" clearable/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <el-form-item label="韬唤璇佸彿锛�" prop="purchaseContractNumber">
+              <el-input v-model="form.purchaseContractNumber" placeholder="璇疯緭鍏�" clearable/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="骞撮緞锛�" prop="salesLedgerId">
+              <el-input v-model="form.purchaseContractNumber" placeholder="璇疯緭鍏�" clearable/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <el-form-item label="鑱旂郴鐢佃瘽锛�" prop="purchaseContractNumber">
+              <el-input v-model="form.purchaseContractNumber" placeholder="璇疯緭鍏�" clearable/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="绱ф�ヨ仈绯讳汉锛�" prop="salesLedgerId">
+              <el-input v-model="form.purchaseContractNumber" placeholder="璇疯緭鍏�" clearable/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <el-form-item label="绱ф�ヨ仈绯讳汉鑱旂郴鐢佃瘽锛�" prop="purchaseContractNumber">
+              <el-input v-model="form.purchaseContractNumber" placeholder="璇疯緭鍏�" clearable/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="鍚堝悓骞撮檺锛�" prop="salesLedgerId">
+              <el-input v-model="form.purchaseContractNumber" placeholder="璇疯緭鍏�" clearable/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <el-form-item label="鍚堝悓寮�濮嬫棩鏈燂細" prop="purchaseContractNumber">
+              <el-input v-model="form.purchaseContractNumber" placeholder="璇疯緭鍏�" clearable/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="鍚堝悓缁撴潫鏃ユ湡锛�" prop="salesLedgerId">
+              <el-input v-model="form.purchaseContractNumber" placeholder="璇疯緭鍏�" clearable/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" @click="submitForm">纭</el-button>
+          <el-button @click="closeDia">鍙栨秷</el-button>
+        </div>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup>
+import {ref} from "vue";
+
+const dialogFormVisible = ref(false);
+const operationType = ref('')
+const data = reactive({
+  searchForm: {
+    purchaseContractNumber: "",
+  },
+  form: {
+    purchaseContractNumber: "",
+    salesLedgerId: "",
+    projectName: "",
+    recorderId: "",
+    entryDate: "",
+    productData: [],
+    supplierName: "",
+    supplierId: "",
+  },
+  rules: {
+    purchaseContractNumber: [
+      { required: true, message: "璇疯緭鍏�", trigger: "blur" },
+    ],
+    projectName: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+    supplierId: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+  },
+});
+const { form, rules } = toRefs(data);
+
+// 鎵撳紑寮规
+const openDialog = (type, row) => {
+  dialogFormVisible.value = true;
+}
+// 鎻愪氦浜у搧琛ㄥ崟
+const submitForm = () => {
+
+}
+// 鍏抽棴寮规
+const closeDia = () => {
+  // proxy.resetForm("formRef");
+  dialogFormVisible.value = false;
+};
+defineExpose({
+  openDialog,
+});
+</script>
+
+<style scoped>
+
+</style>
\ No newline at end of file
diff --git a/src/views/personnelManagement/onboarding/index.vue b/src/views/personnelManagement/onboarding/index.vue
index cc1e8e5..2ad1e89 100644
--- a/src/views/personnelManagement/onboarding/index.vue
+++ b/src/views/personnelManagement/onboarding/index.vue
@@ -16,7 +16,7 @@
         >
       </div>
       <div>
-        <el-button type="primary" @click="openForm">鏂板鍏ヨ亴</el-button>
+        <el-button type="primary" @click="openForm('add')">鏂板鍏ヨ亴</el-button>
       </div>
     </div>
     <div class="table_list">
@@ -32,12 +32,14 @@
         :total="total"
       ></PIMTable>
     </div>
+    <form-dia ref="formDia"></form-dia>
   </div>
 </template>
 
 <script setup>
 import { Search } from "@element-plus/icons-vue";
 import { ref } from "vue";
+import FormDia from "@/views/personnelManagement/onboarding/components/formDia.vue";
 
 const data = reactive({
   searchForm: {
@@ -152,6 +154,8 @@
   size: 100,
 });
 const total = ref(0);
+const formDia = ref()
+const { proxy } = getCurrentInstance()
 
 // 鏌ヨ鍒楄〃
 /** 鎼滅储鎸夐挳鎿嶄綔 */
@@ -166,11 +170,7 @@
 };
 const getList = () => {
   tableLoading.value = true;
-  ledgerListPage({ ...searchForm.value, ...page }).then((res) => {
-    tableLoading.value = false;
-    tableData.value = res.records;
-    total.value = res.total;
-  });
+  
 };
 // 琛ㄦ牸閫夋嫨鏁版嵁
 const handleSelectionChange = (selection) => {
@@ -181,7 +181,11 @@
 };
 
 // 鎵撳紑寮规
-const openForm = () => {};
+const openForm = (type, row) => {
+  nextTick(() => {
+    formDia.value?.openDialog(type, row)
+  })
+};
 </script>
 
 <style scoped></style>

--
Gitblit v1.9.3