| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442 |
- <template>
- <div>
- <el-row
- class="bg-white"
- style="height: 80px"
- align="middle"
- justify="space-around"
- >
- <el-col
- :span="3"
- class="flex align-center justify-around"
- >
- <el-image
- :src="expense"
- style="width: 50px;height: 50px"
- />
- <el-text style="font-size: 20px;font-weight: 550;color: #409eff">备用金收支</el-text>
- </el-col>
- <el-col :span="21">
- <el-row align="middle">
- <el-col
- :span="4"
- :offset="1"
- >
- <el-row
- justify="center"
- align="middle"
- >
- <el-text
- style="font-size: 20px;color: #409eff;"
- tag="b"
- :line-clamp="1"
- >
- {{ reserve.reserveAmount }}元
- </el-text>
- </el-row>
- <el-row
- justify="center"
- align="middle"
- style="margin-top: 8px"
- >
- <el-text>备用金支入</el-text>
- </el-row>
- </el-col>
- <el-col :span="4">
- <el-row
- justify="center"
- align="middle"
- >
- <el-text
- style="font-size: 20px;color: #409eff;"
- tag="b"
- :line-clamp="1"
- >
- {{ reserve.expenditureAmount }}元
- </el-text>
- </el-row>
- <el-row
- justify="center"
- align="middle"
- style="margin-top: 8px"
- >
- <el-text>备用金支出</el-text>
- </el-row>
- </el-col>
- <el-col :span="4">
- <el-row
- justify="center"
- align="middle"
- >
- <el-text
- style="font-size: 20px;color: #409eff;"
- tag="b"
- :line-clamp="1"
- >
- {{ reserve.balance }}元
- </el-text>
- </el-row>
- <el-row
- justify="center"
- align="middle"
- style="margin-top: 8px"
- >
- <el-text>备用金余额</el-text>
- </el-row>
- </el-col>
- </el-row>
- </el-col>
- </el-row>
- <el-row
- class="bg-white"
- style="height: 700px;margin-top: 20px"
- >
- <el-col :span="24">
- <el-row style="margin-top: 15px;margin-left: 30px">
- <el-col
- :span="24"
- >
- <el-form
- :inline="true"
- style="margin: 5px 0 15px 0;height: 40px"
- >
- <el-form-item label="时间类型:">
- <el-select
- v-model="timeTypeValue"
- placeholder="请选择日期选择器"
- @change="changeTimeType"
- >
- <el-option
- v-for="item in timeTypeList"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- />
- </el-select>
- </el-form-item>
- <el-form-item
- v-if="timeTypeValue === 'date'"
- label="日期:"
- >
- <el-date-picker
- v-model="condition.dayTime"
- type="date"
- placeholder="请选择日期"
- format="YYYY-MM-DD"
- value-format="YYYY-MM-DD"
- clearable
- @clear="condition.dayTime = ''"
- />
- </el-form-item>
- <el-form-item
- v-if="timeTypeValue === 'month'"
- label="月份:"
- >
- <el-date-picker
- v-model="condition.monthTime"
- type="month"
- placeholder="请选择月份"
- format="YYYY-MM"
- value-format="YYYY-MM"
- clearable
- @clear="condition.monthTime = ''"
- />
- </el-form-item>
- <el-form-item
- v-if="timeTypeValue === 'year'"
- label="年份:"
- >
- <el-date-picker
- v-model="condition.yearTime"
- type="year"
- placeholder="请选择年份"
- format="YYYY"
- value-format="YYYY"
- clearable
- @clear="condition.yearTime = ''"
- />
- </el-form-item>
- <el-form-item label="项目:">
- <el-select
- v-model="condition.projectCode"
- filterable
- placeholder="请选择项目"
- clearable
- >
- <el-option
- v-for="item in projectList"
- :key="item.ID"
- :label="item.name"
- :value="item.code"
- />
- </el-select>
- </el-form-item>
- <el-form-item label="人员:">
- <el-select
- v-model="peopleSelect"
- placeholder="请选择人员名称"
- clearable
- filterable
- @clear="clearPeopleSelect"
- >
- <el-option
- v-for="item in userList"
- :key="item.ID"
- :label="item.nickName"
- :value="item.ID"
- />
- </el-select>
- </el-form-item>
- <el-form-item>
- <el-button
- type="primary"
- icon="Search"
- @click="consultPayList"
- >查询</el-button>
- </el-form-item>
- <el-form-item>
- <el-button
- type="primary"
- icon="Refresh"
- @click="payListReset"
- >重置</el-button>
- </el-form-item>
- </el-form>
- </el-col>
- </el-row>
- <el-row style="margin-top: 10px;margin-left: 30px">
- <el-col :span="23">
- <el-table
- :data="pay.projectCostList"
- stripe
- border
- >
- <el-table-column
- label="人员名称"
- align="center"
- prop="user.nickName"
- width="180"
- />
- <el-table-column
- label="费用类型"
- align="center"
- prop="projectFeeGenre.name"
- width="180"
- />
- <el-table-column
- label="所属项目"
- align="center"
- prop="project.name"
- width="180"
- />
- <el-table-column
- label="时间"
- align="center"
- prop="feeTime"
- width="180"
- />
- <el-table-column
- label="部门"
- align="center"
- prop="department.name"
- />
- <el-table-column
- label="支入金额(元)"
- align="center"
- prop="depositAmount"
- />
- <el-table-column
- label="支出金额(元)"
- align="center"
- prop="expenditureAmount"
- />
- <el-table-column
- label="当前余额(元)"
- align="center"
- prop="thenBalance"
- />
- <el-table-column
- label="操作"
- align="center"
- >
- <template #default="scope">
- <el-popover
- placement="top"
- :width="300"
- trigger="click"
- :content="scope.row.expenseDetail"
- >
- <template #reference>
- <el-button
- text
- type="primary"
- icon="Notebook"
- >
- 明细
- </el-button>
- </template>
- </el-popover>
- </template>
- </el-table-column>
- </el-table>
- </el-col>
- </el-row>
- <el-row
- v-show="pay.costListTotal > 8"
- >
- <el-col
- :span="23"
- class="flex justify-end"
- >
- <el-pagination
- v-model:current-page="condition.pageInfo.page"
- v-model:page-size="condition.pageInfo.pageSize"
- background
- layout="prev, pager, next"
- :total="pay.costListTotal"
- @change="changeCostPage"
- />
- </el-col>
- </el-row>
- </el-col>
- </el-row>
- </div>
- </template>
- <script setup>
- import { getStandbyMoney, projectCostTypeList } from '@/api/cost'
- import { getAllProject } from '@/api/project'
- import { onMounted, reactive, ref } from 'vue'
- import expense from '@/assets/expenses.png'
- import { getAllUsers } from '@/api/user'
- import { payData } from '@/pinia/cost/cost'
- defineOptions({
- name: 'Standby'
- })
- const pay = payData()
- // 搜索条件
- const condition = reactive({
- pageInfo: {
- page: 1,
- pageSize: 8
- },
- reimburser: 0,
- projectCode: '',
- genre: 0,
- dayTime: '',
- monthTime: '',
- yearTime: ''
- })
- // 搜索与重置
- const consultPayList = () => {
- condition.reimburser = peopleSelect.value === '' ? 0 : peopleSelect.value
- pay.getCostList(condition)
- }
- const payListReset = () => {
- const initialCondition = {
- pageInfo: {
- page: 1,
- pageSize: 8
- },
- reimburser: 0,
- projectCode: '',
- genre: condition.genre,
- dayTime: '',
- monthTime: '',
- yearTime: ''
- }
- Object.assign(condition, initialCondition)
- peopleSelect.value = ''
- pay.getCostList(condition)
- }
- onMounted(() => {
- queryAllProject()
- queryStandbyMoney()
- getUserList()
- appointType()
- })
- // 指定费用类型
- const appointType = () => {
- projectCostTypeList().then(res => {
- if (res.code === 0) {
- console.log('费用类型列表', res.data)
- const list = res.data
- list.forEach(item => {
- if (item.name === '备用金支出') {
- condition.genre = item.ID
- pay.getCostList(condition)
- }
- })
- }
- })
- }
- // 备用金汇总
- const reserve = reactive({})
- const queryStandbyMoney = () => {
- getStandbyMoney().then(res => {
- if (res.code === 0) {
- Object.assign(reserve, res.data)
- }
- })
- }
- // 日期查询
- const timeTypeValue = ref('date')
- const timeTypeList = reactive([
- { label: '按日期查询', value: 'date' },
- { label: '按月份查询', value: 'month' },
- { label: '按年份查询', value: 'year' }
- ])
- const changeTimeType = (value) => {
- if (value === 'year') {
- condition.monthTime = ''
- condition.dayTime = ''
- } else if (value === 'month') {
- condition.yearTime = ''
- condition.dayTime = ''
- } else {
- condition.yearTime = ''
- condition.monthTime = ''
- }
- }
- // 项目搜索
- const projectList = reactive([])
- const queryAllProject = () => {
- getAllProject().then(res => {
- if (res.code === 0) {
- projectList.length = 0
- projectList.push(...res.data)
- }
- })
- }
- // 人员搜索
- const peopleSelect = ref('')
- const userList = reactive([])
- const clearPeopleSelect = () => {
- peopleSelect.value = ''
- condition.reimburser = 0
- }
- const getUserList = () => {
- getAllUsers().then(res => {
- if (res.code === 0) {
- userList.length = 0
- userList.push(...res.data)
- }
- })
- }
- // 改变页码
- const changeCostPage = (val) => {
- condition.pageInfo.page = val
- consultPayList()
- }
- </script>
- <style scoped>
- </style>
|