Ver Fonte

fix: pc、移动端逻辑优化

lirenjie há 6 meses atrás
pai
commit
4905c19896

+ 1 - 1
src/views/personnel-entry/mobile/components/two-step.vue

@@ -5,7 +5,7 @@
                 <div class="line"></div>
                 <div class="title-info">项目信息</div>
             </div>
-            <van-field v-model="formDataTwoStep.personalExpertise" type="textarea" label="个人专长" name="personalExpertise"
+            <van-field v-model="formDataTwoStep.personalExpertise" type="textarea" :autosize="{maxHeight: 200, minHeight: 30}" label="个人专长" name="personalExpertise"
                 placeholder="请围绕管理或技术维度填写,字数不少于120字" :rules="[{ required: true, message: '请输入个人专长' },{ validator: (val) => val.length >= 120,message: '内容长度不能少于120个字符' }]" required />
             <van-field label="负责项目情况" class="addBox" name="chargeProjectDTOList" label-width="7em" required>
                 <template #input>

+ 3 - 5
src/views/personnel-entry/mobile/index.vue

@@ -111,13 +111,11 @@ async function submit() {
     params.provinceCityDistrict = undefined
     await addPersonnelInfo(params).then((res) => {
         if (!res.ok) {
-            if (!res.ok) {
-                showFailToast(res.msg)
+            showFailToast(res.msg)
                 return
-            }
-            nextStep()
-            showSuccessToast('提交成功')
         }
+        nextStep()
+        showSuccessToast('提交成功')
     })
 
 }

+ 15 - 6
src/views/personnel-entry/pc/components/interview-evaluation.vue

@@ -4,6 +4,7 @@
         v-if="createInterviewEvaluation && formData && formData.length > 0">
         <div class="interview-header">
             <div class="interview-header-left">
+                <div>项目序号: {{ index + 1 }}</div>
                 <div>创建时间:{{ formatDate(currentTime) }}</div>
                 <div>创建人:{{ userStore.actualName }}</div>
             </div>
@@ -21,6 +22,7 @@ import { ref, computed, inject, watch } from "vue"
 import { useUserStore } from "/@/store/modules/system/user";
 import BsForm, { useBsForm } from '/@/components/BsUi/Form/index.js';
 import { formatDate } from "/@/utils/date";
