approvalCreditDetail.vue 21 KB

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