chnangguirukudan.vue 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387
  1. <template>
  2. <!-- //流程常规验收入库单 -->
  3. <div class="bg">
  4. <el-dialog
  5. width="26cm"
  6. height="12cm"
  7. :modal="!alertVisible"
  8. :visible.sync="alertVisible "
  9. >
  10. <!-- 表单是否显示 -->
  11. <div style="height: 500px; width: 95%; margin: 0 auto">
  12. <div ref="qrcode" id="box">
  13. <vue-easy-print tableShow ref="easyPrint" :onePageRow="onePageRow">
  14. <div
  15. v-for="(item1, index1) in list"
  16. :key="index1"
  17. style="margin-bottom: 30px;width: 88%;margin: 0px 0px 0px 0px;"
  18. >
  19. <div style="page-break-after: always">
  20. <div style="margin: 0px 0px 0px 27px;">
  21. <table :border="1">
  22. <thead >
  23. <tr class="title">
  24. <th colspan="15" style="line-height: 12px !important;">
  25. <h1 style="display:block;margin:0px;line-height: 16px;font-size:16px;padding: 0px 0px 5px;">采购入库单</h1>
  26. </th>
  27. </tr>
  28. <tr class="title-sub" style="line-height: 12px;">
  29. <th colspan="15" style="padding-top: 2px;padding-bottom: 4px;">
  30. <span style="float: left;">供应商: {{item1.gong_ying_shang_| gongyingshang(gongyingshangList)}}</span>
  31. <span style="margin-left: 6px;float: left;">申购部门: {{item1.shen_gou_bu_men_|bumenfilters(bumenList)}}</span>
  32. <span style="margin-left: 6px;float: right;">日期:{{item1.dao_huo_ri_qi_}}</span>
  33. <span style="margin-left: 6px;float: right;">采购单号:{{item1.cai_gou_ding_dan_}} </span>
  34. </th>
  35. </tr>
  36. <tr >
  37. <th style="width: 40px; line-height: 22px">序号</th>
  38. <th >物料编码</th>
  39. <th >物料名称</th>
  40. <th >货号</th>
  41. <th >批号</th>
  42. <th >规格/特征</th>
  43. <th >生产商/品牌</th>
  44. <th >数量</th>
  45. <th >单位</th>
  46. <th >单价(含税)</th>
  47. <th >税率</th>
  48. <th >单价</th>
  49. <th >税额</th>
  50. <th >金额</th>
  51. <th >含税合计</th>
  52. </tr>
  53. </thead>
  54. <tbody>
  55. <tr v-for="(item, index) in item1" :key="index">
  56. <td style="width: 20px">{{ index + 1 }}</td>
  57. <td style="width: 70px">{{ item.wu_liao_bian_ma_ }}</td>
  58. <td style="width: 80px">{{ item.wu_liao_ming_chen }}</td>
  59. <td style="width: 60px">{{ item.huo_hao_ }}</td>
  60. <td style="width: 60px">{{ item.pi_hao_ }}</td>
  61. <td style="width: 80px">{{ item.gui_ge_xing_hao_ }}</td>
  62. <td style="width: 100px"> {{ item.gong_ying_shang_| gongyingshang(gongyingshangList) }} </td>
  63. <td style="width: 45px">{{ item.shu_liang_ }}</td>
  64. <td style="width: 45px">{{ item.dan_wei_ }}</td>
  65. <td style="width: 60px;padding: 1px;">{{ item.dan_jia_han_shui_ |numToFixed}}</td>
  66. <td style="width: 45px">{{ item.shui_lv_ }}</td>
  67. <td style="width: 45px;padding: 1px;">{{ item.dan_jia_|numToFixed}}</td>
  68. <td style="width: 45px;padding: 1px;"> {{ item.dan_jia_han_shui_|shuieToFixed(item.shu_liang_,item.dan_jia_) }}</td>
  69. <td style="width: 45px;padding: 1px;">{{ item.dan_jia_|jineToFixed(item.shu_liang_)}}</td>
  70. <td style="width: 60px">{{ item.dan_jia_han_shui_|jineToFixed(item.shu_liang_) }}</td>
  71. </tr>
  72. <tr class="count">
  73. <!-- <td style="width: 20px"></td>
  74. <td style="width: 70px"></td>
  75. <td style="width: 80px"></td>
  76. <td style="width: 60px"></td>
  77. <td style="width: 60px"></td>
  78. <td style="width: 80px"></td>
  79. <td style="width: 100px"></td>
  80. <td style="width: 45px"></td>
  81. <td style="width: 45px"></td>
  82. <td style="width: 60px"></td>
  83. <td style="width: 45px"></td>
  84. <td style="width: 45px">合计</td>
  85. <td style="width: 45px">{{ item1|addshuieToFixed}}</td>
  86. <td style="width: 45px">{{ item1|addshuieToFixed}}</td>
  87. <td style="width: 60px">{{ item1|addhshjToFixed }}</td> -->
  88. <td colspan="15">
  89. 合计&nbsp;&nbsp;&nbsp;&nbsp;
  90. 税额:&nbsp;{{ item1|addshuieToFixed}}&nbsp;&nbsp;
  91. 金额:&nbsp;{{ item1|addshuieToFixed}}&nbsp;&nbsp;
  92. 含税合计:&nbsp;{{ item1|addhshjToFixed }}
  93. </td>
  94. </tr>
  95. </tbody>
  96. <tfoot class="bottom">
  97. <tr>
  98. <td colspan="5" style="text-align:left">
  99. <div style="float: left;margin-top:5px">仓管员:{{ item1.name2 }}</div>
  100. </td>
  101. <td colspan="10" style="text-align:right">
  102. <div style="margin-top:5px;">审核人:{{ item1.name3 }} </div>
  103. </td>
  104. </tr>
  105. </tfoot>
  106. </table>
  107. </div>
  108. </div>
  109. </div>
  110. </vue-easy-print>
  111. </div>
  112. </div>
  113. <span slot="footer" class="dialog-footer">
  114. <el-button type="primary" @click="printDemo">打印</el-button>
  115. </span>
  116. </el-dialog>
  117. </div>
  118. </template>
  119. <script>
  120. import VueBarcode from "vue-barcode";
  121. import vueEasyPrint from "vue-easy-print";
  122. import repostCurd from "@/business/platform/form/utils/custom/joinCURD.js";
  123. export default {
  124. components: {
  125. VueBarcode,
  126. vueEasyPrint,
  127. },
  128. props: {
  129. obj: {
  130. default: [],
  131. type: Array,
  132. },
  133. onePageRow: {
  134. type: Number,
  135. default: 3,
  136. },
  137. blankLines: {
  138. type: Boolean,
  139. default: true,
  140. },
  141. alertVisible : {
  142. type: Boolean,
  143. default: false,
  144. },
  145. currentScan: {
  146. type: Boolean,
  147. default: false,
  148. },
  149. },
  150. data() {
  151. return {
  152. // onePageRow: 1,
  153. value: "",
  154. id: "",
  155. list: [],
  156. visible: true,
  157. gongyingshangList: [],
  158. bumenList: [],
  159. };
  160. },
  161. created() {
  162. this.getInit();
  163. let sql = `select * FROM t_gysml`;
  164. repostCurd("sql", sql).then((res) => {
  165. this.gongyingshangList = res.variables.data;
  166. });
  167. let sql1 = `select ID_,NAME_ FROM ibps_party_org `;
  168. repostCurd("sql", sql1).then((res) => {
  169. return (this.bumenList = res.variables.data);
  170. });
  171. },
  172. filters: {
  173. gongyingshang: function (value, list) {
  174. for (let i = 0; i < list.length; i++) {
  175. if (value == list[i].id_) {
  176. return list[i].gong_ying_shang_m;
  177. } else if (i == list.length - 1) {
  178. return value;
  179. }
  180. }
  181. },
  182. numToFixed: function (value) {
  183. return (value*1).toFixed(2)
  184. },
  185. jineToFixed:function(a,b){
  186. let value = (a * 1) * (b * 1);
  187. return value.toFixed(2)
  188. },
  189. shuieToFixed:function(a,b,c){
  190. let jine = b*1*(c*1);
  191. let hshj = b*1*(a*1);
  192. let value = hshj - jine;
  193. return value.toFixed(2);
  194. },
  195. addshuieToFixed:function(arr){
  196. let adds =0;
  197. arr.forEach(item=>{
  198. adds =adds+(((item.shu_liang_*1) * (item.dan_jia_han_shui_*1)) - ((item.shu_liang_*1) * (item.dan_jia_*1)) );
  199. })
  200. return adds.toFixed(2);
  201. },
  202. addjineToFixed(arr){
  203. let adds =0;
  204. arr.forEach(item=>{
  205. adds =adds+((item.shu_liang_*1) * (item.dan_jia_*1));
  206. })
  207. return adds.toFixed(2);
  208. },
  209. addhshjToFixed(arr){
  210. let adds =0;
  211. arr.forEach(item=>{
  212. adds =adds+((item.shu_liang_*1) * (item.dan_jia_han_shui_*1));
  213. })
  214. return adds.toFixed(2);
  215. },
  216. bumenfilters: function (value, list) {
  217. //
  218. for (let i = 0; i < list.length; i++) {
  219. if (value == list[i].ID_) {
  220. return list[i].NAME_;
  221. } else if (i == list.length - 1) {
  222. return value;
  223. }
  224. }
  225. },
  226. },
  227. watch: {
  228. obj() {
  229. this.getInit();
  230. },
  231. },
  232. methods: {
  233. printDemo() {
  234. this.$refs.easyPrint.print();
  235. // this.$refs.easyPrint.window.print()
  236. },
  237. toDecimal2(x) {
  238. var f = parseFloat(x);
  239. if (isNaN(f)) {
  240. return false;
  241. }
  242. var f = Math.round(x * 100) / 100;
  243. var s = f.toString();
  244. var rs = s.indexOf(".");
  245. if (rs < 0) {
  246. rs = s.length;
  247. s += ".";
  248. }
  249. while (s.length <= rs + 2) {
  250. s += "0";
  251. }
  252. return s;
  253. },
  254. addNumber(num1, num2) {
  255. let a = parseFloat(num1);
  256. let b = parseFloat(num2);
  257. return a.toFixed("2") * 1 + b.toFixed("2") * 1;
  258. },
  259. getInit() {
  260. console.log(this.obj)
  261. var idStr = "";
  262. this.obj.forEach((item) => {idStr += item + ",";});
  263. idStr = idStr.substring(0, idStr.length - 1);
  264. this.getLook(idStr);
  265. },
  266. getLook(id) {
  267. this.list = [];
  268. let this_ = this;
  269. let sql = `select * FROM t_yszb WHERE FIND_IN_SET(id_,'${id}')`;
  270. let zhubiao = [];
  271. let name1, name2, name3;
  272. let time1, time2, time3;
  273. let addhanshuiheji = 0;
  274. let addjine = 0;
  275. let addshuie = 0;
  276. repostCurd("sql", sql).then((res) => {
  277. zhubiao = res.variables.data;
  278. zhubiao.forEach((item) => {
  279. let sql1 = `select * FROM t_cgysjlb WHERE FIND_IN_SET(wai_jian_,'${item.id_}') and shu_liang_ != '0'`;
  280. repostCurd("sql", sql1).then((res) => {
  281. let data = res.variables.data;
  282. let s2 = `select a.NAME_,DATE_FORMAT(b.CREATE_TIME_,'%Y-%m-%d') AS CREATE_TIME_ FROM ibps_party_employee as a join ibps_bpm_oper_log as b on a.ID_ = b.CREATE_BY_ where b.PROC_INST_ID_ = ( SELECT PROC_INST_ID_ FROM ibps_bpm_bus_rel WHERE BUSINESSKEY_ = '${item.id_}' LIMIT 1) AND b.NODE_ID_ = 'Activity_04lhxla' ORDER BY b.CREATE_TIME_ DESC LIMIT 1`;
  283. repostCurd("sql", s2).then((res) => {
  284. name2 = res.variables.data[0].NAME_;
  285. time2 = res.variables.data[0].CREATE_TIME_;
  286. data["name2"] = name2;
  287. data["time2"] = time2;
  288. let s3 = `select a.NAME_,DATE_FORMAT(b.CREATE_TIME_,'%Y-%m-%d') AS CREATE_TIME_ FROM ibps_party_employee as a join ibps_bpm_oper_log as b on a.ID_ = b.CREATE_BY_ where b.PROC_INST_ID_ = ( SELECT PROC_INST_ID_ FROM ibps_bpm_bus_rel WHERE BUSINESSKEY_ = '${item.id_}' LIMIT 1) AND b.NODE_ID_ = 'Activity_1dk76gy' ORDER BY b.CREATE_TIME_ DESC LIMIT 1`;
  289. repostCurd("sql", s3).then((res) => {
  290. name3 = res.variables.data[0].NAME_;
  291. time3 = res.variables.data[0].CREATE_TIME_;
  292. data["name3"] = name3;
  293. data["time3"] = time3;
  294. data["gong_ying_shang_"] = item.gong_ying_shang_;
  295. data["shen_gou_bu_men_"] = item.shen_gou_bu_men_;
  296. data["cai_gou_ding_dan_"] = item.cai_gou_ding_dan_;
  297. data["dao_huo_ri_qi_"] = item.dao_huo_ri_qi_;
  298. data.forEach((it) => {
  299. data["addhanshuiheji"] = this.addNumber(
  300. addhanshuiheji,
  301. it.han_shui_he_ji_
  302. );
  303. data["addjine"] = this.addNumber(addjine, it.jin_e_);
  304. data["addshuie"] = this.addNumber(addshuie, it.shui_e_);
  305. addhanshuiheji = data["addhanshuiheji"];
  306. addjine = data["addjine"];
  307. addshuie = data["addshuie"];
  308. });
  309. data["addhanshuiheji"] = this_.toDecimal2(
  310. data["addhanshuiheji"]
  311. );
  312. data["addjine"] = this_.toDecimal2(data["addjine"]);
  313. data["addshuie"] = this_.toDecimal2(data["addshuie"]);
  314. this_.list.push(data);
  315. addhanshuiheji = 0;
  316. addjine = 0;
  317. addshuie = 0;
  318. console.log(this_.list);
  319. });
  320. });
  321. });
  322. });
  323. });
  324. },
  325. },
  326. };
  327. </script>
  328. <style lang="scss" scoped>
  329. * {
  330. margin: 0;
  331. padding: 0;
  332. }
  333. table {
  334. border-collapse: collapse;
  335. font-family: "微软雅黑";
  336. background: #fff;
  337. font-size: 13px;
  338. }
  339. .title{
  340. border: 1px solid #fff;
  341. }
  342. .title-sub{
  343. border-left: 1px solid #fff;
  344. border-right: 1px solid #fff;
  345. }
  346. span{
  347. font-weight: 500;
  348. }
  349. td {
  350. text-align: center;
  351. padding: 2px;
  352. }
  353. thead > tr > th {
  354. text-align: center;
  355. font-weight: 500;
  356. }
  357. .el-dialog__body {
  358. word-break: none;
  359. }
  360. .count td {
  361. text-align: right;
  362. padding: 4px 0px;
  363. padding-right: 15px;
  364. }
  365. .bottom {
  366. margin-top: 15px;
  367. }
  368. .bottom {
  369. margin-top: 15px;
  370. border-bottom: 1px solid #fff;
  371. border-left: 1px solid #fff;
  372. border-right: 1px solid #fff;
  373. }
  374. </style>