|
@@ -20,20 +20,27 @@
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column :show-overflow-tooltip="true" prop="T_date" label="提交日期" width="220" />
|
|
|
- <el-table-column label="操作" fixed="right" min-width="320">
|
|
|
+ <el-table-column label="操作" fixed="right" min-width="350">
|
|
|
<template #default="scope">
|
|
|
<el-button @click="showDrawer('det', scope.row)">详情</el-button>
|
|
|
- <el-button @click="showDrawer('edi', scope.row)">编辑</el-button>
|
|
|
- <el-button @click="delReimbu(scope.row)" type="danger">删除</el-button>
|
|
|
- <el-button @click="showDrawer('sub', scope.row)" type="primary">提交审核</el-button>
|
|
|
+ <el-button @click="showDrawer('edi', scope.row)" v-if="scope.row.T_State != 6 &&
|
|
|
+ scope.row.T_State != 5 && scope.row.T_State != 3
|
|
|
+ ">编辑</el-button>
|
|
|
+ <el-button @click="delReimbu(scope.row)" type="danger" v-if="scope.row.T_State != 6 &&
|
|
|
+ scope.row.T_State != 5 && scope.row.T_State != 3
|
|
|
+ ">删除</el-button>
|
|
|
+ <el-button @click="showDrawer('sub', scope.row)" type="primary" v-if="scope.row.T_State != 6 &&
|
|
|
+ scope.row.T_State != 5 && scope.row.T_State != 3
|
|
|
+ ">提交审核</el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
+
|
|
|
<el-pagination v-model:current-page="data.pages.page" layout="total, prev, pager, next, jumper"
|
|
|
v-model:page-size="data.pages.page_z" :total="data.total" @current-change="handleCurrentChange"
|
|
|
style="margin-top: 20px;" />
|
|
|
</div>
|
|
|
- <el-drawer v-model="data.drawer" :title="data.drawerTiti" direction="rtl" :before-close="handleClose" size="95%">
|
|
|
+ <el-drawer v-model="data.drawer" :title="data.drawerTiti" direction="rtl" :before-close="handleClose" size="100%">
|
|
|
<el-form :model="data.fromData" label-position="top">
|
|
|
<el-form-item label="报销总金额">
|
|
|
<div style="display: flex;">
|
|
@@ -48,18 +55,18 @@
|
|
|
<el-table-column label="出差地点">
|
|
|
<el-table-column label="起点站" width="150">
|
|
|
<template #default="scope">
|
|
|
- <el-input v-model="scope.row.T_trip_origin" placeholder="起点"
|
|
|
+ <el-input v-model="scope.row.T_trip_origin" placeholder="起点站"
|
|
|
:disabled="data.disabledNum == scope.$index ? false : true" />
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="city" label="终点站" width="150">
|
|
|
<template #default="scope">
|
|
|
- <el-input v-model="scope.row.T_trip_terminus" placeholder="起点"
|
|
|
+ <el-input v-model="scope.row.T_trip_terminus" placeholder="终点站"
|
|
|
:disabled="data.disabledNum == scope.$index ? false : true" />
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="address" label="出差时间起止时间" width="250">
|
|
|
+ <el-table-column label="出差时间起止时间" width="250">
|
|
|
<template #default="scope">
|
|
|
<el-date-picker v-model="scope.row.mapPick" type="daterange" style="width: 220px;"
|
|
|
@change="changeFun($event, scope)" value-format="YYYY-MM-DD"
|
|
@@ -67,40 +74,37 @@
|
|
|
</template>
|
|
|
|
|
|
</el-table-column>
|
|
|
-
|
|
|
- <el-table-column prop="address" label="费用类型" width="150">
|
|
|
-
|
|
|
+ <el-table-column label="费用类型" width="150">
|
|
|
<template #default="scope">
|
|
|
<el-select v-model.number="scope.row.T_fee_type" class="m-2" placeholder="费用类型" size="large"
|
|
|
:disabled="data.disabledNum == scope.$index ? false : true">
|
|
|
<el-option v-for="item in data.optionsFeeType" :key="item.Id" :label="item.T_name"
|
|
|
- :value="item.Id" />
|
|
|
+ @click="clickFeeType(item)" :value="item.Id" />
|
|
|
</el-select>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="address" label="费用明细" width="150">
|
|
|
+ <el-table-column label="费用明细" width="150">
|
|
|
<template #default="scope">
|
|
|
- <el-select v-model.number="scope.row.T_fee_details" class="m-2" placeholder="费用明细"
|
|
|
- size="large" @focus="detailsFocus"
|
|
|
+ <el-select v-model.number="scope.row.T_fee_details" class="m-2" placeholder="费用明细" size="large"
|
|
|
:disabled="data.disabledNum == scope.$index ? false : true">
|
|
|
- <el-option v-for="item in data.optionsFeeDetails" :key="item.Id" :label="item.T_name"
|
|
|
+ <el-option v-for="item in scope.row.selectData" :key="item.Id" :label="item.T_name"
|
|
|
:value="item.Id" />
|
|
|
</el-select>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="address" label="费用金额" width="150">
|
|
|
+ <el-table-column label="费用金额" width="150">
|
|
|
<template #default="scope">
|
|
|
<el-input v-model.number="scope.row.T_money" placeholder="费用金额"
|
|
|
:disabled="data.disabledNum == scope.$index ? false : true" />
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="address" label="费用事由" width="150">
|
|
|
+ <el-table-column label="费用事由" width="150">
|
|
|
<template #default="scope">
|
|
|
<el-input v-model="scope.row.T_reasons" placeholder="费用事由"
|
|
|
:disabled="data.disabledNum == scope.$index ? false : true" />
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="address" label="涉及项目" width="150">
|
|
|
+ <el-table-column label="涉及项目" width="150">
|
|
|
|
|
|
<template #default="scope">
|
|
|
<el-input v-model="scope.row.T_project" placeholder="涉及项目"
|
|
@@ -108,20 +112,22 @@
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
|
|
|
- <el-table-column prop="address" label="附件" :min-width="data.drawerTiti != '详情' ? '80' : ''">
|
|
|
+ <el-table-column label="附件" :min-width="data.drawerTiti != '详情' ? '80' : ''" >
|
|
|
<template #default="scope">
|
|
|
- <Upload ref="uploadRef" :isImg="true" :limit="1" v-model="scope.row.T_img"
|
|
|
- accept="image/*">
|
|
|
- <el-icon>
|
|
|
- <Plus />
|
|
|
- </el-icon>
|
|
|
- </Upload>
|
|
|
+ <Upload :limit="1" v-model="scope.row.T_img" accept="image/*"
|
|
|
+ style="display: inline-block;float: left;"
|
|
|
+ :disabled="data.drawerTiti=='详情'?true:false"
|
|
|
+ :show-file-list="false">
|
|
|
+ <el-icon>
|
|
|
+ <Plus />
|
|
|
+ </el-icon>
|
|
|
+ </Upload>
|
|
|
+ <img :src="scope.row.T_img" style="width: 40px;margin-left: 10px;">
|
|
|
</template>
|
|
|
-
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="address" fixed="right" min-width="300" v-if="data.drawerTiti != '详情'">
|
|
|
+ <el-table-column fixed="right" min-width="300" v-if="data.drawerTiti != '详情'">
|
|
|
<template #default="scope">
|
|
|
- <el-button type="primary" @click="EditFun(scope)">编辑</el-button>
|
|
|
+ <el-button type="primary" @click="EditFun(scope)">修改</el-button>
|
|
|
<el-button @click="newDel(scope)">删除</el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
@@ -133,16 +139,17 @@
|
|
|
<span style="padding-left: 5px;">新增明细</span>
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="打款明细" v-if="data.drawerTiti == '详情'">
|
|
|
- <el-table :data="data.tableData" :header-cell-style="{ background: '#f5f7fa' }" border>
|
|
|
+ <el-form-item label="打款明细" v-if="data.drawerTiti == '详情'">
|
|
|
+ <el-table :data="data.tableRemit" :header-cell-style="{ background: '#f5f7fa' }" border>
|
|
|
<el-table-column type="index" label="序号" fixed width="70" />
|
|
|
- <el-table-column prop="address" label="打款时间" width="300" />
|
|
|
- <el-table-column prop="address" label="打款金额" />
|
|
|
+ <el-table-column prop="T_time" label="打款时间" width="300" />
|
|
|
+ <el-table-column prop="T_money" label="打款金额" />
|
|
|
+
|
|
|
</el-table>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
- <div class="demo-drawer__footer" v-if="data.drawerTiti != '详情'">
|
|
|
- <el-button type="primary" @click="subData">立即提交</el-button>
|
|
|
+ <div class="demo-drawer__footer">
|
|
|
+ <el-button type="primary" @click="subData" v-if="data.drawerTiti != '详情'">立即提交</el-button>
|
|
|
<el-button @click="data.drawer = false">取消</el-button>
|
|
|
</div>
|
|
|
</el-drawer>
|
|
@@ -153,10 +160,10 @@
|
|
|
</template>
|
|
|
<script setup lang="ts">
|
|
|
import {
|
|
|
- ReimburseMy_List, ReimburseMy_Del, ReimburseMy_Add, ReimburseMy_Get,
|
|
|
- ReimburseMy_FeeType, ReimburseMy_FeeDetails
|
|
|
+ ReimburseMy_List, ReimburseMy_Del, ReimburseMy_Add,ReimburseMy_Edit, ReimburseMy_Get,
|
|
|
+ ReimburseMy_FeeType,ReimburseMy_Submit
|
|
|
} from '@/api/ReimburseMy/index'
|
|
|
-import { reactive, ref } from "vue";
|
|
|
+import { computed, reactive, ref,watch } from "vue";
|
|
|
import { ElMessage, ElMessageBox } from 'element-plus'
|
|
|
const dialogImageUrl = ref('')
|
|
|
const dialogVisible = ref(false)
|
|
@@ -164,11 +171,10 @@ import { GlobalStore } from '@/stores/index'
|
|
|
import Upload from '@/components/Upload/index.vue'
|
|
|
|
|
|
|
|
|
+
|
|
|
const data = reactive({
|
|
|
//费用类型
|
|
|
- optionsFeeType: [{ Id: '', T_name: '' }],
|
|
|
- //费用明细
|
|
|
- optionsFeeDetails: [{ Id: '', T_name: '' }],
|
|
|
+ optionsFeeType: [{ Id: '', T_name: '',FeeDetails:[]}],
|
|
|
pages: {
|
|
|
page: 1,
|
|
|
page_z: 10
|
|
@@ -180,11 +186,14 @@ const data = reactive({
|
|
|
drawer: false,
|
|
|
drawerTiti: '',
|
|
|
tableData: [],
|
|
|
- fromData: {
|
|
|
+ tableRemit:[],//打款明细
|
|
|
+ fromData: {//新增,编辑的提交参数
|
|
|
User_tokey: GlobalStore().GET_User_tokey,
|
|
|
T_money: 0,
|
|
|
- ReimburseDetails: [{
|
|
|
+ T_id:'',
|
|
|
+ ReimburseDetails:[{
|
|
|
mapPick: [],
|
|
|
+ selectData:[],
|
|
|
T_trip_start_time: "",
|
|
|
T_trip_end_time: "",
|
|
|
T_trip_origin: "",
|
|
@@ -199,6 +208,8 @@ const data = reactive({
|
|
|
}
|
|
|
})
|
|
|
|
|
|
+
|
|
|
+
|
|
|
const changeFun = (timeKey: any, e: any) => {
|
|
|
data.fromData.ReimburseDetails[e.$index].T_trip_start_time = timeKey[0]
|
|
|
data.fromData.ReimburseDetails[e.$index].T_trip_end_time = timeKey[1]
|
|
@@ -225,7 +236,18 @@ const subData = () => {
|
|
|
if (data.drawerTiti == '新增') {
|
|
|
setAddApi()
|
|
|
} else {
|
|
|
-
|
|
|
+ seteditApi()
|
|
|
+ }
|
|
|
+}
|
|
|
+//编辑
|
|
|
+const seteditApi = async()=>{
|
|
|
+ console.log('编辑',data.fromData)
|
|
|
+ const resIt: any = await ReimburseMy_Edit(data.fromData)
|
|
|
+ console.log('编辑', resIt)
|
|
|
+ if (resIt.Code == 200) {
|
|
|
+ ElMessage.success('编辑报销数据成功')
|
|
|
+ data.drawer = false
|
|
|
+ ReimburseMyListApi()
|
|
|
}
|
|
|
}
|
|
|
//新增api
|
|
@@ -247,24 +269,26 @@ const FeeTypeApi = async () => {
|
|
|
data.optionsFeeType = resIt.Data
|
|
|
}
|
|
|
}
|
|
|
-//触发费用明细changs事件
|
|
|
-const detailsFocus = () => {
|
|
|
- if (!data.fromData.ReimburseDetails[data.disabledNum].T_fee_type) {
|
|
|
- ElMessage.error('请先选择费用类型')
|
|
|
- return
|
|
|
- } else {
|
|
|
- FeeDetailsApi(data.fromData.ReimburseDetails[data.disabledNum].T_fee_type)
|
|
|
- }
|
|
|
- console.log('changs', data.fromData.ReimburseDetails[data.disabledNum].T_fee_type)
|
|
|
+const clickFeeType = (data:any) => {
|
|
|
+ console.log('点击',data)
|
|
|
+ // data.fromData.ReimburseDetails[data.disabledNum].T_fee_details = null
|
|
|
}
|
|
|
-//费用明细列表api
|
|
|
-const FeeDetailsApi = async (e: any) => {
|
|
|
- const resIt: any = await ReimburseMy_FeeDetails({ T_feeType: e })
|
|
|
- console.log('新增返回', resIt)
|
|
|
- if (resIt.Code == 200) {
|
|
|
- data.optionsFeeDetails = resIt.Data
|
|
|
+
|
|
|
+watch(() => data.fromData, (newvalue,oldvalue) => {
|
|
|
+ const arr = data.fromData.ReimburseDetails
|
|
|
+ for (let index = 0; index < arr.length; index++) {
|
|
|
+ if (arr[index].T_fee_type) {
|
|
|
+ let select:any = (data.optionsFeeType.find(item => item.Id == arr[index].T_fee_type))?.FeeDetails ?? [{ Id: "", T_name: "" }]
|
|
|
+ data.fromData.ReimburseDetails[index].selectData = select
|
|
|
+ } else {
|
|
|
+ return []
|
|
|
+ }
|
|
|
}
|
|
|
-}
|
|
|
+ },{ deep: true}
|
|
|
+);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
//删除报销列表
|
|
|
const delReimbu = (data: any) => {
|
|
|
console.log('删除', data)
|
|
@@ -294,16 +318,19 @@ const showDrawer = (e: string, datas: any) => {
|
|
|
console.log('datas', datas)
|
|
|
let id
|
|
|
if (datas) id = datas.Id
|
|
|
- FeeTypeApi()//获取费用类型
|
|
|
+
|
|
|
switch (e) {
|
|
|
case 'news':
|
|
|
+ FeeTypeApi()//获取费用类型
|
|
|
data.drawer = true
|
|
|
data.drawerTiti = '新增'
|
|
|
data.fromData = {
|
|
|
User_tokey: GlobalStore().GET_User_tokey,
|
|
|
+ T_id:'',
|
|
|
T_money: 0,
|
|
|
ReimburseDetails: [{
|
|
|
mapPick: [],
|
|
|
+ selectData:[],
|
|
|
T_trip_start_time: "",
|
|
|
T_trip_end_time: "",
|
|
|
T_trip_origin: "",
|
|
@@ -319,37 +346,52 @@ const showDrawer = (e: string, datas: any) => {
|
|
|
data.disabledNum = 0
|
|
|
break;
|
|
|
case 'det':
|
|
|
+ FeeTypeApi()//获取费用类型
|
|
|
data.drawer = true
|
|
|
data.drawerTiti = '详情'
|
|
|
- console.log('datas', datas)
|
|
|
+ console.log('datas', datas,e)
|
|
|
GetdetAPi(id)
|
|
|
data.disabledNum = -1
|
|
|
break;
|
|
|
case 'edi':
|
|
|
+ FeeTypeApi()//获取费用类型
|
|
|
data.drawer = true
|
|
|
data.drawerTiti = '编辑'
|
|
|
data.disabledNum = 0
|
|
|
GetdetAPi(id)
|
|
|
-
|
|
|
+ data.fromData.T_id = id
|
|
|
break;
|
|
|
default:
|
|
|
console.log('提交审核')
|
|
|
+ SubmitApi(id)
|
|
|
break;
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
-//获取详情
|
|
|
+//提交审核api
|
|
|
+const SubmitApi = async(Id:any)=>{
|
|
|
+ const resIt: any = await ReimburseMy_Submit({ T_id: Id })
|
|
|
+ console.log('获取详情',resIt)
|
|
|
+ if (resIt.Code == 200) {
|
|
|
+ ElMessage.success('ok,提交成功')
|
|
|
+ ReimburseMyListApi()
|
|
|
+ }
|
|
|
+}
|
|
|
+//获取详情Api
|
|
|
const GetdetAPi = async (Id: any) => {
|
|
|
const resIt: any = await ReimburseMy_Get({ T_id: Id })
|
|
|
+ console.log('获取详情',resIt)
|
|
|
if (resIt.Code == 200) {
|
|
|
const arr = resIt.Data.T_reimburse_details
|
|
|
+ data.tableRemit = resIt.Data.T_remit_detail
|
|
|
data.fromData.T_money = resIt.Data.T_money
|
|
|
+ data.fromData.ReimburseDetails = []
|
|
|
arr.forEach((item: any) => {
|
|
|
item.mapPick = [item.T_trip_start_time, item.T_trip_end_time]
|
|
|
})
|
|
|
data.fromData.ReimburseDetails = arr
|
|
|
+
|
|
|
}
|
|
|
- console.log('获取详情', resIt)
|
|
|
+
|
|
|
}
|
|
|
//关闭弹窗
|
|
|
const handleClose = () => {
|
|
@@ -363,6 +405,7 @@ const EditFun = (e: any) => {
|
|
|
const newAdd = () => {
|
|
|
data.fromData.ReimburseDetails.push({
|
|
|
mapPick: [],
|
|
|
+ selectData:[],
|
|
|
T_trip_start_time: "",
|
|
|
T_trip_end_time: "",
|
|
|
T_trip_origin: "",
|