找回密码
 立即注册

QQ登录

只需一步,快速开始

zjk

中级会员

76

主题

271

帖子

735

积分

中级会员

积分
735
zjk
中级会员   /  发表于:2022-5-30 17:10  /   查看:3961  /  回复:20
1金币
模板js(sgrz.js)

Reporter.vue

  1. <template>
  2.   <j-modal
  3.     :title="title"
  4.     :width="width"
  5.     :visible="visible"
  6.     switchFullscreen
  7.     @ok="handleOk"
  8.     :okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
  9.     @cancel="handleCancel"
  10.     cancelText="关闭">
  11.     <div id="report"></div>
  12.   </j-modal>
  13. </template>

  14. <script>
  15.   import "@grapecity/spread-sheets/styles/gc.spread.sheets.excel2013white.css";
  16.   import '@grapecity/spread-sheets-vue';
  17.   import GC from "@grapecity/spread-sheets";
  18.   import '@grapecity/spread-sheets-charts';
  19.   import "@grapecity/spread-sheets-resources-zh";
  20.   import "@grapecity/spread-sheets-barcode";

  21.   GC.Spread.Common.CultureManager.culture("zh-cn");
  22.   GC.Spread.Sheets.LicenseKey='xxxxx';


  23.     export default {
  24.       name: "reporter",
  25.       data(){
  26.         return {
  27.           dataurl:'', //请求后的数据
  28.           path:'', // 模板路径
  29.           title:'',
  30.           width:896,
  31.           visible: false,
  32.           disableSubmit: false
  33.         };
  34.       }, //请求后封装的数据

  35.       /*----------------初始化工作簿----------------*/
  36.       methods:{
  37.         workbookInitialized() {
  38.           var spread = new GC.Spread.Sheets.Workbook(document.getElementById("report"));
  39.           spread.fromJSON(this.path);
  40.           // this.spread.options.tabStripRatio = 0.7;
  41.           var sheet = spread.getActiveSheet();
  42.           this.dataurl='';
  43.           var source = new GC.Spread.Sheets.Bindings.CellBindingSource(this.dataurl);
  44.           sheet.setDataSource(source);
  45.         },
  46.         show(){
  47.           this.visible = true
  48.         },
  49.         close () {
  50.           this.$emit('close');
  51.           this.visible = false;
  52.         },
  53.         handleOk () {
  54.           this.close()
  55.         },
  56.         // submitCallback(){
  57.         //   this.$emit('ok');
  58.         //   this.visible = false;
  59.         // },
  60.         handleCancel () {
  61.           this.close()
  62.         }

  63.       },

  64.       // mounted(){
  65.       //   this.workbookInitialized();
  66.       // }

  67.     }
  68. </script>

  69. <style scoped>

  70. </style>
