This commit is contained in:
2025-03-11 15:47:08 +08:00
19 changed files with 403 additions and 389 deletions

View File

@@ -1,83 +1,49 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<!-- <el-form-item label="项目名" prop="projectId">-->
<!-- <el-input-->
<!-- v-model="queryParams.projectId"-->
<!-- placeholder="请输入项目名"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item>
<!-- <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>-->
<el-form-item label="项目名" prop="projectName">
<el-input
v-model="queryParams.projectName"
placeholder="请输入项目名"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['oa:oaOutWarehouse:add']"
>新增
</el-button>
</el-col>
<!-- <el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['oa:oaOutWarehouse:remove']"
>删除
</el-button>
</el-col> -->
<!-- <el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['oa:oaOutWarehouse:export']"
>导出
</el-button>
</el-col> -->
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="costList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="索引" align="center" type="index"/>
<el-table-column label="项目编号" align="center" prop="projectId"/>
<el-table-column label="序号" align="center" type="index"/>
<el-table-column label="项目名" align="center" prop="projectName"/>
<el-table-column label="成本" align="center" prop="cost"/>
<el-table-column label="成本类型" align="center" prop="costType"/>
<el-table-column label="备注" align="center" prop="remark"/>
<!-- <el-table-column label="备注" align="center" prop="remark">
<el-table-column label="人力花费" align="center" prop="userCost">
<template slot-scope="scope">
<div v-if="scope.row.projectName!==null">
<el-tooltip class="item" effect="dark" :content="'点击查看'+scope.row.projectName+'的出库情况'" placement="bottom">
<el-button
size="mini"
type="text"
@click="handleSearch(scope.row)"
> {{ scope.row.projectName }}
</el-button>
</el-tooltip>
</div>
<div v-else>未关联项目</div>
<div>{{formatNumberToWan(scope.row.userCost)}}万元</div>
</template>
</el-table-column> -->
<el-table-column label="创建时间" align="center" prop="createTime"/>
</el-table-column>
<el-table-column label="人天计算" align="center" prop="peopleDay"/>
<el-table-column label="报销花费" align="center" prop="claimCost">
<template slot-scope="scope">
<div>{{formatNumberToWan(scope.row.claimCost)}}万元</div>
</template>
</el-table-column>
<el-table-column label="物料花费" align="center" prop="materialCost">
<template slot-scope="scope">
<div>{{formatNumberToWan(scope.row.materialCost)}}万元</div>
</template>
</el-table-column>
<el-table-column label="综合成本" align="center" prop="cost">
<template slot-scope="scope">
<div>{{formatNumberToWan(scope.row.materialCost+scope.row.userCost+scope.row.claimCost)}}万元</div>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
@@ -205,88 +171,44 @@
</el-descriptions> -->
<el-tabs v-model="activeName" type="card">
<el-tab-pane label="claim成本" name="claim">
<el-tab-pane label="报销花费详情" name="claim">
<el-table v-loading="loading" :data="detailData.claimList">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="索引" align="center" type="index"/>
<el-table-column label="成本" align="center" prop="cost"/>
<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<el-table-column label="花费" align="center" prop="cost">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除
</el-button>
<div>{{scope.row.cost}}</div>
</template>
</el-table-column> -->
</el-table-column>
<el-table-column label="申请人" align="center" prop="nickName"/>
<el-table-column label="备注" align="center" prop="remark"/>
</el-table>
</el-tab-pane>
<el-tab-pane label="material成本" name="material">
<el-tab-pane label="物料花费详情" name="material">
<el-table v-loading="loading" :data="detailData.materialList">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="索引" align="center" type="index"/>
<el-table-column label="成本" align="center" prop="cost"/>
<el-table-column label="材料品牌" align="center" prop="materialVo.brand"/>
<el-table-column label="材料型号" align="center" prop="materialVo.model"/>
<el-table-column label="材料名称" align="center" prop="materialVo.name"/>
<el-table-column label="材料库存" align="center" prop="materialVo.inventory"/>
<el-table-column label="材料单价" align="center" prop="materialVo.price"/>
<el-table-column label="材料单位" align="center" prop="materialVo.unit"/>
<el-table-column label="材料规格" align="center" prop="materialVo.specifications"/>
<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<el-table-column label="材料编号" align="center" prop="materialId"/>
<el-table-column label="材料单价" align="center" prop="price">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除
</el-button>
<div>{{scope.row.price}}</div>
</template>
</el-table-column> -->
</el-table-column>
<el-table-column label="物料名" align="center" prop="name"/>
<el-table-column label="出库数量" align="center" prop="amount"/>
</el-table>
</el-tab-pane>
<el-tab-pane label="other成本" name="other">
<el-table :data="detailData.otherList">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="索引" align="center" type="index"/>
<el-table-column label="成本" align="center" prop="cost"/>
<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除
</el-button>
</template>
</el-table-column> -->
</el-table>
</el-tab-pane>
<el-tab-pane label="user成本" name="user">
<el-tab-pane label="人力成本" name="user">
<el-table :data="detailData.userCostList">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="索引" align="center" type="index"/>
<el-table-column label="成本" align="center" prop="cost"/>
<el-table-column label="人员名称" align="center" prop="userVo.userName"/>
<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<el-table-column label="人员名称" align="center" prop="nickName"/>
<el-table-column label="人员成本" align="center" prop="laborCost">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除
</el-button>
<div>{{scope.row.laborCost}}</div>
</template>
</el-table-column> -->
</el-table-column>
<el-table-column label="人天计算" align="center" prop="attendanceNum"/>
</el-table>
</el-tab-pane>
</el-tabs>
@@ -298,35 +220,6 @@
<!-- 添加或修改仓库出库对话框 -->
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<!-- <el-form-item
label="绑定项目"
>
<el-radio-group v-model="projectFlag" :disabled="drawer">
<el-radio :label="true"></el-radio>
<el-radio :label="false"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
v-if="projectFlag&&!drawer"
prop="projectId"
label="项目名"
>
<el-select v-model="form.projectId" placeholder="请选择项目">
<el-option
v-for="item in projectList"
:key="item.projectId"
:label="item.projectName"
:value="item.projectId">
</el-option>
</el-select>
</el-form-item>
<el-form-item
v-if="drawer"
label="项目名"
>
<el-input :value="selectedProject.projectName" disabled></el-input>
</el-form-item> -->
<el-form-item label="项目ID">
<el-input v-model="form.projectId"></el-input>
</el-form-item>
@@ -347,58 +240,6 @@
v-model="form.remark">
</el-input>
</el-form-item>
<!-- <el-form-item
v-for="(item, index) in form.outWareHouseList"
:label="'出库物料' + (index+1)"
:key="item.warehouseId"
:prop="'outWareHouseList.' + index + '.warehouseId'"
>
<el-row>
<el-col :span="8">物料名</el-col>
<el-col :span="4">当前库存</el-col>
<el-col :span="8">出库数量</el-col>
<el-col :span="4">操作</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-select
v-model="item.warehouseId"
filterable
remote
reserve-keyword
@change="(e)=>handleGetInventory(e,index)"
placeholder="请输入关键词"
:remote-method="remoteMethod"
:loading="loading">
<el-option
v-for="item in oaWarehouseList"
:key="item.id"
:label="item.name"
:value="item.id">
<span style="">{{ item.name }}</span>
<span style="color: #8492a6; font-size: 13px" v-if="item.model!==undefined">-{{ item.model }}</span>
<span style="color: #8492a6; font-size: 13px" v-if="item.brand!==undefined">-{{ item.brand }}</span>
</el-option>
</el-select>
</el-col>
<el-col :span="3">
<el-tag type="info" v-if="item.inventory===undefined">请选择物料</el-tag>
<el-tag type="info" v-else>{{ item.inventory }}</el-tag>
</el-col>
<el-col :span="6">
<el-input-number v-model="item.amount" :min="1" :max="item.inventory"></el-input-number>
</el-col>
<el-col :span="6" style="display: flex;justify-content: center" >
<el-button @click.prevent="removeDomain(item)">删除</el-button>
</el-col>
</el-row>
</el-form-item> -->
<!-- <el-form-item>
<el-button @click="addDomain">新增成本</el-button>
<el-button @click="reset()">重置</el-button>
</el-form-item> -->
</el-form>
<div slot="footer" class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm"> </el-button>
@@ -425,11 +266,14 @@
<el-table v-loading="loading" :data="oaOutWarehouseList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="序号" align="center" type="index"/>
<el-table-column label="出库单" align="center" prop="id"/>
<el-table-column label="物料名" align="center" prop="warehouseName"/>
<el-table-column label="物料名" align="center" prop="name"/>
<el-table-column label="出库数量" align="center" prop="amount"/>
<el-table-column label="出库时间" align="center" prop="createTime"/>
<el-table-column label="备注" align="center" prop="remark"/>
<el-table-column label="物料单价" align="center" prop="price"/>
<el-table-column label="总计花费" align="center" prop="remark">
<template slot-scope="scope">
<div>{{scope.row.amount*scope.row.price}}</div>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
@@ -452,6 +296,7 @@
import {listProject} from "@/api/oa/project";
import {listByMultiQuery, listOaWarehouse} from "../../../api/oa/oaWarehouse";
import { createCostDetail, getCostDetailById, getCostDetailList } from "../../../api/oa/finance";
import {formatNumberToWan} from "../../../utils/currencyFormatter";
export default {
name: "OaOutWarehouse",
@@ -532,12 +377,13 @@ export default {
this.getList();
},
methods: {
formatNumberToWan,
/** 查询仓库出库列表 */
getList() {
this.loading = true;
getCostDetailList().then(res => {
console.log(res.rows)
getCostDetailList(this.queryParams).then(res => {
console.log(res)
this.costList = res.rows
this.total = res.total
this.loading = false
@@ -734,32 +580,10 @@ export default {
})
},
// 查看出库详情
handleSearch(item) {
this.loading = true
this.searchItem = item;
this.form.projectId = item.projectId;
this.selectedProject = item;
queryOutWarehouseByProjectId(item.projectId).then(response => {
this.oaOutWarehouseList = response.rows;
this.drawer = true;
this.loading = false;
})
},
// 查看出库单独条目详情
showDetail(row){
// getOaOutWarehouse(row.id).then(response => {
// console.log(response.data);
// this.outDetail = response.data;
// this.projectDetail = response.data.project;
// this.warehouseDetail = response.data.warehouse;
// })
// this.detail=true;
getCostDetailById(row.projectId).then(response => {
console.log(response.rows[0]);
this.detailData = response.rows[0];
this.detailData = response.data;
this.detail=true;
})
}

View File

@@ -1,9 +1,17 @@
<template>
<el-form ref="form" :model="formData" label-width="80px">
<el-form-item label="类型">
<el-input v-model="formData.type" />
<el-select v-model="formData.type">
<el-option label="其他" :value="0" />
<el-option label="旷工" :value="3" />
<el-option label="请假" :value="1" />
<el-option label="迟到" :value="4" />
<el-option label="早退" :value="6" />
<el-option label="未打卡" :value="5" />
<el-option label="出差" :value="2" />
</el-select>
</el-form-item>
<el-form-item label="奖惩标记">
<el-select v-model="formData.flag">
<el-option label="奖励" :value="1" />
@@ -18,11 +26,11 @@
<el-form-item label="日期" prop="signTime">
<el-date-picker v-model="formData.signTime" type="date" format="yyyy-MM-DD" placeholder="选择日期" />
</el-form-item>
<el-form-item label="备注" prop="reason">
<el-input v-model="formData.reason" type="textarea" />
</el-form-item>
<div class="dialog-footer">
<el-button @click="handleCancel">取消</el-button>
<el-button type="primary" @click="submit">确认创建</el-button>
@@ -49,7 +57,7 @@ export default {
if (valid) {
this.$emit('submit', this.formData)
this.resetForm();
}
}
})
},
@@ -69,4 +77,4 @@ export default {
}
}
}
</script>
</script>

