ebu_ecology_dev1/常用信息.md

11 KiB
Raw Blame History

常用的数据信息

其他

维护人员: youhong.ai

  • 缓存地址: /commcache/cacheMonitor.jsp
  • 移动端流程模拟地址: /spa/workflow/static4mobile/index.html#/center/doing

操作

设置邮箱和用户名

# 设置用户名
git config --global user.name "username" 
# 设置邮箱
git config --global user.email "useremail@email.email" 

一个简单的操作步骤:

$ git init    
$ git add .    
$ git commit  

git init - 初始化仓库。 git add . - 添加文件到暂存区。 git commit - 将暂存区内容添加到仓库中。

创建分支

git checkout -b 分支名称

它是下面两条命令的简写:

# 创建分支
git branch 分支名称
# 切换分支
git checkout 分支名称

git提交暂存区

git commit -m "提交描述"

git提交代码到远程

git push 远程服务名称 分支名称
# 示例
# git push origin dev

git拉去服务端代码

git pull 远程服务名称 分支名称
# 示例
# git pull origin dev

移动端模拟地址

描述 移动端模拟地址
流程代办页面 /spa/workflow/static4mobile/index.html#/center/doing
工作台 /spa/coms/static4mobile/index.html#/menu-preview?id=appDefaultPage&checkAccess=1
新建流程 /spa/workflow/static4mobile/index.html#/add
日程 /spa/workplan/static4mobile/index.html#/calendar/myCalendar
我的请求 /spa/workflow/static4mobile/index.html#/center/mine

常用代码

前端

1.获取用户信息

维护人员youhong.ai

const userInfo = JSON.parse(localStorage.getItem("theme-account"))

2.ecode访问上传的resource静态文件

let src = "/cloudstore/release/${appId}/resources/"

3.获取url参数

维护人员: youHong.ai

getQueryString = (name) => {
    let reg = new RegExp("(^|&|\/?)" + name + "=([^&]*)(&|$)", "i");
    let searchStr = window.location.href
    if (searchStr.startsWith('&')) {
        searchStr = searchStr.substr(1)
    }
    search = searchStr.match(reg)
    if (search != null) {
        return unescape(search[2]);
    }
    return null;
}

4.ajax请求

维护人员: youHong.ai

  class ApiUtils {
    static request = (url, type = "GET", data, isAsync = true, success = () => {
    }, error = () => {
    }, complete = () => {
    }, contentType = 'application/json', beforeSend = () => {
    }) => {
        let options = {
            url,
            type,
            dataType: "json",
            contentType,
            async: isAsync,
            data,
            beforeSend,
            success,
            error,
            complete,
        }
        if (contentType == 'application/json') {
            options.data = JSON.stringify(data)
        }
        return $.ajax(options)
    }

}

5.通过js获取react组件操作组件内部数据

function findReact(dom, traverseUp = 0) {
    const key = Object.keys(dom).find(key => {
        return key.startsWith("__reactFiber$") // react 17+
            || key.startsWith("__reactInternalInstance$"); // react <17
    });
    const domFiber = dom[key];
    if (domFiber == null) return null;

    // react <16
    if (domFiber._currentElement) {
        let compFiber = domFiber._currentElement._owner;
        for (let i = 0; i < traverseUp; i++) {
            compFiber = compFiber._currentElement._owner;
        }
        return compFiber._instance;
    }

    // react 16+
    const GetCompFiber = fiber => {
        let parentFiber = fiber.return;
        while (typeof parentFiber.type == "string") {
            parentFiber = parentFiber.return;
        }
        return parentFiber;
    };
    let compFiber = GetCompFiber(domFiber);
    for (let i = 0; i < traverseUp; i++) {
        compFiber = GetCompFiber(compFiber);
    }
    return compFiber.stateNode;
}

// 用法
const someElement = document.getElementById("someElement");
const myComp = FindReact(someElement);
myComp.setState({test1: test2});

6.ecode集成iconfont

/*修改url字体文件上传到cloudstore/iconfont/xx/下,没有目录自己创建*/
/*修改font-family,命名为其他名称防止与系统自带的或与其他iconfont冲突并将修改后的css文件内容copy到ecode中将文件夹发布并且将css样式文件前置加载*/
@font-face {
    font-family: "cus_iconfont"; /* Project id 3789451 */
    src: url('/cloudstore/iconfont/pcn/iconfont.woff2?t=1669223019749') format('woff2'),
    url('/cloudstore/iconfont/pcn/iconfont.woff?t=1669223019749') format('woff'),
    url('/cloudstore/iconfont/pcn/iconfont.ttf?t=1669223019749') format('truetype');
}