复制代码
报表列表
  1. <template>
  2.   <a-card :bordered="false">
  3.     <!-- 查询区域 -->
  4.     <div class="table-page-search-wrapper">
  5.       <a-form layout="inline" @keyup.enter.native="searchQuery">
  6.         <a-row :gutter="24">
  7.         </a-row>
  8.       </a-form>
  9.     </div>
  10.     <!-- 查询区域-END -->

  11.     <!-- 操作按钮区域 -->
  12.     <div class="table-operator">
  13.       <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
  14.       <!--//@TODO 报表功能待实现-->
  15.       <a-button @click="showreport(selectionRows)" type="primary">报表</a-button>

  16.       <a-button type="primary" icon="download" @click="handleExportXls('施工日志')">导出</a-button>
  17.       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
  18.         <a-button type="primary" icon="import">导入</a-button>
  19.       </a-upload>
  20.       <!-- 高级查询区域 -->
  21.       <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
  22.       <a-dropdown v-if="selectedRowKeys.length > 0">
  23.         <a-menu slot="overlay">
  24.           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
  25.         </a-menu>
  26.         <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
  27.       </a-dropdown>
  28.     </div>

  29.     <!-- table区域-begin -->
  30.     <div>
  31.       <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
  32.         <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
  33.         <a style="margin-left: 24px" @click="onClearSelected">清空</a>
  34.       </div>

  35.       <a-table
  36.         ref="table"
  37.         size="middle"
  38.         :scroll="{x:true}"
  39.         bordered
  40.         rowKey="id"
  41.         :columns="columns"
  42.         :dataSource="dataSource"
  43.         :pagination="ipagination"
  44.         :loading="loading"
  45.         :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
  46.         class="j-table-force-nowrap"
  47.         @change="handleTableChange">

  48.         <template slot="htmlSlot" slot-scope="text">
  49.           <div v-html="text"></div>
  50.         </template>
  51.         <template slot="imgSlot" slot-scope="text">
  52.           <span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span>
  53.           <img v-else :src="getImgView(text)" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/>
  54.         </template>
  55.         <template slot="fileSlot" slot-scope="text">
  56.           <span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
  57.           <a-button
  58.             v-else
  59.             :ghost="true"
  60.             type="primary"
  61.             icon="download"
  62.             size="small"
  63.             @click="downloadFile(text)">
  64.             下载
  65.           </a-button>
  66.         </template>

  67.         <span slot="action" slot-scope="text, record">
  68.           <a @click="handleEdit(record)">编辑</a>

  69.           <a-divider type="vertical" />
  70.           <a-dropdown>
  71.             <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
  72.             <a-menu slot="overlay">
  73.               <a-menu-item>
  74.                 <a @click="handleDetail(record)">详情</a>
  75.               </a-menu-item>
  76.               <a-menu-item>
  77.                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
  78.                   <a>删除</a>
  79.                 </a-popconfirm>
  80.               </a-menu-item>
  81.             </a-menu>
  82.           </a-dropdown>
  83.         </span>

  84.       </a-table>
  85.     </div>

  86.     <construction-log-modal ref="modalForm" @ok="modalFormOk"></construction-log-modal>

  87.       <reporter ref="gpreporter"></reporter>

  88.   </a-card>
  89. </template>

  90. <script>

  91.   import '@/assets/less/TableExpand.less'
  92.   import { mixinDevice } from '@/utils/mixin'
  93.   import { JeecgListMixin } from '@/mixins/JeecgListMixin'
  94.   import ConstructionLogModal from './modules/ConstructionLogModal'
  95.   import {filterMultiDictText} from '@/components/dict/JDictSelectUtil'
  96.   import {getAction} from "../../api/manage";
  97.   import Reporter from './modules/Reporter'

  98.   export default {
  99.     name: 'ConstructionLogList',
  100.     mixins:[JeecgListMixin, mixinDevice],
  101.     components: {
  102.       ConstructionLogModal,
  103.       Reporter
  104.     },
  105.     data () {
  106.       return {
  107.         description: '施工日志管理页面',
  108.         // 表头
  109.         columns: [
  110.         {
  111.             title: '#',
  112.             dataIndex: '',
  113.             key:'rowIndex',
  114.             width:60,
  115.             align:"center",
  116.             customRender:function (t,r,index) {
  117.               return parseInt(index)+1;
  118.             }
  119.           },
  120.           {
  121.             title:'单位',
  122.             align:"center",
  123.             dataIndex: 'unit'
  124.           },
  125.           {
  126.             title:'日期',
  127.             align:"center",
  128.             dataIndex: 'time',
  129.             customRender:function (text) {
  130.               return !text?"":(text.length>10?text.substr(0,10):text)
  131.             }
  132.           },
  133.           {
  134.             title:'星期',
  135.             align:"center",
  136.             dataIndex: 'week_dictText'
  137.           },
  138.           {
  139.             title:'天气',
  140.             align:"center",
  141.             dataIndex: 'weather'
  142.           },
  143.          /* {
  144.             title:'最高气温(℃)',
  145.             align:"center",
  146.             dataIndex: 'tmax'
  147.           },
  148.           {
  149.             title:'最低气温(℃)',
  150.             align:"center",
  151.             dataIndex: 'tmin'
  152.           },*/
  153.           {
  154.             title:'养护航道',
  155.             align:"center",
  156.             dataIndex: 'yhhd'
  157.           },
  158.           {
  159.             title:'桩号',
  160.             align:"center",
  161.             dataIndex: 'zh'
  162.           },
  163.           {
  164.             title:'施工人数',
  165.             align:"center",
  166.             dataIndex: 'sgrs'
  167.           },
  168.           {
  169.             title:'施工班组',
  170.             align:"center",
  171.             dataIndex: 'sgbz'
  172.           },
  173.           /*{
  174.             title:'养护内容',
  175.             align:"center",
  176.             dataIndex: 'content'
  177.           },
  178.           {
  179.             title:'养护情况(包括质量、安全)',
  180.             align:"center",
  181.             dataIndex: 'situation'
  182.           },
  183.           {
  184.             title:'完成后情况',
  185.             align:"center",
  186.             dataIndex: 'situationFinish'
  187.           },*/
  188.           {
  189.             title:'负责人',
  190.             align:"center",
  191.             dataIndex: 'chargePerson'
  192.           },
  193.           {
  194.             title:'记录',
  195.             align:"center",
  196.             dataIndex: 'recorder'
  197.           },
  198.           {
  199.             title: '操作',
  200.             dataIndex: 'action',
  201.             align:"center",
  202.             fixed:"right",
  203.             width:147,
  204.             scopedSlots: { customRender: 'action' }
  205.           }
  206.         ],
  207.         url: {
  208.           // report:"/report/constructionLog/report",
  209.           list: "/report/constructionLog/list",
  210.           delete: "/report/constructionLog/delete",
  211.           deleteBatch: "/report/constructionLog/deleteBatch",
  212.           exportXlsUrl: "/report/constructionLog/exportXls",
  213.           importExcelUrl: "report/constructionLog/importExcel",
  214.          
  215.         },
  216.         path:"./modules/sgrz.js",
  217.         dictOptions:{},
  218.         superFieldList:[],
  219.       }
  220.     },



  221.     created() {
  222.     this.getSuperFieldList();
  223.     },
  224.     computed: {
  225.       importExcelUrl: function(){
  226.         return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
  227.       },
  228.     },
  229.     methods: {
  230.       initDictConfig(){
  231.       },
  232.       //@TODO 获取选中行的数据
  233.       getSelectdata(row){

  234.         return Selecteddata

  235.       },
  236.       //@TODO 报表功能待实现
  237.       showreport(record){
  238.         console.log(record)
  239.         // data=getAction(this.url.report,)
  240.         this.$refs.gpreporter.path=this.path;
  241.         this.$refs.gpreporter.dataurl=record;//改成所选id
  242.         this.$refs.gpreporter.workbookInitialized();
  243.         this.$refs.gpreporter.show();

  244.       },
  245.       getSuperFieldList(){
  246.         let fieldList=[];
  247.         fieldList.push({type:'string',value:'unit',text:'单位',dictCode:''})
  248.         fieldList.push({type:'date',value:'time',text:'日期'})
  249.         fieldList.push({type:'string',value:'week',text:'星期',dictCode:'week'})
  250.         fieldList.push({type:'string',value:'weather',text:'天气',dictCode:''})
  251.         fieldList.push({type:'double',value:'tmax',text:'最高气温(℃)',dictCode:''})
  252.         fieldList.push({type:'double',value:'tmin',text:'最低气温(℃)',dictCode:''})
  253.         fieldList.push({type:'string',value:'yhhd',text:'养护航道',dictCode:''})
  254.         fieldList.push({type:'string',value:'zh',text:'桩号',dictCode:''})
  255.         fieldList.push({type:'int',value:'sgrs',text:'施工人数',dictCode:''})
  256.         fieldList.push({type:'string',value:'sgbz',text:'施工班组',dictCode:''})
  257.         fieldList.push({type:'string',value:'content',text:'养护内容',dictCode:''})
  258.         fieldList.push({type:'string',value:'situation',text:'养护情况(包括质量、安全)',dictCode:''})
  259.         fieldList.push({type:'string',value:'situationFinish',text:'完成后情况',dictCode:''})
  260.         fieldList.push({type:'string',value:'chargePerson',text:'负责人',dictCode:''})
  261.         fieldList.push({type:'string',value:'recorder',text:'记录',dictCode:''})
  262.         this.superFieldList = fieldList
  263.       }
  264.     }
  265.   }
  266. </script>
  267. <style scoped>
  268.   @import '~@assets/less/common.less';
  269. </style>