View File

@@ -4,12 +4,11 @@
:data="tableData"
v-loading="loading"
@selection-change="$emit('selection-change', $event)"
>
<el-table-column type="selection" width="55" />
<el-table-column prop="nickName" label="姓名" />
<el-table-column prop="realSalary" label="实发工资" />
<el-table-column prop="baseSalary" label="基本工资" />
<el-table-column prop="baseSalary" label="基本工资" />
<el-table-column prop="payTime" label="发薪日期" />
<el-table-column label="操作" width="180">
<template slot-scope="{ row }">
@@ -49,4 +48,4 @@ export default {
}
}
}
</script>
</script>

View File

@@ -2,11 +2,6 @@
<div class="salary-container">
<!-- 操作工具栏 -->
<el-row class="operation-bar">
<el-col :span="12">
<!-- <el-button type="primary" @click="openDialog('add')">新增</el-button> -->
<!-- <el-button :disabled="selectedRows.length === 0" @click="handleBatchDelete">批量删除</el-button> -->
<!-- <el-button @click="handleExport">导出</el-button> -->
</el-col>
<el-col :span="12" class="text-right">
<el-date-picker
v-model="currentMonth"
@@ -29,12 +24,12 @@
@page-change="handlePageChange"
/>
</el-tab-pane>
<el-tab-pane label="工人工资" name="worker">
<salary-table
:data="tableData"
:loading="loading"
:pagination="pagination"
:pagination="pagination"
@selection-change="handleSelection"
@delete="handleDelete"
@page-change="handlePageChange"
@@ -52,7 +47,7 @@
<el-table :data="salaryDetails">
<el-table-column label="奖惩标记" prop="flag">
<template slot-scope="scope">
<el-tag
<el-tag
:type="scope.row.flag === 1 ? 'success' : 'danger'"
disable-transitions
>
@@ -112,12 +107,12 @@ export default {
this.fetchData()
},
methods: {
getDefaultMonth() {
getDefaultMonth() {
const d = new Date()
return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}`
},
async fetchData() {
async fetchData() {
this.loading = true
try {
const params = {
@@ -171,10 +166,10 @@ export default {
getSalaryItemDetail(id).then(res => {
this.salaryDetails = res.rows;
})
},
},
async handleSubmit(formData) {
console.log(formData);
console.log(formData);
const result = await createSalaryItem({
...formData,
salaryId: this.currentEditData.salaryId
@@ -206,4 +201,4 @@ export default {
.text-right {
text-align: right;
}
</style>
</style>

View File

@@ -92,10 +92,10 @@
</el-col>
</el-row>
<el-drawer title="文件管理"
:visible.sync="showFile"
size="800px"
direction="rtl"
<el-drawer :title="`${user.nickName} - 文件管理`"
:visible.sync="fileDrawerVisible"
size="800px"
direction="rtl"
append-to-body>
<UserFileManager
:user-id="user.userId"