移动端
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

3 лет назад
3 лет назад
3 лет назад
3 лет назад
3 лет назад
3 лет назад
3 лет назад
3 лет назад
3 лет назад
3 лет назад
3 лет назад
3 лет назад
3 лет назад
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442
  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. </div>
  22. <div class="main_box" style="margin-top: 10px;">
  23. <van-field readonly label="付款事由" v-model="form.remark" type="textarea" input-align="right" rows="3" label-width="auto"/>
  24. </div>
  25. <div class="main_box" style="margin-top: 10px;">
  26. <van-field readonly label="说明情况" v-model="form.explainSituation" type="textarea" input-align="right" rows="3" label-width="auto"/>
  27. </div>
  28. <p class="main_title">付款方信息</p>
  29. <div class="main_box">
  30. <van-field readonly label="付款方" v-model="form.payer" input-align="right" label-width="auto"/>
  31. <van-field readonly label="付款方账户" v-model="form.payerAccount" input-align="right" label-width="auto"/>
  32. </div>
  33. <div class="main_box" v-if="capitalExpenditureOpen" style="margin-bottom: 10px;margin-top: 10px;position:relative;">
  34. <van-field readonly label="项目名称" v-model="projectForm.projectName" input-align="right" />
  35. <van-field readonly label="承建单位" v-model="projectForm.projectContractor" input-align="right" label-width="auto"/>
  36. <van-field readonly label="合同价款(元)" v-model="projectForm.projectAmount" input-align="right" label-width="auto"/>
  37. <van-field readonly label="工程款类型" v-model="projectFundType" input-align="right" />
  38. <van-field readonly label="工程发票号" v-model="projectForm.projectBillNum" input-align="right" label-width="auto"/>
  39. </div>
  40. <p class="main_title">列表信息</p>
  41. <div class="main_box" style="margin-bottom: 15px;">
  42. <van-field readonly label="收款账户类型" v-model="form.accountType == 1 ? '公户':'私户'" input-align="right" label-width="auto" />
  43. </div>
  44. <div :style="{position:'relative',padding: index == 0 ? '':'10px 0 0 0'}" v-for="(item, index) in chargeItme" :key="index">
  45. <div class="main_box" style="margin-bottom: 10px;position:relative;">
  46. <van-field readonly label="收款方" v-model="item.payee" input-align="right" />
  47. <van-field readonly label="收款账户" v-model="item.payeeAccount" input-align="right" label-width="auto"/>
  48. <van-field readonly label="开户银行" v-model="item.bankDeposit" input-align="right" label-width="auto"/>
  49. <van-field readonly label="收入金额" v-model="item.incomeAmount" input-align="right" label-width="auto"/>
  50. <van-field readonly label="所属银行" v-model="item.bankTypeText" input-align="right" />
  51. </div>
  52. </div>
  53. <p class="main_title">上传附件</p>
  54. <div class="main_box" style="padding: 5px 0 0 8px;">
  55. <van-uploader v-model="fileList" :after-read="beforeRead" :deletable="false" disabled :upload-text="'未上传附件'"></van-uploader>
  56. </div>
  57. </div>
  58. </template>
  59. <script>
  60. import { getTransfer , queryTransferDetail , listPayee , updateTransfer , getProjectto , listProject , addProjectto , customSubmit} from "@/api/onlineHome/bankAgriculture/paymentApproval";
  61. import request from '@/utils/request'
  62. import {
  63. attachmentList,
  64. commonAttach,
  65. systemAttachment
  66. } from "../../../../api/onlineHome/bankAgriculture/paymentApproval";
  67. export default {
  68. name: "approvalDetail",
  69. data() {
  70. return {
  71. showcapital:false,
  72. showpayee:false,
  73. showlasj:false,
  74. showbankType:false,
  75. showproject:false,
  76. showFundType:false,
  77. minDate: new Date(),
  78. maxDate: new Date(2025, 10, 1),
  79. currentDate: new Date(),
  80. form:{},
  81. fileList:[],
  82. capitalExpenditureType:'',
  83. payee:'',
  84. bankType:'',
  85. wfydlxDictionaries:[],
  86. jglxDictionaries:[],
  87. sysDictionaries:[],
  88. capitalExpenditureTypeOptions:[],
  89. bankTypeDictionaries:[],
  90. projectList:[],
  91. projectFundTypeOptions:[],
  92. projectFundTypeDictionaries:[],
  93. projectListShow:[],
  94. chargeItme:[],
  95. chargeItmeShow:[],
  96. payeeList:[],
  97. // 查询参数
  98. queryParams: {
  99. transferType:"",
  100. orderByColumn: "id",
  101. isAsc: "desc",
  102. },
  103. capitalExpenditureOpen:false,
  104. projectForm:{
  105. projectId:null,
  106. projectName:null,
  107. projectContractor:null,
  108. projectAmount:null,
  109. projectBillNum:null,
  110. projectFundType:'1',
  111. outId:null,
  112. ynType:'1'
  113. },
  114. projectFundType:''
  115. };
  116. },
  117. created() {
  118. let queryParams={
  119. pageNum: 1,
  120. pageSize: 100,
  121. }
  122. listProject(queryParams).then(response => {
  123. console.log(response)
  124. this.projectList = response.rows;
  125. for (var i = 0; i < response.rows.length; i++) {
  126. this.projectListShow.push({text: response.rows[i].projectName, value: response.rows[i].id});
  127. }
  128. });
  129. this.getDicts("project_fund_type").then((response) => {
  130. for (var i = 0; i < response.data.length; i++) {
  131. this.projectFundTypeOptions.push({text: response.data[i].dictLabel, value: response.data[i].dictValue});
  132. }
  133. this.projectFundTypeDictionaries = response.data;
  134. });
  135. this.getDictionaries();
  136. this.getFileList();
  137. },
  138. methods: {
  139. goFlow(){
  140. window.location='approvalProcess?id='+this.$route.query.id;
  141. },
  142. getDictionaries(){
  143. getTransfer(this.$route.query.id).then((response) => {
  144. this.getDicts("capital_expenditure_type").then((res) => {
  145. for (var i = 0; i < res.data.length; i++) {
  146. this.capitalExpenditureTypeOptions.push({text: res.data[i].dictLabel, value: res.data[i].dictValue});
  147. }
  148. this.capitalExpenditureType = this.selectDictLabel(res.data, response.data.capitalExpenditureType);
  149. });
  150. if(response.data.capitalExpenditureType==2){
  151. this.capitalExpenditureOpen = true
  152. let param={
  153. 'outId' : response.data.id,
  154. 'ynType' : '1'
  155. }
  156. getProjectto(param).then(res => {
  157. this.projectFundType = this.selectDictLabel(this.projectFundTypeDictionaries, res.data.projectFundType);
  158. this.projectForm = res.data
  159. })
  160. }else{
  161. this.showproject = false
  162. }
  163. this.form = response.data;
  164. });
  165. queryTransferDetail(this.$route.query.id).then((response) => {
  166. this.getDicts("bank_type").then(res => {
  167. for (var i = 0; i < res.data.length; i++) {
  168. this.bankTypeDictionaries.push({text: res.data[i].dictLabel, value: res.data[i].dictValue});
  169. }
  170. for (var j = 0 ; j < response.rows.length ; j++){
  171. response.rows[j].bankTypeText = this.selectDictLabel(res.data, response.rows[j].bankType);
  172. }
  173. this.chargeItme = response.rows;
  174. });
  175. this.getPayeeList();
  176. });
  177. },
  178. addChargeItme(index){
  179. this.chargeItme.splice(index + 1, 0, {
  180. payeeId: "", //收款方ID
  181. payee: "", //收款方
  182. payeeAccount: "", //收款账户
  183. bankDeposit: "", //开户银行
  184. incomeAmount: "", //收入金额
  185. bankType: "", //所属银行
  186. });
  187. },
  188. getPayeeList() {
  189. //普通转账
  190. this.queryParams.accountType = this.form.accountType
  191. this.queryParams.status = "0"
  192. listPayee(this.queryParams).then((response) => {
  193. for (var i = 0; i < response.rows.length; i++) {
  194. this.payeeList.push({text: response.rows[i].payee, value: response.rows[i].id});
  195. }
  196. });
  197. },
  198. payeeDictLabel(datas, value) {
  199. var actions = [];
  200. Object.keys(datas).some((key) => {
  201. if (datas[key].payeeId == ('' + value)) {
  202. actions.push(datas[key].payee);
  203. return true;
  204. }
  205. })
  206. return actions.join('');
  207. },
  208. onConfirmCapital(data){
  209. console.log(data)
  210. if (data.value != 2){
  211. this.capitalExpenditureOpen = false;
  212. this.projectForm = [];
  213. }else{
  214. this.capitalExpenditureOpen = true;
  215. }
  216. this.capitalExpenditureType = data.text;
  217. this.form.capitalExpenditureType = data.value;
  218. this.showcapital = false;
  219. },
  220. onConfirmFundType(data){
  221. console.log(data)
  222. this.projectForm.projectFundType = data.value;
  223. this.projectFundType = data.text;
  224. this.showFundType = false;
  225. },
  226. onConfirmProject(data){
  227. console.log(data)
  228. this.projectList.map(res => {
  229. console.log(res)
  230. if(res.projectName==data.text){
  231. this.projectForm.projectId = res.id
  232. this.projectForm.projectName = res.projectName
  233. this.projectForm.projectContractor = res.projectContractor
  234. this.projectForm.projectAmount = res.projectAmount
  235. console.log(this.projectForm)
  236. }
  237. })
  238. this.showproject = false;
  239. },
  240. onConfirmPayee(data){
  241. // this.chargeItme[this.chargeItme.length-1].payeeText = data.text;
  242. this.chargeItme[this.chargeItme.length-1].payee = data.text;
  243. this.chargeItme[this.chargeItme.length-1].payeeId = data.value;
  244. console.log(this.chargeItme)
  245. this.showpayee = false;
  246. },
  247. onConfirmBankType(data){
  248. console.log(this.chargeItme)
  249. this.chargeItme[this.chargeItme.length-1].bankTypeText = data.text;
  250. this.chargeItme[this.chargeItme.length-1].bankType = data.value;
  251. this.showbankType = false;
  252. },
  253. onConfirmLasj(data){
  254. this.form.applyDate = this.getNowFormatDate(data).substr(0,10);
  255. this.showlasj = false;
  256. },
  257. accountTypeChange(e){
  258. console.log(e)
  259. this.payeeList = [];
  260. this.queryParams.accountType = this.form.accountType
  261. this.queryParams.status = "0"
  262. listPayee(this.queryParams).then((response) => {
  263. for (var i = 0; i < response.rows.length; i++) {
  264. this.payeeList.push({text: response.rows[i].payee, value: response.rows[i].id});
  265. }
  266. });
  267. },
  268. goAdd(){
  269. if(this.form.remark != null && this.form.remark.indexOf("|")!=-1){
  270. this.$toast.error("付款事由禁止包含|。");
  271. return;
  272. }
  273. if(this.form.capitalExpenditureType==2){
  274. if(this.projectForm.projectName==""||this.projectForm.projectName==null){
  275. this.$toast.error('请选择项目名称!');
  276. return;
  277. }
  278. if(this.projectForm.projectBillNum==""||this.projectForm.projectBillNum==null){
  279. this.$toast.error('请输入工程发票号!');
  280. return;
  281. }
  282. }
  283. this.$set(this.form, "payeeList", this.chargeItme);
  284. this.$set(this.form, "bankTypeList", this.chargeItme);
  285. this.$set(this.form, "accountTypeList", this.chargeItme);
  286. this.$set(this.form, "transferStatusList", this.chargeItme);
  287. console.log(this.form);
  288. updateTransfer(this.form).then(response => {
  289. console.log(response);
  290. this.projectForm.outId = this.form.id
  291. this.$set(this.projectForm, "ynType", '1');
  292. console.log(this.projectForm)
  293. if(this.form.capitalExpenditureType==2){
  294. addProjectto(this.projectForm).then(res => {
  295. customSubmit(this.form.id).then(res => {
  296. this.$toast.success('提交成功');
  297. setTimeout(function(){
  298. history.go(-1)
  299. },2000)
  300. })
  301. })
  302. }else{
  303. customSubmit(this.form.id).then(res => {
  304. this.$toast.success('提交成功');
  305. setTimeout(function(){
  306. history.go(-1)
  307. },2000)
  308. })
  309. }
  310. });
  311. },
  312. goUpdate(){
  313. if(this.form.remark != null && this.form.remark.indexOf("|")!=-1){
  314. this.$toast.error("付款事由禁止包含|。");
  315. return;
  316. }
  317. if(this.form.capitalExpenditureType==2){
  318. if(this.projectForm.projectName==""||this.projectForm.projectName==null){
  319. this.$toast.error('请选择项目名称!');
  320. return;
  321. }
  322. if(this.projectForm.projectBillNum==""||this.projectForm.projectBillNum==null){
  323. this.$toast.error('请输入工程发票号!');
  324. return;
  325. }
  326. }
  327. this.$set(this.form, "payeeList", this.chargeItme);
  328. this.$set(this.form, "bankTypeList", this.chargeItme);
  329. this.$set(this.form, "accountTypeList", this.chargeItme);
  330. this.$set(this.form, "transferStatusList", this.chargeItme);
  331. this.projectForm.outId = this.form.id
  332. updateTransfer(this.form).then((response) => {
  333. this.projectForm.outId = this.form.id
  334. this.$set(this.projectForm, "ynType", '1');
  335. if(this.form.capitalExpenditureType==2){
  336. addProjectto(this.projectForm).then(res => {
  337. this.$toast.success('修改成功');
  338. setTimeout(function(){
  339. history.go(-1)
  340. },2000)
  341. })
  342. }else{
  343. this.$toast.success('修改成功');
  344. setTimeout(function(){
  345. history.go(-1)
  346. },2000)
  347. }
  348. });
  349. },
  350. beforeRead(file) {
  351. this.uploadFiles.push(file.file);
  352. },
  353. deleteFile(file){
  354. console.log(file)
  355. this.uploadFiles.map((response,index) => {
  356. if(file.file == response){
  357. this.uploadFiles.splice(index,1)
  358. }
  359. })
  360. if(file.id){
  361. systemAttachment(file.id).then((res) => {
  362. });
  363. }
  364. },
  365. getFileList(){
  366. let oData= {
  367. tableId: this.$route.query.id,
  368. tableName: "t_yinnong_transfer",
  369. bizPath: "upload",
  370. fileType: "0",
  371. }
  372. attachmentList(oData).then(res => {
  373. console.log(res)
  374. console.log(location.protocol+"//"+location.host+request.defaults.baseURL)
  375. res.rows.map(r => {
  376. let baseUrl = location.protocol+"//"+location.host+request.defaults.baseURL
  377. this.fileList.push({"url":baseUrl + r.fileUrl,"file":new File([],r.fileName,{}),"id":r.id})
  378. console.log(r)
  379. })
  380. })
  381. },
  382. goBack(){
  383. window.history.go(-1)
  384. },
  385. //删除家庭成员
  386. deleteChargeItme(index){
  387. this.chargeItme.splice(index,1)
  388. },
  389. },
  390. }
  391. </script>
  392. <style scoped lang="scss">
  393. .app-container {
  394. padding: 2% 0;
  395. }
  396. .main_title{
  397. font-size: 0.4rem;
  398. color: #1D6FE9;
  399. margin: 0.2rem 6%;
  400. position: relative;
  401. }
  402. .main_box{
  403. width: 96%;
  404. margin: 0 auto;
  405. border-radius: 6px;
  406. box-shadow: 0px 3px 6px 0px rgba(0,0,0,0.16);
  407. overflow: hidden;
  408. background-color: #FFF;
  409. }
  410. .submitButton{
  411. width: 80%;
  412. margin: 0 auto;
  413. background-color: #1D6FE9;
  414. }
  415. .addFamily{
  416. position: absolute;
  417. top: -2px;
  418. right: 0;
  419. border-radius: 50%;
  420. }
  421. .deleteFamily{
  422. position: absolute;
  423. top: 0rem;
  424. right: 6%;
  425. z-index: 9;
  426. border-radius: 50%;
  427. }
  428. </style>