复制代码
加载的record
image.png303453063.png

点击报表后,加载出来的界面不出现spread

sgrz.js

41.96 KB, 下载次数: 99

20 个回复

正序浏览
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-6-7 16:15:37
21#
zjk 发表于 2022-6-7 15:51
https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=148331&extra=
问题已在此贴中解决

解决了就好,有新问题欢迎开新帖交流~
回复 使用道具 举报
zjk
中级会员   /  发表于:2022-6-7 15:51:50
20#
回复 使用道具 举报
zjk
中级会员   /  发表于:2022-6-1 10:56:58
18#
zjk 发表于 2022-6-1 10:42
去掉一个标签

然后直接用spread

虽然还是报fromJSON的错 image.png484697265.png
回复 使用道具 举报
zjk
中级会员   /  发表于:2022-6-1 10:42:33
17#
zjk 发表于 2022-6-1 09:42
原生的方法显示不出来

image.png763859863.png 去掉一个标签

然后直接用spread
image.png370585021.png
然后就可以了
image.png687331847.png
回复 使用道具 举报
zjk
中级会员   /  发表于:2022-6-1 09:42:45
16#
Derrick.Jiao 发表于 2022-5-31 18:23
从上面的截图来看,主要原因还是在于Spread对象没有获取对,基于前面描述的需求,建议还是使用原生的方法 ...

