当前位置:   article > 正文

vue element UI 学习总结笔记(十一)_vue中打印模板设置_elementui打印预览

elementui打印预览

打印经常需要根据用户需求自定义,整个问题解决思路是:

把打印内看成三个部分,头部、明细区、脚步;

根据选中的元数据,输出界面内容:

  1. <ul class="print-head" style="margin:0;padding:0;height:100px;display: flex;justify-content:space-between;flex-flow: wrap row;align-items:flex-start;list-style:none;">
  2. <li v-for="(item,i) in checkedPrintHead" :key="i" class="print-item" style="margin:0;padding:0;margin-bottom:5px;flex:0 0 33.3%;display:flex;justify-content:space-between">
  3. <span style="margin:0;padding:0;flex:0 0 40%">{{ item.text }}:</span>
  4. <span class="hidden" style="margin:0;padding:0;flex:1 1 60%">{{ item.value }}</span>
  5. </li>
  6. </ul>
  7. ....
  8. <table style="margin:0 auto;border: 1px solid #000;border-collapse: collapse" class="print-table">
  9. <thead>
  10. <tr>
  11. <!-- v-dragging="{item:item,list:checkedTableHead,group:'tbHead'}" -->
  12. <th v-for="(item,i) in checkedTableHead" :key="i" :style="`width:${item.width}px;border: 1px solid #000;border-collapse: collapse`">{{ item.text }}</th>
  13. </tr>
  14. </thead>
  15. <tbody class="none">
  16. <tr v-for="(rowData,i) in printData" :key="i">
  17. <td v-for="(item ,index) in checkedTableHead" :key="index" :style="`width:${item.width}px;border: 1px solid #000;border-collapse: collapse;vertical-align:middle;`" align="center">
  18. {{ $getCodeLabel(rowData[item.key]) === null ? '-' : $getCodeLabel(rowData[item.key]) }}
  19. </td>
  20. </tr>
  21. <tr>
  22. <td v-for="(item ,index) in checkedTableHead" :key="index" :style="`width:${item.width}px;border: 1px solid #000;border-collapse: collapse;text-align:center;padding-left:${totalTextArrayBool(item)?item.width:'0'}px`" :tdata="totalTextArrayBool(item)?'AllSum':''" format="#.###" >
  23. {{ getTfootHtmlByItem(item,index) }}
  24. </td>
  25. </tr>
  26. </tbody>
  27. <tfoot>
  28. <!-- <tr>
  29. <td v-for="(item ,index) in checkedTableHead" :key="index" :style="`width:${item.width}px;border: 1px solid #000;border-collapse: collapse;text-align:center;padding-left:${(item.text ==='份数' || item.text === '本数')?item.width:'0'}px`" :tdata="(item.text ==='份数' || item.text === '本数')?'AllSum':''" format="#.###" >
  30. {{ getTfootHtmlByItem(item,index) }}
  31. </td>
  32. </tr> -->
  33. </tfoot>
  34. </table>
  35. ...

看看效果:

页面需要自定义打印。

设置即是设置打印模板:

这个模板分为三个区域:

表头区、表尾区、中间明细区。

点击打印预览:

这里,我们写了一个打印组件,实现上述功能。

组件接受三个参数:

表头、明细数据、模板数据

  1. props: {
  2. formPrintData: { // 表单参数数据。
  3. type: Array,
  4. required: false,
  5. default() {
  6. return []
  7. }
  8. },
  9. printData: {
  10. type: Array,
  11. required: false,
  12. default() {
  13. return []
  14. }
  15. },
  16. templateData: {
  17. type: Array,
  18. default() {
  19. return []
  20. }
  21. },
  22. defaultData: { //这个没有用到
  23. type: Array,
  24. default() {
  25. return []
  26. }
  27. }
  28. },