+import { Modal } from "ant-design-vue";
 const createInterviewEvaluation = ref(false)
 const formData = defineModel('value')
 watch(() => formData.value, (value) => {
@@ -233,12 +235,19 @@ async function validateForm() {
     }
 }
 function claerItem(index) {
-    if (formData.value && formData.value.length === 0 && createInterviewEvaluation.value === true) {
-        createInterviewEvaluation.value = !createInterviewEvaluation.value
-        formData.value[0] = Object.assign(formData.value[0], formDataInit)
-    } else {
-        formData.value.splice(index, 1)
-    }
+    Modal.confirm({
+        title: '提示',
+        content: '确定要删除这条数据吗?',
+        onOk: () => {
+            if (formData.value && formData.value.length === 0 && createInterviewEvaluation.value === true) {
+                createInterviewEvaluation.value = !createInterviewEvaluation.value
+                formData.value[0] = Object.assign(formData.value[0], formDataInit)
+            } else {
+                formData.value.splice(index, 1)
+            }
+        },
+    });
+
 }
 function createEvaluation() {
     if (createInterviewEvaluation.value === false) {

+ 41 - 23
src/views/personnel-entry/pc/components/project-detail.vue

@@ -15,35 +15,24 @@
             </template>
             <template v-else>
                 <a-button type="link" @click="editRowEvent(row)">编辑</a-button>
+                <a-button type="link" danger @click="removeRowEvent(row)">删除</a-button>
             </template>
         </template>
     </bs-table>
 </template>
 
 <script setup lang="jsx">
-import { ref, nextTick, onMounted } from 'vue';
+import { ref, nextTick, watch } from 'vue';
 import dayjs from 'dayjs';
-import { message } from 'ant-design-vue';
+import { message, Modal } from 'ant-design-vue';
 import BsTable, { useBsTable } from '/@/components/BsUi/Table/index.js';
 import { DISPLAY_STATE } from '/@/components/BsUi/constant.js';
-import { getProjectDetail } from '/@/api/personnel-entry';
 import { isEmpty } from 'lodash';
 const formData = defineModel('value')
-const props = defineProps(['employeeCode', 'parentFormRef'])
+const props = defineProps(['parentFormRef'])
 const emit = defineEmits(['change'])
-onMounted(async () => {
-    /* 编辑 */
-    if (!isEmpty(props.employeeCode)) {
-        const params = {
-            pageSize: 100,
-            pageNum: 1,
-            employeeCode: props.employeeCode
-        }
-        const res = await getProjectDetail(params)
-        emit('change',res.data.list)
-        formData.value = res.data.list
-        setValue('gridOptions.data', res.data.list)
-    }
+watch(() => formData.value, (val) => {
+    setValue('gridOptions.data', val)
 })
 
 const {
@@ -122,7 +111,7 @@ const {
                     editRender: { name: 'VxeDatePicker', props: { type: 'date' } }
                 },
                 {
-                    field: 'createTime',
+                    field: 'projectCreateTime',
                     title: '创建时间',
                     // editRender: { name: 'VxeDatePicker', props: { type: 'date' } }
                 },
@@ -158,11 +147,12 @@ const {
                     disabled: false,
                     onClick(event) {
                         const newRow = {
+                            index: Date.now(),
                             projectName: '',
-                            position: '',
-                            startDate: '',
-                            endDate: '',
-                            createTime: dayjs(new Date()).format('YYYY-MM-DD HH:mm'),
+                            projectAppointment: '',
+                            projectStartTime: '',
+                            projectEndTime: '',
+                            projectCreateTime: dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss'),
                         };
 
                         nextTick(() => {
@@ -196,12 +186,15 @@ async function saveRowEvent(row) {
         // console.log(await $grid.getEditRecord(row));
 
         const { row: newRow, rowIndex, isEdit } = await $grid.getEditRecord(row);
+
         if (!isEdit) {
+            /* 新增 */
             formData.value[rowIndex] = newRow
         } else {
+            /* 编辑 */
             formData.value[rowIndex] = Object.assign(formData.value[rowIndex], newRow)
         }
-
+        $grid.reloadData(formData.value);
         if (props.parentFormRef) {
             props.parentFormRef.ValidatorSingalField('chargeProjectDTOList')
         }
@@ -218,6 +211,31 @@ const editRowEvent = (row) => {
         $grid.setEditRow(row)
     }
 }
+async function removeRowEvent(row) {
+    const $grid = getGridRef()
+    if ($grid) {
+        // console.log(row.id);
+
+        const removeList = await formData.value.filter(item => {
+            if (row.id) {
+                return item.id !== row.id
+            } else if (row.index) {
+                return item.index !== row.index
+            }
+        });
+        // console.log(removeList);
+
+        Modal.confirm({
+            title: '提示',
+            content: '确定要删除这条数据吗?',
+            onOk: () => {
+                formData.value = removeList
+                $grid.reloadData(removeList);
+            },
+        });
+
+    }
+}
 const cancelRowEvent = () => {
     const $grid = getGridRef()
     if ($grid) {

+ 10 - 25
src/views/personnel-entry/pc/index.vue

@@ -27,7 +27,7 @@ import { useRoute } from "vue-router";
 import { isEmpty } from "lodash";
 import { message } from "ant-design-vue";
 const route = useRoute()
-const { id, employeeCode } = route.query
+const { id } = route.query
 const children = ref([])
 
 provide('interview', {
@@ -534,15 +534,7 @@ const { formOptions, setFormPropsValue: setFVal, getFormPropsValue: getFValue }
                 label: '负责项目情况',
                 component: ProjectDeatil,
                 componentProps: {
-                    employeeCode: employeeCode,
                     parentFormRef: bsFormRef,
-                    onChange: (value) => {
-                        setFVal('formData.chargeProjectDTOList',value)
-                        console.log(getFValue('formData'));
-                        
-                        console.log(value);
-                        
-                    }
                 },
                 field: 'chargeProjectDTOList',
                 sort: '1',
@@ -828,14 +820,14 @@ async function save() {
         params.idCard = parseInt(params.idCard)
         params.salaries = parseInt(params.salaries)
         params.salaryNumber = parseInt(params.salaryNumber)
-        params.createUserId = params.createUserId.loginName
         params.provinceCityDistrict = undefined
         await updatePersonnel(params).then((res) => {
             if (!res.ok) {
                 message.error(res.msg)
                 return
             }
-            message.success('新增成功')
+            fecthData()
+            message.success('编辑成功')
         })
     }
 }
@@ -845,19 +837,10 @@ async function reset() {
         setFVal('formData', formDataInit)
     } else {
         /* 编辑 */
-        await getPersonnelInfo(id).then((res) => {
-            setFVal('formData', res.data)
-            setFVal('formData.provinceCityDistrict', [parseInt(res.data.province), parseInt(res.data.city), parseInt(res.data.district)])
-            setFVal('formData.post', res.data.post[0].valueCode)
-            setFVal('formData.type', res.data.type[0].valueCode)
-            setFVal('formData.degree', res.data.degree[0].valueCode)
-        })
-        await getInterviewEvaluation(id).then((res) => {
-            setFVal('formData.evaluationDTOList', [res.data])
-        })
+        fecthData()
     }
 }
-onMounted(async () => {
+async function fecthData() {
     if (!isEmpty(id)) {
         await getPersonnelInfo(id).then((res) => {
             setFVal('formData', res.data)
@@ -865,11 +848,13 @@ onMounted(async () => {
             setFVal('formData.post', res.data.post[0].valueCode)
             setFVal('formData.type', res.data.type[0].valueCode)
             setFVal('formData.degree', res.data.degree[0].valueCode)
-        })
-        await getInterviewEvaluation(id).then((res) => {
-            setFVal('formData.evaluationDTOList', [res.data])
+            // setFVal('formData.evaluationDTOList', res.data.evaluationDTOList)
+            // setFVal('formData.chargeProjectDTOList', res.data.chargeProjectDTOList)
         })
     }
+}
+onMounted(() => {
+    fecthData()
 })
 </script>
 <style lang="scss" scoped>