approvalCreditDetail.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515
  1. <template>
  2. <el-tabs type="border-card">
  3. <!-- 资产信息-->
  4. <el-tab-pane label="资产信息">
  5. <!-- <div class="app-container"> -->
  6. <el-form ref="form" :model="form" disabled :rules="rules" :inline="true" style="margin-top: 20px" label-width="auto" >
  7. <el-divider content-position="left">融信详情</el-divider>
  8. <el-row>
  9. <el-col :span="8">
  10. <el-form-item label="融信编号" prop="zfiNumber">
  11. <el-input v-model="form.zfiNumber" style="width: 200px"/>
  12. </el-form-item>
  13. </el-col>
  14. <el-col :span="8">
  15. <el-form-item label="创建时间" prop="createTime">
  16. <el-date-picker disabled size="small" style="width: 200px" v-model="form.createTime" type="datetime" value-format="yyyy-MM-dd HH:mm:ss">
  17. </el-date-picker>
  18. </el-form-item>
  19. </el-col>
  20. <el-col :span="8">
  21. <el-form-item label="创建人" prop="createName">
  22. <el-input v-model="form.createName" style="width: 200px"/>
  23. </el-form-item>
  24. </el-col>
  25. </el-row>
  26. <el-row>
  27. <el-col :span="8">
  28. <el-form-item label="开立方" prop="openName">
  29. <el-input v-model="form.openName" style="width: 200px"/>
  30. </el-form-item>
  31. </el-col>
  32. <el-col :span="8">
  33. <el-form-item label="接收方" prop="receiveName">
  34. <el-input v-model="form.receiveName" style="width: 200px"/>
  35. </el-form-item>
  36. </el-col>
  37. <el-col :span="8">
  38. <el-form-item label="授信额度" prop="zfpName" v-if="createType!='0'">
  39. <el-input v-model="form.zfpName" style="width: 200px"/>
  40. </el-form-item>
  41. </el-col>
  42. </el-row>
  43. <el-row>
  44. <el-col :span="8">
  45. <el-form-item label="签发有效期" prop="zfiEffectiveDate" v-if="createType!='0'">
  46. <el-date-picker disabled size="small" style="width: 200px" v-model="form.zfiEffectiveDate" type="date" value-format="yyyy-MM-dd">
  47. </el-date-picker>
  48. <el-tooltip class="item" effect="light" content="签发有效期:即指定签发截止日期,对方企业在签发截止日内未处理该笔融信,本次融信操作将自动失效" placement="top">
  49. <i class="el-icon-question" style="font-size: 23px;"/>
  50. </el-tooltip>
  51. </el-form-item>
  52. </el-col>
  53. <el-col :span="8">
  54. <el-form-item label="承诺还款日" prop="zfiExpireDate" v-if="createType!='0'">
  55. <el-date-picker disabled size="small" style="width: 200px" v-model="form.zfiExpireDate" type="date" value-format="yyyy-MM-dd">
  56. </el-date-picker>
  57. </el-form-item>
  58. </el-col>
  59. <!-- <el-col :span="8">
  60. <el-form-item label="收款账号" prop="zfiCollectionAccount" v-if="isShow">
  61. <el-input v-model="form.zfiCollectionAccount" style="width: 200px"/>
  62. </el-form-item>
  63. </el-col> -->
  64. </el-row>
  65. <el-divider content-position="left" >{{tableTitle}}</el-divider>
  66. <el-form-item style="margin-left: 100px">
  67. <el-form-item label="合计金额:">
  68. <span>{{checkTotalAmt}}</span>
  69. </el-form-item>
  70. <el-form-item label="金额大写:">
  71. <span>{{checkTotalBigAmt}}</span>
  72. </el-form-item>
  73. <el-table :data="payList" style="width: 1100px">
  74. <el-table-column label="账款名称" align="center" prop="zbiName" show-overflow-tooltip />
  75. <el-table-column label="应收企业" align="center" prop="receiveName"/>
  76. <el-table-column label="应付企业" align="center" prop="payName" />
  77. <el-table-column label="预计还款期" align="center" prop="zbiPayDate" show-overflow-tooltip />
  78. <el-table-column label="金额" align="center" prop="zbiAmount" />
  79. </el-table>
  80. </el-form-item>
  81. <el-row>
  82. <el-col :span="8">
  83. <el-form-item label="签发金额" prop="zfiAmount">
  84. <el-input v-model="form.zfiAmount" style="width: 200px"/>
  85. </el-form-item>
  86. </el-col>
  87. <el-col :span="8">
  88. <el-form-item label="金额大写" prop="issuedAmount">
  89. {{issuedAmount}}
  90. </el-form-item>
  91. </el-col>
  92. </el-row>
  93. <p>请知悉,资产信息仅能接受指定的销售方与购买方的往来账款(含账款基本信息、贸易合同与贸易发票等);如须使用系统尚未维护的往来账款,请点击新增应付账款
  94. </p>
  95. </el-form>
  96. <!-- 发票附件 -->
  97. <el-divider content-position="left">发票附件</el-divider>
  98. <el-table :data="invoiceFileList" border style="width: 100%">
  99. <el-table-column label="文件名称" align="center" prop="pfiFileName" show-overflow-tooltip />
  100. <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width='300' fixed="right" >
  101. <template slot-scope="scope">
  102. <el-button
  103. size="mini"
  104. type="text"
  105. icon="el-icon-view"
  106. @click="handleDownload(scope.row)"
  107. >下载</el-button>
  108. <el-button
  109. size="mini"
  110. type="text"
  111. icon="el-icon-view"
  112. @click="handlePreview(scope.row)"
  113. >预览</el-button>
  114. </template>
  115. </el-table-column>
  116. </el-table>
  117. <!-- 合同附件 -->
  118. <el-divider content-position="left">合同附件</el-divider>
  119. <el-table :data="contractFileList" border style="width: 100%">
  120. <el-table-column label="文件名称" align="center" prop="pfiFileName" show-overflow-tooltip />
  121. <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width='300' fixed="right" >
  122. <template slot-scope="scope">
  123. <el-button
  124. size="mini"
  125. type="text"
  126. icon="el-icon-view"
  127. @click="handleDownload(scope.row)"
  128. >下载</el-button>
  129. <el-button
  130. size="mini"
  131. type="text"
  132. icon="el-icon-view"
  133. @click="handlePreview(scope.row)"
  134. >预览</el-button>
  135. </template>
  136. </el-table-column>
  137. </el-table>
  138. <!-- 其他附件 -->
  139. <el-divider content-position="left">其他附件</el-divider>
  140. <el-table :data="otherFileList" border style="width: 100%">
  141. <el-table-column label="文件名称" align="center" prop="pfiFileName" show-overflow-tooltip />
  142. <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width='300' fixed="right" >
  143. <template slot-scope="scope">
  144. <el-button
  145. size="mini"
  146. type="text"
  147. icon="el-icon-view"
  148. @click="handleDownload(scope.row)"
  149. >下载</el-button>
  150. <el-button
  151. size="mini"
  152. type="text"
  153. icon="el-icon-view"
  154. @click="handlePreview(scope.row)"
  155. >预览</el-button>
  156. </template>
  157. </el-table-column>
  158. </el-table>
  159. <!--预览-->
  160. <el-dialog :visible.sync="openFile" width="1000px" append-to-body>
  161. <img :src="wordUrl" v-if="show" width='450px' height='500px'/>
  162. <iframe :src="wordUrl" width='800px' height='600px' frameborder='1' v-if="heid"/>
  163. </el-dialog>
  164. </el-tab-pane>
  165. <el-tab-pane label="签署合同">
  166. <el-table :data="creditSealList" style="width: 100%">
  167. <el-table-column label="文件名称" align="center" prop="pfiFileName" show-overflow-tooltip>
  168. <template slot-scope="scope">
  169. <img style="width:30px;height:30px;"
  170. src="../../../assets/images/pdf.png"
  171. />
  172. <span style="text-align:center">{{scope.row.pfiFileName}}
  173. </span>
  174. </template>
  175. </el-table-column>
  176. <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width='300' fixed="right" >
  177. <template slot-scope="scope">
  178. <el-button
  179. size="mini"
  180. type="text"
  181. icon="el-icon-view"
  182. @click="handleDownload(scope.row)"
  183. >下载</el-button>
  184. <el-button
  185. size="mini"
  186. type="text"
  187. icon="el-icon-view"
  188. @click="handlePreview(scope.row)"
  189. >预览</el-button>
  190. </template>
  191. </el-table-column>
  192. </el-table>
  193. </el-tab-pane>
  194. <!-- </div> -->
  195. </el-tabs>
  196. </template>
  197. <script>
  198. import {getCreditDetail,getFile} from "@/api/service/credit/credit";
  199. import {getCreditSealFile} from "@/api/service/credit/creditHandle";
  200. import {accAdd} from "@/utils/calculation";
  201. import {getToken} from "@/utils/auth";
  202. export default {
  203. name: "addCredit",
  204. components: {},
  205. data() {
  206. return {
  207. // 总条数
  208. total: 0,
  209. // 表单参数
  210. form: {
  211. },
  212. // 表单校验
  213. rules: {
  214. },
  215. // 是否显示弹出层
  216. open: false,
  217. openFile:false,
  218. wordUrl: "",
  219. show:false,
  220. heid:false,
  221. //应付账款
  222. payList:[],
  223. //签发金额大写
  224. issuedAmount:"零元整",
  225. //合计选中的应付账款的金额
  226. checkTotalAmt:"0.00",
  227. //合计选中的应付账款的大写金额
  228. checkTotalBigAmt:"零元整",
  229. //标题
  230. tableTitle:"",
  231. //控制收款账号是否显示
  232. isShow:false,
  233. //获取类型
  234. createType:'',
  235. //合同附件
  236. contractFileList:[],
  237. //发票附件
  238. invoiceFileList:[],
  239. //其他文件
  240. otherFileList:[],
  241. //盖章文件
  242. creditSealList:[],
  243. };
  244. },
  245. created() {
  246. const zfiId = this.$route.params && this.$route.params.zfiId;
  247. getCreditDetail(zfiId).then((response) => {
  248. if(response.data){
  249. //融信信息
  250. this.form = response.data.financeInf;
  251. this.createType = response.data.financeInf.zfiCreateType;
  252. //核心开立
  253. if(response.data.financeInf.zfiCreateType == '1'){
  254. this.tableTitle = "应付账款";
  255. }else{
  256. this.tableTitle = "应收账款";
  257. //融资开立
  258. if(response.data.financeInf.zfiCreateType == '2'){
  259. //收款账号
  260. //非电子
  261. if(response.data.proComRel.zfpcrLoanType != '0'){
  262. this.isShow = true;
  263. }
  264. }
  265. }
  266. //接收方
  267. this.form.receiveName = response.data.receiveName;
  268. //授信额度
  269. this.form.zfpName = response.data.zfpName;
  270. //开立方
  271. this.form.openName = response.data.openName;
  272. //创建人
  273. this.form.createName = response.data.createName;
  274. //签发金额大写
  275. this.issuedAmount = this.smallToBig(this.form.zfiAmount);
  276. }
  277. if(response.data.payList){
  278. this.payList = response.data.payList.records;
  279. this.getReTotal(this.payList);
  280. //附件
  281. this.getFile(this.payList);
  282. }
  283. //盖章合同
  284. this.getCreditSealFile();
  285. })
  286. },
  287. mounted(){
  288. //审批
  289. window.callBack = this.callBack;
  290. },
  291. methods: {
  292. // 取消按钮
  293. cancel() {
  294. this.$store.dispatch("tagsView/delView", this.$route);
  295. this.$router.go(-1);
  296. },
  297. /* 多选框跨页 */
  298. rowkeyCustomer(row) {
  299. return row.cciId;
  300. },
  301. //重新合计
  302. getReTotal(chooseTicket){
  303. //合计
  304. this.checkTotalAmt = "0.00";
  305. for(var i = 0; i < chooseTicket.length;i++){
  306. this.checkTotalAmt = accAdd(this.checkTotalAmt,chooseTicket[i].zbiAmount,2);
  307. }
  308. this.checkTotalBigAmt = this.smallToBig(this.checkTotalAmt);
  309. this.checkTotalAmt = this.amtFormat(this.checkTotalAmt);
  310. },
  311. //获取附件信息
  312. getFile(datas){
  313. var queryParamsFile = {};
  314. queryParamsFile.ticketList = datas;
  315. getFile(queryParamsFile).then((response) => {
  316. if(response.data){
  317. //获取发票文件
  318. this.invoiceFileList = response.data.invoiceFileList;
  319. //获取合同文件
  320. this.contractFileList = response.data.contractFileList;
  321. //获取其他文件
  322. this.otherFileList = response.data.otherFileList;
  323. }
  324. });
  325. },
  326. //获取盖章文件
  327. getCreditSealFile(){
  328. getCreditSealFile(this.form).then((response) => {
  329. if(response.data.list){
  330. this.creditSealList = response.data.list;
  331. }
  332. });
  333. },
  334. //格式化金额
  335. amtFormat(cellValue) {
  336. if(cellValue == null || cellValue== undefined || cellValue == ''){
  337. cellValue = '0.00'
  338. }
  339. cellValue += '';
  340.       if (!cellValue.includes('.')) {
  341. cellValue += '.00';
  342. }
  343.       return cellValue.replace(/(\d)(?=(\d{3})+\.)/g, function ($0, $1) {
  344.         return $1 + ',';
  345.       }).replace(/\.$/, '');
  346. },
  347. //文件下载
  348. handleDownload(row){
  349. const pfiUrl = row.pfiUrl;
  350. if(pfiUrl != null && pfiUrl != ''){
  351. window.open(pfiUrl +"/"+ getToken());
  352. }else{
  353. this.$message({
  354. message: '该附件不存在!',
  355. type: 'warning'
  356. });
  357. return;
  358. }
  359. },
  360. //审批用,不需要改字段空方法即可,不然报找不到该方法
  361. callBack(){
  362. },
  363. //预览
  364. handlePreview(row) {
  365. const pfiUrl = row.pfiUrl;
  366. const pfiFileName = row.pfiFileName;
  367. if (row.pfiUrl) {
  368. console.log(pfiFileName.substr(-3));
  369. if (pfiFileName.substr(-3) == "pdf") {
  370. this.wordUrl = pfiUrl + "/" + getToken();
  371. this.show=false;
  372. this.heid=true;
  373. } else if (
  374. pfiFileName.substr(-3) == "jpg" ||
  375. pfiFileName.substr(-3) == "png" ||
  376. pfiFileName.substr(-3) == "JPG" ||
  377. pfiFileName.substr(-3) == "PNG" ||
  378. pfiFileName.substr(-4) == "jpeg" ||
  379. pfiFileName.substr(-3) == "JPEG"
  380. ) {
  381. this.wordUrl =
  382. pfiUrl +
  383. "/" +
  384. getToken();
  385. this.show=true;
  386. this.heid=false;
  387. console.log("====>",this.wordUrl);
  388. } else if (
  389. pfiFileName.substr(-3) == "doc" ||
  390. pfiFileName.substr(-3) == "DOC"||
  391. pfiFileName.substr(-4) == "docx" ||
  392. pfiFileName.substr(-3) == "DOCX"
  393. ) {
  394. this.wordUrl =
  395. "https://view.officeapps.live.com/op/view.aspx?src=" +
  396. pfiUrl +
  397. "/" +
  398. getToken() +
  399. "/" +
  400. pfiFileName;
  401. this.show=false;
  402. this.heid=true;
  403. console.log("====>",this.wordUrl);
  404. } else {
  405. this.$message({
  406. message: "暂不支持该类型文件预览",
  407. type: "warning",
  408. });
  409. return;
  410. }
  411. }
  412. this.openFile = true;
  413. },
  414. /* // 将数字金额转换为大写金额 */
  415. smallToBig(money) {
  416. // 将数字金额转换为大写金额
  417. var cnNums = new Array(
  418. "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" ); //汉字的数字
  419. var cnIntRadice = new Array("", "拾", "佰", "仟"); //基本单位
  420. var cnIntUnits = new Array("", "万", "亿", "兆"); //对应整数部分扩展单位
  421. var cnDecUnits = new Array("角", "分", "毫", "厘"); //对应小数部分单位
  422. var cnInteger = "整"; //整数金额时后面跟的字符
  423. var cnIntLast = "元"; //整数完以后的单位
  424. //最大处理的数字
  425. var maxNum = 999999999999999.9999;
  426. var integerNum; //金额整数部分
  427. var decimalNum; //金额小数部分
  428. //输出的中文金额字符串
  429. var chineseStr = "";
  430. var parts; //分离金额后用的数组,预定义
  431. if (money == "" || money == null || money == undefined) {
  432. return "零元零角零分";
  433. }
  434. money = parseFloat(money);
  435. if (money >= maxNum) {
  436. //超出最大处理数字
  437. return "超出最大处理数字";
  438. }
  439. if (money == 0) {
  440. chineseStr = cnNums[0] + cnIntLast + cnInteger;
  441. return chineseStr;
  442. }
  443. //四舍五入保留两位小数,转换为字符串
  444. money = Math.round(money * 100).toString();
  445. integerNum = money.substr(0, money.length - 2);
  446. decimalNum = money.substr(money.length - 2);
  447. //获取整型部分转换
  448. if (parseInt(integerNum, 10) > 0) {
  449. var zeroCount = 0;
  450. var IntLen = integerNum.length;
  451. for (var i = 0; i < IntLen; i++) {
  452. var n = integerNum.substr(i, 1);
  453. var p = IntLen - i - 1;
  454. var q = p / 4;
  455. var m = p % 4;
  456. if (n == "0") {
  457. zeroCount++;
  458. } else {
  459. if (zeroCount > 0) {
  460. chineseStr += cnNums[0];
  461. }
  462. //归零
  463. zeroCount = 0;
  464. chineseStr += cnNums[parseInt(n)] + cnIntRadice[m];
  465. }
  466. if (m == 0 && zeroCount < 4) {
  467. chineseStr += cnIntUnits[q];
  468. }
  469. }
  470. chineseStr += cnIntLast;
  471. }
  472. //小数部分
  473. if (decimalNum != "") {
  474. var decLen = decimalNum.length;
  475. for (var i = 0; i < decLen; i++) {
  476. var n = decimalNum.substr(i, 1);
  477. if (n != "0") {
  478. chineseStr += cnNums[Number(n)] + cnDecUnits[i];
  479. }
  480. }
  481. }
  482. if (chineseStr == "") {
  483. chineseStr += cnNums[0] + cnIntLast + cnInteger;
  484. } else if (decimalNum == "" || /^0*$/.test(decimalNum)) {
  485. chineseStr += cnInteger;
  486. }
  487. return chineseStr;
  488. }
  489. }
  490. };
  491. </script>
  492. <style lang="scss">
  493. .uoloadfj .el-upload--picture-card{
  494. width:110px;
  495. height:110px;
  496. line-height:110px;
  497. }
  498. .fjUoloadSty .el-upload--picture-card{
  499. display:none;
  500. }
  501. table th.star div::before {
  502. content: '*';
  503. color: red;
  504. }
  505. </style>