组件接受到模板参数后,对其进行相关处理:

  1. employTemplateData: { // 当前应用模板
  2. get() {
  3. // var target = this.templateData.find(item => item.isdefault === 1)
  4. // if (!target) {
  5. // target = this.templateData.find(item => item.isstandardtemplage === 1)
  6. // }
  7. var target = ''
  8. var targetList = this.templateData.filter(item => +item.isdefault === 1)
  9. // 没有isdefault = 1,取isstandardtemplage = 1
  10. if (targetList.length === 0) {
  11. target = this.templateData[0]
  12. } else { // 有isdefault等于1时,要判断isstandardtemplage,有为0的情况就取0,没有就取1,即默认的标准模板。
  13. var customerTemplate = targetList.find(item => +item.isstandardtemplage === 0)
  14. if (customerTemplate) target = customerTemplate
  15. else target = targetList[0]
  16. }
  17. if (target) {
  18. if (typeof (target.templatecontent) === 'string') {
  19. target.templatecontent = JSON.parse(target.templatecontent)
  20. }
  21. if (this.formPrintData.length > 0) {
  22. console.log('target', target)
  23. // target.templatecontent.printHead = JSON.parse(JSON.stringify(this.formPrintData))
  24. // target.templatecontent.printFoot = JSON.parse(JSON.stringify(this.formPrintData))
  25. // 这里的代码是因为模板有时候没有传递printData这些字段,避免undefined报错。
  26. if (!target.templatecontent.printHead) {
  27. target.templatecontent.printHead = []
  28. }
  29. if (!target.templatecontent.printFoot) {
  30. target.templatecontent.printFoot = []
  31. }
  32. // 这里由于开始的设计有误,没有将显示的表单信息和渲染数据的表单信息分开,合在一起了。
  33. // 所以需要根据模板里面的表单的值,对比传递进来的表单,找到对应的值即可。
  34. console.log('target.templatecontent.printFoot:', target.templatecontent.printFoot)
  35. target.templatecontent.printHead.forEach(item => {
  36. var matchedItem = this.formPrintData.find(dataItem => dataItem.text === item.text)
  37. item.value = matchedItem === undefined ? item.value : matchedItem.value
  38. })
  39. target.templatecontent.printFoot.forEach(item => {
  40. var matchedItem = this.formPrintData.find(dataItem => dataItem.text === item.text)
  41. item.value = matchedItem === undefined ? item.value : matchedItem.value
  42. })
  43. }
  44. return target
  45. }
  46. },
  47. set(val) {
  48. return val
  49. }
  50. },

ps:

  1. 这里var targetList = this.templateData.filter(item => +item.isdefault === 1)  “+“是类型转换,把字符串转换为int类型。
  2. item.value = matchedItem === undefined ? item.value : matchedItem.value 这句话是根据条件判断对item.value进行赋值。

组件的结构:

  1. <!-- 表格打印设置组件 -->
  2. <template>
  3. //模板...
  4. </template>
  5. <script>
  6. import printItemControl from './printItemControl'
  7. import Bus from '@/utils/Bus'
  8. import { getLodop } from '@/assets/LodopFuncsNew' // 导入模块
  9. import { savePrintTemplateData, removePrintTemplateData } from '@/api/webPrint'
  10. // import { deepClone } from '@/utils/Common'
  11. export default {
  12. components: {
  13. printItemControl
  14. },
  15. props: {
  16. //父表单传递的参数
  17. },
  18. data() {
  19. return {
  20. updateTitleVisible: false,
  21. updateTitleError: true,
  22. updateTitleName: '',
  23. selectedItem: {},
  24. updateError: true,
  25. updateTempLateName: '',
  26. updateBoxVisible: false,
  27. alertBoxVisible: false,
  28. errMessage: true,
  29. addTempLateName: '',
  30. messageBoxVisible: false,
  31. // direction: 1, // 1竖,2
  32. // templateData
  33. // checkedTexts: [],
  34. // printHeadHeight: '10',
  35. dialogTableVisible: false,
  36. LODOP: '' // 准备用来调用getLodop获取LODOP对象
  37. }
  38. },
  39. computed: {
  40. employTemplateData: {
  41. //把模板和数据绑定
  42. },
  43. ......
  44. },
  45. watch: {
  46. dialogTableVisible(newVal, oldVal) {
  47. if (newVal === false) {
  48. Bus.$emit('getPrintDataAdd')
  49. }
  50. }
  51. },
  52. created() {
  53. // 下面这条句子应该放在请求的then里面。
  54. // this.checkedTexts = this.employTemplateData.templatecontent.printHead.filter(item => item.checked === true).map(item => item.text)
  55. Bus.$off('addExport')
  56. Bus.$on('addExport', () => {
  57. this.addExport()
  58. })
  59. Bus.$off('addPreview')
  60. Bus.$on('addPreview', () => {
  61. this.addPreview()
  62. })
  63. Bus.$off('addPrint')
  64. Bus.$on('addPrint', () => {
  65. this.addPrint()
  66. })
  67. Bus.$off('addSet')
  68. Bus.$on('addSet', () => {
  69. this.addSet()
  70. })
  71. },
  72. mounted() {
  73. },
  74. methods: {
  75. ...
  76. }
  77. }
  78. </script>
  79. <style rel='stylesheet/scss' lang='scss' scoped>
  80. ....
  81. </style>

