移动端
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 

369 řádky
15 KiB

  1. <template>
  2. <div class="app-container">
  3. <van-nav-bar
  4. left-arrow
  5. fixed
  6. placeholder
  7. @click-left="$router.back(-1)"
  8. >
  9. <template #title>
  10. <p style="font-weight: bold;">查看银行卡转账申请</p>
  11. </template>
  12. <template #right>
  13. <van-icon name="../../../static/images/icon/icon_flow.png" size="20" @click="goFlow"/>
  14. </template>
  15. </van-nav-bar>
  16. <p class="main_title">基础信息</p>
  17. <div class="main_box">
  18. <van-field readonly label="申请时间" v-model="form.applyDate" input-align="right" />
  19. <van-field readonly label="资金支出类别" v-model="capitalExpenditureType" input-align="right" label-width="auto" />
  20. <van-field readonly label="支出总金额" v-model="form.expenditureAmount" input-align="right" label-width="auto"/>
  21. <van-field name="radio" label="审批模式" input-align="right" autocomplete="off" readonly>
  22. <template #input>
  23. <van-radio-group v-model="form.approvalMode" direction="horizontal">
  24. <van-radio name="1">线上审批</van-radio>
  25. <van-radio name="2">线下审批</van-radio>
  26. </van-radio-group>
  27. </template>
  28. </van-field>
  29. <van-field v-if="form.approvalMode==1" readonly label="审批流程" :value="tempalteFormat(form.approvalTemplateId)" input-align="right" label-width="auto"/>
  30. </div>
  31. <div class="main_box" style="margin-top: 10px;">
  32. <van-field readonly label="转账附言" v-model="form.remark" type="textarea" input-align="right" rows="3" label-width="auto"/>
  33. </div>
  34. <div class="main_box" style="margin-top: 10px;">
  35. <van-field readonly label="说明情况" v-model="form.explainSituation" type="textarea" input-align="right" rows="3" label-width="auto"/>
  36. </div>
  37. <p class="main_title">付款方信息</p>
  38. <div class="main_box">
  39. <van-field readonly label="付款方" v-model="form.payer" input-align="right" label-width="auto"/>
  40. <van-field readonly label="付款方账户" v-model="form.payerAccount" input-align="right" label-width="auto"/>
  41. <van-field readonly label="余额" v-model="form.balance" input-align="right" label-width="auto"/>
  42. </div>
  43. <div class="main_box" v-if="capitalExpenditureOpen" style="margin-bottom: 10px;margin-top: 10px;position:relative;">
  44. <van-field readonly label="项目名称" v-model="projectForm.projectName" input-align="right" />
  45. <van-field readonly label="承建单位" v-model="projectForm.projectContractor" input-align="right" label-width="auto"/>
  46. <van-field readonly label="合同价款(元)" v-model="projectForm.projectAmount" input-align="right" label-width="auto"/>
  47. <van-field readonly label="工程款类型" v-model="projectFundType" input-align="right" />
  48. <van-field readonly label="工程发票号" v-model="projectForm.projectBillNum" input-align="right" label-width="auto"/>
  49. </div>
  50. <div class="main_box" v-if="contractOpen" style="margin-bottom: 10px;margin-top: 10px;position:relative;">
  51. <van-field readonly label="合同名称" v-model="infoForm.name" input-align="right" />
  52. <van-field readonly label="合同编码" v-model="infoForm.code" input-align="right" label-width="auto"/>
  53. <van-field readonly label="合同价款(元)" v-model="infoForm.totalAmount" input-align="right" label-width="auto"/>
  54. </div>
  55. <p class="main_title">收款方信息</p>
  56. <div class="main_box" style="margin-bottom: 15px;">
  57. <van-field readonly label="收款账户类型" v-if="form.bankType==1" v-model="form.accountType == 1 ? '公户':'私户'" input-align="right" label-width="auto" />
  58. <van-field readonly label="行内转账" v-if="form.bankType==2||form.bankType==3||form.bankType==4" v-model="form.isPeers == 'Y' ? '是':'否'" input-align="right" label-width="auto" />
  59. </div>
  60. <div style="position:relative;" >
  61. <div class="main_box" style="margin-bottom: 10px;position:relative;" v-for="(item, index) in chargeItme" :key="index" v-if="index<listLength">
  62. <van-field readonly label="收款方" v-model="item.payee" input-align="right" />
  63. <van-field readonly label="收款账户" v-model="item.payeeAccount" input-align="right" label-width="auto"/>
  64. <van-field readonly label="开户银行" v-model="item.bankDeposit" input-align="right" label-width="auto"/>
  65. <van-field readonly label="收入金额" v-model="item.incomeAmount" input-align="right" label-width="auto"/>
  66. <van-field readonly label="所属银行" v-model="item.bankTypeText" input-align="right" />
  67. <van-field v-if="item.transferStatus=='成功'||item.transferStatus=='失败'" readonly label="转账状态" v-model="item.transferStatus" input-align="right" />
  68. <van-field v-if="item.transferStatus=='成功'||item.transferStatus=='失败'" readonly label="交易结果描述" v-model="item.causeFailure" type="textarea" input-align="right" rows="3" label-width="auto" />
  69. </div>
  70. <p class="main_more" v-if="chargeItme.length>1 && showbtn" @click="listLength = chargeItme.length,showbtn=false">查看更多</p>
  71. <p class="main_more" v-if="chargeItme.length>1 && !showbtn" @click="listLength = 1,showbtn=true">收起列表</p>
  72. </div>
  73. <p class="main_title">上传附件</p>
  74. <div class="main_box" style="padding: 5px 0 0 0;">
  75. <van-cell value="收据" />
  76. <van-uploader v-model="fileList1" v-if="fileList1==null||fileList1.length==0" :deletable="false" disabled :upload-text="'未上传附件'" style="margin-left:8px;"></van-uploader>
  77. <van-uploader v-model="fileList1" v-if="fileList1!=null&&fileList1.length>0" :deletable="false" :max-count="fileList1.length" style="margin-left:8px;"></van-uploader>
  78. <van-cell value="发票" />
  79. <van-uploader v-model="fileList2" v-if="fileList2==null||fileList2.length==0" :deletable="false" disabled :upload-text="'未上传附件'" style="margin-left:8px;"></van-uploader>
  80. <van-uploader v-model="fileList2" v-if="fileList2!=null&&fileList2.length>0" :deletable="false" :max-count="fileList2.length" style="margin-left:8px;"></van-uploader>
  81. <van-cell value="其他" />
  82. <van-uploader v-model="fileList3" v-if="fileList3==null||fileList3.length==0" :deletable="false" disabled :upload-text="'未上传附件'" style="margin-left:8px;"></van-uploader>
  83. <van-uploader v-model="fileList3" v-if="fileList3!=null&&fileList3.length>0" :deletable="false" :max-count="fileList3.length" style="margin-left:8px;" ></van-uploader>
  84. </div>
  85. </div>
  86. </template>
  87. <script>
  88. import { getCashierAccount,getTransfer , queryTransferDetail , listPayee , updateTransfer , getProjectto , listProject , addProjectto , customSubmit,getInfoto,listTemplate} from "@/api/onlineHome/bankAgriculture/paymentApproval";
  89. import request from '@/utils/request'
  90. import {
  91. attachmentList,
  92. commonAttach,
  93. systemAttachment
  94. } from "../../../../api/onlineHome/bankAgriculture/paymentApproval";
  95. export default {
  96. name: "approvalDetail",
  97. data() {
  98. return {
  99. showcapital:false,
  100. showpayee:false,
  101. showlasj:false,
  102. showbankType:false,
  103. showproject:false,
  104. showFundType:false,
  105. showbtn:true,
  106. listLength:1,
  107. minDate: new Date(),
  108. maxDate: new Date(2025, 10, 1),
  109. currentDate: new Date(),
  110. form:{},
  111. fileList1:[],
  112. fileList2:[],
  113. fileList3:[],
  114. capitalExpenditureType:'',
  115. payee:'',
  116. bankType:'',
  117. wfydlxDictionaries:[],
  118. jglxDictionaries:[],
  119. sysDictionaries:[],
  120. capitalExpenditureTypeOptions:[],
  121. bankTypeDictionaries:[],
  122. projectList:[],
  123. projectFundTypeOptions:[],
  124. transferStatusOptions:[],
  125. projectFundTypeDictionaries:[],
  126. projectList:[],
  127. chargeItme:[],
  128. chargeItmeShow:[],
  129. payeeList:[],
  130. // 查询参数
  131. queryParams: {
  132. transferType:"",
  133. orderByColumn: "id",
  134. isAsc: "desc",
  135. },
  136. capitalExpenditureOpen:false,
  137. contractOpen:false,
  138. projectForm:{
  139. projectId:null,
  140. projectName:null,
  141. projectContractor:null,
  142. projectAmount:null,
  143. projectBillNum:null,
  144. projectFundType:'1',
  145. outId:null,
  146. ynType:'1'
  147. },
  148. infoForm:{
  149. infoId:null,
  150. name:null,
  151. code:null,
  152. totalAmount:null,
  153. contractionId:null,
  154. transferId:null
  155. },
  156. projectFundType:'',
  157. templateList:[],
  158. };
  159. },
  160. created() {
  161. this.getDicts("project_fund_type").then((response) => {
  162. for (var i = 0; i < response.data.length; i++) {
  163. this.projectFundTypeOptions.push({text: response.data[i].dictLabel, value: response.data[i].dictValue});
  164. }
  165. this.projectFundTypeDictionaries = response.data;
  166. });
  167. this.getDicts("transfer_status").then((response) => {
  168. this.transferStatusOptions = response.data;
  169. });
  170. this.getDictionaries();
  171. this.getFileList();
  172. this.getTemplateList();
  173. },
  174. methods: {
  175. getTemplateList(){
  176. let templateQueryParams = {
  177. // 分页
  178. pageNum: 1,
  179. pageSize: 999,
  180. };
  181. listTemplate(templateQueryParams).then(response => {
  182. this.templateList = response.rows;
  183. });
  184. },
  185. tempalteFormat(id){
  186. let name = ""
  187. this.templateList.map(res => {
  188. if(res.id==id){
  189. console.log(res.name)
  190. name = res.name
  191. }
  192. })
  193. return name
  194. },
  195. goFlow(){
  196. window.location='approvalProcess?id='+this.$route.query.id+'&auditbatchNo='+this.$route.query.auditbatchNo;
  197. },
  198. getDictionaries(){
  199. getTransfer(this.$route.query.id).then((response) => {
  200. getCashierAccount(response.data.cashierId).then(res => {
  201. this.form.balance = res.data.balance
  202. })
  203. this.getDicts("capital_expenditure_type").then((res) => {
  204. for (var i = 0; i < res.data.length; i++) {
  205. this.capitalExpenditureTypeOptions.push({text: res.data[i].dictLabel, value: res.data[i].dictValue});
  206. }
  207. this.capitalExpenditureType = this.selectDictLabel(res.data, response.data.capitalExpenditureType);
  208. });
  209. if(response.data.capitalExpenditureType==2){
  210. this.capitalExpenditureOpen = true
  211. let param={
  212. 'outId' : response.data.id,
  213. 'ynType' : '1'
  214. }
  215. getProjectto(param).then(res => {
  216. this.projectFundType = this.selectDictLabel(this.projectFundTypeDictionaries, res.data.projectFundType);
  217. this.projectForm = res.data
  218. })
  219. }else if(response.data.capitalExpenditureType==4) {
  220. this.contractOpen = true
  221. let param = {
  222. 'transferId': response.data.id
  223. }
  224. getInfoto(param).then(res => {
  225. this.infoForm = res.data
  226. })
  227. }else{
  228. this.showproject = false
  229. }
  230. this.form = response.data;
  231. });
  232. queryTransferDetail(this.$route.query.id).then((response) => {
  233. this.getDicts("bank_type_all").then(res => {
  234. for (var i = 0; i < res.data.length; i++) {
  235. this.bankTypeDictionaries.push({text: res.data[i].dictLabel, value: res.data[i].dictValue});
  236. }
  237. for (var j = 0 ; j < response.rows.length ; j++){
  238. response.rows[j].bankTypeText = this.selectDictLabel(res.data, response.rows[j].bankType);
  239. response.rows[j].transferStatus = this.selectDictLabel(this.transferStatusOptions, response.rows[j].transferStatus);
  240. }
  241. this.chargeItme = response.rows;
  242. });
  243. this.getPayeeList();
  244. });
  245. },
  246. getPayeeList() {
  247. //普通转账
  248. this.queryParams.accountType = this.form.accountType
  249. this.queryParams.status = "0"
  250. listPayee(this.queryParams).then((response) => {
  251. for (var i = 0; i < response.rows.length; i++) {
  252. this.payeeList.push({text: response.rows[i].payee, value: response.rows[i].id});
  253. }
  254. });
  255. },
  256. getFileList(){
  257. let oData1= {
  258. tableId: this.$route.query.id,
  259. tableName: "t_yinnong_transfer",
  260. bizPath: "transfer",
  261. fileType: "1",
  262. }
  263. attachmentList(oData1).then(res => {
  264. res.rows.map(r => {
  265. let baseUrl = location.protocol+"//"+location.host+request.defaults.baseURL
  266. this.fileList1.push({"url":baseUrl + r.fileUrl,"file":new File([],r.fileName,{}),"id":r.id})
  267. })
  268. })
  269. let oData2= {
  270. tableId: this.$route.query.id,
  271. tableName: "t_yinnong_transfer",
  272. bizPath: "transfer",
  273. fileType: "2",
  274. }
  275. attachmentList(oData2).then(res => {
  276. res.rows.map(r => {
  277. let baseUrl = location.protocol+"//"+location.host+request.defaults.baseURL
  278. this.fileList2.push({"url":baseUrl + r.fileUrl,"file":new File([],r.fileName,{}),"id":r.id})
  279. })
  280. })
  281. let oData3= {
  282. tableId: this.$route.query.id,
  283. tableName: "t_yinnong_transfer",
  284. bizPath: "transfer",
  285. fileType: "3",
  286. }
  287. attachmentList(oData3).then(res => {
  288. res.rows.map(r => {
  289. let baseUrl = location.protocol+"//"+location.host+request.defaults.baseURL
  290. this.fileList3.push({"url":baseUrl + r.fileUrl,"file":new File([],r.fileName,{}),"id":r.id})
  291. })
  292. })
  293. },
  294. goBack(){
  295. window.history.go(-1)
  296. },
  297. //删除家庭成员
  298. deleteChargeItme(index){
  299. this.chargeItme.splice(index,1)
  300. },
  301. },
  302. }
  303. </script>
  304. <style scoped lang="scss">
  305. .app-container {
  306. padding: 2% 0;
  307. }
  308. .main_more{
  309. width: 96%;
  310. margin: 0 auto;
  311. margin-top: 10px;
  312. border-radius: 6px;
  313. box-shadow: 0px 3px 6px 0px rgba(0,0,0,0.16);
  314. overflow: hidden;
  315. background-color: #FFF;
  316. text-align: center;
  317. padding: 10PX 0;
  318. }
  319. .main_title{
  320. font-size: 0.4rem;
  321. color: #1D6FE9;
  322. margin: 0.2rem 6%;
  323. position: relative;
  324. }
  325. .main_box{
  326. width: 96%;
  327. margin: 0 auto;
  328. border-radius: 6px;
  329. box-shadow: 0px 3px 6px 0px rgba(0,0,0,0.16);
  330. overflow: hidden;
  331. background-color: #FFF;
  332. }
  333. .submitButton{
  334. width: 80%;
  335. margin: 0 auto;
  336. background-color: #1D6FE9;
  337. }
  338. .addFamily{
  339. position: absolute;
  340. top: -2px;
  341. right: 0;
  342. border-radius: 50%;
  343. }
  344. .deleteFamily{
  345. position: absolute;
  346. top: 0rem;
  347. right: 6%;
  348. z-index: 9;
  349. border-radius: 50%;
  350. }
  351. </style>