creditUpdate.vue 40 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027
  1. <template>
  2. <div class="app-container">
  3. <el-form ref="form" :model="form" :rules="rules" :inline="true" style="margin-top: 20px" label-width="auto" >
  4. <el-divider content-position="left">融信修改</el-divider>
  5. <el-row>
  6. <el-col :span="8">
  7. <el-form-item label="融信编号" prop="zfiNumber">
  8. <el-input v-model="form.zfiNumber" style="width: 200px" disabled/>
  9. </el-form-item>
  10. </el-col>
  11. <el-col :span="8">
  12. <el-form-item label="创建时间" prop="createTime">
  13. <el-date-picker disabled size="small" style="width: 200px" v-model="form.createTime" type="datetime" value-format="yyyy-MM-dd HH:mm:ss">
  14. </el-date-picker>
  15. </el-form-item>
  16. </el-col>
  17. <el-col :span="8">
  18. <el-form-item label="创建人" prop="createName">
  19. <el-input v-model="form.createName" style="width: 200px" disabled/>
  20. </el-form-item>
  21. </el-col>
  22. <el-col :span="8">
  23. <el-form-item label="开立方" prop="openName">
  24. <el-input v-model="form.openName" style="width: 200px" disabled/>
  25. </el-form-item>
  26. </el-col>
  27. <el-col :span="8">
  28. <el-form-item label="接收方" prop="zfiSupplierId">
  29. <el-select
  30. style="width: 200px"
  31. v-model="form.zfiSupplierId"
  32. filterable
  33. clearable
  34. remote
  35. >
  36. <el-option
  37. v-for="item in supplierList"
  38. :key="item.value"
  39. :label="item.label"
  40. :value="item.value">
  41. </el-option>
  42. </el-select>
  43. </el-form-item>
  44. </el-col>
  45. <el-col :span="8">
  46. <el-form-item label="签发有效期" prop="zfiEffectiveDate">
  47. <el-date-picker clearable size="small" style="width: 200px"
  48. v-model="form.zfiEffectiveDate"
  49. type="date"
  50. value-format="yyyy-MM-dd"
  51. placeholder="选择签发有效期"
  52. :picker-options="pickerOptions">
  53. </el-date-picker>
  54. </el-form-item>
  55. </el-col>
  56. </el-row>
  57. <el-row>
  58. <el-col :span="8">
  59. <el-form-item label="承诺还款日" prop="zfiExpireDate">
  60. <el-date-picker clearable size="small" style="width: 200px"
  61. v-model="form.zfiExpireDate"
  62. type="date"
  63. value-format="yyyy-MM-dd"
  64. placeholder="选择承诺还款日"
  65. :picker-options="pickerOptions">
  66. </el-date-picker>
  67. </el-form-item>
  68. </el-col>
  69. <el-col :span="8">
  70. <el-form-item label="授信额度" prop="zfiCoreQuotaId">
  71. <el-select
  72. style="width:300px"
  73. v-model="form.zfiCoreQuotaId"
  74. filterable
  75. clearable
  76. remote
  77. >
  78. <el-option
  79. v-for="item in creditLineList"
  80. :key="item.value"
  81. :label="item.label+item.remaining"
  82. :value="item.value">
  83. </el-option>
  84. </el-select>
  85. </el-form-item>
  86. </el-col>
  87. <el-col :span="8">
  88. <span style="display:none">可用额度:</span>
  89. <span style="display:none">{{availableAmt}}</span>
  90. <span>有效期:</span>
  91. <span>{{validityDate}}</span>
  92. <br>
  93. <span>最小融资金额:</span>
  94. <span>{{zfpMinimumAmount}}</span>
  95. </el-col>
  96. </el-row>
  97. <el-divider content-position="left" >应付账款</el-divider>
  98. <el-form-item style="margin-left: 100px">
  99. <el-button type="success" @click="openTicket">选择</el-button>
  100. <el-button type="primary" @click="addPay">新增应付账款</el-button>
  101. <el-button size="mini" @click="deleteTicekt">清空全部</el-button>
  102. <el-form-item label="合计金额:">
  103. <span>{{checkTotalAmt}}</span>
  104. </el-form-item>
  105. <el-form-item label="金额大写:">
  106. <span>{{checkTotalBigAmt}}</span>
  107. </el-form-item>
  108. <el-table :data="ticketList" style="width: 1100px">
  109. <el-table-column label="账款名称" align="center" prop="zbiName" show-overflow-tooltip />
  110. <el-table-column label="应收企业" align="center" prop="receiveName"/>
  111. <el-table-column label="应付企业" align="center" prop="payName" />
  112. <el-table-column label="预计还款期" align="center" prop="zbiPayDate" show-overflow-tooltip />
  113. <el-table-column label="金额" align="center" prop="zbiAmount" />
  114. <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="250">
  115. <template slot-scope="scope">
  116. <el-button
  117. size="mini"
  118. type="text"
  119. icon="el-icon-delete"
  120. @click="handleDelete(scope.$index, ticketList)"
  121. >删除</el-button>
  122. <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.$index, ticketList)">修改</el-button>
  123. </template>
  124. </el-table-column>
  125. </el-table>
  126. </el-form-item>
  127. <el-row>
  128. <el-col :span="8">
  129. <el-form-item label="签发金额" prop="zfiAmount">
  130. <el-input v-model="form.zfiAmount" style="width: 200px" @input="getBigSmall"  @input.native="changeRate($event,form.zfiAmount)" />
  131. </el-form-item>
  132. </el-col>
  133. </el-row>
  134. <el-row>
  135. <el-col :span="8">
  136. <el-form-item label="金额大写" prop="issuedAmount">
  137. {{issuedAmount}}
  138. </el-form-item>
  139. </el-col>
  140. </el-row>
  141. </el-form>
  142. <!-- 发票附件 -->
  143. <el-divider content-position="left">发票附件</el-divider>
  144. <el-table :data="invoiceFileList" style="width: 100%">
  145. <el-table-column label="文件名称" align="center" prop="pfiFileName" show-overflow-tooltip />
  146. <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width='300' fixed="right" >
  147. <template slot-scope="scope">
  148. <el-button
  149. size="mini"
  150. type="text"
  151. icon="el-icon-view"
  152. @click="handleDownload(scope.row)"
  153. >下载</el-button>
  154. <el-button
  155. size="mini"
  156. type="text"
  157. icon="el-icon-view"
  158. @click="handlePreview(scope.row)"
  159. >预览</el-button>
  160. </template>
  161. </el-table-column>
  162. </el-table>
  163. <!-- 合同附件 -->
  164. <el-divider content-position="left">合同附件</el-divider>
  165. <el-table :data="contractFileList" style="width: 100%">
  166. <el-table-column label="文件名称" align="center" prop="pfiFileName" show-overflow-tooltip />
  167. <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width='300' fixed="right" >
  168. <template slot-scope="scope">
  169. <el-button
  170. size="mini"
  171. type="text"
  172. icon="el-icon-view"
  173. @click="handleDownload(scope.row)"
  174. >下载</el-button>
  175. <el-button
  176. size="mini"
  177. type="text"
  178. icon="el-icon-view"
  179. @click="handlePreview(scope.row)"
  180. >预览</el-button>
  181. </template>
  182. </el-table-column>
  183. </el-table>
  184. <!-- 其他附件 -->
  185. <el-divider content-position="left">其他附件</el-divider>
  186. <el-table :data="otherFileList" style="width: 100%">
  187. <el-table-column label="文件名称" align="center" prop="pfiFileName" show-overflow-tooltip />
  188. <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width='300' fixed="right" >
  189. <template slot-scope="scope">
  190. <el-button
  191. size="mini"
  192. type="text"
  193. icon="el-icon-view"
  194. @click="handleDownload(scope.row)"
  195. >下载</el-button>
  196. <el-button
  197. size="mini"
  198. type="text"
  199. icon="el-icon-view"
  200. @click="handlePreview(scope.row)"
  201. >预览</el-button>
  202. </template>
  203. </el-table-column>
  204. </el-table>
  205. <div class="footer" style="float: right;
  206. margin-bottom:2px;">
  207. <el-button type="primary" @click="submitForm">确 定</el-button>
  208. <el-button @click="cancel">取 消</el-button>
  209. </div>
  210. <!-- 应付账款信息 -->
  211. <el-dialog :title="payTitle" :visible.sync="open" width="1120px" append-to-body>
  212. <el-form :model="queryParamsPay" ref="formQuery" :inline="true" label-width="68px" style="margin-bottom: -21px">
  213. <el-form-item label="账款名称" prop="zbiName">
  214. <el-input
  215. v-model="queryParamsPay.zbiName"
  216. placeholder="请输入账款名称"
  217. clearable
  218. size="small"
  219. maxlength="11"
  220. @keyup.enter.native="handleQuerys"/>
  221. </el-form-item>
  222. <el-form-item label="应收企业" prop="receiveName">
  223. <el-input
  224. v-model="queryParamsPay.receiveName"
  225. placeholder="请输入应收企业"
  226. clearable
  227. size="small"
  228. maxlength="11"
  229. @keyup.enter.native="handleQuerys"/>
  230. </el-form-item>
  231. <el-form-item>
  232. <el-button
  233. type="cyan"
  234. icon="el-icon-search"
  235. size="mini"
  236. @click="handleQuerys"
  237. >搜索</el-button>
  238. <el-button icon="el-icon-refresh" size="mini" @click="resetQuerys"
  239. >重置</el-button>
  240. </el-form-item>
  241. </el-form>
  242. <el-table :data="payList"
  243. ref="tablePay"
  244. class="single-select-table"
  245. @selection-change="handleSelectionChange"
  246. :row-key="rowkey">
  247. <el-table-column
  248. type="selection"
  249. :reserve-selection="true"
  250. width="50"
  251. align="center"/>
  252. <el-table-column label="序号" type="index" width="50" align="center">
  253. <template slot-scope="scope">
  254. <span>{{ (queryParamsPay.pageNum - 1) * queryParamsPay.pageSize + scope.$index + 1}}</span>
  255. </template>
  256. </el-table-column>
  257. <el-table-column label="账款名称" align="center" prop="zbiName" show-overflow-tooltip />
  258. <el-table-column label="应收企业" align="center" prop="receiveName"/>
  259. <el-table-column label="应付企业" align="center" prop="payName" />
  260. <el-table-column label="预计还款期" align="center" prop="zbiPayDate" show-overflow-tooltip />
  261. <el-table-column label="金额" align="center" prop="zbiAmount" />
  262. </el-table>
  263. <pagination
  264. v-show="total > 0"
  265. :total="total"
  266. :page.sync="queryParamsPay.pageNum"
  267. :limit.sync="queryParamsPay.pageSize"
  268. @pagination="getAccountsPay" />
  269. <span slot="footer" class="dialog-footer">
  270. <el-button size="mini" @click="cancelTicket">取消</el-button>
  271. <el-button size="mini" type="primary" @click="closeTicket">确认</el-button>
  272. </span>
  273. </el-dialog>
  274. <!-- 新增往来账款 -->
  275. <el-dialog title="新增往来账款" :visible.sync="openAddBill" width="1120px" append-to-body>
  276. <add-bill :companyId="form.zfiSupplierId" companyType="00" :payDate="payDate" @addClick="emitAddClick" v-if="openAddBill"></add-bill>
  277. </el-dialog>
  278. <!-- 修改往来账款 -->
  279. <el-dialog title="修改往来账款" :visible.sync="openEditBill" width="1120px" append-to-body>
  280. <edit-bill :zbiId="this.zbiId" @editClick="emitEditClick" v-if="openEditBill"></edit-bill>
  281. </el-dialog>
  282. <!--预览-->
  283. <el-dialog :visible.sync="openFile" width="900px" append-to-body>
  284. <img :src="wordUrl" v-if="show" width='800px' height='500px'/>
  285. <iframe :src="wordUrl" width='800px' height='500px' frameborder='1' v-if="heid"/>
  286. </el-dialog>
  287. </div>
  288. </template>
  289. <script>
  290. import {getCreditDetail,getReceiverList,listCreditLine,getAvailableBalance,getAccountsPay,updateCredit,getFile} from "@/api/service/credit/credit";
  291. import {accAdd} from "@/utils/calculation";
  292. import {getToken} from "@/utils/auth";
  293. import AddBill from "@/views/service/bill/addBill";
  294. import EditBill from "@/views/service/bill/editBill";
  295. export default {
  296. name: "addCredit",
  297. components: {AddBill,EditBill},
  298. data() {
  299. return {
  300. //往来账款id
  301. zbiId: '',
  302. // 总条数
  303. total: 0,
  304. // 表单参数read
  305. form: {
  306. },
  307. // 表单校验
  308. rules: {
  309. //授信额度
  310. zfiCoreQuotaId: [
  311. {
  312. required: true,
  313. message: "请选择授信额度",
  314. trigger: ["blur", "change"],
  315. },
  316. ],
  317. //接收方
  318. zfiSupplierId: [
  319. {
  320. required: true,
  321. message: "请选择接收方",
  322. trigger: ["blur", "change"],
  323. },
  324. ],
  325. //签发有效期
  326. zfiEffectiveDate: [
  327. {
  328. required: true,
  329. message: "请选择签发有效期",
  330. trigger: ["blur", "change"],
  331. },
  332. ],
  333. //签发金额
  334. zfiAmount: [
  335. {
  336. required: true,
  337. message: "请输入签发金额",
  338. trigger: ["blur", "change"],
  339. },
  340. {
  341. pattern: /^(?:0|[1-9]\d{0,8})(?:\.\d{1,2})?$/,
  342. message: "请输入正确的签发金额",
  343. trigger: ["blur", "change"],
  344. },
  345. ],
  346. //承诺还款日
  347. zfiExpireDate: [
  348. {
  349. required: true,
  350. message: "请选择承诺还款日",
  351. trigger: ["blur", "change"],
  352. },
  353. ],
  354. },
  355. // 是否显示弹出层
  356. open: false,
  357. openAddBill: false,
  358. openEditBill: false,
  359. //选择的应付账款
  360. payList:[],
  361. //现有的应付账款
  362. ticketList:[],
  363. //签发金额大写
  364. issuedAmount:"零元整",
  365. //合计选中的应付账款的金额
  366. checkTotalAmt:"0.00",
  367. //合计选中的应付账款的大写金额
  368. checkTotalBigAmt:"零元整",
  369. //接收方
  370. supplierList:[],
  371. supplierForm:{},
  372. queryParamsPay: {
  373. pageNum: 1,
  374. pageSize: 10,
  375. receiveName:null,
  376. zbiName:null
  377. },
  378. //授信额度
  379. creditLineList:[],
  380. //可用额度
  381. availableAmt:"0.00",
  382. //有效期
  383. validityDate:"",
  384. //有效期类型
  385. zfpcrDateType:"" ,
  386. //产品是否可拆分
  387. zfpSplit:"",
  388. //融资放款方式
  389. zfpcrLoanType:"",
  390. //产品编号
  391. zfpId:"",
  392. //标题
  393. payTitle:"",
  394. //利率
  395. zfiRate:"",
  396. //最小融资金额
  397. zfpMinimumAmount:"",
  398. //授信额度
  399. creditParams: {
  400. zfpcrId:null,
  401. type:'1'
  402. },
  403. //合同附件
  404. contractFileList:[],
  405. //发票附件
  406. invoiceFileList:[],
  407. //其他文件
  408. otherFileList:[],
  409. pickerOptions:{
  410. disabledDate(v){
  411. return v.getTime() < new Date().getTime()-86400000;
  412. }
  413. },
  414. openFile:false,
  415. wordUrl: "",
  416. show:false,
  417. heid:false,
  418. chooseTicket:[],
  419. payDate:null
  420. };
  421. },
  422. watch:{
  423. 'form.zfiCoreQuotaId':'change'
  424. },
  425. created() {
  426. const zfiId = this.$route.params && this.$route.params.zfiId;
  427. getCreditDetail(zfiId).then((response) => {
  428. if(response.data){
  429. //接收方编号
  430. this.supplierForm.zfiSupplierId = response.data.financeInf.zfiSupplierId;
  431. getReceiverList(this.supplierForm).then((response) => {
  432. this.supplierList = response.data.records.map(item => {
  433. return { value: item.scyId, label: item.scyName};
  434. });
  435. });
  436. this.listCreditLine(response.data);
  437. }
  438. if(response.data.payList){
  439. this.ticketList = response.data.payList.records;
  440. this.getReTotal(this.ticketList);
  441. //附件
  442. this.getFile(this.ticketList);
  443. }
  444. })
  445. },
  446. methods: {
  447. // 取消按钮
  448. cancel() {
  449. this.$store.dispatch("tagsView/delView", this.$route);
  450. this.$router.go(-1);
  451. },
  452. /* 多选框跨页 */
  453. rowkeyCustomer(row) {
  454. return row.cciId;
  455. },
  456. //获取附件信息
  457. getFile(datas){
  458. var queryParamsFile = {};
  459. queryParamsFile.ticketList = datas;
  460. getFile(queryParamsFile).then((response) => {
  461. if(response.data){
  462. //获取发票文件
  463. this.invoiceFileList = response.data.invoiceFileList;
  464. //获取合同文件
  465. this.contractFileList = response.data.contractFileList;
  466. //获取其他文件
  467. this.otherFileList = response.data.otherFileList;
  468. }
  469. });
  470. },
  471. resetQuerys() {
  472. this.resetForm("formQuery");
  473. this.handleQuerys();
  474. },
  475. handleQuerys() {
  476. this.queryParamsPay.pageNum = 1;
  477. this.getAccountsPay();
  478. },
  479. //打开应付账款选择列表
  480. openTicket() {
  481. if(!this.form.zfiSupplierId){
  482. this.$message({
  483. message: "请选择接收方",
  484. type: "warning",
  485. });
  486. return false;
  487. }
  488. //搜索条件清空
  489. this.queryParamsPay.zbiName = "";
  490. this.queryParamsPay.receiveName = "";
  491. this.queryParamsPay.pageNum = 1;
  492. this.getAccountsPay();
  493. this.open = true;
  494. this.payTitle = "应付账款";
  495. },
  496. //核心授信额度
  497. listCreditLine(data){
  498. this.creditParams.zfpcrId = data.financeInf.zfiCoreQuotaId;
  499. listCreditLine(this.creditParams).then((response) => {
  500. this.creditLineList = response.data.map(item => {
  501. return { value: item.zfpcrId, label: item.zfpName,zfpcrDateType:item.zfpcrDateType,
  502. zfpcrEndDate:item.zfpcrEndDate,zfpcrLoanType:item.zfpcrLoanType,zfpSplit:item.zfpSplit,
  503. zfpId:item.zfpId,zfpcrRate:item.zfpcrRate,remaining:item.remaining,zfpMinimumAmount:item.zfpMinimumAmount};
  504. });
  505. this.form = data.financeInf;
  506. //开立方
  507. this.form.openName = data.openName;
  508. //创建人
  509. this.form.createName = data.createName;
  510. //签发金额大写
  511. this.issuedAmount = this.smallToBig(this.form.zfiAmount);
  512. });
  513. },
  514. //应付账款查询列表
  515. getAccountsPay() {
  516. this.queryParamsPay.zbiPayeeId = this.form.zfiSupplierId;
  517. return getAccountsPay(this.queryParamsPay).then((response) => {
  518. this.payList = response.data.records;
  519. this.selectChecked();
  520. this.total = response.data.total;
  521. return Promise.resolve(response)
  522. });
  523. },
  524. selectChecked() {
  525. //清空选择
  526.             this.$refs.tablePay && this.$refs.tablePay.clearSelection();
  527. this.ticketList.forEach((item) => {
  528. this.payList.forEach(row => {
  529. if (row.zbiId == item.zbiId) {
  530. this.$nextTick(() => {
  531. this.$refs.tablePay && this.$refs.tablePay.toggleRowSelection(row, true);
  532. })
  533. }
  534. });
  535. });
  536. //合计
  537. this.getReTotal(this.ticketList);
  538. //附件
  539. this.getFile(this.ticketList);
  540. },
  541. /* 删除按钮 */
  542. handleDelete(index, rows) {
  543. rows.splice(index, 1);
  544. if(this.$refs.tablePay){
  545. this.$refs.tablePay.clearSelection();
  546. }
  547. this.selectChecked();
  548. },
  549. /* 多选框跨页 */
  550. rowkey(row) {
  551. return row.zbiId;
  552. },
  553. // 多选框选中数据
  554. handleSelectionChange(val) {
  555. this.chooseTicket = val
  556. },
  557. // 确认选择
  558. closeTicket() {
  559. if(this.chooseTicket.length > 0){
  560. var flag = true;
  561. //获取选中第一个的应收企业
  562. var receiveName = this.chooseTicket[0].receiveName;
  563. //获取选中第一个的预计还款日期
  564. var zbiPayDate = this.chooseTicket[0].zbiPayDate;
  565. for(var i = 0 ;i < this.chooseTicket.length;i++){
  566. if(receiveName != this.chooseTicket[i].receiveName){
  567. flag = false;
  568. this.$message({
  569. message: '请选择应收企业相同的应付账款',
  570. type: 'warning'
  571. });
  572. break;
  573. }else if(zbiPayDate != this.chooseTicket[i].zbiPayDate){
  574. flag = false;
  575. this.$message({
  576. message: '请选择预计还款日期相同的应付账款',
  577. type: 'warning'
  578. });
  579. break;
  580. }
  581. }
  582. if(flag){
  583. //合计
  584. this.getReTotal(this.chooseTicket);
  585. this.ticketList = this.chooseTicket;
  586. //更新附件信息
  587. this.getFile(this.ticketList);
  588. this.open = false;
  589. }
  590. }else{
  591. this.$message({
  592. message: '请选择应付账款',
  593. type: 'warning'
  594. });
  595. }
  596. },
  597. //文件下载
  598. handleDownload(row){
  599. const pfiUrl = row.pfiUrl;
  600. if(pfiUrl != null && pfiUrl != ''){
  601. window.open(pfiUrl +"/"+ getToken());
  602. }else{
  603. this.$message({
  604. message: '该附件不存在!',
  605. type: 'warning'
  606. });
  607. return;
  608. }
  609. },
  610. //重新合计
  611. getReTotal(chooseTicket){
  612. //合计
  613. this.checkTotalAmt = "0.00";
  614. for(var i = 0; i < chooseTicket.length;i++){
  615. this.checkTotalAmt = accAdd(this.checkTotalAmt,chooseTicket[i].zbiAmount,2);
  616. }
  617. this.checkTotalBigAmt = this.smallToBig(this.checkTotalAmt);
  618. this.checkTotalAmt = this.amtFormat(this.checkTotalAmt);
  619. },
  620. //取消选择按钮
  621. cancelTicket(){
  622. /* this.ticketList = [];
  623. if(this.$refs.tablePay){
  624. this.$refs.tablePay.clearSelection();
  625. } */
  626. this.open = false;
  627. },
  628. /** 清空选择信息 */
  629. deleteTicekt() {
  630. this.ticketList = [];
  631. this.checkTotalAmt = "0.00";
  632. this.checkTotalBigAmt = this.smallToBig(this.checkTotalAmt);
  633. if(this.$refs.tablePay){
  634. this.$refs.tablePay.clearSelection();
  635. }
  636. //更新附件
  637. this.getFile(this.ticketList);
  638. },
  639. /* 删除按钮 */
  640. handleDelete(index, rows) {
  641. rows.splice(index, 1);
  642. if(this.$refs.tablePay){
  643. this.$refs.tablePay.clearSelection();
  644. }
  645. this.selectChecked();
  646. },
  647. /* 修改按钮 */
  648. handleUpdate(index, rows) {
  649. this.zbiId = rows[index].zbiId;
  650. this.openEditBill = true
  651. },
  652. onSelectAll() {
  653. if(this.$refs.tablePay){
  654. this.$refs.tablePay.clearSelection();
  655. }
  656. },
  657. //格式化金额
  658. amtFormat(cellValue) {
  659. if(cellValue == null || cellValue== undefined || cellValue == ''){
  660. cellValue = '0.00'
  661. }
  662. cellValue += '';
  663.       if (!cellValue.includes('.')) {
  664. cellValue += '.00';
  665. }
  666.       return cellValue.replace(/(\d)(?=(\d{3})+\.)/g, function ($0, $1) {
  667.         return $1 + ',';
  668.       }).replace(/\.$/, '');
  669. },
  670. //获取签发金额大写
  671. getBigSmall(){
  672. this.issuedAmount = this.smallToBig(this.form.zfiAmount);
  673. },
  674. /* // 将数字金额转换为大写金额 */
  675. smallToBig(money) {
  676. // 将数字金额转换为大写金额
  677. var cnNums = new Array(
  678. "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" ); //汉字的数字
  679. var cnIntRadice = new Array("", "拾", "佰", "仟"); //基本单位
  680. var cnIntUnits = new Array("", "万", "亿", "兆"); //对应整数部分扩展单位
  681. var cnDecUnits = new Array("角", "分", "毫", "厘"); //对应小数部分单位
  682. var cnInteger = "整"; //整数金额时后面跟的字符
  683. var cnIntLast = "元"; //整数完以后的单位
  684. //最大处理的数字
  685. var maxNum = 999999999999999.9999;
  686. var integerNum; //金额整数部分
  687. var decimalNum; //金额小数部分
  688. //输出的中文金额字符串
  689. var chineseStr = "";
  690. var parts; //分离金额后用的数组,预定义
  691. if (money == "" || money == null || money == undefined) {
  692. return "零元零角零分";
  693. }
  694. money = parseFloat(money);
  695. if (money >= maxNum) {
  696. //超出最大处理数字
  697. return "超出最大处理数字";
  698. }
  699. if (money == 0) {
  700. chineseStr = cnNums[0] + cnIntLast + cnInteger;
  701. return chineseStr;
  702. }
  703. //四舍五入保留两位小数,转换为字符串
  704. money = Math.round(money * 100).toString();
  705. integerNum = money.substr(0, money.length - 2);
  706. decimalNum = money.substr(money.length - 2);
  707. //获取整型部分转换
  708. if (parseInt(integerNum, 10) > 0) {
  709. var zeroCount = 0;
  710. var IntLen = integerNum.length;
  711. for (var i = 0; i < IntLen; i++) {
  712. var n = integerNum.substr(i, 1);
  713. var p = IntLen - i - 1;
  714. var q = p / 4;
  715. var m = p % 4;
  716. if (n == "0") {
  717. zeroCount++;
  718. } else {
  719. if (zeroCount > 0) {
  720. chineseStr += cnNums[0];
  721. }
  722. //归零
  723. zeroCount = 0;
  724. chineseStr += cnNums[parseInt(n)] + cnIntRadice[m];
  725. }
  726. if (m == 0 && zeroCount < 4) {
  727. chineseStr += cnIntUnits[q];
  728. }
  729. }
  730. chineseStr += cnIntLast;
  731. }
  732. //小数部分
  733. if (decimalNum != "") {
  734. var decLen = decimalNum.length;
  735. for (var i = 0; i < decLen; i++) {
  736. var n = decimalNum.substr(i, 1);
  737. if (n != "0") {
  738. chineseStr += cnNums[Number(n)] + cnDecUnits[i];
  739. }
  740. }
  741. }
  742. if (chineseStr == "") {
  743. chineseStr += cnNums[0] + cnIntLast + cnInteger;
  744. } else if (decimalNum == "" || /^0*$/.test(decimalNum)) {
  745. chineseStr += cnInteger;
  746. }
  747. return chineseStr;
  748. },
  749. //选择授信触发
  750. change(val) {
  751. if (!val) {
  752. //可用额度
  753. this.availableAmt = "0.00";
  754. //有效期
  755. this.validityDate ="";
  756. //产品是否可拆分
  757. this.zfpSplit= "",
  758. //融资放款方式
  759. this.zfpcrLoanType = "";
  760. //产品
  761. this.zfpId = "";
  762. //利率
  763. this.zfiRate = "";
  764. //最小融信额度
  765. this.zfpMinimumAmount = "";
  766. return;
  767. }
  768. let obj = {};
  769. obj = this.creditLineList.find(item => {
  770. return item.value === val;
  771. });
  772. //获取有效期的类型
  773. this.zfpcrDateType = obj.zfpcrDateType;
  774. //产品是否可拆分
  775. this.zfpSplit= obj.zfpSplit;
  776. //放款方式
  777. this.zfpcrLoanType = obj.zfpcrLoanType;
  778. //产品
  779. this.zfpId = obj.zfpId;
  780. //利率
  781. this.zfiRate = obj.zfpcrRate;
  782. //最小融资金额
  783. this.zfpMinimumAmount = obj.zfpMinimumAmount;
  784. //长期
  785. if("0"== this.zfpcrDateType){
  786. this.validityDate = "长期";
  787. }else{
  788. this.validityDate = obj.zfpcrEndDate;
  789. }
  790. var lineQueryParam = {};
  791. lineQueryParam.zfpcrId = val;
  792. //获取可用额度
  793. getAvailableBalance(lineQueryParam).then((response) => {
  794. this.availableAmt = response.data.remaining;
  795. });
  796. },
  797. //修改
  798. submitForm(){
  799. this.$refs["form"].validate(valid => {
  800. if(parseFloat(this.form.zfiAmount) > parseFloat(this.moneyDelete(this.availableAmt))){
  801. this.$message({
  802. message: '签发金额不可大于可用金额',
  803. type: 'warning'
  804. });
  805. return;
  806. }
  807. if(parseFloat(this.form.zfiAmount) < parseFloat(this.zfpMinimumAmount)){
  808. this.$message({
  809. message: '签发金额不可小于产品的最小融资金额',
  810. type: 'warning'
  811. });
  812. return;
  813. }
  814. if (valid) {
  815. const loading = this.$loading({
  816. lock: true,
  817. text: 'Loading',
  818. background: 'rgba(0, 0, 0,0)'
  819. });
  820. //如果签发金额小于合计金额
  821. if((parseFloat(this.form.zfiAmount)) < (parseFloat(this.moneyDelete(this.checkTotalAmt)))){
  822. var _this = this;
  823. this.$confirm('签发金额小于应付金额合计,是否确认提交', "警告", {
  824. confirmButtonText: "确定",
  825. cancelButtonText: "取消",
  826. type: "warning"
  827. }).then(function() {
  828. //应付账款
  829. _this.form.ticketList = _this.ticketList;
  830. //产品是否可拆分
  831. _this.form.zfpSplit = _this.zfpSplit;
  832. //放款方式
  833. _this.form.zfpcrLoanType = _this.zfpcrLoanType;
  834. //产品
  835. _this.form.zfpId = _this.zfpId;
  836. //利率
  837. _this.form.zfiRate = _this.zfiRate;
  838. //最下融资金额
  839. _this.form.zfpMinimumAmount = _this.zfpMinimumAmount;
  840. //融信类型
  841. _this.form.type = "1";
  842. //可用额度
  843. _this.form.availableAmt = _this.moneyDelete(_this.availableAmt);
  844. updateCredit(_this.form).then(response => {
  845. loading.close();
  846. _this.msgSuccess("修改成功");
  847. _this.$store.dispatch("tagsView/delView", _this.$route);
  848. _this.$router.go(-1);
  849. }).catch((response)=>{
  850. loading.close();
  851. });
  852. }).catch((e) => {
  853. loading.close();
  854. });
  855. }else{
  856. //应付账款
  857. this.form.ticketList = this.ticketList;
  858. //产品是否可拆分
  859. this.form.zfpSplit = this.zfpSplit;
  860. //放款方式
  861. this.form.zfpcrLoanType = this.zfpcrLoanType;
  862. //产品
  863. this.form.zfpId = this.zfpId;
  864. //利率
  865. this.form.zfiRate = this.zfiRate;
  866. //融信类型
  867. this.form.type = "1";
  868. //可用额度
  869. this.form.availableAmt = this.moneyDelete(this.availableAmt);
  870. //最小融资金额
  871. this.form.zfpMinimumAmount = this.zfpMinimumAmount;
  872. updateCredit(this.form).then(response => {
  873. loading.close();
  874. this.msgSuccess("修改成功");
  875. this.$store.dispatch("tagsView/delView", this.$route);
  876. this.$router.go(-1);
  877. }).catch((response)=>{
  878. loading.close();
  879. });
  880. }
  881. }
  882. });
  883. },
  884. //金额去掉千分位
  885. moneyDelete(num){
  886. if(num &&num != undefined && num != null){
  887. let _num = num;
  888. _num = _num.toString();
  889. _num = _num.replace(/,/gi,'');
  890. return _num;
  891. }else{
  892. return num;
  893. }
  894. },
  895. //预览
  896. handlePreview(row) {
  897. const pfiUrl = row.pfiUrl;
  898. const pfiFileName = row.pfiFileName;
  899. if (row.pfiUrl) {
  900. console.log(pfiFileName.substr(-3));
  901. if (pfiFileName.substr(-3) == "pdf") {
  902. this.wordUrl = pfiUrl + "/" + getToken();
  903. this.show=false;
  904. this.heid=true;
  905. } else if (
  906. pfiFileName.substr(-3) == "jpg" ||
  907. pfiFileName.substr(-3) == "png" ||
  908. pfiFileName.substr(-3) == "JPG" ||
  909. pfiFileName.substr(-3) == "PNG" ||
  910. pfiFileName.substr(-4) == "jpeg" ||
  911. pfiFileName.substr(-3) == "JPEG"
  912. ) {
  913. this.wordUrl =
  914. pfiUrl +
  915. "/" +
  916. getToken();
  917. this.show=true;
  918. this.heid=false;
  919. console.log("====>",this.wordUrl);
  920. } else if (
  921. pfiFileName.substr(-3) == "doc" ||
  922. pfiFileName.substr(-3) == "DOC"||
  923. pfiFileName.substr(-4) == "docx" ||
  924. pfiFileName.substr(-3) == "DOCX"
  925. ) {
  926. this.wordUrl =
  927. "https://view.officeapps.live.com/op/view.aspx?src=" +
  928. pfiUrl +
  929. "/" +
  930. getToken() +
  931. "/" +
  932. pfiFileName;
  933. this.show=false;
  934. this.heid=true;
  935. console.log("====>",this.wordUrl);
  936. } else {
  937. this.$message({
  938. message: "暂不支持该类型文件预览",
  939. type: "warning",
  940. });
  941. return;
  942. }
  943. }
  944. this.openFile = true;
  945. },
  946. changeRate(e,input){
  947.       e.target.value=(e.target.value.match(/^\d*(\.?\d{0,2})/g)[0]) || null
  948.       this.input=e.target.value
  949.       this.form.zfiAmount=this.input
  950.     },
  951. //新增应付
  952. addPay(){
  953. //获取选中第一个的预计还款日期
  954. if(this.chooseTicket[0]){
  955. var zbiPayDate = this.chooseTicket[0].zbiPayDate;
  956. this.payDate = zbiPayDate;
  957. }
  958. this.openAddBill = true
  959. },
  960. //新增账款回调
  961. emitAddClick(val){
  962. var self = this
  963. this.getAccountsPay().then((response) => {
  964. //新增付款返回id直接选中
  965. if (val) {
  966. self.payList.forEach(element => {
  967. if(element.zbiId == val){
  968. // 将当前点击项选中
  969. self.chooseTicket.push(element)
  970. self.closeTicket()
  971. }
  972. });
  973. }
  974. })
  975. self.openAddBill = false
  976. },
  977. //修改账款回调
  978. emitEditClick(val) {
  979. var self = this
  980. this.getAccountsPay().then((response) => {
  981. //修改付款返回id直接选中
  982. if (val) {
  983. // self.payList.forEach(element => {
  984. // if (element.zbiId == val) {
  985. // // 将当前点击项选中
  986. // // self.chooseTicket.push(element)
  987. // //self.closeTicket()
  988. // }
  989. // });
  990. console.log(self.chooseTicket)
  991. self.ticketList = self.chooseTicket
  992. self.closeTicket()
  993. }
  994. })
  995. self.openEditBill = false
  996. },
  997. }
  998. };
  999. </script>
  1000. <style lang="scss">
  1001. .uoloadfj .el-upload--picture-card{
  1002. width:110px;
  1003. height:110px;
  1004. line-height:110px;
  1005. }
  1006. .fjUoloadSty .el-upload--picture-card{
  1007. display:none;
  1008. }
  1009. table th.star div::before {
  1010. content: '*';
  1011. color: red;
  1012. }
  1013. </style>