注意修改标题代码 用到$set()方法:

代码:

  1. confirmTitle() {
  2. if (this.updateTitleName) {
  3. // this.validatorUpdate()
  4. this.updateTitleError = true
  5. this.updateTitleVisible = false
  6. this.$set(this.employTemplateData.templatecontent, 'title', this.updateTitleName)
  7. } else {
  8. this.updateTitleError = '打印表头名称不能为空!'
  9. }
  10. },

ps: Vue2.0 $set()的正确使用方式

打印模板组件的使用:

从业务上要理解上面的代码,先看看系统模板初始化:(这个在这个打印组件以外)。

  1. templateInitData: {
  2. // add
  3. guid: "",
  4. userid: null,
  5. templatecontent: {
  6. // 注释 title标题
  7. title: "财政审批退付申请",
  8. direction: 2,
  9. printHeadHeight: 50, // 打印头部区域的高度,单位mm
  10. printHead: [
  11. // 注释 表格上面内容
  12. // { text: "制表人", checked: true },
  13. { text: "资金退付书编号", checked: true },
  14. { text: "开具日期", checked: true },
  15. { text: "原缴款书编号", checked: true },
  16. { text: "执收单位", checked: true },
  17. { text: "缴款人名称", checked: true },
  18. { text: "缴款人账号", checked: true },
  19. { text: "缴款人开户行", checked: true },
  20. { text: "收款人名称", checked: true },
  21. { text: "收款人账号", checked: true },
  22. { text: "收款人开户行", checked: true },
  23. { text: "退付原因", checked: true }
  24. ],
  25. tableHead: [
  26. // 注释 表格内容
  27. {
  28. text: "收费项目编码",
  29. key: "nontaxcode",
  30. width: "200",
  31. checked: true
  32. },
  33. {
  34. text: "收费项目名称",
  35. key: "nontaxname",
  36. width: "200",
  37. checked: true
  38. },
  39. { text: "收费金额", key: "amt", width: "200", checked: true },
  40. {
  41. text: "退付金额",
  42. key: "rfdamt",
  43. width: "200",
  44. checked: true
  45. }
  46. ],
  47. printFoot: [
  48. // 注释 表格下面内容
  49. {
  50. text: "制表人",
  51. value: this.$store.state.user.name,
  52. checked: true
  53. },
  54. {
  55. text: "打印时间",
  56. value: new Date().toLocaleString(),
  57. checked: true
  58. }
  59. ]
  60. },
  61. isdefault: 1, // 是否现在使用的模板
  62. templatecode: this.$route.path + "/add",
  63. templatename: "标准模板",
  64. isstandardtemplage: 1 // 是否标准模板
  65. },

数据中的几个变量名称对应的内容图示:

后端相关查询的数据(例子):

