.NET CORE开源工作流引擎 - 可视化流程设计器 - 工作流表单设计器 - .NET快速开发平台 - .NET三层代码生成器 - 通用权限管理

.NET MVC CORE开源工作流平台,可视化流程设计器
RoadFlowEle6.2.4升级说明

1、增加了部门导入人员功能。

    修改文件:\RoadFlow.WebUIElement\src\roadui-pages\system\organize\organize.vue

    image.png

 <el-form-item label="导入人员" prop="note">
                <el-upload :action="config.SERVER_WEBADDRESS+'/Files/SaveFiles'"
                           :show-file-list="false"
                           accept=".xlsx"
                           :headers="{'nroadflow-token': utils.getToken()}"
                           with-credentials
                           :data="{filetype:'.xlsx',uploadtype:0}"
                           :on-success="handleAvatarSuccess"
                           :before-upload="beforeAvatarUpload">
                    <el-button type="primary">选择文件</el-button>
                </el-upload>
            </el-form-item>

    image.png

    

    //================================

    //导入人员

    //================================

    const config = inject('config');

    //导入上传前检查文件格式。

    const beforeAvatarUpload = (rawFile) => {

        if (rawFile.name.substr(rawFile.name.lastIndexOf('.')) !== '.xlsx') {

            utils.msg('要导入的文件必须是xlsx格式文件!', false);

            return false;

        }

        return true;

    };

    //导入上传成功

    const handleAvatarSuccess = (response, uploadFile) => {

        if (uploadFile.status === 'success') {

            let code = response.code;

            if (code != 0) {

                utils.msg('文件上传失败!', false);

                return;

            }

            const fileId = response.data.id;

            ajax.post('/Organize/ImportUser', qs.stringify({ files: fileId, deptId: organizeId })).then((res) => {

                let msg = res.msg;

                if (utils.length(msg) === 0) {

                    if (res.success) {

                        msg = '导入成功!';

                        updateTreeNode(organizeId);

                    } else if (res.code == 1) {

                        msg = '要导入的文件不存在!';

                    } else {

                        msg = '导入失败!';

                    }

                }

                utils.msg(msg, res.success);

            }).catch(() => { });

        } else if (uploadFile.status === 'error') {

            utils.msg('文件上传失败!', false);

        }

    };

    后端修改文件:\RoadFlow.Web\Areas\RoadFlowApi\Controllers\OrganizeController.cs

    image.png

 /// <summary>
        /// 从excel导入用户
        /// </summary>
        /// <returns></returns>
        [HttpPost("ImportUser")]
        [ApiValidate(Url = "/system/organize/index")]
        public string ImportUser()
        {
            string files = Request.FormStr("files");
            long deptId = Request.FormLong("deptId");
            if (string.IsNullOrWhiteSpace(files))
            {
                //返回code 1 文件不存在
                return RoadFlow.Utility.Json.GetResponseJsonString(1);
            }
            string[] fileArray = files.SplitToArray(",");
            foreach (string file in fileArray)
            {
                string filePath = RoadFlow.Utility.Config.SystemConfig.FileDirectory + file.DESDecrypt();
                DataTable dt = RoadFlow.Utility.NPOIHelper.ReadToDataTable(filePath);
                int count = 0;
                foreach (DataRow dr in dt.Rows)
                {
                    string? account = dr[0].ToString();
                    string? name = dr[1].ToString();
                    int gender = dt.Columns.Count > 2 ? dr[2].ToString().ToInt() : 0;
                    if (string.IsNullOrWhiteSpace(account) || string.IsNullOrWhiteSpace(name))
                    {
                        continue;
                    }
                    if (RoadFlow.Service.User.GetByAccount(account) != null)
                    {
                        continue;
                    }
                    RoadFlow.Model.User userModel = new RoadFlow.Model.User
                    {
                        Id = RoadFlow.Utility.IdGenerator.NextId(),
                        Name = name.Trim(),
                        Status = 0,
                        Account = account.Trim(),
                        Gender = gender
                    };
                    userModel.Password = RoadFlow.Service.User.GetInitMD5Password(userModel.Id, out _);
                    RoadFlow.Service.User.Add(userModel, deptId);
                    count++;
                }
                RoadFlow.Service.Log.Add("导入了" + count.ToString() + "名人员", filePath, RoadFlow.Utility.Log.Type.SystemManage, deptId.ToString());
            }
            
            return RoadFlow.Utility.Json.GetResponseJsonString();
        }

