|
@@ -4,22 +4,59 @@
|
|
|
<el-drawer :title="title" v-model="visible" direction="rtl" size="100%">
|
|
|
<div class="page-container form-container">
|
|
|
<div class="form-btns-container">
|
|
|
- <span class="title-label"><el-icon>
|
|
|
+ <span class="title-label"
|
|
|
+ ><el-icon>
|
|
|
<Document />
|
|
|
</el-icon>
|
|
|
- 支出信息</span>
|
|
|
- <template v-if="checkPermission(['business:payment:edit', 'business:payment:add'])">
|
|
|
- <el-button v-if="editStatus" type="primary" size="small" icon="Finished" @click="submitForm">保存</el-button>
|
|
|
- <el-button v-else-if="form.verifyStatus === 0" type="warning" size="small" icon="Edit"
|
|
|
- @click="editStatus = true">修改</el-button>
|
|
|
- <el-button v-if="form.id && editStatus" size="small" icon="Close" @click="editStatus = false">取消修改</el-button>
|
|
|
+ 支出信息</span
|
|
|
+ >
|
|
|
+ <template
|
|
|
+ v-if="
|
|
|
+ checkPermission(['business:payment:edit', 'business:payment:add'])
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <el-button
|
|
|
+ v-if="editStatus"
|
|
|
+ type="primary"
|
|
|
+ size="small"
|
|
|
+ icon="Finished"
|
|
|
+ @click="submitForm"
|
|
|
+ >保存</el-button
|
|
|
+ >
|
|
|
+ <el-button
|
|
|
+ v-else-if="form.verifyStatus === 0"
|
|
|
+ type="warning"
|
|
|
+ size="small"
|
|
|
+ icon="Edit"
|
|
|
+ @click="editStatus = true"
|
|
|
+ >修改</el-button
|
|
|
+ >
|
|
|
+ <el-button
|
|
|
+ v-if="form.id && editStatus"
|
|
|
+ size="small"
|
|
|
+ icon="Close"
|
|
|
+ @click="editStatus = false"
|
|
|
+ >取消修改</el-button
|
|
|
+ >
|
|
|
</template>
|
|
|
- <el-button v-show="form.id && !editStatus && form.verifyStatus === 0"
|
|
|
- v-hasPermi="['business:payment:financialVerify']" type="primary" size="small" icon="Check"
|
|
|
- @click="verifyHandler">财务审核</el-button>
|
|
|
- <el-button v-show="form.id && !editStatus && form.verifyStatus === 1"
|
|
|
- v-hasPermi="['business:payment:cashierVerify']" type="primary" size="small" icon="Check"
|
|
|
- @click="cashierVerifyHandler">出纳审核</el-button>
|
|
|
+ <el-button
|
|
|
+ v-show="form.id && !editStatus && form.verifyStatus === 0"
|
|
|
+ v-hasPermi="['business:payment:financialVerify']"
|
|
|
+ type="primary"
|
|
|
+ size="small"
|
|
|
+ icon="Check"
|
|
|
+ @click="verifyHandler"
|
|
|
+ >财务审核</el-button
|
|
|
+ >
|
|
|
+ <el-button
|
|
|
+ v-show="form.id && !editStatus && form.verifyStatus === 1"
|
|
|
+ v-hasPermi="['business:payment:cashierVerify']"
|
|
|
+ type="primary"
|
|
|
+ size="small"
|
|
|
+ icon="Check"
|
|
|
+ @click="cashierVerifyHandler"
|
|
|
+ >出纳审核</el-button
|
|
|
+ >
|
|
|
<div class="screen-btn" @click="handleScreen">
|
|
|
<template v-if="!isFullscreen">
|
|
|
<i class="fa fa-window-maximize" aria-hidden="true" />
|
|
@@ -35,76 +72,146 @@
|
|
|
<!-- <span>关闭</span> -->
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div class="Y-scrollbar" style="
|
|
|
+ <div
|
|
|
+ class="Y-scrollbar"
|
|
|
+ style="
|
|
|
position: absolute;
|
|
|
top: 32px;
|
|
|
bottom: 0;
|
|
|
width: 100%;
|
|
|
overflow: auto;
|
|
|
- "></div>
|
|
|
- <el-form ref="orderRef" class="master-container" size="small" :model="form" :rules="rules" label-width="100px">
|
|
|
+ "
|
|
|
+ ></div>
|
|
|
+ <el-form
|
|
|
+ ref="orderRef"
|
|
|
+ class="master-container"
|
|
|
+ size="small"
|
|
|
+ :model="form"
|
|
|
+ :rules="rules"
|
|
|
+ label-width="100px"
|
|
|
+ >
|
|
|
<el-row :gutter="30">
|
|
|
<el-col :span="6">
|
|
|
<el-form-item label="支出流水号:">
|
|
|
- <el-input v-if="editStatus" v-model.trim="form.flowNo" readonly size="small" type="text"
|
|
|
- placeholder="支出流水号" :clearable="true" />
|
|
|
+ <el-input
|
|
|
+ v-if="editStatus"
|
|
|
+ v-model.trim="form.flowNo"
|
|
|
+ readonly
|
|
|
+ size="small"
|
|
|
+ type="text"
|
|
|
+ placeholder="支出流水号"
|
|
|
+ :clearable="true"
|
|
|
+ />
|
|
|
<span v-else>{{ form.flowNo }}</span>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="6">
|
|
|
<el-form-item label="支出日期:" prop="formDate" required>
|
|
|
- <el-date-picker v-if="editStatus" v-model="form.formDate" size="small" :clearable="true"
|
|
|
- format="YYYY-MM-DD" value-format="YYYY-MM-DD" align="center" type="date" placeholder="支出日期" />
|
|
|
+ <el-date-picker
|
|
|
+ v-if="editStatus"
|
|
|
+ v-model="form.formDate"
|
|
|
+ size="small"
|
|
|
+ :clearable="true"
|
|
|
+ format="YYYY-MM-DD"
|
|
|
+ value-format="YYYY-MM-DD"
|
|
|
+ align="center"
|
|
|
+ type="date"
|
|
|
+ placeholder="支出日期"
|
|
|
+ />
|
|
|
<span v-else>{{ form.formDate }}</span>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="6">
|
|
|
<el-form-item label="支出类目:">
|
|
|
- <el-select v-if="editStatus" v-model.trim="form.paymentCauseId" placeholder="支出类目" size="small"
|
|
|
- :clearable="true" @change="paymentCauseChange">
|
|
|
- <el-option v-for="item in paymentTypes" :key="item.id" :label="item.name" :value="item.id" />
|
|
|
+ <el-select
|
|
|
+ v-if="editStatus"
|
|
|
+ v-model.trim="form.paymentCauseId"
|
|
|
+ placeholder="支出类目"
|
|
|
+ size="small"
|
|
|
+ :clearable="true"
|
|
|
+ @change="paymentCauseChange"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in paymentTypes"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.name"
|
|
|
+ :value="item.id"
|
|
|
+ />
|
|
|
</el-select>
|
|
|
<span v-else>{{ form.paymentCause }}</span>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="6">
|
|
|
<el-form-item label="支出科目:">
|
|
|
- <el-select v-if="editStatus" v-model.trim="form.paymentSubjectId" placeholder="支出科目" size="small"
|
|
|
- :clearable="true" @change="paymentSubjectChange">
|
|
|
- <el-option v-for="item in paymentSubjects" :key="item.id" :label="item.name" :value="item.id" />
|
|
|
+ <el-select
|
|
|
+ v-if="editStatus"
|
|
|
+ v-model.trim="form.paymentSubjectId"
|
|
|
+ placeholder="支出科目"
|
|
|
+ size="small"
|
|
|
+ :clearable="true"
|
|
|
+ @change="paymentSubjectChange"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in paymentSubjects"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.name"
|
|
|
+ :value="item.id"
|
|
|
+ />
|
|
|
</el-select>
|
|
|
<span v-else>{{ form.paymentSubject }}</span>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="6">
|
|
|
<el-form-item label="收款账户名:">
|
|
|
- <el-input v-if="editStatus" v-model.trim="form.acceptAccount" size="small" type="text" placeholder="收款账户名"
|
|
|
- :clearable="true" />
|
|
|
+ <el-input
|
|
|
+ v-if="editStatus"
|
|
|
+ v-model.trim="form.acceptAccount"
|
|
|
+ size="small"
|
|
|
+ type="text"
|
|
|
+ placeholder="收款账户名"
|
|
|
+ :clearable="true"
|
|
|
+ />
|
|
|
<span v-else>{{ form.acceptAccount }}</span>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="6">
|
|
|
<el-form-item label="收款账号:">
|
|
|
<template v-if="editStatus">
|
|
|
- <el-input v-model.trim="form.acceptAccountNo" size="small" type="text" style="width: 66.67%"
|
|
|
- placeholder="收款账号" :clearable="true" />
|
|
|
+ <el-input
|
|
|
+ v-model.trim="form.acceptAccountNo"
|
|
|
+ size="small"
|
|
|
+ type="text"
|
|
|
+ style="width: 66.67%"
|
|
|
+ placeholder="收款账号"
|
|
|
+ :clearable="true"
|
|
|
+ />
|
|
|
</template>
|
|
|
- <span v-else>{{ form.acceptAccountType }} -
|
|
|
- {{ form.acceptAccountNo }}</span>
|
|
|
+ <span v-else
|
|
|
+ >{{ form.acceptAccountType }} -
|
|
|
+ {{ form.acceptAccountNo }}</span
|
|
|
+ >
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
|
|
|
<el-col :span="6">
|
|
|
<el-form-item label="客户名称" prop="companyName" required>
|
|
|
- <el-autocomplete v-if="editStatus" :fetch-suggestions="querySearchCompanyAsync" :trigger-on-focus="true"
|
|
|
- v-model="form.companyName" placeholder="请输入客户名称" popper-class="my-autocomplete"
|
|
|
- @select="handleSelectCompany">
|
|
|
+ <el-autocomplete
|
|
|
+ v-if="editStatus"
|
|
|
+ :fetch-suggestions="querySearchCompanyAsync"
|
|
|
+ :trigger-on-focus="true"
|
|
|
+ v-model="form.companyName"
|
|
|
+ placeholder="请输入客户名称"
|
|
|
+ popper-class="my-autocomplete"
|
|
|
+ @select="handleSelectCompany"
|
|
|
+ >
|
|
|
<template #default="{ item }">
|
|
|
- <div style="
|
|
|
+ <div
|
|
|
+ style="
|
|
|
display: flex;
|
|
|
flex-direction: row;
|
|
|
justify-content: space-between;
|
|
|
- ">
|
|
|
+ "
|
|
|
+ >
|
|
|
<div class="name" style="font-size: 12px">
|
|
|
{{ item.name }}
|
|
|
</div>
|
|
@@ -117,10 +224,19 @@
|
|
|
</el-col>
|
|
|
<el-col :span="6">
|
|
|
<el-form-item label="合同:" required>
|
|
|
- <el-input v-if="editStatus" v-model.trim="form.contractNo" size="small" type="text" placeholder="请选择"
|
|
|
- :clearable="true">
|
|
|
+ <el-input
|
|
|
+ v-if="editStatus"
|
|
|
+ v-model.trim="form.contractNo"
|
|
|
+ size="small"
|
|
|
+ type="text"
|
|
|
+ placeholder="请选择"
|
|
|
+ :clearable="true"
|
|
|
+ >
|
|
|
<template #append>
|
|
|
- <el-button icon="Search" @click="() => contractChoiceHandler()" />
|
|
|
+ <el-button
|
|
|
+ icon="Search"
|
|
|
+ @click="() => contractChoiceHandler()"
|
|
|
+ />
|
|
|
</template>
|
|
|
</el-input>
|
|
|
<span v-else style="width: 100%">
|
|
@@ -133,19 +249,28 @@
|
|
|
</el-col>
|
|
|
<el-col :span="6">
|
|
|
<el-form-item label="应收款金额:" prop="remark">
|
|
|
- <span>{{ form.contractAmount }}</span>
|
|
|
+ <span>{{ rowNum(form.contractAmount) }}</span>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="6">
|
|
|
<el-form-item label="已支出金额:" prop="remark">
|
|
|
- <span>{{ form.payedAmount }}</span>
|
|
|
+ <span>{{ rowNum(form.payedAmount) }}</span>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="6">
|
|
|
<el-form-item label="支出金额:" required>
|
|
|
- <el-input-number v-if="editStatus" v-model.trim="form.amount" size="small" placeholder="收款金额"
|
|
|
- :clearable="true" :precision="2" controls-position="right" :controls="false" @change="amountChange" />
|
|
|
- <span v-else>{{ form.amount }}</span>
|
|
|
+ <el-input-number
|
|
|
+ v-if="editStatus"
|
|
|
+ v-model.trim="form.amount"
|
|
|
+ size="small"
|
|
|
+ placeholder="收款金额"
|
|
|
+ :clearable="true"
|
|
|
+ :precision="2"
|
|
|
+ controls-position="right"
|
|
|
+ :controls="false"
|
|
|
+ @change="amountChange"
|
|
|
+ />
|
|
|
+ <span v-else>{{ rowNum(form.amount) }}</span>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col v-if="form.verifyStatus === 2" :span="6">
|
|
@@ -155,8 +280,14 @@
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="备注:">
|
|
|
- <el-input v-if="editStatus" v-model.trim="form.remark" size="small" type="text" placeholder="备注"
|
|
|
- :clearable="true" />
|
|
|
+ <el-input
|
|
|
+ v-if="editStatus"
|
|
|
+ v-model.trim="form.remark"
|
|
|
+ size="small"
|
|
|
+ type="text"
|
|
|
+ placeholder="备注"
|
|
|
+ :clearable="true"
|
|
|
+ />
|
|
|
<span v-else style="word-break: break-all">{{
|
|
|
form.remark
|
|
|
}}</span>
|
|
@@ -173,28 +304,78 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="details-body">
|
|
|
- <el-table ref="filesTable" :data="form.details" size="small" height="100%" border
|
|
|
- header-row-class-name="list-header-row" highlight-current-row>
|
|
|
- <el-table-column type="index" label="序号" width="47" align="center" />
|
|
|
- <el-table-column label="任务名称" prop="taskTypeName" align="center" show-overflow-tooltip>
|
|
|
+ <el-table
|
|
|
+ ref="filesTable"
|
|
|
+ :data="form.details"
|
|
|
+ size="small"
|
|
|
+ height="100%"
|
|
|
+ border
|
|
|
+ header-row-class-name="list-header-row"
|
|
|
+ highlight-current-row
|
|
|
+ >
|
|
|
+ <el-table-column
|
|
|
+ type="index"
|
|
|
+ label="序号"
|
|
|
+ width="47"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ label="任务名称"
|
|
|
+ prop="taskTypeName"
|
|
|
+ align="center"
|
|
|
+ show-overflow-tooltip
|
|
|
+ >
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="任务金额" prop="amount" width="100" align="center" />
|
|
|
- <el-table-column label="本次支出金额" prop="paymentAmount" width="100" align="center">
|
|
|
+ <el-table-column
|
|
|
+ label="任务金额"
|
|
|
+ prop="amount"
|
|
|
+ width="100"
|
|
|
+ align="center"
|
|
|
+ >
|
|
|
+ <template #default="scope">
|
|
|
+ <span>{{ rowNum(scope.row.amount) }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="本次支出金额"
|
|
|
+ prop="paymentAmount"
|
|
|
+ width="100"
|
|
|
+ align="center"
|
|
|
+ >
|
|
|
<template #default="scope">
|
|
|
<template v-if="editStatus">
|
|
|
- <el-input-number v-model="scope.row.paymentAmount" size="small" placeholder="本次支出金额"
|
|
|
- :precision="2" :controls="false" style="width: 100%" @change="(arg) =>
|
|
|
- amountChangeHandler(
|
|
|
- arg,
|
|
|
- scope.row,
|
|
|
- 'paymentAmount'
|
|
|
- )
|
|
|
- " />
|
|
|
+ <el-input-number
|
|
|
+ v-model="scope.row.paymentAmount"
|
|
|
+ size="small"
|
|
|
+ placeholder="本次支出金额"
|
|
|
+ :precision="2"
|
|
|
+ :controls="false"
|
|
|
+ style="width: 100%"
|
|
|
+ @change="
|
|
|
+ (arg) =>
|
|
|
+ amountChangeHandler(
|
|
|
+ arg,
|
|
|
+ scope.row,
|
|
|
+ 'paymentAmount'
|
|
|
+ )
|
|
|
+ "
|
|
|
+ />
|
|
|
</template>
|
|
|
- <template v-else>{{ scope.row.paymentAmount }}</template>
|
|
|
+ <template v-else>{{
|
|
|
+ rowNum(scope.row.paymentAmount)
|
|
|
+ }}</template>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="已支出金额"
|
|
|
+ prop="payment"
|
|
|
+ width="100"
|
|
|
+ align="center"
|
|
|
+ >
|
|
|
+ <template #default="scope">
|
|
|
+ <span>{{ rowNum(scope.row.amount) }}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="已支出金额" prop="payment" width="100" align="center" />
|
|
|
</el-table>
|
|
|
</div>
|
|
|
</el-col>
|
|
@@ -204,26 +385,61 @@
|
|
|
<i class="fa fa-th-list" aria-hidden="true" /> 附件
|
|
|
<i style="color: red">*</i>
|
|
|
</div>
|
|
|
- <el-upload v-if="editStatus" action="#" :http-request="upload" :with-credentials="true"
|
|
|
- :show-file-list="false" multiple>
|
|
|
- <el-button size="small" type="primary" icon="Upload">点击上传</el-button>
|
|
|
+ <el-upload
|
|
|
+ v-if="editStatus"
|
|
|
+ action="#"
|
|
|
+ :http-request="upload"
|
|
|
+ :with-credentials="true"
|
|
|
+ :show-file-list="false"
|
|
|
+ multiple
|
|
|
+ >
|
|
|
+ <el-button size="small" type="primary" icon="Upload"
|
|
|
+ >点击上传</el-button
|
|
|
+ >
|
|
|
</el-upload>
|
|
|
</div>
|
|
|
<div class="details-body">
|
|
|
- <el-table ref="filesTable" :data="form.files" size="small" height="100%" border
|
|
|
- header-row-class-name="list-header-row" highlight-current-row>
|
|
|
- <el-table-column type="index" label="序号" width="47" align="center" />
|
|
|
- <el-table-column label="文件名" prop="originalFileName" align="center" show-overflow-tooltip>
|
|
|
+ <el-table
|
|
|
+ ref="filesTable"
|
|
|
+ :data="form.files"
|
|
|
+ size="small"
|
|
|
+ height="100%"
|
|
|
+ border
|
|
|
+ header-row-class-name="list-header-row"
|
|
|
+ highlight-current-row
|
|
|
+ >
|
|
|
+ <el-table-column
|
|
|
+ type="index"
|
|
|
+ label="序号"
|
|
|
+ width="47"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ label="文件名"
|
|
|
+ prop="originalFileName"
|
|
|
+ align="center"
|
|
|
+ show-overflow-tooltip
|
|
|
+ >
|
|
|
<template #default="scope">
|
|
|
- <el-button size="small" type="primary" link @click="openFile(scope.row)">{{
|
|
|
- scope.row.originalFileName }}</el-button>
|
|
|
+ <el-button
|
|
|
+ size="small"
|
|
|
+ type="primary"
|
|
|
+ link
|
|
|
+ @click="openFile(scope.row)"
|
|
|
+ >{{ scope.row.originalFileName }}</el-button
|
|
|
+ >
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="操作" width="50" align="center">
|
|
|
<template #default="scope">
|
|
|
<div v-if="editStatus">
|
|
|
- <el-button size="small" link type="danger"
|
|
|
- @click="handlerDelAttach(scope.row, scope.$index)">删除</el-button>
|
|
|
+ <el-button
|
|
|
+ size="small"
|
|
|
+ link
|
|
|
+ type="danger"
|
|
|
+ @click="handlerDelAttach(scope.row, scope.$index)"
|
|
|
+ >删除</el-button
|
|
|
+ >
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
@@ -234,55 +450,129 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-drawer>
|
|
|
- <el-dialog title="财务审核详情" v-model="rejectOpen" width="500px" append-to-body draggable>
|
|
|
+ <el-dialog
|
|
|
+ title="财务审核详情"
|
|
|
+ v-model="rejectOpen"
|
|
|
+ width="500px"
|
|
|
+ append-to-body
|
|
|
+ draggable
|
|
|
+ >
|
|
|
<el-form ref="dictRef" :model="rejectForm" label-width="100" size="small">
|
|
|
<el-form-item label="审核状态">
|
|
|
- <el-select v-model.trim="rejectForm.verifyStatus" placeholder="请选择" size="small">
|
|
|
- <el-option v-for="i in verified" :key="i.value" :label="i.label" :value="i.value" />
|
|
|
+ <el-select
|
|
|
+ v-model.trim="rejectForm.verifyStatus"
|
|
|
+ placeholder="请选择"
|
|
|
+ size="small"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="i in verified"
|
|
|
+ :key="i.value"
|
|
|
+ :label="i.label"
|
|
|
+ :value="i.value"
|
|
|
+ />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<!-- <el-form-item label="支出附件上传" required>
|
|
|
|
|
|
</el-form-item> -->
|
|
|
- <el-form-item :label="rejectForm.verifyStatus == 2 ? '驳回原因' : '审核意见'" :prop="verifyRemark">
|
|
|
- <el-input v-model.trim="rejectForm.verifyComment" type="textarea" maxlength="200" show-word-limit :rows="3"
|
|
|
- placeholder="请输入审核意见" />
|
|
|
+ <el-form-item
|
|
|
+ :label="rejectForm.verifyStatus == 2 ? '驳回原因' : '审核意见'"
|
|
|
+ :prop="verifyRemark"
|
|
|
+ >
|
|
|
+ <el-input
|
|
|
+ v-model.trim="rejectForm.verifyComment"
|
|
|
+ type="textarea"
|
|
|
+ maxlength="200"
|
|
|
+ show-word-limit
|
|
|
+ :rows="3"
|
|
|
+ placeholder="请输入审核意见"
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
<template #footer>
|
|
|
<div class="dialog-footer">
|
|
|
- <el-button type="primary" icon="Finished" size="small" @click="verifyUpload()">确 定</el-button>
|
|
|
- <el-button icon="close" size="small" @click="rejectCancel">取 消</el-button>
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ icon="Finished"
|
|
|
+ size="small"
|
|
|
+ @click="verifyUpload()"
|
|
|
+ >确 定</el-button
|
|
|
+ >
|
|
|
+ <el-button icon="close" size="small" @click="rejectCancel"
|
|
|
+ >取 消</el-button
|
|
|
+ >
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-dialog>
|
|
|
- <el-dialog title="出纳审核详情" v-model="cashierOpen" width="500px" append-to-body draggable>
|
|
|
+ <el-dialog
|
|
|
+ title="出纳审核详情"
|
|
|
+ v-model="cashierOpen"
|
|
|
+ width="500px"
|
|
|
+ append-to-body
|
|
|
+ draggable
|
|
|
+ >
|
|
|
<el-form ref="dictRef" :model="form" label-width="100" size="small">
|
|
|
<el-form-item label="审核状态">
|
|
|
- <el-select v-model.trim="cashierForm.verifyStatus" placeholder="请选择" size="small">
|
|
|
- <el-option v-for="i in cashierVerified" :key="i.value" :label="i.label" :value="i.value" />
|
|
|
+ <el-select
|
|
|
+ v-model.trim="cashierForm.verifyStatus"
|
|
|
+ placeholder="请选择"
|
|
|
+ size="small"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="i in cashierVerified"
|
|
|
+ :key="i.value"
|
|
|
+ :label="i.label"
|
|
|
+ :value="i.value"
|
|
|
+ />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="实际支出时间" required>
|
|
|
- <el-date-picker v-model.trim="cashierForm.actuallyDate" size="small" :clearable="true"
|
|
|
- format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" align="center" type="datetime"
|
|
|
- placeholder="实际付款时间" />
|
|
|
+ <el-date-picker
|
|
|
+ v-model.trim="cashierForm.actuallyDate"
|
|
|
+ size="small"
|
|
|
+ :clearable="true"
|
|
|
+ format="YYYY-MM-DD HH:mm:ss"
|
|
|
+ value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
+ align="center"
|
|
|
+ type="datetime"
|
|
|
+ placeholder="实际付款时间"
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
<!-- <el-form-item label="支出附件上传" required>
|
|
|
</el-form-item> -->
|
|
|
- <el-form-item :label="cashierForm.verifyStatus == 4 ? '驳回原因' : '审核意见'" :prop="cashierVerifyComment">
|
|
|
- <el-input v-model.trim="cashierForm.cashierVerifyComment" type="textarea" maxlength="200" show-word-limit
|
|
|
- :rows="3" placeholder="请输入审核意见" />
|
|
|
+ <el-form-item
|
|
|
+ :label="cashierForm.verifyStatus == 4 ? '驳回原因' : '审核意见'"
|
|
|
+ :prop="cashierVerifyComment"
|
|
|
+ >
|
|
|
+ <el-input
|
|
|
+ v-model.trim="cashierForm.cashierVerifyComment"
|
|
|
+ type="textarea"
|
|
|
+ maxlength="200"
|
|
|
+ show-word-limit
|
|
|
+ :rows="3"
|
|
|
+ placeholder="请输入审核意见"
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
<template #footer>
|
|
|
<div class="dialog-footer">
|
|
|
- <el-button type="primary" icon="Finished" size="small" @click="cashierVerifyUpload()">确 定</el-button>
|
|
|
- <el-button icon="close" size="small" @click="cashierVerifyCancel">取 消</el-button>
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ icon="Finished"
|
|
|
+ size="small"
|
|
|
+ @click="cashierVerifyUpload()"
|
|
|
+ >确 定</el-button
|
|
|
+ >
|
|
|
+ <el-button icon="close" size="small" @click="cashierVerifyCancel"
|
|
|
+ >取 消</el-button
|
|
|
+ >
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-dialog>
|
|
|
- <dialog-contract-choice ref="contractChoiceRef" @choice="contractChoiceHandle" />
|
|
|
+ <dialog-contract-choice
|
|
|
+ ref="contractChoiceRef"
|
|
|
+ @choice="contractChoiceHandle"
|
|
|
+ />
|
|
|
</div>
|
|
|
</template>
|
|
|
<script setup>
|
|
@@ -308,7 +598,7 @@ import { listSource } from "@/api/settings/source";
|
|
|
import { listUser } from "@/api/system/user";
|
|
|
import CustomerFormCom from "@/components/CustomerFormCom";
|
|
|
import DialogContractChoice from "@/views/dialog/DialogContractChoice.vue";
|
|
|
-import { formatDate } from "@/utils/index";
|
|
|
+import { formatDate, rowNum } from "@/utils/index";
|
|
|
import { ref } from "vue";
|
|
|
import useUserStore from "@/store/modules/user";
|
|
|
const { proxy } = getCurrentInstance();
|
|
@@ -318,7 +608,7 @@ const baseUrl = import.meta.env.VITE_APP_BASE_API;
|
|
|
const props = defineProps({
|
|
|
getList: {
|
|
|
type: Function,
|
|
|
- default: () => { },
|
|
|
+ default: () => {},
|
|
|
},
|
|
|
});
|
|
|
const { getList } = toRefs(props);
|
|
@@ -334,9 +624,9 @@ const sourceCategories = ref([]);
|
|
|
const type = ref("");
|
|
|
|
|
|
const rejectOpen = ref(false);
|
|
|
-const rejectForm = ref({})
|
|
|
+const rejectForm = ref({});
|
|
|
|
|
|
-const cashierForm = ref({})
|
|
|
+const cashierForm = ref({});
|
|
|
|
|
|
const detailEmpty = {
|
|
|
id: null,
|
|
@@ -418,18 +708,21 @@ const data = reactive({
|
|
|
cashierVerified: [
|
|
|
{
|
|
|
value: 1,
|
|
|
- label: "未审核"
|
|
|
- }, {
|
|
|
+ label: "未审核",
|
|
|
+ },
|
|
|
+ {
|
|
|
value: 3,
|
|
|
- label: "通过"
|
|
|
- }, {
|
|
|
+ label: "通过",
|
|
|
+ },
|
|
|
+ {
|
|
|
value: 4,
|
|
|
label: "驳回",
|
|
|
- }
|
|
|
+ },
|
|
|
],
|
|
|
- cashierOpen: false
|
|
|
+ cashierOpen: false,
|
|
|
});
|
|
|
-const { form, rules, timeOptions, verified, cashierVerified, cashierOpen } = toRefs(data);
|
|
|
+const { form, rules, timeOptions, verified, cashierVerified, cashierOpen } =
|
|
|
+ toRefs(data);
|
|
|
/*********************** 方法区 ****************************/
|
|
|
/** 打开抽屉 */
|
|
|
function open(id) {
|
|
@@ -532,22 +825,22 @@ function verifyHandler() {
|
|
|
}
|
|
|
|
|
|
function cashierVerifyHandler() {
|
|
|
- cashierOpen.value = true
|
|
|
+ cashierOpen.value = true;
|
|
|
}
|
|
|
|
|
|
function rejectHandler() {
|
|
|
rejectOpen.value = true;
|
|
|
- rejectForm.value = proxy.deepClone(form.value)
|
|
|
+ rejectForm.value = proxy.deepClone(form.value);
|
|
|
}
|
|
|
|
|
|
function rejectCancel() {
|
|
|
rejectOpen.value = false;
|
|
|
- rejectForm.value = {}
|
|
|
+ rejectForm.value = {};
|
|
|
}
|
|
|
|
|
|
function cashierVerifyCancel() {
|
|
|
- cashierOpen.value = false
|
|
|
- cashierForm.value = proxy.deepClone(form.value)
|
|
|
+ cashierOpen.value = false;
|
|
|
+ cashierForm.value = proxy.deepClone(form.value);
|
|
|
}
|
|
|
|
|
|
function rejectSubmitHandler() {
|
|
@@ -567,7 +860,8 @@ function verifyUpload() {
|
|
|
}
|
|
|
if (
|
|
|
rejectForm.value.verifyStatus === 2 &&
|
|
|
- (rejectForm.value.verifyComment == null || rejectForm.value.verifyComment === "")
|
|
|
+ (rejectForm.value.verifyComment == null ||
|
|
|
+ rejectForm.value.verifyComment === "")
|
|
|
) {
|
|
|
proxy.$modal.msgError("请输入审核意见");
|
|
|
return;
|
|
@@ -586,18 +880,23 @@ function cashierVerifyUpload() {
|
|
|
proxy.$modal.msgError("请选择审核结果");
|
|
|
return;
|
|
|
}
|
|
|
- if (cashierForm.value.actuallyDate == null || cashierForm.value.actuallyDate === "") {
|
|
|
+ if (
|
|
|
+ cashierForm.value.actuallyDate == null ||
|
|
|
+ cashierForm.value.actuallyDate === ""
|
|
|
+ ) {
|
|
|
proxy.$modal.msgError("0");
|
|
|
return;
|
|
|
}
|
|
|
if (
|
|
|
cashierForm.value.verifyStatus === 4 &&
|
|
|
- (cashierForm.value.verifyComment == null || cashierForm.value.verifyComment === "")
|
|
|
+ (cashierForm.value.verifyComment == null ||
|
|
|
+ cashierForm.value.verifyComment === "")
|
|
|
) {
|
|
|
proxy.$modal.msgError("请输入审核意见");
|
|
|
return;
|
|
|
}
|
|
|
- cashierForm.value.paymentStatus = cashierForm.value.verifyStatus === 3 ? 1 : 0;
|
|
|
+ cashierForm.value.paymentStatus =
|
|
|
+ cashierForm.value.verifyStatus === 3 ? 1 : 0;
|
|
|
verifyPayment(cashierForm.value).then((res) => {
|
|
|
open(cashierForm.value.id);
|
|
|
getList.value();
|
|
@@ -662,11 +961,11 @@ function querySearchCompanyAsync(queryString, cb) {
|
|
|
const query =
|
|
|
queryString.length > 0
|
|
|
? {
|
|
|
- keyword: queryString,
|
|
|
- pageSize: 50,
|
|
|
- pageNum: 1,
|
|
|
- orderByColumn: "create_time",
|
|
|
- }
|
|
|
+ keyword: queryString,
|
|
|
+ pageSize: 50,
|
|
|
+ pageNum: 1,
|
|
|
+ orderByColumn: "create_time",
|
|
|
+ }
|
|
|
: { pageSize: 50, pageNum: 1, orderByColumn: "create_time" };
|
|
|
listCompany(query).then((res) => {
|
|
|
cb(res.rows);
|
|
@@ -744,12 +1043,14 @@ function paymentSubjectChange(id) {
|
|
|
|
|
|
function checkPermission(templatePermission) {
|
|
|
const all_permission = "*:*:*";
|
|
|
- const permissions = useUserStore().permissions
|
|
|
- const hasPermissions = permissions.some(permission => {
|
|
|
- return all_permission === permission || templatePermission.includes(permission)
|
|
|
- })
|
|
|
- console.log(hasPermissions)
|
|
|
- return hasPermissions
|
|
|
+ const permissions = useUserStore().permissions;
|
|
|
+ const hasPermissions = permissions.some((permission) => {
|
|
|
+ return (
|
|
|
+ all_permission === permission || templatePermission.includes(permission)
|
|
|
+ );
|
|
|
+ });
|
|
|
+ console.log(hasPermissions);
|
|
|
+ return hasPermissions;
|
|
|
}
|
|
|
|
|
|
init();
|