瀏覽代碼

收入分析

curry 1 年之前
父節點
當前提交
ac58cf51d9

+ 10 - 3
web/src/pinia/hour/Hour.js

@@ -1,16 +1,17 @@
 import { defineStore } from 'pinia'
 import { queryHour, createHour, updateHour, deleteHour } from '@/api/hour'
-import { reactive } from 'vue'
+import { reactive, ref } from 'vue'
 
 export const hourOperate = defineStore('time', () => {
   // 定义数据
   const timeList = reactive([])
+  const timeTotal = ref(0)
   // 定义修改数据的方法
   const getTimeList = (data) => {
     queryHour(data).then(res => {
       if (res.code === 0) {
         timeList.length = 0
-        timeList.push(...res.data)
+        timeList.push(...res.data.list)
       }
     })
   }
@@ -39,12 +40,18 @@ export const hourOperate = defineStore('time', () => {
     timeList.length = 0
     timeList.push(...list)
   }
+  const changeTimeTotal = (total) => {
+    timeTotal.value = total
+  }
+
   return {
     timeList,
+    timeTotal,
     getTimeList,
     postTime,
     putTime,
     delTime,
-    changeTimeList
+    changeTimeList,
+    changeTimeTotal
   }
 })

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

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

+ 155 - 10
web/src/view/finance/components/hour.vue

@@ -1,29 +1,174 @@
 <template>
   <div>
     <el-row>
-      <el-col :span="6">
-        <el-form-item
-          label="人员名称:"
+      <el-col :span="4">
+        <el-select
+          v-model="peopleId"
+          placeholder="请选择工作人员"
+          clearable
+          @clear="peopleId = ''"
         >
-          <el-input
-            v-model="condition.name"
-            placeholder="请输入人员名称"
+          <el-option
+            v-for="item in peopleList"
+            :key="item.ID"
+            :label="item.name"
+            :value="item.ID"
           />
-        </el-form-item>
+        </el-select>
+      </el-col>
+      <el-col
+        :span="5"
+        :offset="1"
+      >
+        <el-date-picker
+          v-model="condition.yearTime"
+          type="year"
+          placeholder="请选择年份"
+          format="YYYY"
+          value-format="YYYY"
+          clearable
+          @clear="condition.yearTime = ''"
+        />
+      </el-col>
+      <el-col
+        :span="5"
+        :offset="1"
+      >
+        <el-date-picker
+          v-model="condition.time"
+          type="month"
+          placeholder="请选择月份"
+          format="YYYY-MM"
+          value-format="YYYY-MM"
+          clearable
+          @clear="condition.time = ''"
+        />
+      </el-col>
+      <el-col
+        :span="2"
+        :offset="1"
+      >
+        <el-button
+          type="primary"
+          :icon="Search"
+          @click="retrievalTime"
+        >查询</el-button>
+      </el-col>
+      <el-col
+        :span="2"
+        style="margin-left: 20px"
+      >
+        <el-button
+          type="primary"
+          :icon="Plus"
+          @click="addTimeShow = true"
+        >新增</el-button>
+      </el-col>
+    </el-row>
+    <el-row style="margin-top: 20px">
+      <el-col :span="23">
+        <el-table
+          :data="hour.timeList"
+          stripe
+        >
+          <el-table-column
+            label="工作人员"
+            prop="Name"
+          />
+          <el-table-column
+            label="工作天数"
+            prop="SumDay"
+          />
+          <el-table-column
+            label="总工资"
+            prop="PriceSum"
+          />
+        </el-table>
       </el-col>
     </el-row>
-    <el-row/>
+    <el-dialog
+      v-model="addTimeShow"
+      title="新增工时"
+      width="40%"
+    >
+      <el-form label-width="100px">
+        <el-form-item label="工人名称:">
+          <el-input
+            v-model="addCondition.people"
+            clearable
+            placeholder="请输入工人名称"
+            @clear="addCondition.people = ''"
+          />
+        </el-form-item>
+        <el-form-item label="工作天数:">
+          <el-input-number v-model="addCondition.days" />
+        </el-form-item>
+        <el-form-item label="人天单价:">
+          <el-input-number v-model="addCondition.price" />
+        </el-form-item>
+      </el-form>
+      <template #footer>
+        <el-button
+          type="primary"
+          size="large"
+          @click="addTime"
+        >
+          确认
+        </el-button>
+      </template>
+    </el-dialog>
   </div>
 </template>
 
 <script setup>
-import { reactive } from 'vue'
+import { reactive, onMounted, ref } from 'vue'
+import { hourOperate } from '@/pinia/hour/Hour'
+// import { codeOperate } from '@/pinia/code/code'
+import { queryConstructor } from '@/api/finance'
+import { Search, Plus } from '@element-plus/icons-vue'
 defineOptions({
   name: 'Hour'
 })
+const hour = hourOperate()
+// const serial = codeOperate()
 const condition = reactive({
-  name: ''
+  pageInfo: {
+    page: 1,
+    pageSize: 8
+  },
+  code: '',
+  time: '',
+  yearTime: '',
+  people: 0
+})
+const addCondition = reactive({
+  projectCode: '',
+  people: '',
+  days: 0,
+  price: 0
+})
+const peopleId = ref('')
+const peopleList = reactive([])
+const addTimeShow = ref(false)
+onMounted(() => {
+  queryConstructor().then(res => {
+    if (res.code === 0) {
+      peopleList.length = 0
+      peopleList.push(...res.data)
+    }
+    console.log(res)
+  })
 })
+
+const retrievalTime = () => {
+  peopleId.value === '' ? condition.people = 0 : condition.people = parseFloat(peopleId.value)
+  console.log(condition)
+  hour.getTimeList(condition)
+}
+
+const addTime = () => {
+  console.log()
+}
 </script>
 
 <style scoped>

+ 14 - 17
web/src/view/finance/components/payment.vue

@@ -28,7 +28,7 @@
         <el-button
           type="primary"
           :icon="Plus"
-          @click="paymentAddShow = true"
+          @click="paymentAddShow.value = true"
         >
           新增
         </el-button>
@@ -49,7 +49,7 @@
             />
             <el-table-column
               label="收款金额(元)"
-              prop="price"
+              prop="collectionPrice"
               align="center"
               width="250px"
             />
@@ -175,6 +175,7 @@
             placeholder="请输入收款金额"
             clearable
             type="number"
+            @clear="addAmount.value = ''"
           />
         </el-form-item>
         <el-form-item
@@ -188,6 +189,7 @@
             format="YYYY-MM-DD"
             value-format="YYYY-MM-DD"
             clearable
+            @clear="paymentAddData.collectionTime = ''"
           />
         </el-form-item>
         <el-form-item
@@ -201,6 +203,7 @@
             type="textarea"
             maxlength="100"
             show-word-limit
+            @clear="paymentAddData.remarks = ''"
           />
         </el-form-item>
       </el-form>
@@ -242,7 +245,7 @@ const paymentEditShow = ref(false)
 const paymentEditData = reactive({
   id: 0,
   projectCode: '',
-  price: 0,
+  collectionPrice: 0,
   remarks: '',
   collectionTime: ''
 })
@@ -253,7 +256,7 @@ const paymentAddShow = ref(false)
 
 const paymentAddData = reactive({
   projectCode: '',
-  price: 0,
+  collectionPrice: 0,
   remarks: '',
   collectionTime: ''
 })
@@ -265,14 +268,14 @@ const openPaymentEdit = (row) => {
   paymentEditShow.value = true
   paymentEditData.projectCode = row.projectCode
   paymentEditData.collectionTime = row.collectionTime
-  editAmount.value = row.price
+  editAmount.value = row.collectionPrice
   paymentEditData.id = row.ID
   paymentEditData.remarks = row.remarks
 }
 const paymentEdit = () => {
   const editCondition = condition
   editCondition.code = paymentEditData.projectCode
-  paymentEditData.price = parseFloat(editAmount.value)
+  paymentEditData.collectionPrice = parseFloat(editAmount.value)
   updateCollection(paymentEditData).then(res => {
     if (res.code === 0) {
       ElMessage({
@@ -303,7 +306,6 @@ const paymentDelete = (row) => {
     .then(() => {
       const id = { id: row.ID }
       deleteCollection(id).then(res => {
-        console.log(res)
         if (res.code === 0) {
           ElMessage({
             message: '删除成功',
@@ -327,19 +329,13 @@ const searchCollection = () => {
 }
 const paymentAdd = () => {
   const addData = paymentAddData
-  addData.price = addAmount.value.length === 0 ? 0 : parseFloat(addAmount.value)
+  addData.collectionPrice = addAmount.value.length === 0 ? 0 : parseFloat(addAmount.value)
   addData.projectCode = pay.paymentCode
-  const summary = {
-    'price': '请输入收款金额',
-    'collectionTime': '请选择收款日期'
-  }
+  console.log(addData)
   for (const item in addData) {
-    if (item === 'remarks') {
-      continue
-    }
-    if (addData[item] === '' || addData[item] === 0 || addData[item] === null) {
+    if (addData[item] === '' || addData[item] === 0) {
       ElMessage({
-        message: summary[item],
+        message: '请将信息填写完整',
         type: 'error',
         showClose: true,
         duration: 2000
@@ -348,6 +344,7 @@ const paymentAdd = () => {
     }
   }
   createCollection(addData).then(res => {
+    console.log(res)
     const reset = condition
     reset.pageInfo.page = 1
     reset.code = pay.paymentCode

+ 1 - 1
web/src/view/finance/components/reimburse.vue

@@ -438,7 +438,7 @@ const totality = computed(() => {
 const editTotality = computed(() => {
   let middle = 0
   editData.feeDetails.forEach(item => {
-    middle += item.feePrice
+    middle += parseFloat(item.feePrice)
   })
   return middle
 })

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

@@ -118,7 +118,7 @@
             label="费用报销"
             :name="2"
           >
-            <Reimburse/>
+            <Reimburse />
           </el-tab-pane>
           <el-tab-pane
             label="项目收款"
@@ -255,6 +255,7 @@ import Reimburse from '../components/reimburse.vue'
 import { collectionOperate } from '@/pinia/collection/Collection'
 import { codeOperate } from '@/pinia/code/code'
 import { reimburseOperate } from '@/pinia/reimbursement/Reimbursement'
+import { hourOperate } from '@/pinia/hour/Hour'
 
 defineOptions({
   name: 'FinanceAnalysis'
@@ -263,6 +264,7 @@ defineOptions({
 const payment = collectionOperate()
 const symbol = codeOperate()
 const submit = reimburseOperate()
+const hour = hourOperate()
 
 const listShow = ref(false)
 const condition = reactive({
@@ -322,6 +324,16 @@ const projectList = (condition) => {
           payment.changePaymentTotal(summaryData.collectionTotal)
           submit.changeReimburseList(summaryData.reimbursement)
           submit.changeReimburseTotal(summaryData.reimbursementTotal)
+          hour.getTimeList({
+            pageInfo: {
+              page: 1,
+              pageSize: 8
+            },
+            code: symbol.currentCode,
+            time: '',
+            yearTime: '',
+            people: 0
+          })
         }
       })
       getProjectMessage(list[0].code).then(res => {