2、修改了弹出选择加载标题时由于数据变化可能查询不到的问题。

    修改文件:\RoadFlow.Service\Program.cs 

    image.png

 //2023-7-18增加,如果sql中有where条件就会有可能sql查询结果中没有包含到val值的结果。在后面增加一个or条件,让查询条件成立。
                if (sql.ContainsIgnoreCase(" where "))
                {
                    sql += " or 1=1";
                }

3、升级element-plus到2.3.8。

    npm install element-plus@2.3.8

    升级后如果启动前端报错,则需要修改文件:\RoadFlow.WebUIElement\src\App.vue

    image.png

4、表单设计级联选择Cascader控件增加值类型选项。

    image.png

    可以设置最终选择的值是全路径数组,还是只保存最后一级的选择值。

    修改文件:\RoadFlow.WebUIElement\src\roadui-pages\form\plugins\cascader.vue

    image.png

    image.png

    修改文件:\RoadFlow.WebUIElement\public\roadui-assets\ckeditor\plugins\rf_cascader\plugin.js

    image.png

    修改文件:\RoadFlow.WebUIElement\src\roadui-pages\form\plugins\subtable\cascader.vue

    image.png

    修改文件:\RoadFlow.WebUIElement\src\roadui-pages\form\form-design.js

    image.png

    image.png

5、修改了人员是否属于某个组织的判断方法。

    以前的方法如果组织架构字符串中包含工作组会引起判断错误。

    修改文件:\RoadFlow.Service\User.cs

    image.png

6、修改了vite的配置项错误。

    修改文件:\RoadFlow.WebUIElement\vite.config.js

    image.png

7、修改了应用程序设计导入excel空行判断。

    修改文件:\RoadFlow.Utility\NPOIHelper.cs

    image.png

8、修改了应用程序设计导出excel类型不对出错的问题。

    修改文件:\RoadFlow.Service\Program.cs

    image.png

9、修改了表单设计子表字段大小写问题。

    修改文件:\RoadFlow.WebUIElement\src\roadui-pages\form\form-design.js 

    image.png

    image.png

10、修改了表单设计弹出选择控件可清空。

    修改文件:\RoadFlow.WebUIElement\src\roadui-components\el_selectdiv.vue

    image.png

    image.png