/*修改iconfont类名为font-family的名称*/
.cus_iconfont {
    font-family: "cus_iconfont" !important;
    font-size: 16px;
    font-style: normal;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

7.ecode组件样式引入(非前值加载)

维护人员 youhong.ai

在ecode开发时需要编写css样式文件但是偶尔会出现className与其他组件的className一样导致样式发生覆盖或影响原来的组件的样式前置加载会将css文件合并到init。css中并且会全局引入所以可能会造成样式污染 在ecode中找到config文件夹找到config.js文件可以看到的是js文件属于前置加载我们只需要在这个js文件中将css文件动态添加到页面中就可以了


$(() => {
    if (window.location.hash.indexOf("${appId}_") !== -1) {
        loadCssArr(['index.css'])
        /* ******************** 下面两个文件为开发新页面时候如果用户登陆超时用于集成系统登陆弹窗的依赖和css样式文件 ******************* */
        // loadJs('/spa/portal/public/index.js')
        // loadCss('/spa/portal/public/index.css')
        //     使用方法当请求结果返回的errorCode === '002',然后调用下面的方法
        // doLoginPop()
    }
})

/**
 * 加载当前appId下的css资源文件
 * @param cssArr css文件名称数组 所有的css会被合并为index.css
 */
function loadCssArr(cssArr) {
    cssArr.forEach(item => {
        let href = '/cloudstore/release/${appId}/' + item;
        loadCss(href)
    })
}


/**
 * 加载自定义的css样式文件可以用于加载上传到resources文件加下的css文件需要自己拼接路径
 * @param url 样式文件的路径
 */
function loadCss(url) {
    const head = document.getElementsByTagName('head')[0];
    const link = document.createElement('link');
    link.type = 'text/css';
    link.rel = 'stylesheet';
    link.href = url;
    head.appendChild(link);
}

/**
 * 加载当前ecode文件夹下的js文件一般js文件会被打包成index.js文件
 * @param jsArr js文件名数组
 */
function loadJsArr(jsArr) {
    jsArr.forEach(item => {
        let src = href = '/cloudstore/release/${appId}/' + item;
        loadJs(src)
    })
}

/**
 * 加载自定义js文件可用于加载第三方js库
 * @param url js文件路径
 * @param callback 加载完成后回调方法
 */
function loadJs(url, callback) {
    let script = document.createElement('script'),
        fn = callback || function () {
        };
    script.type = 'text/javascript';
    //IE
    if (script.readyState) {
        script.onreadystatechange = function () {
            if (script.readyState == 'loaded' || script.readyState == 'complete') {
                script.onreadystatechange = null;
                fn();
            }
        };
    } else {
        //其他浏览器
        script.onload = function () {
            fn();
        };
    }
    script.src = url;
    document.getElementsByTagName('head')[0].appendChild(script);
}

ecode 多语言切换

ecCom.WeaLocaleProvider.getLocaleLabelByCode(module).then(() => {//多语言获取成功,此处重绘页面
})

WeaverMobile.Tools.getLocaleLabel(module, () => {
    console.log("请求成功")
})
// 移动端引入组件库多语言信息放在componentDidMount执行
WeaverMobile.Tools.getLocaleLabel("common", () => {
    this.forceUpdate();
})

// 使用多语言
WeaverMobile.Tools.getLabel(i18nId, text)

数据库

备份mysql数据库

维护人员: youHong.ai

mysqldump -uroot -p'passowrd' --single-transaction -ApiResult -E --databases ecology_dev> /tmp/ecology_dev_back.sql

常用视图

请查询查看项目根目录下的相关视图文件

后端

1.后端根据请求获取登录用户信息

维护人员xuanran.wang

//@Context HttpServletRequest request, @Context HttpServletResponse response
User logInUser=HrmUserVarify.getUser(request,response);
		// 传入id会将此人员信息带出
		User user=new User(id);
		// 获取人员id
		user.getUID();

2.发送邮件

维护人员xuanran.wang

/**
 * <h1>发送邮件</h1>
 * @param address 邮箱地址
 * @param title 标题
 * @param content 正文
 **/
EmailWorkRunnable.threadModeReminder(address,title,content);

维护人员: youHong.ai

/**
 * <h2>发送附件邮件</h2>
 * @param sendTo  收件人邮箱地址(多个值之间用英文逗号分隔)
 * @param sendCc  抄送人邮箱地址(多个值之间用英文逗号分隔)
 * @param sendBcc  密送人邮箱地址(多个值之间用英文逗号分隔)
 * @param subject  主题
 * @param content  内容
 * @param imageFileIds 附件id
 */
EmailWorkRunnable.threadModeReminder(sendTo,sendCc,sendBcc,subject,content,imageFileIds);

或者

/*
  @param sendTo  收件人邮箱地址(多个值之间用英文逗号分隔)
  @param sendCc  抄送人邮箱地址(多个值之间用英文逗号分隔)
  @param sendBcc  密送人邮箱地址(多个值之间用英文逗号分隔)
  @param subject  主题
  @param content  内容
  @param imageFileIds 附件id
 */
EmailWorkRunnable emailWorkRunable=new EmailWorkRunnable(sendTo,sendCc,sendBcc,subject,content);
		emailWorkRunable.setImagefileids(imageFileIds);
		MailCommonUtils.executeThreadPool(EmailPoolSubTypeEnum.EMAIL_SYS_ALTER.toString(),emailWorkRunable);

3.短信服务

维护人员xuanran.wang

public class SendSms implements SmsService {
	@Override
	public boolean sendSMS(String smsId, String number, String msg) {
		//执行短信调用接口逻辑
		return SMSUtil.sendSms(number, msg, url, sn, pwd);
	}
}

4.三方插件文档转PDF(培训群找过来的)

维护人员xuanran.wang

//wps转PDF
DocImagefileToPdfUseWps toPdfUseWps=new DocImagefileToPdfUseWps();
		newimagefileid=toPdfUseWps.officeDocumetnToPdfByImagefileid(docimagefileid);
		
		//永中转PDF
		DocImagefileToPdf yozoToPdf=new DocImagefileToPdf();
		newimagefileid=yozoToPdf.officeDocumetnToPdfByImagefileid(docimagefileid);