移动端
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 

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