creditUpdate.vue 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991
  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: 200px"
  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>可用额度:</span>
  89. <span>{{availableAmt}}</span>
  90. <br>
  91. <span>有效期:</span>
  92. <span>{{validityDate}}</span>
  93. <br>
  94. <span>最小融资金额:</span>
  95. <span>{{zfpMinimumAmount}}</span>
  96. </el-col>
  97. </el-row>
  98. <el-divider content-position="left" >应付账款</el-divider>
  99. <el-form-item style="margin-left: 100px">
  100. <el-button size="mini" type="success" @click="addPay">新增应付账款</el-button>
  101. <el-button size="mini" type="primary" @click="openTicket">选择</el-button>
  102. <el-button size="mini" @click="deleteTicekt">清空全部</el-button>
  103. <el-form-item label="合计金额:">
  104. <span>{{checkTotalAmt}}</span>
  105. </el-form-item>
  106. <el-form-item label="金额大写:">
  107. <span>{{checkTotalBigAmt}}</span>
  108. </el-form-item>
  109. <el-table :data="ticketList" style="width: 1100px">
  110. <el-table-column label="账款名称" align="center" prop="zbiName" show-overflow-tooltip />
  111. <el-table-column label="应收企业" align="center" prop="receiveName"/>
  112. <el-table-column label="应付企业" align="center" prop="payName" />
  113. <el-table-column label="预计还款期" align="center" prop="zbiPayDate" show-overflow-tooltip />
  114. <el-table-column label="金额" align="center" prop="zbiAmount" />
  115. <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="250">
  116. <template slot-scope="scope">
  117. <el-button
  118. size="mini"
  119. type="text"
  120. icon="el-icon-delete"
  121. @click="handleDelete(scope.$index, ticketList)"
  122. >删除</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" @addClick="emitAddClick" v-if="openAddBill"></add-bill>
  277. </el-dialog>
  278. <!--预览-->
  279. <el-dialog :visible.sync="openFile" width="1000px" append-to-body>
  280. <img :src="wordUrl" v-if="show" width='450px' height='500px'/>
  281. <iframe :src="wordUrl" width='800px' height='600px' frameborder='1' v-if="heid"/>
  282. </el-dialog>
  283. </div>
  284. </template>
  285. <script>
  286. import {getCreditDetail,getReceiverList,listCreditLine,getAvailableBalance,getAccountsPay,updateCredit,getFile} from "@/api/service/credit/credit";
  287. import {accAdd} from "@/utils/calculation";
  288. import {getToken} from "@/utils/auth";
  289. import AddBill from "@/views/service/bill/addBill";
  290. export default {
  291. name: "addCredit",
  292. components: {AddBill},
  293. data() {
  294. return {
  295. // 总条数
  296. total: 0,
  297. // 表单参数read
  298. form: {
  299. },
  300. // 表单校验
  301. rules: {
  302. //授信额度
  303. zfiCoreQuotaId: [
  304. {
  305. required: true,
  306. message: "请选择授信额度",
  307. trigger: ["blur", "change"],
  308. },
  309. ],
  310. //接收方
  311. zfiSupplierId: [
  312. {
  313. required: true,
  314. message: "请选择接收方",
  315. trigger: ["blur", "change"],
  316. },
  317. ],
  318. //签发有效期
  319. zfiEffectiveDate: [
  320. {
  321. required: true,
  322. message: "请选择签发有效期",
  323. trigger: ["blur", "change"],
  324. },
  325. ],
  326. //签发金额
  327. zfiAmount: [
  328. {
  329. required: true,
  330. message: "请输入签发金额",
  331. trigger: ["blur", "change"],
  332. },
  333. {
  334. pattern: /^(?:0|[1-9]\d{0,8})(?:\.\d{1,2})?$/,
  335. message: "请输入正确的签发金额",
  336. trigger: ["blur", "change"],
  337. },
  338. ],
  339. //承诺还款日
  340. zfiExpireDate: [
  341. {
  342. required: true,
  343. message: "请选择承诺还款日",
  344. trigger: ["blur", "change"],
  345. },
  346. ],
  347. },
  348. // 是否显示弹出层
  349. open: false,
  350. openAddBill: false,
  351. //选择的应付账款
  352. payList:[],
  353. //现有的应付账款
  354. ticketList:[],
  355. //签发金额大写
  356. issuedAmount:"零元整",
  357. //合计选中的应付账款的金额
  358. checkTotalAmt:"0.00",
  359. //合计选中的应付账款的大写金额
  360. checkTotalBigAmt:"零元整",
  361. //接收方
  362. supplierList:[],
  363. supplierForm:{},
  364. queryParamsPay: {
  365. pageNum: 1,
  366. pageSize: 10,
  367. receiveName:null,
  368. zbiName:null
  369. },
  370. //授信额度
  371. creditLineList:[],
  372. //可用额度
  373. availableAmt:"0.00",
  374. //有效期
  375. validityDate:"",
  376. //有效期类型
  377. zfpcrDateType:"" ,
  378. //产品是否可拆分
  379. zfpSplit:"",
  380. //融资放款方式
  381. zfpcrLoanType:"",
  382. //产品编号
  383. zfpId:"",
  384. //标题
  385. payTitle:"",
  386. //利率
  387. zfiRate:"",
  388. //最小融资金额
  389. zfpMinimumAmount:"",
  390. //授信额度
  391. creditParams: {
  392. zfpcrId:null,
  393. type:'1'
  394. },
  395. //合同附件
  396. contractFileList:[],
  397. //发票附件
  398. invoiceFileList:[],
  399. //其他文件
  400. otherFileList:[],
  401. pickerOptions:{
  402. disabledDate(v){
  403. return v.getTime() < new Date().getTime()-86400000;
  404. }
  405. },
  406. openFile:false,
  407. wordUrl: "",
  408. show:false,
  409. heid:false,
  410. chooseTicket:[]
  411. };
  412. },
  413. watch:{
  414. 'form.zfiCoreQuotaId':'change'
  415. },
  416. created() {
  417. const zfiId = this.$route.params && this.$route.params.zfiId;
  418. getCreditDetail(zfiId).then((response) => {
  419. if(response.data){
  420. //接收方编号
  421. this.supplierForm.zfiSupplierId = response.data.financeInf.zfiSupplierId;
  422. getReceiverList(this.supplierForm).then((response) => {
  423. this.supplierList = response.data.records.map(item => {
  424. return { value: item.scyId, label: item.scyName};
  425. });
  426. });
  427. this.listCreditLine(response.data);
  428. }
  429. if(response.data.payList){
  430. this.ticketList = response.data.payList.records;
  431. this.getReTotal(this.ticketList);
  432. //附件
  433. this.getFile(this.ticketList);
  434. }
  435. })
  436. },
  437. methods: {
  438. // 取消按钮
  439. cancel() {
  440. this.$store.dispatch("tagsView/delView", this.$route);
  441. this.$router.go(-1);
  442. },
  443. /* 多选框跨页 */
  444. rowkeyCustomer(row) {
  445. return row.cciId;
  446. },
  447. //获取附件信息
  448. getFile(datas){
  449. var queryParamsFile = {};
  450. queryParamsFile.ticketList = datas;
  451. getFile(queryParamsFile).then((response) => {
  452. if(response.data){
  453. //获取发票文件
  454. this.invoiceFileList = response.data.invoiceFileList;
  455. //获取合同文件
  456. this.contractFileList = response.data.contractFileList;
  457. //获取其他文件
  458. this.otherFileList = response.data.otherFileList;
  459. }
  460. });
  461. },
  462. resetQuerys() {
  463. this.resetForm("formQuery");
  464. this.handleQuerys();
  465. },
  466. handleQuerys() {
  467. this.queryParamsPay.pageNum = 1;
  468. this.getAccountsPay();
  469. },
  470. //打开应付账款选择列表
  471. openTicket() {
  472. if(!this.form.zfiSupplierId){
  473. this.$message({
  474. message: "请选择接收方",
  475. type: "warning",
  476. });
  477. return false;
  478. }
  479. //搜索条件清空
  480. this.queryParamsPay.zbiName = "";
  481. this.queryParamsPay.receiveName = "";
  482. this.getAccountsPay();
  483. this.open = true;
  484. this.payTitle = "应付账款";
  485. },
  486. //核心授信额度
  487. listCreditLine(data){
  488. this.creditParams.zfpcrId = data.financeInf.zfiCoreQuotaId;
  489. listCreditLine(this.creditParams).then((response) => {
  490. this.creditLineList = response.data.map(item => {
  491. return { value: item.zfpcrId, label: item.zfpName,zfpcrDateType:item.zfpcrDateType,
  492. zfpcrEndDate:item.zfpcrEndDate,zfpcrLoanType:item.zfpcrLoanType,zfpSplit:item.zfpSplit,
  493. zfpId:item.zfpId,zfpcrRate:item.zfpcrRate,remaining:item.remaining,zfpMinimumAmount:item.zfpMinimumAmount};
  494. });
  495. this.form = data.financeInf;
  496. //开立方
  497. this.form.openName = data.openName;
  498. //创建人
  499. this.form.createName = data.createName;
  500. //签发金额大写
  501. this.issuedAmount = this.smallToBig(this.form.zfiAmount);
  502. });
  503. },
  504. //应付账款查询列表
  505. getAccountsPay() {
  506. this.queryParamsPay.zbiPayeeId = this.form.zfiSupplierId;
  507. return getAccountsPay(this.queryParamsPay).then((response) => {
  508. this.payList = response.data.records;
  509. this.selectChecked();
  510. this.total = response.data.total;
  511. return Promise.resolve(response)
  512. });
  513. },
  514. selectChecked() {
  515. this.ticketList.forEach((item) => {
  516. this.payList.forEach(row => {
  517. if (row.zbiId == item.zbiId) {
  518. this.$nextTick(() => {
  519. this.$refs.tablePay && this.$refs.tablePay.toggleRowSelection(row, true);
  520. })
  521. }
  522. });
  523. });
  524. //合计
  525. this.getReTotal(this.ticketList);
  526. //附件
  527. this.getFile(this.ticketList);
  528. },
  529. /* 删除按钮 */
  530. handleDelete(index, rows) {
  531. rows.splice(index, 1);
  532. if(this.$refs.tablePay){
  533. this.$refs.tablePay.clearSelection();
  534. }
  535. this.selectChecked();
  536. },
  537. /* 多选框跨页 */
  538. rowkey(row) {
  539. return row.zbiId;
  540. },
  541. // 多选框选中数据
  542. handleSelectionChange(val) {
  543. this.chooseTicket = val
  544. },
  545. // 确认选择
  546. closeTicket() {
  547. if(this.chooseTicket){
  548. var flag = true;
  549. //如果长度大于1,则需要进行对比应收企业和预计还款日期是否一致
  550. if(this.chooseTicket.length > 0){
  551. //获取选中第一个的应收企业
  552. var receiveName = this.chooseTicket[0].receiveName;
  553. //获取选中第一个的预计还款日期
  554. var zbiPayDate = this.chooseTicket[0].zbiPayDate;
  555. for(var i = 0 ;i < this.chooseTicket.length;i++){
  556. if(receiveName != this.chooseTicket[i].receiveName){
  557. flag = false
  558. this.chooseTicket.splice(i, 1)
  559. this.$message({
  560. message: '请选择应收企业相同的应付账款',
  561. type: 'warning'
  562. });
  563. return false;
  564. }
  565. if(zbiPayDate != this.chooseTicket[i].zbiPayDate){
  566. flag = false
  567. this.chooseTicket.splice(i, 1)
  568. this.$message({
  569. message: '请选择预计还款日期相同的应付账款',
  570. type: 'warning'
  571. });
  572. return false;
  573. }
  574. }
  575. if(flag){
  576. //合计
  577. this.getReTotal(this.chooseTicket);
  578. this.ticketList = this.chooseTicket;
  579. //更新附件信息
  580. this.getFile(this.ticketList);
  581. }
  582. }
  583. this.open = false;
  584. }else{
  585. this.$message({
  586. message: '请选择应付账款',
  587. type: 'warning'
  588. });
  589. }
  590. },
  591. //文件下载
  592. handleDownload(row){
  593. const pfiUrl = row.pfiUrl;
  594. if(pfiUrl != null && pfiUrl != ''){
  595. window.open(pfiUrl +"/"+ getToken());
  596. }else{
  597. this.$message({
  598. message: '该附件不存在!',
  599. type: 'warning'
  600. });
  601. return;
  602. }
  603. },
  604. //重新合计
  605. getReTotal(chooseTicket){
  606. //合计
  607. this.checkTotalAmt = "0.00";
  608. for(var i = 0; i < chooseTicket.length;i++){
  609. this.checkTotalAmt = accAdd(this.checkTotalAmt,chooseTicket[i].zbiAmount,2);
  610. }
  611. this.checkTotalBigAmt = this.smallToBig(this.checkTotalAmt);
  612. this.checkTotalAmt = this.amtFormat(this.checkTotalAmt);
  613. },
  614. //取消选择按钮
  615. cancelTicket(){
  616. /* this.ticketList = [];
  617. if(this.$refs.tablePay){
  618. this.$refs.tablePay.clearSelection();
  619. } */
  620. this.open = false;
  621. },
  622. /** 清空选择信息 */
  623. deleteTicekt() {
  624. this.ticketList = [];
  625. this.checkTotalAmt = "0.00";
  626. this.checkTotalBigAmt = this.smallToBig(this.checkTotalAmt);
  627. if(this.$refs.tablePay){
  628. this.$refs.tablePay.clearSelection();
  629. }
  630. //更新附件
  631. this.getFile(this.ticketList);
  632. },
  633. /* 删除按钮 */
  634. handleDelete(index, rows) {
  635. rows.splice(index, 1);
  636. if(this.$refs.tablePay){
  637. this.$refs.tablePay.clearSelection();
  638. }
  639. this.selectChecked();
  640. },
  641. onSelectAll() {
  642. if(this.$refs.tablePay){
  643. this.$refs.tablePay.clearSelection();
  644. }
  645. },
  646. //格式化金额
  647. amtFormat(cellValue) {
  648. if(cellValue == null || cellValue== undefined || cellValue == ''){
  649. cellValue = '0.00'
  650. }
  651. cellValue += '';
  652.       if (!cellValue.includes('.')) {
  653. cellValue += '.00';
  654. }
  655.       return cellValue.replace(/(\d)(?=(\d{3})+\.)/g, function ($0, $1) {
  656.         return $1 + ',';
  657.       }).replace(/\.$/, '');
  658. },
  659. //获取签发金额大写
  660. getBigSmall(){
  661. this.issuedAmount = this.smallToBig(this.form.zfiAmount);
  662. },
  663. /* // 将数字金额转换为大写金额 */
  664. smallToBig(money) {
  665. // 将数字金额转换为大写金额
  666. var cnNums = new Array(
  667. "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" ); //汉字的数字
  668. var cnIntRadice = new Array("", "拾", "佰", "仟"); //基本单位
  669. var cnIntUnits = new Array("", "万", "亿", "兆"); //对应整数部分扩展单位
  670. var cnDecUnits = new Array("角", "分", "毫", "厘"); //对应小数部分单位
  671. var cnInteger = "整"; //整数金额时后面跟的字符
  672. var cnIntLast = "元"; //整数完以后的单位
  673. //最大处理的数字
  674. var maxNum = 999999999999999.9999;
  675. var integerNum; //金额整数部分
  676. var decimalNum; //金额小数部分
  677. //输出的中文金额字符串
  678. var chineseStr = "";
  679. var parts; //分离金额后用的数组,预定义
  680. if (money == "" || money == null || money == undefined) {
  681. return "零元零角零分";
  682. }
  683. money = parseFloat(money);
  684. if (money >= maxNum) {
  685. //超出最大处理数字
  686. return "超出最大处理数字";
  687. }
  688. if (money == 0) {
  689. chineseStr = cnNums[0] + cnIntLast + cnInteger;
  690. return chineseStr;
  691. }
  692. //四舍五入保留两位小数,转换为字符串
  693. money = Math.round(money * 100).toString();
  694. integerNum = money.substr(0, money.length - 2);
  695. decimalNum = money.substr(money.length - 2);
  696. //获取整型部分转换
  697. if (parseInt(integerNum, 10) > 0) {
  698. var zeroCount = 0;
  699. var IntLen = integerNum.length;
  700. for (var i = 0; i < IntLen; i++) {
  701. var n = integerNum.substr(i, 1);
  702. var p = IntLen - i - 1;
  703. var q = p / 4;
  704. var m = p % 4;
  705. if (n == "0") {
  706. zeroCount++;
  707. } else {
  708. if (zeroCount > 0) {
  709. chineseStr += cnNums[0];
  710. }
  711. //归零
  712. zeroCount = 0;
  713. chineseStr += cnNums[parseInt(n)] + cnIntRadice[m];
  714. }
  715. if (m == 0 && zeroCount < 4) {
  716. chineseStr += cnIntUnits[q];
  717. }
  718. }
  719. chineseStr += cnIntLast;
  720. }
  721. //小数部分
  722. if (decimalNum != "") {
  723. var decLen = decimalNum.length;
  724. for (var i = 0; i < decLen; i++) {
  725. var n = decimalNum.substr(i, 1);
  726. if (n != "0") {
  727. chineseStr += cnNums[Number(n)] + cnDecUnits[i];
  728. }
  729. }
  730. }
  731. if (chineseStr == "") {
  732. chineseStr += cnNums[0] + cnIntLast + cnInteger;
  733. } else if (decimalNum == "" || /^0*$/.test(decimalNum)) {
  734. chineseStr += cnInteger;
  735. }
  736. return chineseStr;
  737. },
  738. //选择授信触发
  739. change(val) {
  740. if (!val) {
  741. //可用额度
  742. this.availableAmt = "0.00";
  743. //有效期
  744. this.validityDate ="";
  745. //产品是否可拆分
  746. this.zfpSplit= "",
  747. //融资放款方式
  748. this.zfpcrLoanType = "";
  749. //产品
  750. this.zfpId = "";
  751. //利率
  752. this.zfiRate = "";
  753. //最小融信额度
  754. this.zfpMinimumAmount = "";
  755. return;
  756. }
  757. let obj = {};
  758. obj = this.creditLineList.find(item => {
  759. return item.value === val;
  760. });
  761. //获取有效期的类型
  762. this.zfpcrDateType = obj.zfpcrDateType;
  763. //产品是否可拆分
  764. this.zfpSplit= obj.zfpSplit;
  765. //放款方式
  766. this.zfpcrLoanType = obj.zfpcrLoanType;
  767. //产品
  768. this.zfpId = obj.zfpId;
  769. //利率
  770. this.zfiRate = obj.zfpcrRate;
  771. //最小融资金额
  772. this.zfpMinimumAmount = obj.zfpMinimumAmount;
  773. //长期
  774. if("0"== this.zfpcrDateType){
  775. this.validityDate = "长期";
  776. }else{
  777. this.validityDate = obj.zfpcrEndDate;
  778. }
  779. var lineQueryParam = {};
  780. lineQueryParam.zfpcrId = val;
  781. //获取可用额度
  782. getAvailableBalance(lineQueryParam).then((response) => {
  783. this.availableAmt = response.data.remaining;
  784. });
  785. },
  786. //修改
  787. submitForm(){
  788. this.$refs["form"].validate(valid => {
  789. if(parseFloat(this.form.zfiAmount) > parseFloat(this.moneyDelete(this.availableAmt))){
  790. this.$message({
  791. message: '签发金额不可大于可用金额',
  792. type: 'warning'
  793. });
  794. return;
  795. }
  796. if(parseFloat(this.form.zfiAmount) < parseFloat(this.zfpMinimumAmount)){
  797. this.$message({
  798. message: '签发金额不可小于产品的最小融资金额',
  799. type: 'warning'
  800. });
  801. return;
  802. }
  803. if (valid) {
  804. const loading = this.$loading({
  805. lock: true,
  806. text: 'Loading',
  807. background: 'rgba(0, 0, 0,0)'
  808. });
  809. //如果签发金额小于合计金额
  810. if((parseFloat(this.form.zfiAmount)) < (parseFloat(this.moneyDelete(this.checkTotalAmt)))){
  811. var _this = this;
  812. this.$confirm('签发金额小于应付金额合计,是否确认提交', "警告", {
  813. confirmButtonText: "确定",
  814. cancelButtonText: "取消",
  815. type: "warning"
  816. }).then(function() {
  817. //应付账款
  818. _this.form.ticketList = _this.ticketList;
  819. //产品是否可拆分
  820. _this.form.zfpSplit = _this.zfpSplit;
  821. //放款方式
  822. _this.form.zfpcrLoanType = _this.zfpcrLoanType;
  823. //产品
  824. _this.form.zfpId = _this.zfpId;
  825. //利率
  826. _this.form.zfiRate = _this.zfiRate;
  827. //最下融资金额
  828. _this.form.zfpMinimumAmount = _this.zfpMinimumAmount;
  829. //融信类型
  830. _this.form.type = "1";
  831. //可用额度
  832. _this.form.availableAmt = _this.moneyDelete(_this.availableAmt);
  833. updateCredit(_this.form).then(response => {
  834. loading.close();
  835. _this.msgSuccess("修改成功");
  836. _this.$store.dispatch("tagsView/delView", _this.$route);
  837. _this.$router.go(-1);
  838. }).catch((response)=>{
  839. loading.close();
  840. });
  841. }).catch((e) => {
  842. loading.close();
  843. });
  844. }else{
  845. //应付账款
  846. this.form.ticketList = this.ticketList;
  847. //产品是否可拆分
  848. this.form.zfpSplit = this.zfpSplit;
  849. //放款方式
  850. this.form.zfpcrLoanType = this.zfpcrLoanType;
  851. //产品
  852. this.form.zfpId = this.zfpId;
  853. //利率
  854. this.form.zfiRate = this.zfiRate;
  855. //融信类型
  856. this.form.type = "1";
  857. //可用额度
  858. this.form.availableAmt = this.moneyDelete(this.availableAmt);
  859. //最小融资金额
  860. this.form.zfpMinimumAmount = this.zfpMinimumAmount;
  861. updateCredit(this.form).then(response => {
  862. loading.close();
  863. this.msgSuccess("修改成功");
  864. this.$store.dispatch("tagsView/delView", this.$route);
  865. this.$router.go(-1);
  866. }).catch((response)=>{
  867. loading.close();
  868. });
  869. }
  870. }
  871. });
  872. },
  873. //金额去掉千分位
  874. moneyDelete(num){
  875. if(num &&num != undefined && num != null){
  876. let _num = num;
  877. _num = _num.toString();
  878. _num = _num.replace(/,/gi,'');
  879. return _num;
  880. }else{
  881. return num;
  882. }
  883. },
  884. //预览
  885. handlePreview(row) {
  886. const pfiUrl = row.pfiUrl;
  887. const pfiFileName = row.pfiFileName;
  888. if (row.pfiUrl) {
  889. console.log(pfiFileName.substr(-3));
  890. if (pfiFileName.substr(-3) == "pdf") {
  891. this.wordUrl = pfiUrl + "/" + getToken();
  892. this.show=false;
  893. this.heid=true;
  894. } else if (
  895. pfiFileName.substr(-3) == "jpg" ||
  896. pfiFileName.substr(-3) == "png" ||
  897. pfiFileName.substr(-3) == "JPG" ||
  898. pfiFileName.substr(-3) == "PNG" ||
  899. pfiFileName.substr(-4) == "jpeg" ||
  900. pfiFileName.substr(-3) == "JPEG"
  901. ) {
  902. this.wordUrl =
  903. pfiUrl +
  904. "/" +
  905. getToken();
  906. this.show=true;
  907. this.heid=false;
  908. console.log("====>",this.wordUrl);
  909. } else if (
  910. pfiFileName.substr(-3) == "doc" ||
  911. pfiFileName.substr(-3) == "DOC"||
  912. pfiFileName.substr(-4) == "docx" ||
  913. pfiFileName.substr(-3) == "DOCX"
  914. ) {
  915. this.wordUrl =
  916. "https://view.officeapps.live.com/op/view.aspx?src=" +
  917. pfiUrl +
  918. "/" +
  919. getToken() +
  920. "/" +
  921. pfiFileName;
  922. this.show=false;
  923. this.heid=true;
  924. console.log("====>",this.wordUrl);
  925. } else {
  926. this.$message({
  927. message: "暂不支持该类型文件预览",
  928. type: "warning",
  929. });
  930. return;
  931. }
  932. }
  933. this.openFile = true;
  934. },
  935. changeRate(e,input){
  936.       e.target.value=(e.target.value.match(/^\d*(\.?\d{0,2})/g)[0]) || null
  937.       this.input=e.target.value
  938.       this.form.zfiAmount=this.input
  939.     },
  940. //新增应付
  941. addPay(){
  942. this.openAddBill = true
  943. },
  944. //新增账款回调
  945. emitAddClick(val){
  946. var self = this
  947. this.getAccountsPay().then((response) => {
  948. //新增付款返回id直接选中
  949. if (val) {
  950. self.payList.forEach(element => {
  951. if(element.zbiId == val){
  952. // 将当前点击项选中
  953. self.chooseTicket.push(element)
  954. self.closeTicket()
  955. }
  956. });
  957. }
  958. })
  959. self.openAddBill = false
  960. }
  961. }
  962. };
  963. </script>
  964. <style lang="scss">
  965. .uoloadfj .el-upload--picture-card{
  966. width:110px;
  967. height:110px;
  968. line-height:110px;
  969. }
  970. .fjUoloadSty .el-upload--picture-card{
  971. display:none;
  972. }
  973. table th.star div::before {
  974. content: '*';
  975. color: red;
  976. }
  977. </style>