gnPayFlowableDetail.vue 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479
  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 class="h-tr h-tr-4">
  144. <view class="h-td h-td-center" style = "width: 25%;">总经理</view>
  145. <view class="h-td h-td-left" style = "width: 30%;" @click="openTextMask('5')">
  146. <text style="overflow:hidden; text-overflow:ellipsis; white-space:nowrap;">
  147. {{text5}}
  148. </text>
  149. </view>
  150. <view class="h-td h-td-center" style = "width: 20%;" @click="openRadioMask('5')">
  151. <text>
  152. {{radioText5}}
  153. </text>
  154. </view>
  155. <view class="h-td h-td-left" style = "width: 25%;">
  156. <text>
  157. {{yijian5}}
  158. </text>
  159. </view>
  160. </view>
  161. <view class="h-tr h-tr-4">
  162. <view class="h-td h-td-center" style = "width: 25%;">董事长</view>
  163. <view class="h-td h-td-left" style = "width: 30%;" @click="openTextMask('6')">
  164. <text style="overflow:hidden; text-overflow:ellipsis; white-space:nowrap;">
  165. {{text6}}
  166. </text>
  167. </view>
  168. <view class="h-td h-td-center" style = "width: 20%;" @click="openRadioMask('6')">
  169. <text>
  170. {{radioText6}}
  171. </text>
  172. </view>
  173. <view class="h-td h-td-left" style = "width: 25%;">
  174. <text>
  175. {{yijian6}}
  176. </text>
  177. </view>
  178. </view>
  179. </view>
  180. <u-mask :show="textShow" :duration="400" :custom-style="{backgroundColor: '#2c2a2aeb'}" @click="closeMask()">
  181. <view style = "display: flex;align-items: center;justify-content: center;height: 100%;">
  182. <view style = "width: 600rpx;height: auto;background-color: #fff;border-radius: 10px; padding: 10px; min-height: 170rpx;">
  183. <text>
  184. {{showContent}}
  185. </text>
  186. </view>
  187. </view>
  188. </u-mask>
  189. <u-mask :show="radioShow" :duration="400" :custom-style="{backgroundColor: '#2c2a2aeb'}">
  190. <view style = "display: flex;align-items: center;justify-content: center;height: 100%;">
  191. <view style = "width: 600rpx;height: auto;background-color: #fff;border-radius: 10px; padding: 10px;">
  192. <u-radio-group v-for="(radioGroupItem, radioGroupIndex) in radioListCurrent" :key="radioGroupItem.name" v-model="radioGroupItem.value" style = "width: 100%;" width = "33%">
  193. <u-radio
  194. v-for="(radioItem, index) in radioGroupItem.item"
  195. :name="radioItem.value"
  196. :key="radioItem.key" >
  197. {{radioItem.name}}
  198. </u-radio>
  199. </u-radio-group>
  200. <view style = "display: flex;margin-top: 20rpx;">
  201. <u-button size="medium" type="primary" style="margin: auto;" @click="closeMask()">取消</u-button>
  202. <u-button size="medium" type="success" style="margin: auto;" @click="radioSubmit()">确定</u-button>
  203. </view>
  204. </view>
  205. </view>
  206. </u-mask>
  207. </view>
  208. </template>
  209. <script>
  210. import {convertCurrency} from '@/pages/common/chineseCash.js';
  211. export default {
  212. props:['parentPaymentData', 'processInstanceId'],
  213. data() {
  214. return {
  215. paymentData : {},
  216. textShow : false,
  217. showContent : '',
  218. text1 : '1.审核填写的《付款申请及确认》信息是否完整;\n2.审核收款单位名称、账户信息等是否与对应合同方一致;\n3.审核重量、单价是否填写正确,审核金额计算是否正确,且金额的大小写一致;\n4.审核付款事项与合同规定是否一致;涉及预付款事项的,审核合同是否明确预付款事项,支付比例和已付事项是否与合同规定一致;\n5.审核相应附件是否齐全,例如合同审批单或合同付款统计表、确认函、发货清单或收货凭据等;',
  219. text2 : '1.全面复核申请人的内控合规要求。',
  220. text3 : '1.全面复核申请人的内控合规要求。',
  221. text4 : '1.复核经办部门填写的《付款申请及确认》及附件是否完整、准确,审核经办部门经办人、复核人、部门主任是否签字;\n2.复核计算金额是否正确,且金额的大小写是否一致;\n3.复核收款单位名称是否与合同附件的信息一致;\n4.复核相应附件是否齐全,例如合同审批单或合同付款确认单、确认函、发货清单或收货凭据等;',
  222. text5 : '1.对预算内500万元以内的资金支付进行审批,审核资金支出的合规性以及支付金额的准确性,确认付款申请经过了前置审查。',
  223. text6 : '1.对预算内500万元以内的资金支付进行审批,审核资金支出的合规性以及支付金额的准确性,确认付款申请经过了前置审查。',
  224. yijian1 : '意见:\n签名:\n日期:',
  225. yijian2 : '意见:\n签名:\n日期:',
  226. yijian3 : '意见:\n签名:\n日期:',
  227. yijian4 : '意见:\n签名:\n日期:',
  228. yijian5 : '意见:\n签名:\n日期:',
  229. yijian6 : '意见:\n签名:\n日期:',
  230. radioListCurrent : [],
  231. radioIndex : '',
  232. radioShow : false,
  233. radioList1 : [
  234. {name : 'u1', value : '1', item : [{name : '是', value : '1', key : 'u11'},{name : '否', value : '2', key : 'u12'},{name : '不适用', value : '3', key : 'u13'}]},
  235. {name : 'u2', value : '1', item : [{name : '是', value : '1', key : 'u21'},{name : '否', value : '2', key : 'u22'},{name : '不适用', value : '3', key : 'u23'}]},
  236. {name : 'u3', value : '1', item : [{name : '是', value : '1', key : 'u31'},{name : '否', value : '2', key : 'u32'},{name : '不适用', value : '3', key : 'u33'}]},
  237. {name : 'u4', value : '1', item : [{name : '是', value : '1', key : 'u41'},{name : '否', value : '2', key : 'u42'},{name : '不适用', value : '3', key : 'u43'}]},
  238. {name : 'u5', value : '1', item : [{name : '是', value : '1', key : 'u51'},{name : '否', value : '2', key : 'u52'},{name : '不适用', value : '3', key : 'u53'}]}
  239. ],
  240. radioText1 : '是\n是\n是\n是\n是',
  241. radioList2 : [
  242. {name : 'ywzg1', value : '1', item : [{name : '是', value : '1', key : 'ywzg11'},{name : '否', value : '2', key : 'ywzg12'},{name : '不适用', value : '3', key : 'ywzg13'}]},
  243. ],
  244. radioText2 : '是',
  245. radioList3 : [
  246. {name : 'fkzg1', value : '1', item : [{name : '是', value : '1', key : 'fkzg11'},{name : '否', value : '2', key : 'fkzg12'},{name : '不适用', value : '3', key : 'fkzg13'}]},
  247. ],
  248. radioText3 : '是',
  249. radioList4 : [
  250. {name : 'cw1', value : '1', item : [{name : '是', value : '1', key : 'cw11'},{name : '否', value : '2', key : 'cw12'},{name : '不适用', value : '3', key : 'cw13'}]},
  251. {name : 'cw2', value : '1', item : [{name : '是', value : '1', key : 'cw21'},{name : '否', value : '2', key : 'cw22'},{name : '不适用', value : '3', key : 'cw23'}]},
  252. {name : 'cw3', value : '1', item : [{name : '是', value : '1', key : 'cw31'},{name : '否', value : '2', key : 'cw32'},{name : '不适用', value : '3', key : 'cw33'}]},
  253. {name : 'cw4', value : '1', item : [{name : '是', value : '1', key : 'cw41'},{name : '否', value : '2', key : 'cw42'},{name : '不适用', value : '3', key : 'cw43'}]}
  254. ],
  255. radioText4 : '是\n是\n是\n是',
  256. radioList5 : [
  257. {name : 'zjl1', value : '1', item : [{name : '是', value : '1', key : 'zjl11'},{name : '否', value : '2', key : 'zjl12'},{name : '不适用', value : '3', key : 'zjl13'}]},
  258. ],
  259. radioText5 : '是',
  260. radioList6 : [
  261. {name : 'dsz1', value : '1', item : [{name : '是', value : '1', key : 'dsz11'},{name : '否', value : '2', key : 'dsz12'},{name : '不适用', value : '3', key : 'dsz13'}]},
  262. ],
  263. radioText6 : '是',
  264. }
  265. },
  266. beforeMount() {
  267. this.paymentData = JSON.parse(JSON.stringify(this.parentPaymentData));
  268. this.paymentData.originalAmount = convertCurrency(this.paymentData.originalAmount );
  269. this.paymentData.swiftCodeDesc = "";
  270. if (!!this.paymentData.swiftCode) {
  271. this.paymentData.swiftCodeDesc = "Swift code:" + this.paymentData.swiftCode;
  272. }
  273. if (!!this.paymentData.iban) {
  274. this.paymentData.swiftCodeDesc += "<br>IBAN" + this.paymentData.iban;
  275. }
  276. this.paymentData.payPriceDX = convertCurrency(this.paymentData.payPrice);
  277. let self = this;
  278. this.admRequest({
  279. action : 'ContractManageAction/selectContractInfo',
  280. data : {
  281. aciId : self.paymentData.contractId
  282. },
  283. success(res){
  284. let contractData = res.data.data[0];
  285. let localCurrency = contractData.localCurrency;
  286. let contractNo = contractData.contractNo;
  287. // 合同金额 和 合同号
  288. self.paymentData.localCurrency = localCurrency;
  289. self.paymentData.contractNo = contractNo;
  290. self.$forceUpdate();
  291. }
  292. })
  293. // 查询付款对应合同详情的产品信息 和 已付金额
  294. this.admRequest({
  295. action : 'CollectPayManageAction/payContractdetailInfo',
  296. data : {
  297. paymentId : self.paymentData.id,
  298. contractId : self.paymentData.contractId,
  299. payType : self.paymentData.payType
  300. },
  301. success(res){
  302. let payData = res.data;
  303. self.paymentData.categoryName = payData.categoryName;
  304. self.paymentData.contractWeight = payData.contractWeight;
  305. self.paymentData.contractPrice = payData.contractPrice;
  306. if (!!payData.yfAmount) {
  307. self.paymentData.yfAmount = payData.yfAmount;
  308. } else {
  309. self.paymentData.yfAmount = '0.00';
  310. }
  311. self.$forceUpdate();
  312. }
  313. })
  314. // 已填数据
  315. this.admRequest({
  316. action : 'ApprovalManageAction/approvalDetailFlowable',
  317. data : {
  318. id : self.paymentData.id,
  319. processId : self.processInstanceId
  320. },
  321. success(res){
  322. let inputDatas = res.data.data;
  323. for (let i = 0; i < inputDatas.length; i ++) {
  324. let inputData = inputDatas[i];
  325. let radioList = self['radioList' + (i+1)];
  326. let yijian = '意见:' + inputData.yijian + '\n' + '签名:' + inputData.qianming + '\n' + '日期:' + inputData.riqi.substring(0, 4) + "-" + inputData.riqi.substring(4, 6) + "-" + inputData.riqi.substring(6, 8);
  327. self['yijian' + (i+1)] = yijian;
  328. let checkedData = inputData.checkedData;
  329. let radioTextTemp = '';
  330. for(let key in checkedData){
  331. let v = checkedData[key];
  332. for (let r of radioList) {
  333. if (r.name == key) {
  334. r.value = v;
  335. let item = r.item;
  336. let value = r.value;
  337. for (let it of item) {
  338. if (it.value == value) {
  339. radioTextTemp += it.name + '\n';
  340. }
  341. }
  342. self['radioText' + (i+1)] = radioTextTemp;
  343. break;
  344. }
  345. }
  346. }
  347. }
  348. }
  349. })
  350. // 付款方式
  351. this.payTypeInit();
  352. },
  353. methods:{
  354. payTypeInit(){
  355. let self = this;
  356. let payTypeDesc = null;
  357. if (!!uni.getStorageSync('PAYMENT_METHOD_OUT')) {
  358. var payWayList = uni.getStorageSync('PAYMENT_METHOD_OUT');
  359. for (let p of payWayList) {
  360. if (self.paymentData.payType == p.value) {
  361. payTypeDesc = p.showmsg;
  362. self.paymentData.payTypeDesc = payTypeDesc;
  363. self.$forceUpdate();
  364. }
  365. }
  366. } else {
  367. self.admRequest({
  368. action : 'AppParamAction/getAppparList',
  369. data : {
  370. code : 'PAYMENT_METHOD_OUT'
  371. },
  372. success(r){
  373. var payWayList = r.data.data;
  374. if (!!payWayList) {
  375. uni.setStorageSync("PAYMENT_METHOD_OUT", payWayList);
  376. }
  377. for (let p of payWayList) {
  378. if (self.paymentData.payType == p.value) {
  379. payTypeDesc = p.showmsg;
  380. self.paymentData.payTypeDesc = payTypeDesc;
  381. self.$forceUpdate();
  382. }
  383. }
  384. }
  385. })
  386. }
  387. if (payTypeDesc == null) {
  388. if (!!uni.getStorageSync('PAYMENT_METHOD')) {
  389. var payWayList = uni.getStorageSync('PAYMENT_METHOD');
  390. for (let p of payWayList) {
  391. if (self.paymentData.payType == p.value) {
  392. payTypeDesc = p.showmsg;
  393. self.paymentData.payTypeDesc = payTypeDesc;
  394. self.$forceUpdate();
  395. }
  396. }
  397. } else {
  398. self.admRequest({
  399. action : 'AppParamAction/getAppparList',
  400. data : {
  401. code : 'PAYMENT_METHOD'
  402. },
  403. success(r){
  404. var payWayList = r.data.data;
  405. if (!!payWayList) {
  406. uni.setStorageSync("PAYMENT_METHOD", payWayList);
  407. }
  408. for (let p of payWayList) {
  409. if (self.paymentData.payType == p.value) {
  410. payTypeDesc = p.showmsg;
  411. self.paymentData.payTypeDesc = payTypeDesc;
  412. self.$forceUpdate();
  413. }
  414. }
  415. }
  416. })
  417. }
  418. }
  419. },
  420. openTextMask(index){
  421. this.showContent = this['text' + index];
  422. this.textShow = true;
  423. },
  424. closeMask(){
  425. this.textShow = false;
  426. this.radioShow = false;
  427. },
  428. openRadioMask(index){
  429. this.radioIndex = index;
  430. this.radioListCurrent = JSON.parse(JSON.stringify(this['radioList'+index]));
  431. this.radioShow = true;
  432. },
  433. radioSubmit(){
  434. let radioTextTemp = '';
  435. for (let r of this.radioListCurrent) {
  436. let item = r.item;
  437. let value = r.value;
  438. for (let it of item) {
  439. if (it.value == value) {
  440. radioTextTemp += it.name + '\n';
  441. }
  442. }
  443. }
  444. this['radioList' + this.radioIndex] = JSON.parse(JSON.stringify(this.radioListCurrent));
  445. this['radioText' + this.radioIndex] = radioTextTemp;
  446. this.radioShow = false;
  447. },
  448. getCallBackData(){
  449. let inputData = new Array();
  450. for (let i = 1; i <= 6; i ++) {
  451. let radioList = this['radioList' + i];
  452. let trData = {};
  453. for (let r of radioList) {
  454. trData[r.name] = r.value;
  455. }
  456. inputData.push(trData);
  457. }
  458. let data = {};
  459. data.param = {inputData : inputData};
  460. data.callBackUrl = "FlowableApiAction/payBackDeal";
  461. return data;
  462. }
  463. }
  464. }
  465. </script>
  466. <style lang="scss">
  467. /* 引入表格样式表 */
  468. @import "@/static/css/helang-table.scss";
  469. </style>