Forráskód Böngészése

出差管理修改

duy 2 éve
szülő
commit
8e11bedb7c

+ 42 - 3
src/api/modules/attendance/business-trip.js

@@ -4,11 +4,50 @@ export default {
     //获取分页
     async getPage(form, msg = true) {
         return httpApi({
-            url: '/api/blade-control/projectCostBudgetStats/page',
+            url: '/api/blade-control/attendance/trip/page',
+            method: 'post',
+            data: form
+        }, msg);
+    },
+   //获取草稿箱列表
+   async getDraftList(form, msg = true) {
+    return httpApi({
+        url: '/api/blade-control/attendance/trip/draft/list',
+        method: 'get',
+        params: form
+    }, msg);
+  },
+  //出差信息删除
+  async remove(form, msg = true) {
+    return httpApi({
+        url: '/api/blade-control/attendance/trip/remove',
+        method: 'post',
+        data: form
+    }, msg);
+  } ,
+  //出差信息提交
+  async submit(form, msg = true) {
+    return httpApi({
+        url: '/api/blade-control/attendance/trip/submit',
+        method: 'post',
+        data: form
+    }, msg);
+  }  ,
+  //出差信息详情
+  async detail(form, msg = true) {
+        return httpApi({
+            url: '/api/blade-control/attendance/trip/detail',
             method: 'get',
             params: form
         }, msg);
-    },
-   
+   },
+     //出差信息上报撤销
+  async cancel(form, msg = true) {
+    return httpApi({
+        url: '/api/blade-control/attendance/trip/cancel',
+        method: 'post',
+        data: form
+    }, msg);
+  }  ,
 }
 

+ 42 - 14
src/views/attendance/business-trip/index.vue

@@ -32,6 +32,9 @@
          </el-button>
     </template>
     <HcTable :column="tableColumn" :datas="tableData" :loading="tableLoading">
+      <template #tripDesc="{row}">
+                <span class="text-blue text-hover" @click="rowClick(row)">{{row.tripDesc}}</span>
+        </template>
       <template #action="{row, index}">
          <el-button hc-btn type="primary" size="small">撤销</el-button>
        </template>
@@ -43,7 +46,7 @@
             <HcDialog bgColor="#ffffff" widths="62rem" isToBody  :show="importModal" title="草稿箱" @close="importModalClose" isTable >
               <el-alert title="3个月内未更新的草稿将被自动删除" type="warning"  show-icon/>
               <div class="table_box">
-                <HcTable :column="drafttableColumn" :datas="drafttableData" ui="hc-test-drop-table" isRowDrop isSort @row-drop="rowDropTap" @row-sort="rowSortTap">
+                <HcTable :column="drafttableColumn" :datas="drafttableData" ui="hc-test-drop-table" isRowDrop isSort @row-drop="rowDropTap" @row-sort="rowSortTap" :loading="draftLoad">
                   <template #action="{row, index}">
                     <el-button hc-btn type="primary" size="small" @click="editinfoClick(row)">继续编辑</el-button>
                     <el-button hc-btn type="primary" size="small">删除</el-button>
@@ -62,21 +65,22 @@ import 'dayjs/locale/zh-cn'
 import {useRouter} from 'vue-router'
 import {getTokenHeader} from "~src/api/request/header";
 import businessApi from '~api/attendance/business-trip.js';