{"code":"200","data":[{"guid":"8a8181846d80e0ea016d80fe1a050006","year":"2019","admdivcode":"420822","userid":"F77F3055AABCE8803C29DF683825B7BF","templatecode":"/czzsgl/fssrtfgl/dwlrtfsq/add","templatename":"222","isstandardtemplage":0,"templatecontent":"{\"title\":\"单位录入退付申请\",\"direction\":2,\"printHeadHeight\":50,\"printHead\":[{\"text\":\"资金退付书编号\",\"checked\":true,\"value\":\"RFD20190930000001\"},{\"text\":\"开具日期\",\"checked\":true,\"value\":\"2019-09-30 00:00:00\"},{\"text\":\"原缴款书编号\",\"checked\":true,\"value\":\"0011687662\"},{\"text\":\"执收单位\",\"checked\":true,\"value\":\"湖北省国土资源厅沙洋监狱管理局国土资源局\"},{\"text\":\"退款人名称\",\"checked\":true,\"value\":\"申雯凤\"},{\"text\":\"退款人账号\",\"checked\":true,\"value\":null},{\"text\":\"退款人开户行\",\"checked\":true,\"value\":null},{\"text\":\"收款人名称\",\"checked\":true,\"value\":\"农行沙洋县支行\"},{\"text\":\"收款人账号\",\"checked\":true,\"value\":\"1755 4101 0400 0353 1\"},{\"text\":\"收款人开户行\",\"checked\":true,\"value\":\"农行沙洋县支行\"},{\"text\":\"退付原因\",\"checked\":true,\"value\":\"沙洋县支行退付\"}],\"tableHead\":[{\"text\":\"收费项目编码\",\"key\":\"nontaxcode\",\"width\":\"200\",\"checked\":true},{\"text\":\"收费项目名称\",\"key\":\"nontaxname\",\"width\":\"200\",\"checked\":true},{\"text\":\"收费金额\",\"key\":\"amt\",\"width\":\"200\",\"checked\":true},{\"text\":\"退付金额\",\"key\":\"rfdamt\",\"width\":\"200\",\"checked\":true}],\"printFoot\":[{\"text\":\"制表人\",\"value\":\"王凤霞\",\"checked\":true},{\"text\":\"打印时间\",\"value\":\"2019/9/30 下午3:04:53\",\"checked\":true}]}","isdefault":0,"remark":null,"isenabled":1},{"guid":"8a8181846d80e0ea016d80ffbb0a0007","year":"2019","admdivcode":"420822","userid":"F77F3055AABCE8803C29DF683825B7BF","templatecode":"/czzsgl/fssrtfgl/dwlrtfsq/add","templatename":"333","isstandardtemplage":0,"templatecontent":"{\"title\":\"单位录入退付申请\",\"direction\":2,\"printHeadHeight\":50,\"printHead\":[{\"text\":\"资金退付书编号\",\"checked\":true,\"value\":\"RFD20190930000001\"},{\"text\":\"开具日期\",\"checked\":true,\"value\":\"2019-09-30 00:00:00\"},{\"text\":\"原缴款书编号\",\"checked\":true,\"value\":\"0011687662\"},{\"text\":\"执收单位\",\"checked\":true,\"value\":\"湖北省国土资源厅沙洋监狱管理局国土资源局\"},{\"text\":\"退款人名称\",\"checked\":true,\"value\":\"申雯凤\"},{\"text\":\"退款人账号\",\"checked\":true,\"value\":null},{\"text\":\"退款人开户行\",\"checked\":true,\"value\":null},{\"text\":\"收款人名称\",\"checked\":true,\"value\":\"农行沙洋县支行\"},{\"text\":\"收款人账号\",\"checked\":true,\"value\":\"1755 4101 0400 0353 1\"},{\"text\":\"收款人开户行\",\"checked\":true,\"value\":\"农行沙洋县支行\"},{\"text\":\"退付原因\",\"checked\":true,\"value\":\"沙洋县支行退付\"}],\"tableHead\":[{\"text\":\"收费项目编码\",\"key\":\"nontaxcode\",\"width\":\"200\",\"checked\":true},{\"text\":\"收费项目名称\",\"key\":\"nontaxname\",\"width\":\"200\",\"checked\":true},{\"text\":\"收费金额\",\"key\":\"amt\",\"width\":\"200\",\"checked\":true},{\"text\":\"退付金额\",\"key\":\"rfdamt\",\"width\":\"200\",\"checked\":true}],\"printFoot\":[{\"text\":\"制表人\",\"value\":\"王凤霞\",\"checked\":true},{\"text\":\"打印时间\",\"value\":\"2019/9/30 下午3:04:53\",\"checked\":true}]}","isdefault":1,"remark":null,"isenabled":1},{"guid":"8a8181846d80e0ea016d80fc8c600004","year":"2019","admdivcode":"420822","userid":null,"templatecode":"/czzsgl/fssrtfgl/dwlrtfsq/add","templatename":"标准模板","isstandardtemplage":1,"templatecontent":"{\"title\":\"单位录入退付申请\",\"direction\":2,\"printHeadHeight\":50,\"printHead\":[{\"text\":\"资金退付书编号\",\"checked\":true},{\"text\":\"开具日期\",\"checked\":true},{\"text\":\"原缴款书编号\",\"checked\":true},{\"text\":\"执收单位\",\"checked\":true},{\"text\":\"退款人名称\",\"checked\":true},{\"text\":\"退款人账号\",\"checked\":true},{\"text\":\"退款人开户行\",\"checked\":true},{\"text\":\"收款人名称\",\"checked\":true},{\"text\":\"收款人账号\",\"checked\":true},{\"text\":\"收款人开户行\",\"checked\":true},{\"text\":\"退付原因\",\"checked\":true}],\"tableHead\":[{\"text\":\"收费项目编码\",\"key\":\"nontaxcode\",\"width\":\"200\",\"checked\":true},{\"text\":\"收费项目名称\",\"key\":\"nontaxname\",\"width\":\"200\",\"checked\":true},{\"text\":\"收费金额\",\"key\":\"amt\",\"width\":\"200\",\"checked\":true},{\"text\":\"退付金额\",\"key\":\"rfdamt\",\"width\":\"200\",\"checked\":true}],\"printFoot\":[{\"text\":\"制表人\",\"value\":\"王凤霞\",\"checked\":true},{\"text\":\"打印时间\",\"value\":\"2019/9/30 下午3:04:53\",\"checked\":true}]}","isdefault":0,"remark":null,"isenabled":1},{"guid":"8a8181846d80e0ea016d80fd0c430005","year":"2019","admdivcode":"420822","userid":"F77F3055AABCE8803C29DF683825B7BF","templatecode":"/czzsgl/fssrtfgl/dwlrtfsq/add","templatename":"111","isstandardtemplage":0,"templatecontent":"{\"title\":\"单位录入退付申请\",\"direction\":2,\"printHeadHeight\":50,\"printHead\":[{\"text\":\"资金退付书编号\",\"checked\":true,\"value\":\"RFD20190930000001\"},{\"text\":\"开具日期\",\"checked\":true,\"value\":\"2019-09-30 00:00:00\"},{\"text\":\"原缴款书编号\",\"checked\":true,\"value\":\"0011687662\"},{\"text\":\"执收单位\",\"checked\":true,\"value\":\"湖北省国土资源厅沙洋监狱管理局国土资源局\"},{\"text\":\"退款人名称\",\"checked\":true,\"value\":\"申雯凤\"},{\"text\":\"退款人账号\",\"checked\":true,\"value\":null},{\"text\":\"退款人开户行\",\"checked\":true,\"value\":null},{\"text\":\"收款人名称\",\"checked\":true,\"value\":\"农行沙洋县支行\"},{\"text\":\"收款人账号\",\"checked\":true,\"value\":\"1755 4101 0400 0353 1\"},{\"text\":\"收款人开户行\",\"checked\":true,\"value\":\"农行沙洋县支行\"},{\"text\":\"退付原因\",\"checked\":true,\"value\":\"沙洋县支行退付\"}],\"tableHead\":[{\"text\":\"收费项目编码\",\"key\":\"nontaxcode\",\"width\":\"200\",\"checked\":true},{\"text\":\"收费项目名称\",\"key\":\"nontaxname\",\"width\":\"200\",\"checked\":true},{\"text\":\"收费金额\",\"key\":\"amt\",\"width\":\"200\",\"checked\":true},{\"text\":\"退付金额\",\"key\":\"rfdamt\",\"width\":\"200\",\"checked\":true}],\"printFoot\":[{\"text\":\"制表人\",\"value\":\"王凤霞\",\"checked\":true},{\"text\":\"打印时间\",\"value\":\"2019/9/30 下午3:04:53\",\"checked\":true}]}","isdefault":0,"remark":null,"isenabled":1}]}

