index.vue 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. <template>
  2. <div style="display: inline-block">
  3. <el-dropdown
  4. size="mini"
  5. :disabled="disabled"
  6. split-button
  7. placement="top-start"
  8. @command="onCommand"
  9. @click="visible = true"
  10. >
  11. <span v-print="print">
  12. <i class="el-icon-printer mr-1"></i>
  13. 打 印
  14. </span>
  15. <el-dropdown-menu slot="dropdown">
  16. <el-dropdown-item v-print="print" command="湖南德荣医疗器械有限公司">
  17. 湖南德荣医疗器械有限公司
  18. </el-dropdown-item>
  19. <el-dropdown-item
  20. v-print="print"
  21. divided
  22. command="湖南德荣医疗健康产业有限公司"
  23. >
  24. 湖南德荣医疗健康产业有限公司
  25. </el-dropdown-item>
  26. <el-dropdown-item
  27. v-print="print"
  28. divided
  29. command="湖南德荣医疗器械物流配送服务有限公司"
  30. >
  31. 湖南德荣医疗器械物流配送服务有限公司
  32. </el-dropdown-item>
  33. </el-dropdown-menu>
  34. </el-dropdown>
  35. <div
  36. id="PurchaseOrderPdf"
  37. style="
  38. position: relative;
  39. width: 210mm;
  40. font-size: 12px;
  41. line-height: 1.0;
  42. font-family: '宋体';
  43. z-index: -1;
  44. "
  45. >
  46. <img
  47. :src="src"
  48. :alt="company"
  49. style="position: absolute; top: 10px; left: 10px; z-index: 1"
  50. />
  51. <div style="position: absolute; top: 0; left: 0; z-index: 2">
  52. <h1>湖南德荣医疗集团 - 采购订单</h1>
  53. <p style="display: flex">
  54. <span style="width: 60%">甲方(购货方):{{ params.puOrgName }}</span>
  55. <span style="width: 40%">签订日期:{{ params.billDate }}</span>
  56. </p>
  57. <p style="display: flex">
  58. <span style="width: 60%">订单编号:{{ params.code }}</span>
  59. <span style="width: 40%">采购部门:{{ params.puDeptName }}</span>
  60. </p>
  61. <p style="display: flex">
  62. <span style="width: 60%">采购员:{{ params.buyerName }}</span>
  63. <span style="width: 40%"> 采购项目: </span>
  64. </p>
  65. <p style="display: flex">
  66. <span style="width: 60%">E-mail:</span>
  67. <span style="width: 40%">联系方式:{{ params.contactsPhone }}</span>
  68. </p>
  69. <P style="color: #ff4949"> 甲方收票地址:{{ params.address }} </P>
  70. <div style="border-bottom: 1px dashed black"></div>
  71. <p>乙方(供货方):{{ params.supplierName }}</p>
  72. <p>ATTN:</p>
  73. <p>E-MAIL:</p>
  74. <p>收货地址:</p>
  75. <p>收货联系人:</p>
  76. <el-table
  77. show-summary
  78. :summary-method="getSummaries"
  79. :data="params.orderItemPrintList"
  80. style="width: 100%; font-size: 12px"
  81. >
  82. <el-table-column prop="materialCode" label="物料编码" width="auto">
  83. </el-table-column>
  84. <el-table-column prop="materialName" label="物料名称" width="auto">
  85. </el-table-column>
  86. <el-table-column prop="specification" label="规格" width="auto">
  87. </el-table-column>
  88. <el-table-column
  89. prop="manufacturerName"
  90. label="生产厂家"
  91. width="auto"
  92. >
  93. </el-table-column>
  94. <el-table-column prop="unitName" label="单位" width="auto">
  95. </el-table-column>
  96. <el-table-column prop="qty" label="数量" width="auto">
  97. </el-table-column>
  98. <el-table-column prop="taxPrice" label="含税单价" width="auto">
  99. </el-table-column>
  100. <el-table-column prop="money" label="价税合计" width="auto">
  101. </el-table-column>
  102. <el-table-column prop="registration" label="注册证号" width="auto">
  103. </el-table-column>
  104. </el-table>
  105. <p>
  106. 二、质量要求与技术标准:符合供方企业标准、所在行业标准、国家标准。
  107. </p>
  108. <p>
  109. 供方承诺若本订单上的货物发生质量问题,按双方签署的《质量保证协议》或其他双方签订的质保条约执行处理。
  110. </p>
  111. <p>三、交货要求:</p>
  112. <p>
  113. 1.供货方在1个工作日内回复交期(若1个工作日内未回复,视同供货方默认同意接受交货日期)
  114. </p>
  115. <p>
  116. 2.常规产品7天内到货,订制产品按双方协议日期交期。交货时,以下纸质资料随货同行,资料所在箱号清晰易见:
  117. </p>
  118. <p>
  119. (1)随货同行单。供货方提供给我公司的随货同行单需包括以下内容:德荣订单编码、供货单位、医疗器械名称、规格(型号)、生产企业、生产企业许可证号(或者备案凭证编号)、注册证号(或者备案凭证编号)、生产批号、有效期、数量、单位、单价、金额、储运条件、收货单位、收货地址、发货日期等内容,并加盖供货单位出库专用章。
  120. </p>
  121. <p>
  122. (2)生产厂家同一批次产品的检验报告。(3)进口物资的报关单和检验检疫证明。
  123. </p>
  124. <p>
  125. 3.交货实际时间以供方货物实际到达需方指定地点的时间为准。如遇特殊情况需变更交货时间,供方应事先通知需方并征得需方同意
  126. </p>
  127. <p>
  128. 4.运输要求:供货方负责将货物运输到购货方指定地址,运输方式及费用由供货方负责(双方另有书面约定的除外)。发货后供货方提供运输单号给购货方。.需要专业冷链运输的产品,必须按照GSP要求严格执行冷链运输,全程温湿度必须在GSP冷链运输的管控范围内,随货同行的温湿度记录仪的冷链数据须在交付时可导出或打印。
  129. </p>
  130. <p>
  131. 四、验收标准:购货方收货后3日内按质量标准进行验收,若有不符应及时通知供货方,供货方应在3日内处理。
  132. </p>
  133. <p>
  134. 五、发票要求:供货方根据双方签定的格式合同约定的时间或是于发货后7个工作日内开具符合国家要求的可抵扣的增值税专用发票给购货方。
  135. </p>
  136. <p>六、结算方式:电汇/转账。</p>
  137. <p>
  138. 七、违约责任:按《中国人民共和国合同法》执行,一方违约,违约方按货款总金额的5‰支付给守约方。
  139. </p>
  140. <p>
  141. 八、争议的解决:因履行本合同发生争议,由双方协商解决,协商不成应向长沙仲裁委员会申请仲裁解决。
  142. </p>
  143. <p>
  144. 九、本订单作为双方采购合同的有效组成附件,经各采购员发布确认后生效。供方应在接到订单后按采购合同约定的时间内向需方作出反馈,否则需方视为供方默认。
  145. </p>
  146. </div>
  147. </div>
  148. </div>
  149. </template>
  150. <script>
  151. import print from "vue-print-nb";
  152. import { PRINT } from "@/api/business/purchase/task";
  153. export default {
  154. directives: {
  155. print,
  156. },
  157. name: "",
  158. components: {},
  159. props: {
  160. id: {
  161. type: [String, Number],
  162. require: true,
  163. },
  164. value:{
  165. type:Object,
  166. require:true
  167. }
  168. },
  169. data() {
  170. console.log(this.value,'this.value');
  171. return {
  172. visible: false,
  173. disabled: false,
  174. company: "湖南德荣医疗器械有限公司",
  175. print: {
  176. id: "PurchaseOrderPdf",
  177. popTitle: "配置页眉标题", // 打印配置页上方的标题
  178. extraHead: "", // 最上方的头部文字,附加在head标签上的额外标签,使用逗号分割
  179. preview: false, // 是否启动预览模式,默认是false
  180. previewTitle: "预览的标题", // 打印预览的标题
  181. previewPrintBtnLabel: "预览结束,开始打印", // 打印预览的标题下方的按钮文本,点击可进入打印
  182. zIndex: 20002, // 预览窗口的z-index,默认是20002,最好比默认值更高
  183. previewBeforeOpenCallback() {
  184. console.log("正在加载预览窗口!");
  185. console.log(this);
  186. }, // 预览窗口打开之前的callback
  187. previewOpenCallback() {
  188. console.log("已经加载完预览窗口,预览打开了!");
  189. }, // 预览窗口打开时的callback
  190. beforeOpenCallback() {
  191. console.log("开始打印之前!");
  192. }, // 开始打印之前的callback
  193. openCallback() {
  194. console.log("执行打印了!");
  195. }, // 调用打印时的callback
  196. closeCallback() {
  197. console.log("关闭了打印工具!");
  198. }, // 关闭打印的callback(无法区分确认or取消)
  199. clickMounted() {
  200. console.log("点击v-print绑定的按钮了!");
  201. },
  202. // url: 'http://localhost:8080/', // 打印指定的URL,确保同源策略相同
  203. // asyncUrl (reslove) {
  204. // setTimeout(() => {
  205. // reslove('http://localhost:8080/')
  206. // }, 2000)
  207. // },
  208. standard: "",
  209. extarCss: "",
  210. },
  211. // params: {},
  212. // params: this.value,
  213. };
  214. },
  215. computed: {
  216. src: {
  217. get: function () {
  218. return require(`./${this.company}.png`);
  219. },
  220. set: function () {},
  221. },
  222. params:{
  223. get:function(){
  224. return this.value;
  225. }
  226. }
  227. },
  228. watch: {},
  229. methods: {
  230. onCommand(prop) {
  231. this.company = prop;
  232. this.visible = true;
  233. },
  234. getSummaries(param) {
  235. const { columns, data } = param;
  236. const sums = [];
  237. columns.forEach((column, index) => {
  238. const { property } = column;
  239. if (index === 0) {
  240. sums[index] = "合计";
  241. return;
  242. }
  243. if (property === "qty" || property === "money") {
  244. const values = data.map((item) => Number(item[property]));
  245. if (!values.every((value) => isNaN(value))) {
  246. sums[index] = values.reduce((prev, curr) => {
  247. const value = Number(curr);
  248. if (!isNaN(value)) {
  249. return prev + curr;
  250. } else {
  251. return prev;
  252. }
  253. }, 0);
  254. }
  255. }
  256. });
  257. return sums;
  258. },
  259. },
  260. async created() {
  261. // try {
  262. // this.disabled = true;
  263. // const { data, code } = await PRINT({ id: this.$props.id || 628 });
  264. // if (code === 200) {
  265. // this.params = data;
  266. // this.disabled = false;
  267. // }
  268. // } catch (err) {
  269. // alert(err);
  270. // } finally {
  271. // }
  272. },
  273. mounted() {},
  274. destroyed() {},
  275. };
  276. </script>
  277. <style scoped></style>