+import {getArrValue} from "js-fast-way"
 const router = useRouter()
 onMounted(()=>{
   getTableData()
 })
 
 const tableColumn = [
-    {key: 'name', name: '出差事由'},
-    {key: 'key2', name: '关联项目'},
-    {key: 'key4', name: '实际出勤天数'},
-    {key: 'key5', name: '出差天数'},
-    {key: 'key6', name: '同行人'},
-    {key: 'key7', name: '审批结果'},
-    {key: 'key8', name: '审批状态'},
-    {key: 'key9', name: '创建人'},
-    {key: 'key10', name: '创建时间'},
+    {key: 'tripDesc', name: '出差事由'},
+    {key: 'projectName', name: '关联项目'},
+    {key: 'duration', name: '实际出勤天数'},
+    {key: 'durationAll', name: '出差天数'},
+    {key: 'fellowTravelerUserNames', name: '同行人'},
+    {key: 'approvalResultName', name: '审批结果'},
+    {key: 'approvalStatusName	', name: '审批状态'},
+    {key: 'createName', name: '创建人'},
+    {key: 'createTime', name: '创建时间'},
     {key: 'action', name: '操作'  }
 
 
@@ -87,7 +91,7 @@ const tableData = ref([
     {name: '名称3', }
 ])
 const searchForm = ref({
-    name: '',
+  
     current: 1, size: 20, total: 0
 })
 const peopleoption=ref([
@@ -133,8 +137,8 @@ const importModalClose=()=>{
   importModal.value=false
 }
 const drafttableColumn = [
-    {key: 'name', name: '标题'},
-    {key: 'text', name: '更新时间'},
+    {key: 'title', name: '标题'},
+    {key: 'updateTime', name: '更新时间'},
     {key: 'action', name: '操作',widths:120},
 ]
 const drafttableData = ref([
@@ -143,7 +147,19 @@ const drafttableData = ref([
     
  
 ])
-
+const draftLoad=ref(false)
+const getdraftTableData = async() => {
+  draftLoad.value = true
+    const {error, code, data} = await businessApi.getDraftList()
+    draftLoad.value = false
+    if (!error && code === 200) {
+      drafttableData.value = getArrValue(data)
+     
+    } else {
+      drafttableData.value = []
+      
+    }
+}
 // 行拖拽
 const rowDropTap = (rows) => {
     tableData.value = rows
@@ -156,6 +172,7 @@ const rowSortTap = (rows) => {
 
 const toImportTempClick=()=>{
   importModal.value=true
+  getdraftTableData()
 
 }
 //编辑出差申请
@@ -172,10 +189,21 @@ const editinfoClick=(row)=>{
   router.push({
         name: 'attendance-business-trip-info',
         query: {
+          id: row.id,
             type: 'edit'
         }
     })
 }
+//查看
+const rowClick = (row) => {
+    router.push({
+      name: 'attendance-business-trip-info',
+        query: {
+            id: row.id,
+            type: 'view'
+        }
+    })
+}
 </script>
 <style lang='scss' scoped>
 </style>

+ 63 - 43
src/views/attendance/business-trip/info.vue

@@ -9,48 +9,52 @@
                   <el-form ref="formRef" :model="formModel" :rules="formRules" label-width="auto" size="large" :disabled="dataType === 'view'">
                       <div class="project-form-top">
                        
-                              <el-form-item label="出差事由:" prop="key">
-                                  <el-input v-model="formModel.key"/>
+                              <el-form-item label="出差事由:" prop="tripDesc">
+                                  <el-input v-model="formModel.tripDesc"/>
                               </el-form-item>
                               <HcCardItem :title="'行程'+ Number(index+1) " class="mt-2 hc-card-item-box" v-for="(item,index) in journeyList" ui="hac-bg-grey">
-                                    <el-form-item label="交通工具" prop="key1">
-                                      <el-select v-model="formModel.key1" block clearable placeholder="请选择交通工具">
+                                    <el-form-item label="交通工具" prop="trafficType">
+                                      <el-select v-model="formModel.trafficType" block clearable placeholder="请选择交通工具">
                                           <el-option v-for="item in trafficType" :label="item.name" :value="item.key"/>
                                       </el-select>
                                   </el-form-item>
-                                  <el-form-item label="单程往返" prop="key1">
-                                      <el-select v-model="formModel.key1" block clearable placeholder="请选择">
+                                  <el-form-item label="单程往返" prop="isSingletonType">
+                                      <el-select v-model="formModel.isSingletonType" block clearable placeholder="请选择">
                                           <el-option v-for="item in wayType" :label="item.name" :value="item.key"/>
                                       </el-select>
                                   </el-form-item>
-                                  <el-form-item label="出发城市" prop="key">
-                                    <el-select v-model="formModel.key1" block clearable placeholder="请选择出发城市">
+                                  <el-form-item label="出发城市" prop="startCity">
+                                    <el-select v-model="formModel.startCity" block clearable placeholder="请选择出发城市">
                                           <el-option v-for="item in cityType" :label="item.name" :value="item.key"/>
                                       </el-select>
                                   </el-form-item>
-                                  <el-form-item label="目的城市" prop="key">
-                                    <el-select v-model="formModel.key1" block clearable placeholder="请选择目的城市">
+                                  <el-form-item label="目的城市" prop="endCity">
+                                    <el-select v-model="formModel.endCity" block clearable placeholder="请选择目的城市">
                                           <el-option v-for="item in cityType" :label="item.name" :value="item.key"/>
                                       </el-select>
                                   </el-form-item>
-                                  <el-form-item label="出发时间">
+                                  <el-form-item label="开始时间">
                                     <el-date-picker
-                                        v-model="formModel.key1"
+                                        v-model="formModel.startDate"
                                         type="date"
-                                        placeholder="请选择出发时间"
+                                        placeholder="请选择开始时间"
                                         style="width: 100%;"
+                                        format="YYYY-MM-DD"
+                                         value-format="YYYY-MM-DD"  
                                     />
                                   </el-form-item>
                                   <el-form-item label="结束时间">
                                     <el-date-picker
-                                        v-model="formModel.key1"
+                                        v-model="formModel.endDate"
                                         type="date"
                                         placeholder="请选择结束时间"
                                         style="width: 100%;"
+                                        format="YYYY-MM-DD" 
+                                        value-format="YYYY-MM-DD"  
                                     />
                                   </el-form-item>
-                                  <el-form-item label="时长" prop="key">
-                                      <el-input v-model="formModel.key"/>
+                                  <el-form-item label="时长" prop="duration">
+                                      <el-input v-model="formModel.duration"/>
                                   </el-form-item>
                                   <span class="tip ml-8">时长将自动计入考勤统计</span>
                                   <!-- <template #extra>
@@ -74,16 +78,16 @@
                                </el-divider>
                               </div>
                             
-                              <el-form-item label="出差天数:" prop="key" class="mt-4">
-                                  <el-input v-model="formModel.key" disabled/>
+                              <el-form-item label="出差天数:" prop="durationAll" class="mt-4">
+                                  <el-input v-model="formModel.durationAll" disabled/>
                               </el-form-item>
-                              <el-form-item label="出差备注:" prop="key5" >
-                                  <el-input v-model="formModel.key" type="textarea"/>
+                              <el-form-item label="出差备注:" prop="remarks" >
+                                  <el-input v-model="formModel.remarks" type="textarea"/>
                               </el-form-item>
-                              <el-form-item label="同行人" prop="key5" placeholder="请选择同行人">
+                              <el-form-item label="同行人" prop="fellowTravelerUserIds">
                                 <el-select
-                                        v-model="formModel.key"
-                                        multiple
+                                        v-model="formModel.fellowTravelerUserIds"
+                                        block clearable
                                         placeholder="请选择"
                                         style="width: 100%"
                                         >
@@ -95,8 +99,8 @@
                                         />
                                         </el-select>
                               </el-form-item>
-                              <el-form-item label="所属项目" prop="key" placeholder="请选择同行人">
-                                        <el-select v-model="formModel.key1" block clearable placeholder="请选择交通工具">
+                              <el-form-item label="所属项目" prop="projectId" placeholder="请选择同行人">
+                                        <el-select v-model="formModel.projectId" block clearable placeholder="请选择交通工具">
                                           <el-option v-for="item in projectType" :label="item.name" :value="item.key"/>
                                       </el-select>
                               </el-form-item>
@@ -132,7 +136,7 @@
                         <HcIcon name="draft"/>
                         <span>暂存草稿</span>
                     </el-button>
-                    <el-button type="primary" hc-btn>
+                    <el-button type="primary" hc-btn @click="saveClick">
                         <HcIcon name="check-double"/>
                         <span>提交出差申请</span>
                     </el-button>
@@ -232,40 +236,54 @@ const contractType = ref([
 
 //顶部表单数据
 const formRef = ref(null)
-const formModel = ref({
-  key1: '', key2: '', key3: '', key4: '', key5: '',
-})
+const formModel = ref({})
 const formRules = {
-  key: {
+    tripDesc: {
+      required: true,
+      trigger: 'blur',
+      message: "请输入项出差事由"
+  },
+  isSingletonType: {
+      required: true,
+      trigger: 'blur',
+      message: "请选择单程往返"
+  },
+  startCity: {
       required: true,
       trigger: 'blur',
-      message: "请输入项目名称"
+      message: "请选择出发城市"
   },
-  key1: {
+  endCity: {
       required: true,
       trigger: 'blur',
-      message: "请选择项目类型"
+      message: "请选择目的城市"
   },
-  key2: {
+  startDate: {
       required: true,
       trigger: 'blur',
-      message: "请选择项目开始时间"
+      message: "请选择开始时间"
   },
-  key3: {
+  endDate: {
       required: true,
       trigger: 'blur',
-      message: "项目进程异常"
+      message: "请选择结束时间"
   },
-  key8: {
+  duration: {
       required: true,
       trigger: 'blur',
-      message: "请输入负责人"
+      message: "请输入时长"
   },
-  key5: {
-      required: false,
+  durationAll:{
+    required: true,
       trigger: 'blur',
-   
+      message: "请输入天数"
   },
+  projectId: {
+      required: true,
+      trigger: 'blur',
+      message: "请选择项目"
+  },
+
 }
 
 
@@ -322,7 +340,9 @@ const tableBudgetData = ref([
     {id: 3, key1: 'xxxx'},
     {id: 4, key1: 'xxxx'},
 ])
-
+const saveClick=()=>{
+    console.log('提交',formModel.value);
+}
 </script>
 
 <style lang="scss" scoped>