Min5203 4 years ago
parent
commit
b3a6c5cb40
  1. 1
      components/FinanceManage.vue
  2. 95
      pages/Initiate-application.vue
  3. 170
      pages/application-details.vue

1
components/FinanceManage.vue

@ -45,7 +45,6 @@ const data = reactive({
const projectId = useProjectId()
/**
* 查看项目下的所有任务对应的财务信息
* @param { Number } pageNum

95
pages/Initiate-application.vue

@ -276,20 +276,6 @@ const data = reactive({
],
reviewerList: [], //
checkerList: [], //
applyData: [
{
applicant: '代用名1',
money: 100,
time: '2021/12/31 12:31',
type: 1,
},
{
applicant: '代用名2',
money: 100,
time: '2021/12/31 12:31',
type: 2,
},
], //
isSuccess: false, //
submitName: '', //
department: '', //
@ -431,8 +417,85 @@ onMounted(() => {
handleQueryType(0, 0);
});
function onClickLeft() {
console.log(1);
/**
* 发起申请
* @param { Object } params
*/
async function submit(params) {
try {
if(!verification()) return
const params = {}
params.param = setParams()
await apply(params)
Toast.success('申请成功');
} catch (error) {
console.log('error: ', error);
Toast.fail(error || '申请失败');
}
}
//
function verification(){
const { isSuccess, categoryId, checkerList, department, money, rowId, submitName, typeId, isInvoice } = data
if(!isSuccess && isInvoice){
Toast.fail('请上传票据凭证');
return
}
if(!money && !isInvoice){
Toast.fail('请输入金额');
return
}
if(!checkerList || !checkerList.length){
Toast.fail('请选择审核人');
return
}
if(!typeId){
Toast.fail('请选择申请类型');
return
}
if(!categoryId){
Toast.fail('请选择类目');
return
}
if(!rowId && isInvoice){
Toast.fail('请选择名目');
return
}
if(!submitName){
Toast.fail('请输入提交人姓名');
return
}
if(!department){
Toast.fail('请输入所属部门');
return
}
return true
}
//
function setParams(){
const { remark, money, categoryId, checkerList, department, rowId, submitName, typeId, invoiceInfo, isInvoice } = data
let param = {}
let invoiceList = []
let list = {url: 'https://cdn.nlark.com/yuque/0/2022/png/413990/1642482454748-931b2e93-8964-492b-b06b-b8db42733c02.png'}
let totleMoney = 0
invoiceInfo.forEach(item => {
list[item.label] = item.value
if(item.label === 'money'){
totleMoney += item.value - 0
}
})
invoiceList.push(list)
if(isInvoice){
param = {
money: totleMoney * 100,invoiceList, remark, checkerList, typeId, projectId: projectId.value,
taskDetailId: taskDetailId.value, categoryId, rowId, submitName, department
}
}else{
param = {
money: money * 100, remark, checkerList, typeId, projectId: projectId.value, categoryId, submitName, department
}
}
return param
}
</script>

170
pages/application-details.vue

@ -12,22 +12,22 @@
<!-- 审核结果 -->
<div class="bg-white px-3">
<div class="text-gray-500 font-semibold px-1 py-3">审核结果</div>
<div v-for="item in checkerList" class="flex py-3 px-4 text-gray-400 text-base justify-between">
<div v-for="(item, checkerIndex) in checkerList" :key="checkerIndex" class="flex py-3 px-4 text-gray-400 text-base justify-between">
<div>
<div>{{item.name}}</div>
<div class="text-sm pt-1">{{item.advice}}</div>
<div class="text-sm pt-1">{{item.checkedTime}}</div>
<div>{{item.checkerName}}</div>
<div class="text-sm pt-1">{{item.remark}}</div>
<div class="text-sm pt-1">{{item.time}}</div>
</div>
<div class="text-center">
<div :class="item.status === '1' ? 'text-green-500' : item.status === '2' ? 'text-red-500' : ''">
{{item.status === '1' ? '已通过' : item.status === '2' ? '已驳回' : '待审批'}}
<div :class="item.checkStatus == '1' ? 'text-green-500' : item.checkStatus == '2' ? 'text-red-500' : ''">
{{item.checkStatus == '1' ? '已通过' : item.checkStatus == '2' ? '已驳回' : '待审批'}}
</div>
<div v-if="item.score>0" class="mt-1">
<div v-if="item.checkStatus == '1' || item.checkStatus == '2'" class="mt-1">
<van-circle
v-model:current-rate="item.score"
:rate="item.score"
v-model:current-rate="currentRate"
:rate="100"
:speed="100"
:text="item.score"
:text="100"
class="w-12"
color="#ff6700"
:stroke-width="100"
@ -37,9 +37,39 @@
</div>
</div>
<!-- 发票信息 -->
<div class="bg-white px-3">
<div class="bg-white px-3" v-if="isInvoice">
<div class="text-gray-500 font-semibold px-1 py-3 mt-5">发票信息</div>
<div v-for="item in billList" class="flex py-2 px-4 text-gray-400 text-base justify-between">
<div v-for="(item,invoiceIndex) in invoiceList" :key="invoiceIndex">
<div class="flex py-2 px-4 text-gray-400 text-base justify-between">
<div>发票代码</div>
<div>{{item.invoiceCode}}</div>
</div>
<div class="flex py-2 px-4 text-gray-400 text-base justify-between">
<div>发票号码</div>
<div>{{item.invoiceNumber}}</div>
</div>
<div class="flex py-2 px-4 text-gray-400 text-base justify-between">
<div>合计金额()</div>
<div>{{item.money}}</div>
</div>
<div class="flex py-2 px-4 text-gray-400 text-base justify-between">
<div>税额()</div>
<div>{{item.taxMoney}}</div>
</div>
<div class="flex py-2 px-4 text-gray-400 text-base justify-between">
<div>开票日期</div>
<div>{{dayjs(item.invoiceTime - 0).format('YYYY年MM月DD日')}}</div>
</div>
<div class="flex py-2 px-4 text-gray-400 text-base justify-between">
<div>备注</div>
<div>{{item.remark}}</div>
</div>
</div>
</div>
<!-- 金额信息 -->
<div class="bg-white px-3" v-else>
<div class="text-gray-500 font-semibold px-1 py-3 mt-5">发票信息</div>
<div v-for="(item,moneyIndex) in moneyInfo" :key="moneyIndex" class="flex py-2 px-4 text-gray-400 text-base justify-between">
<div>{{item.name}}</div>
<div>{{item.value}}</div>
</div>
@ -47,15 +77,15 @@
<!-- 其他信息 -->
<div class="bg-white px-3">
<div class="text-gray-500 font-semibold px-1 py-3 mt-5">其他信息</div>
<div v-for="item in otherData" class="flex py-2 px-4 text-gray-400 text-base justify-between">
<div v-for="(item,otherIndex) in otherData" :key="otherIndex" class="flex py-2 px-4 text-gray-400 text-base justify-between">
<div>{{item.name}}</div>
<div>{{item.value}}</div>
</div>
</div>
<!-- 提交人信息 -->
<div class="bg-white px-3">
<div class="bg-white px-3 mb-5">
<div class="text-gray-500 font-semibold px-1 py-3 mt-5">提交人信息</div>
<div v-for="item in submitter" class="flex py-2 px-4 text-gray-400 text-base justify-between">
<div v-for="(item, index) in submitter" :key="index" class="flex py-2 px-4 text-gray-400 text-base justify-between">
<div>{{item.name}}</div>
<div>{{item.value}}</div>
</div>
@ -64,93 +94,73 @@
</template>
<script setup>
import dayjs from "dayjs";
import { ref, computed } from 'vue';
import { getApplyDetail } from 'apis/finance'
//
const checkerList = ref([
{
name: "冯教授",
advice: "",
checkedTime: "",
status: "0",
},
{
name: "薇薇安",
advice: "很棒!",
checkedTime: "12/18 14:55",
status: "1",
score:100
},
{
name: "小明",
advice: "很棒!",
checkedTime: "12/18 14:55",
status: "1",
score:80
}
])
const currentRate = ref(0);
const text = computed(() => currentRate.value.toFixed(0));
const isInvoice = ref(false)
const checkerList = ref([])
//
const billList = ref([
{
name: "发票代码",
value: "4154153125646",
},
{
name: "发票号码",
value: "545648789",
},
{
name: "合计金额(元)",
value: "40",
},
const invoiceList = ref([])
//
const moneyInfo = ref([
{
name: "税额(元)",
value: "2",
},
{
name: "开票日期",
value: "2022年1月2日",
name: "申请金额",
value: "",
label: "money",
},
{
name: "备注",
value: "业务支出",
value: "",
label: "remark",
},
])
//
const otherData = ref([
{
name: "申请类型",
value: "项目申请"
value: "",
label: "typeName",
},
{
name: "所属项目",
value: "PT项目"
value: "",
label: "projectName",
},
{
name: "所属任务",
value: "财务条界面设计"
value: "",
label: "taskDetailName",
},
{
name: "类目",
value: "报销"
value: "",
label: "categoryName",
},
{
name: "名目",
value: "业务招待费"
value: "",
label: "rowName",
},
])
//
const submitter = ref([
{
name:'姓名',
value:'黛西'
value:'',
label: "submitName",
},
{
name:'部门',
value:'软件部'
value:'软件部',
label: "department",
},
{
name:'提交时间',
value:'2021/12/29 13:22'
value:'',
label: "applyTime",
},
])
@ -165,7 +175,35 @@ function onClickLeft(){
async function handleApplyDetail(){
try {
const params = {param : { applyId: '1485797754654695424' }}
await getApplyDetail(params)
const res = await getApplyDetail(params)
//
checkerList.value = res.checkerList
//
isInvoice.value = res.invoiceList && res.invoiceList.length ? true : false;
invoiceList.value = res.invoiceList
for(let key in res){
moneyInfo.value.forEach(item => {
if(item.label === key){
item.value = res[key]
}
})
}
//
for(let key in res){
otherData.value.forEach(item => {
if(item.label === key){
item.value = res[key]
}
})
}
//
for(let key in res){
submitter.value.forEach(item => {
if(item.label === key){
item.value = res[key]
}
})
}
} catch (error) {
console.error('error: ', error);
}

Loading…
Cancel
Save