电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

二开插件:pc单据附件和图片字段,在移动端显示和下载

来源:金蝶云社区作者:金蝶2024-09-2314

二开插件:pc单据附件和图片字段,在移动端显示和下载

经常收到小伙伴的反馈,pc单据附件和图片字段,怎么在移动表单中显示和下载呢?今天通过一个插件示例,来完成该工作;
      适用范围:pc端对应的附件文件服务器,附件数据库,图片文件服务器,图片数据库等控件,与移动端的附件控件、图片控件相关联;
      温馨提示:如果需要在移动端,显示的是pc端单据的附件列表中的附件,那么直接使用单据附件控件即可;
      准备工作:如果仅显示pc端的附件文件服务器,附件数据库,那么7.5以上版本均可;如果需要显示pc端的图片文件服务器,图片数据库,则需要升级2021年3月份及以上的补丁;
      需求描述(示例):测试单据中包含:附件文件服务器,附件数据库,图片文件服务器,图片数据库4个字段,要求在移动表单中显示和下载,数据互通; 测试单据示例:  

QQ截图20210930181531.webp

 

         移动表单设计:如下图所示,包含附件控件和图片控件:
image.webp 
    
        移动端运行效果图:

     QQ截图20210930181505.webp

     

      插件代码:


       public override void AfterBindData(EventArgs e)
        {
            base.AfterBindData(e);
            BindValue();
        }
        private void BindValue()
        {
            string _FormId = "kd_FlexTest"; // 目标单据唯一标识,即formid
            string _InterID = "100016"; // 单据内码,这个ID将作为我们下载的识别标识
            //string controlKey = "F_MOB_FileServer"; //单据中文件服务器控件的字段名
            //string controlKey = "F_MOB_FileDatabase"; //单据中文件数据库控件的字段名
            //string controlKey = "F_MOB_ImageServer"; //单据中图片服务器控件的字段名
            string controlKey = "F_MOB_ImageDatabase"; //单据中图片数据库控件的字段名
            var businessInfo = ((FormMetadata)MetaDataServiceHelper.Load(this.Context, _FormId)).BusinessInfo;
            var dyn = BusinessDataServiceHelper.LoadSingle(this.Context, _InterID, businessInfo.GetDynamicObjectType());
            if (dyn == null) return;
            var dynFile = dyn[controlKey];
            if (dynFile == null) return;
            List<File> files = new List<File>();
            string path = HttpContext.Current.Request.PhysicalApplicationPath + KeyConst.TEMPFILEPATH; // 获取文件上传的临时目录
                      if (controlKey == "F_MOB_FileDatabase") //pc单据对应的控件类型为文件数据库
            {
                string fieldValue = dynFile.ToString(); //文件数据库,实际存储的是转成base64字符串的json数组
                JSONArray fileArray = fieldValue.IsEmpty() ? new JSONArray() : SerializatonUtil.DeserializeFromBase64<JSONArray>(fieldValue);
                foreach (JSONObject json in fileArray)
                {
                    string fileId = string.Empty;
                    string serverFileName = json.GetString("ServerFileName");
                    string fileName = json.GetString("FileName");
                    string fileType = fileName.Substring(fileName.LastIndexOf(".") + 1);
                    
                    //文件数据库储存方式,根据byte数据组保存文件到临时目录,返回文件名给前端,前端根据文件名获取数据                    
                    int length = serverFileName.IndexOf(" ") > -1 ? serverFileName.IndexOf(" ") : serverFileName.Length;
                    fileId = serverFileName.Substring(0, length); //附件(数据库),serverFileName为fileid+空格+文件名+后缀,需要截取 
                    fileName = CommonFunctionUtil.FilterOpSysInvalidCharacterForFileName(fileName);
                    fileName = CommonFunctionUtil.GetFileName(this.Context, fileId, fileName);
                    string filePath = System.IO.Path.Combine(path, fileName);
                    //输出原始文件
                    if (filePath == "" || !System.IO.File.Exists(filePath))
                    {
                        byte[] fileBytes = json.GetValue<Byte[]>("FileContent");
                        if (fileBytes != null)
                        {
                            CreateFile(fileBytes, filePath);
                        }
                    }
                    files.Add(new File() { FileID = fileId, Name = fileName, Type = fileType, IsFieldFil

二开插件:pc单据附件和图片字段,在移动端显示和下载

经常收到小伙伴的反馈,pc单据附件和图片字段,怎么在移动表单中显示和下载呢?今天通过一个插件示例,来完成该工作; 适用范围:p...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信