移动端
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

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