qtPayFlowableDetail.vue 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431
  1. <template>
  2. <view style="margin: 25rpx 25rpx 75rpx 25rpx;">
  3. <view style = "text-align: center;font-size: 43rpx; margin-bottom:10rpx">国电投国际贸易(北京)有限公司<br>境内付款申请及确认单 </view>
  4. <view style = "margin-bottom:10rpx;text-align: right;">付款单编号:{{paymentData.payNumber}}</view>
  5. <view class="h-table" style="margin-bottom:20rpx">
  6. <view class="h-tr h-tr-4">
  7. <view class="h-td h-td-left">日 期</view>
  8. <view class="h-td h-td-left">{{paymentData.createTime}}</view>
  9. <view class="h-td h-td-left">部 门</view>
  10. <view class="h-td h-td-left">{{paymentData.roleName}}部</view>
  11. </view>
  12. <view class="h-tr h-tr-4">
  13. <view class="h-td h-td-left">合同编号</view>
  14. <view class="h-td h-td-left">{{paymentData.contractNo}}</view>
  15. <view class="h-td h-td-left">经 办 人</view>
  16. <view class="h-td h-td-left">{{paymentData.createUser}}</view>
  17. </view>
  18. <view class="h-tr h-tr-4">
  19. <view class="h-td h-td-left">合同总额</view>
  20. <view class="h-td h-td-left">{{paymentData.localCurrency}}</view>
  21. <view class="h-td h-td-left">已付金额</view>
  22. <view class="h-td h-td-left">{{paymentData.yfAmount}}</view>
  23. </view>
  24. <view class="h-tr h-tr-4">
  25. <view class="h-td h-td-left">收款单位</view>
  26. <view class="h-td h-td-left h-td-colspan">{{paymentData.companyName}}</view>
  27. </view>
  28. <view class="h-tr h-tr-4">
  29. <view class="h-td h-td-left">开 户 行</view>
  30. <view class="h-td h-td-left h-td-colspan">{{paymentData.bankName}}</view>
  31. </view>
  32. <view class="h-tr h-tr-4">
  33. <view class="h-td h-td-left">账 号</view>
  34. <view class="h-td h-td-left h-td-colspan">{{paymentData.bankNumber}}</view>
  35. </view>
  36. <view class="h-tr h-tr-4">
  37. <view class="h-td h-td-left">金额(元)</view>
  38. <view class="h-td h-td-left h-td-colspan" v-html="paymentData.payPrice"></view>
  39. </view>
  40. <view class="h-tr h-tr-4">
  41. <view class="h-td h-td-left">金额(大写)</view>
  42. <view class="h-td h-td-left h-td-colspan">{{paymentData.payPriceDX}}</view>
  43. </view>
  44. <view class="h-tr h-tr-4">
  45. <view class="h-td h-td-left">重 量</view>
  46. <view class="h-td h-td-left">{{paymentData.contractWeight}}</view>
  47. <view class="h-td h-td-left">单 价</view>
  48. <view class="h-td h-td-left">{{paymentData.contractPrice}}</view>
  49. </view>
  50. <view class="h-tr h-tr-4">
  51. <view class="h-td h-td-left">货品名称</view>
  52. <view class="h-td h-td-left">{{paymentData.categoryName}}</view>
  53. <view class="h-td h-td-left">付款期限</view>
  54. <view class="h-td h-td-left">{{paymentData.termsPayment}}</view>
  55. </view>
  56. <view class="h-tr h-tr-4">
  57. <view class="h-td h-td-left">备 注</view>
  58. <view class="h-td h-td-left h-td-colspan">{{paymentData.remarks}}</view>
  59. </view>
  60. </view>
  61. <view class="h-table">
  62. <view class="h-tr h-tr-4">
  63. <view class="h-td h-td-center h-td-colspan">审 批</view>
  64. </view>
  65. <view class="h-tr h-tr-4">
  66. <view class="h-td h-td-center" style = "width: 25%;">审查主体</view>
  67. <view class="h-td h-td-center" style = "width: 30%;">合规要求</view>
  68. <view class="h-td h-td-center" style = "width: 20%;">审查情况</view>
  69. <view class="h-td h-td-center" style = "width: 25%;">审查意见</view>
  70. </view>
  71. <view class="h-tr h-tr-4">
  72. <view class="h-td h-td-center" style = "width: 25%;">部门复核</view>
  73. <view class="h-td h-td-left" style = "width: 30%;" @click="openTextMask('1')">
  74. <text style="overflow:hidden; text-overflow:ellipsis; white-space:nowrap;">
  75. {{text1}}
  76. </text>
  77. </view>
  78. <view class="h-td h-td-center" style = "width: 20%;" @click="openRadioMask('1')">
  79. <text>
  80. {{radioText1}}
  81. </text>
  82. </view>
  83. <view class="h-td h-td-left" style = "width: 25%;">
  84. <text>
  85. {{yijian1}}
  86. </text>
  87. </view>
  88. </view>
  89. <view class="h-tr h-tr-4">
  90. <view class="h-td h-td-center" style = "width: 25%;">风控部负责人</view>
  91. <view class="h-td h-td-left" style = "width: 30%;" @click="openTextMask('2')">
  92. <text style="overflow:hidden; text-overflow:ellipsis; white-space:nowrap;" >
  93. {{text2}}
  94. </text>
  95. </view>
  96. <view class="h-td h-td-center" style = "width: 20%;" @click="openRadioMask('2')">
  97. <text>
  98. {{radioText2}}
  99. </text>
  100. </view>
  101. <view class="h-td h-td-left" style = "width: 25%;">
  102. <text>
  103. {{yijian2}}
  104. </text>
  105. </view>
  106. </view>
  107. <view class="h-tr h-tr-4">
  108. <view class="h-td h-td-center" style = "width: 25%;">计财部负责人</view>
  109. <view class="h-td h-td-left" style = "width: 30%;" @click="openTextMask('3')">
  110. <text style="overflow:hidden; text-overflow:ellipsis; white-space:nowrap;" >
  111. {{text3}}
  112. </text>
  113. </view>
  114. <view class="h-td h-td-center" style = "width: 20%;" @click="openRadioMask('3')">
  115. <text>
  116. {{radioText3}}
  117. </text>
  118. </view>
  119. <view class="h-td h-td-left" style = "width: 25%;">
  120. <text>
  121. {{yijian3}}
  122. </text>
  123. </view>
  124. </view>
  125. <view class="h-tr h-tr-4">
  126. <view class="h-td h-td-center" style = "width: 25%;">总经理</view>
  127. <view class="h-td h-td-left" style = "width: 30%;" @click="openTextMask('4')">
  128. <text style="overflow:hidden; text-overflow:ellipsis; white-space:nowrap;">
  129. {{text4}}
  130. </text>
  131. </view>
  132. <view class="h-td h-td-center" style = "width: 20%;" @click="openRadioMask('4')">
  133. <text>
  134. {{radioText4}}
  135. </text>
  136. </view>
  137. <view class="h-td h-td-left" style = "width: 25%;">
  138. <text>
  139. {{yijian4}}
  140. </text>
  141. </view>
  142. </view>
  143. </view>
  144. <u-mask :show="textShow" :duration="400" :custom-style="{backgroundColor: '#2c2a2aeb'}" @click="closeMask()">
  145. <view style = "display: flex;align-items: center;justify-content: center;height: 100%;">
  146. <view style = "width: 600rpx;height: auto;background-color: #fff;border-radius: 10px; padding: 10px; min-height: 170rpx;">
  147. <text>
  148. {{showContent}}
  149. </text>
  150. </view>
  151. </view>
  152. </u-mask>
  153. <u-mask :show="radioShow" :duration="400" :custom-style="{backgroundColor: '#2c2a2aeb'}">
  154. <view style = "display: flex;align-items: center;justify-content: center;height: 100%;">
  155. <view style = "width: 600rpx;height: auto;background-color: #fff;border-radius: 10px; padding: 10px;">
  156. <u-radio-group v-for="(radioGroupItem, radioGroupIndex) in radioListCurrent" :key="radioGroupItem.name" v-model="radioGroupItem.value" style = "width: 100%;" width = "33%">
  157. <u-radio
  158. v-for="(radioItem, index) in radioGroupItem.item"
  159. :name="radioItem.value"
  160. :key="radioItem.key" >
  161. {{radioItem.name}}
  162. </u-radio>
  163. </u-radio-group>
  164. <view style = "display: flex;margin-top: 20rpx;">
  165. <u-button size="medium" type="primary" style="margin: auto;" @click="closeMask()">取消</u-button>
  166. <u-button size="medium" type="success" style="margin: auto;" @click="radioSubmit()">确定</u-button>
  167. </view>
  168. </view>
  169. </view>
  170. </u-mask>
  171. </view>
  172. </template>
  173. <script>
  174. import {convertCurrency} from '@/pages/common/chineseCash.js';
  175. export default {
  176. props:['parentPaymentData', 'processInstanceId'],
  177. data() {
  178. return {
  179. paymentData : {},
  180. textShow : false,
  181. showContent : '',
  182. text1 : '1.审核填写的《付款申请及确认》信息是否完整;\n2.审核收款单位名称、账户信息等是否与对应合同方一致;\n3.审核重量、单价是否填写正确,审核金额计算是否正确,且金额的大小写一致;\n4.审核付款事项与合同规定是否一致;涉及预付款事项的,审核合同是否明确预付款事项,支付比例和已付事项是否与合同规定一致;\n5.审核相应附件是否齐全,例如合同审批单或合同付款统计表、确认函、发货清单或收货凭据等;',
  183. text2 : '1.全面复核申请人的内控合规要求。',
  184. text3 : '1.复核经办部门填写的《付款申请及确认》及附件是否完整、准确,审核经办部门经办人、复核人、部门主任是否签字;\n2.复核计算金额是否正确,且金额的大小写是否一致;\n3.复核收款单位名称是否与合同附件的信息一致;\n4.复核相应附件是否齐全,例如合同审批单或合同付款确认单、确认函、发货清单或收货凭据等;',
  185. text4 : '1.对预算内500万元以内的资金支付进行审批,审核资金支出的合规性以及支付金额的准确性,确认付款申请经过了前置审查。',
  186. yijian1 : '意见:\n签名:\n日期:',
  187. yijian2 : '意见:\n签名:\n日期:',
  188. yijian3 : '意见:\n签名:\n日期:',
  189. yijian4 : '意见:\n签名:\n日期:',
  190. radioListCurrent : [],
  191. radioIndex : '',
  192. radioShow : false,
  193. radioList1 : [
  194. {name : 'u1', value : '1', item : [{name : '是', value : '1', key : 'u11'},{name : '否', value : '2', key : 'u12'},{name : '不适用', value : '3', key : 'u13'}]},
  195. {name : 'u2', value : '1', item : [{name : '是', value : '1', key : 'u21'},{name : '否', value : '2', key : 'u22'},{name : '不适用', value : '3', key : 'u23'}]},
  196. {name : 'u3', value : '1', item : [{name : '是', value : '1', key : 'u31'},{name : '否', value : '2', key : 'u32'},{name : '不适用', value : '3', key : 'u33'}]},
  197. {name : 'u4', value : '1', item : [{name : '是', value : '1', key : 'u41'},{name : '否', value : '2', key : 'u42'},{name : '不适用', value : '3', key : 'u43'}]},
  198. {name : 'u5', value : '1', item : [{name : '是', value : '1', key : 'u51'},{name : '否', value : '2', key : 'u52'},{name : '不适用', value : '3', key : 'u53'}]}
  199. ],
  200. radioText1 : '是\n是\n是\n是\n是',
  201. radioList2 : [
  202. {name : 'fkzg1', value : '1', item : [{name : '是', value : '1', key : 'fkzg11'},{name : '否', value : '2', key : 'fkzg12'},{name : '不适用', value : '3', key : 'fkzg13'}]},
  203. ],
  204. radioText2 : '是',
  205. radioList3 : [
  206. {name : 'cw1', value : '1', item : [{name : '是', value : '1', key : 'cw11'},{name : '否', value : '2', key : 'cw12'},{name : '不适用', value : '3', key : 'cw13'}]},
  207. {name : 'cw2', value : '1', item : [{name : '是', value : '1', key : 'cw21'},{name : '否', value : '2', key : 'cw22'},{name : '不适用', value : '3', key : 'cw23'}]},
  208. {name : 'cw3', value : '1', item : [{name : '是', value : '1', key : 'cw31'},{name : '否', value : '2', key : 'cw32'},{name : '不适用', value : '3', key : 'cw33'}]},
  209. {name : 'cw4', value : '1', item : [{name : '是', value : '1', key : 'cw41'},{name : '否', value : '2', key : 'cw42'},{name : '不适用', value : '3', key : 'cw43'}]}
  210. ],
  211. radioText3 : '是\n是\n是\n是',
  212. radioList4 : [
  213. {name : 'zjl1', value : '1', item : [{name : '是', value : '1', key : 'zjl11'},{name : '否', value : '2', key : 'zjl12'},{name : '不适用', value : '3', key : 'zjl13'}]},
  214. ],
  215. radioText4 : '是'
  216. }
  217. },
  218. beforeMount() {
  219. this.paymentData = JSON.parse(JSON.stringify(this.parentPaymentData));
  220. this.paymentData.originalAmount = convertCurrency(this.paymentData.originalAmount );
  221. this.paymentData.swiftCodeDesc = "";
  222. if (!!this.paymentData.swiftCode) {
  223. this.paymentData.swiftCodeDesc = "Swift code:" + this.paymentData.swiftCode;
  224. }
  225. if (!!this.paymentData.iban) {
  226. this.paymentData.swiftCodeDesc += "<br>IBAN" + this.paymentData.iban;
  227. }
  228. this.paymentData.payPriceDX = convertCurrency(this.paymentData.payPrice);
  229. let self = this;
  230. this.admRequest({
  231. action : 'ContractManageAction/selectContractInfo',
  232. data : {
  233. aciId : self.paymentData.contractId
  234. },
  235. success(res){
  236. let contractData = res.data.data[0];
  237. let localCurrency = contractData.localCurrency;
  238. let contractNo = contractData.contractNo;
  239. // 合同金额 和 合同号
  240. self.paymentData.localCurrency = localCurrency;
  241. self.paymentData.contractNo = contractNo;
  242. self.$forceUpdate();
  243. }
  244. })
  245. // 查询付款对应合同详情的产品信息 和 已付金额
  246. this.admRequest({
  247. action : 'CollectPayManageAction/payContractdetailInfo',
  248. data : {
  249. paymentId : self.paymentData.id,
  250. contractId : self.paymentData.contractId,
  251. payType : self.paymentData.payType
  252. },
  253. success(res){
  254. let payData = res.data;
  255. self.paymentData.categoryName = payData.categoryName;
  256. self.paymentData.contractWeight = payData.contractWeight;
  257. self.paymentData.contractPrice = payData.contractPrice;
  258. if (!!payData.yfAmount) {
  259. self.paymentData.yfAmount = payData.yfAmount;
  260. } else {
  261. self.paymentData.yfAmount = '0.00';
  262. }
  263. self.$forceUpdate();
  264. }
  265. })
  266. // 已填数据
  267. this.admRequest({
  268. action : 'ApprovalManageAction/approvalDetailFlowable',
  269. data : {
  270. id : self.paymentData.id,
  271. processId : self.processInstanceId
  272. },
  273. success(res){
  274. let inputDatas = res.data.data;
  275. for (let i = 0; i < inputDatas.length; i ++) {
  276. let inputData = inputDatas[i];
  277. let radioList = self['radioList' + (i+1)];
  278. let yijian = '意见:' + inputData.yijian + '\n' + '签名:' + inputData.qianming + '\n' + '日期:' + inputData.riqi.substring(0, 4) + "-" + inputData.riqi.substring(4, 6) + "-" + inputData.riqi.substring(6, 8);
  279. self['yijian' + (i+1)] = yijian;
  280. let checkedData = inputData.checkedData;
  281. let radioTextTemp = '';
  282. for(let key in checkedData){
  283. let v = checkedData[key];
  284. for (let r of radioList) {
  285. if (r.name == key) {
  286. r.value = v;
  287. let item = r.item;
  288. let value = r.value;
  289. for (let it of item) {
  290. if (it.value == value) {
  291. radioTextTemp += it.name + '\n';
  292. }
  293. }
  294. self['radioText' + (i+1)] = radioTextTemp;
  295. break;
  296. }
  297. }
  298. }
  299. }
  300. }
  301. })
  302. // 付款方式
  303. this.payTypeInit();
  304. },
  305. methods:{
  306. payTypeInit(){
  307. let self = this;
  308. let payTypeDesc = null;
  309. if (!!uni.getStorageSync('PAYMENT_METHOD_OUT')) {
  310. var payWayList = uni.getStorageSync('PAYMENT_METHOD_OUT');
  311. for (let p of payWayList) {
  312. if (self.paymentData.payType == p.value) {
  313. payTypeDesc = p.showmsg;
  314. self.paymentData.payTypeDesc = payTypeDesc;
  315. self.$forceUpdate();
  316. }
  317. }
  318. } else {
  319. self.admRequest({
  320. action : 'AppParamAction/getAppparList',
  321. data : {
  322. code : 'PAYMENT_METHOD_OUT'
  323. },
  324. success(r){
  325. var payWayList = r.data.data;
  326. if (!!payWayList) {
  327. uni.setStorageSync("PAYMENT_METHOD_OUT", payWayList);
  328. }
  329. for (let p of payWayList) {
  330. if (self.paymentData.payType == p.value) {
  331. payTypeDesc = p.showmsg;
  332. self.paymentData.payTypeDesc = payTypeDesc;
  333. self.$forceUpdate();
  334. }
  335. }
  336. }
  337. })
  338. }
  339. if (payTypeDesc == null) {
  340. if (!!uni.getStorageSync('PAYMENT_METHOD')) {
  341. var payWayList = uni.getStorageSync('PAYMENT_METHOD');
  342. for (let p of payWayList) {
  343. if (self.paymentData.payType == p.value) {
  344. payTypeDesc = p.showmsg;
  345. self.paymentData.payTypeDesc = payTypeDesc;
  346. self.$forceUpdate();
  347. }
  348. }
  349. } else {
  350. self.admRequest({
  351. action : 'AppParamAction/getAppparList',
  352. data : {
  353. code : 'PAYMENT_METHOD'
  354. },
  355. success(r){
  356. var payWayList = r.data.data;
  357. if (!!payWayList) {
  358. uni.setStorageSync("PAYMENT_METHOD", payWayList);
  359. }
  360. for (let p of payWayList) {
  361. if (self.paymentData.payType == p.value) {
  362. payTypeDesc = p.showmsg;
  363. self.paymentData.payTypeDesc = payTypeDesc;
  364. self.$forceUpdate();
  365. }
  366. }
  367. }
  368. })
  369. }
  370. }
  371. },
  372. openTextMask(index){
  373. this.showContent = this['text' + index];
  374. this.textShow = true;
  375. },
  376. closeMask(){
  377. this.textShow = false;
  378. this.radioShow = false;
  379. },
  380. openRadioMask(index){
  381. this.radioIndex = index;
  382. this.radioListCurrent = JSON.parse(JSON.stringify(this['radioList'+index]));
  383. this.radioShow = true;
  384. },
  385. radioSubmit(){
  386. let radioTextTemp = '';
  387. for (let r of this.radioListCurrent) {
  388. let item = r.item;
  389. let value = r.value;
  390. for (let it of item) {
  391. if (it.value == value) {
  392. radioTextTemp += it.name + '\n';
  393. }
  394. }
  395. }
  396. this['radioList' + this.radioIndex] = JSON.parse(JSON.stringify(this.radioListCurrent));
  397. this['radioText' + this.radioIndex] = radioTextTemp;
  398. this.radioShow = false;
  399. },
  400. getCallBackData(){
  401. let inputData = new Array();
  402. for (let i = 1; i <= 4; i ++) {
  403. let radioList = this['radioList' + i];
  404. let trData = {};
  405. for (let r of radioList) {
  406. trData[r.name] = r.value;
  407. }
  408. inputData.push(trData);
  409. }
  410. let data = {};
  411. data.param = {inputData : inputData};
  412. data.callBackUrl = "FlowableApiAction/payBackDeal";
  413. return data;
  414. }
  415. }
  416. }
  417. </script>
  418. <style lang="scss">
  419. /* 引入表格样式表 */
  420. @import "@/static/css/helang-table.scss";
  421. </style>