引入模板组件:

  1. <tablePrintSetAdd
  2. :print-data="currentRow.details"
  3. :template-data="templateDataList"
  4. :form-print-data="formPrintData"
  5. />

调用的例子(结构):

  1. export default {
  2. components: {
  3. toolBar,
  4. layer,
  5. tablePrintSetAdd // 表格打印设置组件。add
  6. },
  7. data() {
  8. //数据...
  9. },
  10. computed: {
  11. // 注释 表单数据
  12. formPrintData() {
  13. return [
  14. {
  15. text: "资金退付书编号",
  16. value: this.currentRow.rfdbillno,
  17. checked: true
  18. },
  19. { text: "开具日期", value: this.currentRow.rfdbilldate, checked: true },
  20. {
  21. text: "原缴款书编号",
  22. value: this.currentRow.paybillno,
  23. checked: true
  24. ...
  25. ];
  26. }
  27. },
  28. watch: {
  29. // 是否获取模板 打开这dialog时候,获取模板
  30. dialogTableVisible(n) {
  31. if (n) {
  32. this.whetherGetPrintTemplate();
  33. }
  34. }
  35. },
  36. created() { //在渲染html前,给工具条绑定事件
  37. // 关闭
  38. Bus.$off("billClose");
  39. Bus.$on("billClose", () => {
  40. Bus.$emit("onSubmit");
  41. this.dialogTableVisible = false;
  42. });
  43. // 保存
  44. Bus.$off("billSave");
  45. Bus.$on("billSave", () => {
  46. this.save();
  47. });
  48. // 修改
  49. Bus.$off("billUpdate2");
  50. Bus.$on("billUpdate2", () => {
  51. this.billUpdate2();
  52. });
  53. // 取消
  54. Bus.$off("billAbolish");
  55. Bus.$on("billAbolish", () => {
  56. this.dialogTableVisible = false;
  57. });
  58. // 设置
  59. // 组件创建时,立即获取打印模板数据。
  60. // this.getPrintData()// add
  61. Bus.$off("getPrintDataAdd");
  62. Bus.$on("getPrintDataAdd", () => {
  63. this.getPrintData();
  64. });
  65. // 打印
  66. Bus.$off("getPrintDataAdd");
  67. Bus.$on("getPrintDataAdd", () => {
  68. this.getPrintData();
  69. });
  70. },
  71. mounted() {
  72. // console.log("挂载完成!");
  73. },
  74. updated() {},
  75. methods: {
  76. //各类操作方法
  77. }
  78. };

 watch 当中加载模板(模板毕竟只是开始加载一次);

模板与数据:

点击工具类相关按钮的时候,先激发一个事件

 

这里addset改变一个变量;

在打印组件中:这个变量控制一个div

 模板设置和打印输出用的是同一个页面。

但设置的时候,是不用显示数据的?

这里应用了class样式,页面上是不显示的,但给lodop的时候,lodop 是不知道这个class的,这样,通过lodop预览的时候,数据就显示出来了。 

lodop打印:

  1. printSet() {
  2. this.LODOP = getLodop()
  3. this.LODOP.PRINT_INIT('表格预览')
  4. console.log(111,this.employTemplateData);
  5. this.LODOP.SET_PRINT_PAGESIZE(this.employTemplateData.templatecontent.direction, 0, 0, 'A4')
  6. // console.log('当前设置的高度是:', this.employTemplateData.templatecontent.printHeadHeight)
  7. var printHeadHeight = +this.employTemplateData.templatecontent.printHeadHeight
  8. var strStyle = '<style> table,td,th {border: 1px solid #000;border-collapse: collapse;}</style>'
  9. this.LODOP.ADD_PRINT_TABLE(`${printHeadHeight + 10}mm`, '5%', '95%', `90%`, strStyle + this.$refs.div2.innerHTML)
  10. this.LODOP.SET_PRINT_STYLEA(0, 'Vorient', 3)
  11. this.LODOP.SET_PRINT_STYLEA(0, 'Offset2Top', `${-printHeadHeight}mm`) // 表示从次页开始的上边距偏移量
  12. this.LODOP.ADD_PRINT_HTM('1%', '2%', '95%', `${printHeadHeight}mm`, this.$refs.div1.innerHTML)
  13. // this.LODOP.SET_PRINT_STYLEA(0, 'ItemType', 1) // 此行代码的作用是使得div1中的内容随着分页反复出现,相当于是页眉。
  14. this.LODOP.ADD_PRINT_HTM('2%', '0%', '95%', '10%', this.$refs.div3.innerHTML)
  15. this.LODOP.SET_PRINT_STYLEA(0, 'LinkedItem', 1) // 内容项与别人关联后,会紧跟被关联者之后打印,位置和区域大小随被关联项而定,此时其Top和left不再是上边距和左边距,而是与关联项的间隔空隙及左边距偏移。0表示自己,1表示第一个,-1表示自己的前一个。
  16. },

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/113063
推荐阅读
相关标签
  

闽ICP备14008679号