请选择 进入手机版 | 继续访问电脑版

avicdev

中级会员

69

主题

203

帖子

752

积分

中级会员

积分
752
avicdev
中级会员   /  发表于:2022-11-29 19:36  /   查看:2058  /  回复:6
自定单元格集成VUE弹窗后,查询区域回车时,弹窗关闭,之前创建自定义单元格时有挂载属性

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

6 个回复

Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2022-11-30 13:43:20
沙发
请上传下您自定义单元格相关代码
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2022-12-1 10:15:04
板凳
您好,您这边问题解决了吗?
回复 使用道具 举报
avicdev
中级会员   /  发表于:2022-12-1 17:15:57
地板
import Vue from 'vue'
import { AvicCommonSelect } from 'avic-ui';
import GC from "@grapecity/spread-sheets"
import zhCN from 'ant-design-vue/lib/locale-provider/zh_CN';

export class AutoUserSelectCellType extends GC.Spread.Sheets.CellTypes.Base{
  constructor(cellModel,selectModel) {
    super();
    this.selectModel = selectModel;
    this.displaySet = cellModel?.baseInfo?.displaySet ? cellModel.baseInfo.displaySet: 'all';
    this.typeName = "AutoUserSelectCellType"
  }

  createEditorElement(context, cellWrapperElement){
    cellWrapperElement.style.overflow = 'visible'
    let editorContext = document.createElement("div")
    editorContext.setAttribute("class", "spread-cell-wrapper");
    let editor = document.createElement("div");
    // 自定义单元格中editorContext作为容器,需要在创建一个child用于挂载,不能直接挂载到editorContext上
    editorContext.appendChild(editor);
    return editorContext;
  }

  activateEditor(editorContext, cellStyle, cellRect, context){
    const defaultValue = context.sheet.getCell(context.row, context.col).value()
    const displaySet = this.displaySet;
    const selectModel = this.selectModel;
    if (editorContext) {
      editorContext.style.height = cellRect.height+"px";
      editorContext.style.width = cellRect.width+"px";
      // 动态创建VUE 组件并挂载到editor :default-value="defaultValue"
      const AutoCompleteComponent = {
        components:{
          AvicCommonSelect
        },
        props: ['commonSelectProps'],
        template: `<a-config-provider :locale="locale">
                    <AvicCommonSelect
                      ref="userSelectModel"
                      type="userSelect"
                      :selectModel="model"
                      :displaySet="displaySet"
                      :default-value="defaultValue"
                      :modal="{gcUIElement:'gcEditingInput'}"
                    ></AvicCommonSelect>
                  </a-config-provider>`,
        data(){
          return {
            locale: zhCN,
            resultValue:"",
            defaultValue:defaultValue,
            model: selectModel,
            displaySet:displaySet
          }
        }
      };
      const AutoCompleteCtor = Vue.extend(AutoCompleteComponent);
      this.vm = new AutoCompleteCtor({
      }).$mount(editorContext.firstChild);
      this.vm.$refs["userSelectModel"].openSelect();
    }
    return editorContext;
  }

  updateEditor(editorContext, cellStyle, cellRect){
    return {width: cellRect.width, height: cellRect.height};
  }

  // 格式化回显内容
  format(value, format, formattedData, context) {
    if(typeof value == 'object' && value?.ids){
      return value.names+';'+value.deptName;
    }else if(typeof value == 'string'){
      return value;
    }else{
      return '';
    }
  }

  getEditorValue(editorContext){
    if (this.vm) {
      return this.vm.$refs["userSelectModel"].select?.names;
      // return {
      //   ...this.vm.$refs["userSelectModel"].select
      // };
    }
  }

  setEditorValue(editorContext, value){
    if (editorContext) {
      this.vm.$refs["userSelectModel"].defaultBack({ids: '', names: value});
    }
  }

  deactivateEditor(editorContext, context){
    // 销毁组件
    this.vm.$destroy();
    this.vm = undefined;
  }

}
回复 使用道具 举报
avicdev
中级会员   /  发表于:2022-12-1 17:16:52
5#
avicdev 发表于 2022-12-1 17:15
import Vue from 'vue'
import { AvicCommonSelect } from 'avic-ui';
import GC from "@grapecity/sprea ...

这是自定义弹窗内容,初步定位应该是ss监控了回车事件导致
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2022-12-1 18:35:15
6#
avicdev 发表于 2022-12-1 17:16
这是自定义弹窗内容,初步定位应该是ss监控了回车事件导致

您好,是否可以抽离一份可以复现问题直接运行的代码吗?这边运行您的代码,运行不了
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-1-3 16:10:49
7#
您好,您的问题解决了吗?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部