image.png954228210.png
image.png844587402.png
image.png66315917.png
image.png488322753.png
原生的方法显示不出来
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-5-31 18:23:24
15#
zjk 发表于 2022-5-31 16:48
现在是可以加载模板,但是绑定的数据不显示,spread会打印两次,一次undefined一次为a

从上面的截图来看,主要原因还是在于Spread对象没有获取对,基于前面描述的需求,建议还是使用原生的方法来进行使用。
例如下图,下图就是9楼提供的demo。

下图用的是new GC.Spread.Sheets.Workbook(document.getElementById('ss'), { sheetCount: 1 });方法来初始化工作簿,
然后在需要使用工作簿示例的时候通过GC.Spread.Sheets.findControl(document.getElementById('ss'));获取Spread对象
image.png23172606.png


回复 使用道具 举报
zjk
中级会员   /  发表于:2022-5-31 16:48:22
14#
zjk 发表于 2022-5-31 16:28
现在的因为需求就是在这个list的界面里点击按钮,调用reporter界面里的,show方法(弹出一个框框),show ...

image.png968911437.png
现在是可以加载模板,但是绑定的数据不显示,spread会打印两次,一次undefined一次为a
image.png443155211.png
回复 使用道具 举报
zjk
中级会员   /  发表于:2022-5-31 16:28:47
13#
Derrick.Jiao 发表于 2022-5-31 15:27
老哥,请提供一个可直接运行的demo吧,我这只能从提供的代码片段去猜是猜不到准确原因的。

在你提供的 ...

现在的因为需求就是在这个list的界面里点击按钮,调用reporter界面里的,show方法(弹出一个框框),show方法会执行一次workbookInitialized,和一次数据绑定。现在是模板能加载,但是数据还是无法在模板里显示
弹窗 image.png811021423.png
spread需要加载的模板和绑定的数据
image.png966554870.png
show的时候执行模板加载和数据绑定
image.png305900267.png

在不同的列表里报表加载通过设置不同的模板到reporter里从而实现不同的类别报不同的模板和数据
image.png899966735.png


回复 使用道具 举报
zjk
中级会员   /  发表于:2022-5-31 16:20:30
12#
Derrick.Jiao 发表于 2022-5-31 15:27
老哥,请提供一个可直接运行的demo吧,我这只能从提供的代码片段去猜是猜不到准确原因的。

在你提供的 ...

打出来的是undefined
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-5-31 16:01:56
11#
zjk 发表于 2022-5-31 15:53
我不知道做可以直接运行的demo啊,我是在原有的框架上加报表功能

可以看下9楼回复的demo,这个是基于你提供的vue文件制作的demo。
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部