11、增加了移动端子表显示合计。

    修改文件:\RoadFlow.WebUIElement\src\roadui-pages\form\form-design.js

    image.png

  //移动端子表
        html += '<el-table v-if="\'1\'==isMobile" :row-key="function(row){return row.key;}"';
        if (subtableSet.pager) {
            html += ' v-loading="subTableLoading" :data="utils.hasKey(formData,\'' + id + '\')&&utils.isDef(formData[\'' + id + '\'])?formData[\'' + id + '\'].slice(utils.hasKey(subTablePagers,\'' + id + '\')&&utils.isDef(subTablePagers[\'' + id + '\'])?subTablePagers[\'' + id + '\'].start||0:0,utils.hasKey(subTablePagers,\'' + id + '\')&&utils.isDef(subTablePagers[\'' + id + '\'])?subTablePagers[\'' + id + '\'].end||10:10):[]"';
        } else {
            html += ' :data="formData[\'' + id + '\']"';
        }
        if (subtableSet.bordered) {
            html += ' border';
        }
        if (subtableSet.stripe) {
            html += ' stripe';
        }
        if (subtableSet.height) {
            html += ' ' + (utils.isNumberString(subtableSet.height) ? ':' : '') + 'height="' + subtableSet.height + '"';
        }
        if (utils.inArray(columns, true, 'sum')) {
            html += ' show-summary';
            html += ' :summary-method="getSubtableSummaries"';
        }
        html += '>';
        html += '<el-table-column';
        //用class-name属性来标识列要计算合计。
        //labelClassName来记录子表ID,用于子表分页的时候获取子表数据。子表分页时getSummaries参数传的是当前页数据。
        let mClassNames = [];
        for (let i = 0; i < columns.length; i++) {
            if (columns[i].sum) {
                mClassNames.push(columns[i].field+','+utils.replace(columns[i].name, "'", ""));
            }
        }
        html += ' className="' + mClassNames.join(';') + '" labelClassName="' + id + '"';
        html += '>';

    修改文件:\RoadFlow.WebUIElement\src\roadui-pages\flow\run\index.vue

    image.png

   if (isSubtable) {
                        //子表
                        let sumArray = [];
                        if (columns.length > 0) {
                            console.log(columns[0]['className'])
                            let classNameArray = columns[0]['className'].split(';');
                            for (let i = 0; i < classNameArray.length; i++) {
                                let classNameArray1 = classNameArray[i].split(',');
                                let filed = classNameArray1[0];
                                let label = classNameArray1.length > 1 ? classNameArray1[1] : '';
                                if (utils.length(filed) === 0) {
                                    continue;
                                }
                                let sum = 0;
                                for (let j = 0; j < tableData.length; j++) {
                                    sum = utils.accAdd(sum, parseFloat(tableData[j][filed]) || 0);
                                }
                                sumArray.push(label + ': ' + sum);
                            }
                        }
                        return ['合计        ' + sumArray.join('        ')];
                    }

12、修改了移动端消息中心点击待办报错的问题。

    修改文件:\RoadFlow.WebUIMobile\pages\flow\load.vue

    image.png

    image.png

13、修改了子表下拉选择多选时无法加载值的问题。

    修改文件:\RoadFlow.WebUIElement\src\roadui-pages\form\form-design.js

    image.png

14、修改了postgresql流程结束更新标识值时错误。

    修改文件:\RoadFlow.Service\FlowExecute.cs

    image.png

   RoadFlow.Model.DbConnection? dbConnection = RoadFlow.Service.DbConnection.Get(connId);
            if (dbConnection == null)
            {
                return 0;
            }
            Dictionary<string, object> keyValues = new();
            DbType dbType = RoadFlow.Utility.Data.GetDbType(dbConnection.Type);
            if (dbType == DbType.PostgreSQL)
            {
                var fileds = RoadFlow.Service.DbConnection.GetFields(dbConnection, table);
                var pkField = fileds.Where(p => p.Name.EqualsIgnoreCase(key)).FirstOrDefault();
                string pkFieldType = pkField == null ? "int8" : pkField.Type;
                var titleField = fileds.Where(p => p.Name.EqualsIgnoreCase(titleFieldModel.Field)).FirstOrDefault();
                string titleFieldType = titleField == null ? "varchar" : titleField.Type;
                keyValues.Add(titleFieldModel.Field, RoadFlow.Utility.Data.GetPostgreSqlParameterTypeValue(titleFieldType, value, out _));
                keyValues.Add(key, RoadFlow.Utility.Data.GetPostgreSqlParameterTypeValue(pkFieldType, instanceId, out _));
            }
            else
            {
                keyValues.Add(titleFieldModel.Field, value);
                keyValues.Add(key, instanceId);
            }
            return RoadFlow.Service.DbConnection.UpdateData(connId, keyValues, table, key);





联系QQ:493501010电话:136 0832 5512(微信同号)邮箱:road@roadflow.net
Copyright 2014 - 2024 重庆天知软件技术有限公司 版权所有