2545307760@qq.com 1 рік тому
батько
коміт
2053890723

+ 4 - 6
web/src/api/hour.js

@@ -1,13 +1,11 @@
 import service from '@/utils/request'
 
 // 查询工时
-export const queryHour = (code) => {
+export const queryHour = (data) => {
   return service({
-    url: '/project/queryWorkingHours',
-    method: 'get',
-    params: {
-      code: code
-    }
+    url: '/project/queryWorkingHoursSum',
+    method: 'post',
+    data: data
   })
 }
 // 新增工时

+ 2 - 2
web/src/pinia/hour/Hour.js

@@ -6,8 +6,8 @@ export const hourOperate = defineStore('time', () => {
   // 定义数据
   const timeList = reactive([])
   // 定义修改数据的方法
-  const getTimeList = (code) => {
-    queryHour(code).then(res => {
+  const getTimeList = (data) => {
+    queryHour(data).then(res => {
       if (res.code === 0) {
         timeList.length = 0
         timeList.push(...res.data)

+ 1 - 0
web/src/pinia/reimbursement/Reimbursement.js

@@ -32,6 +32,7 @@ export const reimburseOperate = defineStore('account', () => {
   }
   const changeReimburseList = (list) => {
     reimburseList.length = 0
+    console.log(list)
     reimburseList.push(...list)
   }
   const changeReimburseTotal = (total) => {

+ 97 - 48
web/src/view/finance/components/reimburse.vue

@@ -73,7 +73,7 @@
             />
             <el-table-column
               label="报销金额(元)"
-              prop="price"
+              prop="reimbursementPrice"
               align="center"
               width="250px"
             />
@@ -82,13 +82,6 @@
               align="center"
             >
               <template #default="scope">
-                <el-button
-                  text
-                  type="primary"
-                  :icon="Notebook"
-                >
-                  详情
-                </el-button>
                 <el-button
                   text
                   type="primary"
@@ -186,8 +179,11 @@
             />
           </el-select>
         </el-form-item>
+        <el-form-item label="报销总金额:">
+          <el-text size="large">{{ totality }}</el-text>
+        </el-form-item>
         <el-row
-          v-for="(item,index) in reimburseItem"
+          v-for="(item,index) in createData.feeDetails"
           :key="index"
         >
           <el-col :span="12">
@@ -195,7 +191,7 @@
               label="报销金额:"
             >
               <el-input-number
-                v-model="item.price"
+                v-model="item.feePrice"
                 placeholder="请输入报销金额"
                 clearable
                 size="large"
@@ -223,9 +219,9 @@
       <template #footer>
         <div class="dialog-footer">
           <el-button
-            v-show="reimburseItem.length > 1"
+            v-show="createData.feeDetails.length > 1"
             size="large"
-            @click="reimburseItem.splice(reimburseItem.length - 1,1)"
+            @click="createData.feeDetails.splice(createData.feeDetails.length - 1,1)"
           >
             删除报销详情
           </el-button>
@@ -311,6 +307,13 @@
             />
           </el-select>
         </el-form-item>
+        <el-row>
+          <el-col :span="10">
+            <el-form-item label="报销总金额:">
+              <el-text size="large">{{editTotality}}</el-text>
+            </el-form-item>
+          </el-col>
+        </el-row>
         <el-row
           v-for="(item,index) in editData.feeDetails"
           :key="index"
@@ -320,7 +323,7 @@
               label="报销金额:"
             >
               <el-input-number
-                v-model="item.price"
+                v-model="item.feePrice"
                 placeholder="请输入报销金额"
                 clearable
                 size="large"
@@ -363,7 +366,7 @@
           <el-button
             type="primary"
             size="large"
-            @click="addReimburse"
+            @click="editReimburse"
           >
             确定
           </el-button>
@@ -374,29 +377,20 @@
 </template>
 
 <script setup>
-import { Search, Delete, Edit, Notebook, Plus } from '@element-plus/icons-vue'
+import { Search, Delete, Edit, Plus } from '@element-plus/icons-vue'
 import { reactive, ref, onMounted, computed } from 'vue'
 import { reimburseOperate } from '@/pinia/reimbursement/Reimbursement'
 import { codeOperate } from '@/pinia/code/code'
 import { queryExpensesGenre } from '@/api/finance'
 import { getAllUsers } from '@/api/user'
 import { ElMessage, ElMessageBox } from 'element-plus'
-import { createReimburse, deleteReimburse } from '@/api/reimbursement'
+import { createReimburse, deleteReimburse, updateReimburse } from '@/api/reimbursement'
 defineOptions({
   name: 'Reimburse'
 })
 // pinia
 const submit = reimburseOperate()
 const serial = codeOperate()
-// 计算属性
-const deleteDetailShow = computed(() => {
-  for (const i in editData) {
-    if (i === 'feeDetails' && editData[i].length > 1) {
-      return true
-    }
-  }
-  return false
-})
 // 数据
 const reimburseAddShow = ref(false)
 const condition = reactive({
@@ -410,21 +404,44 @@ const condition = reactive({
 })
 const createData = reactive({
   projectCode: '',
-  applicant: '张三',
+  applicant: '',
   applicationTime: '',
   approval: '',
-  price: 0,
+  reimbursementPrice: 0,
   genre: '',
-  feeDetails: []
+  feeDetails: [{
+    remarks: '',
+    feePrice: 0
+  }]
 })
 const editData = reactive({})
 const reimburseEditShow = ref(false)
 const costList = reactive([])
 const userList = reactive([])
-const reimburseItem = reactive([{
-  remarks: '',
-  price: 0
-}])
+
+// 计算属性
+const deleteDetailShow = computed(() => {
+  for (const i in editData) {
+    if (i === 'feeDetails' && editData[i].length > 1) {
+      return true
+    }
+  }
+  return false
+})
+const totality = computed(() => {
+  let middle = 0
+  createData.feeDetails.forEach(item => {
+    middle += item.feePrice
+  })
+  return middle
+})
+const editTotality = computed(() => {
+  let middle = 0
+  editData.feeDetails.forEach(item => {
+    middle += item.feePrice
+  })
+  return middle
+})
 // const overall = ref(0)
 // 方法
 onMounted(() => {
@@ -479,19 +496,12 @@ const changeReimbursePage = (value) => {
   submit.getReimburseList(condition)
 }
 const addReimburse = () => {
-  const data = createData
-  const sum = ref(0)
-  // 报销详情
-  data.feeDetails = reimburseItem
   // // 报销总金额
-  reimburseItem.forEach(item => {
-    sum.value += item.price
-  })
-  data.price = sum.value
-  data.projectCode = serial.currentCode
-  console.log(data)
-  for (const i in data) {
-    if (data[i] === '' || data[i] === 0) {
+  createData.reimbursementPrice = totality.value
+  createData.projectCode = serial.currentCode
+  console.log(createData)
+  for (const i in createData) {
+    if (createData[i] === '' || createData[i] === 0) {
       ElMessage({
         message: '请将信息填写完整',
         type: 'error',
@@ -501,7 +511,7 @@ const addReimburse = () => {
       return
     }
   }
-  createReimburse(data).then(res => {
+  createReimburse(createData).then(res => {
     if (res.code === 0) {
       ElMessage({
         message: '添加成功',
@@ -509,33 +519,72 @@ const addReimburse = () => {
         showClose: true,
         duration: 2000
       })
+      const reset = {
+        projectCode: '',
+        applicant: '',
+        applicationTime: '',
+        approval: '',
+        genre: '',
+        feeDetails: [{
+          remarks: '',
+          feePrice: 0
+        }]
+      }
+      Object.assign(createData, reset)
+      createData.reimbursementPrice = totality.value
       reimburseAddShow.value = false
       refreshList()
     }
   })
 }
 
+const editReimburse = () => {
+  const editCondition = {
+    projectCode: serial.currentCode,
+    id: editData.ID,
+    applicant: editData.applicant,
+    applicationTime: editData.applicationTime,
+    approval: editData.approval,
+    reimbursementPrice: editTotality.value,
+    genre: editData.genre,
+    feeDetails: editData.feeDetails
+  }
+  updateReimburse(editCondition).then(res => {
+    if (res.code === 0) {
+      ElMessage({
+        message: '编辑成功',
+        type: 'success',
+        showClose: true,
+        duration: 2000
+      })
+      reimburseEditShow.value = false
+      refreshList()
+    }
+  })
+}
+
 const refreshList = () => {
   const refresh = condition
   refresh.code = serial.currentCode
   submit.getReimburseList(refresh)
 }
 const addFeeDetails = () => {
-  reimburseItem.push({
+  createData.feeDetails.push({
     remarks: '',
-    price: 0
+    feePrice: 0
   })
 }
 
 const addEditFeeDetails = () => {
   editData.feeDetails.push({
     remarks: '',
-    price: 0
+    feePrice: 0
   })
 }
 const delFeeDetails = () => {
   editData.feeDetails.splice(editData.feeDetails.length - 1, 1)
 }
+
 </script>
 
 <style scoped>

+ 1 - 0
web/src/view/finance/financeAnalysis/financeAnalysis.vue

@@ -317,6 +317,7 @@ const projectList = (condition) => {
       queryProjectExpense(list[0].code).then(res => {
         if (res.code === 0) {
           const summaryData = res.data
+          console.log(summaryData)
           payment.changePaymentList(summaryData.collection)
           payment.changePaymentTotal(summaryData.collectionTotal)
           submit.changeReimburseList(summaryData.reimbursement)