financeOpenUpdate.vue 40 KB

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