ebu_ecology_dev1/javascript/youhong.ai/fentian/ecode/workflow_controller.js

179 lines
4.9 KiB
JavaScript

/* ******************* 丰田纺织流程代码块 可选择流程中的字段配置流程标题生成规则******************* */
class ConfigWorkflowTitle {
constructor(config) {
this.config = config
}
/**
* 初始化参数
*/
init = () => {
let baseInfo = WfForm.getBaseInfo();
if (baseInfo.workflowid != this.config.workflowId) {
return
}
let filedArr = []
this.config.rules.filter(item => item.type === RulesType.FIELD_VALUE
|| item.type === RulesType.SELECT_VALUE
|| item.type === RulesType.RADIO_VALUE).forEach(item => filedArr.push(item.fieldName))
this.addListenerEvent(filedArr)
this.addListenerSubmitEvent()
}
/**
* 监听提交流程动作
*/
addListenerSubmitEvent = () => {
Utils.registerAction(WfForm.OPER_SAVE + "," + WfForm.OPER_SUBMIT, callback => {
this.changeWorkflowTitle()
callback()
})
}
/**
* 修改流程标题字段值
*/
changeWorkflowTitle = () => {
let workflowTitle = []
this.config.rules.forEach(item => {
workflowTitle.push(item.type.run(item))
})
WfForm.changeFieldValue(this.config.titleFieldName === 'field-1' ? 'field-1' :
Utils.convertNameToIdUtil(this.config.titleFieldName), {
value: workflowTitle.join("")
})
}
/**
* 添加监听方法
* @param fileNameArr 需要监听的字段数组
*/
addListenerEvent = (fileNameArr) => {
console.log(Utils.convertNameToIdUtil(fileNameArr))
WfForm.bindFieldChangeEvent(Utils.convertNameToIdUtil(fileNameArr), (obj, id, value) => {
this.changeWorkflowTitle()
})
}
}
class RulesType {
// 固定值
static FIX_STRING = {
value: 0,
run: item => item.value
}
// 字段值
static FIELD_VALUE = {
value: 1,
run: item => Utils.getFiledValueByName(item.fieldName)
}
// 下拉框显示值
static SELECT_VALUE = {
value: 2,
run: item => $(`div[data-fieldname='${item.fieldName}'] .ant-select-selection-selected-value`).text()
}
// 单选按钮
static RADIO_VALUE = {
value: 3,
run: item => $(`div[data-fieldname='${item.fieldName}'] .ant-radio.ant-radio.ant-radio-checked.ant-radio-checked`).next().text()
}
// 当前日期 yyyy-mm-dd
static CURRENT_DATE = {
value: 4,
run: () => {
const date = new Date();
let year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDay();
if (month < 10) {
month = '0' + month
}
if (day < 10) {
day = '0' + day
}
return year + "-" + month + "-" + day
}
}
// 当前时间 HH:mm:ss
static CURRENT_TIME = {
value: 5,
run: () => {
const date = new Date();
let hours = date.getHours();
let minutes = date.getMinutes();
let seconds = date.getSeconds();
return hours + ":" + minutes + ":" + seconds
}
}
// 当前年份
static CURRENT_YEAR = {
value: 6,
run: () => new Date().getFullYear()
}
// 当前月份
static CURRENT_MONTH = {
value: 7,
run: () => new Date().getMonth() + 1 < 10 ? new Date().getMonth() + 1 : '0' + new Date().getMonth() + 1
}
// 当前天数
static CURRENT_DAY = {
value: 8,
run: () => new Date().getDay() < 10 ? new Date().getDay() : '0' + new Date().getDay()
}
// 当前小时
static CURRENT_HOUR = {
value: 9,
run: () => new Date().getHours()
}
// 当前分钟
static CURRENT_MINUTE = {
value: 10,
run: () => new Date().getMinutes()
}
// 当前秒数
static CURRENT_SECOND = {
value: 11,
run: () => new Date().getSeconds()
}
// 当前时间戳
static CURRENT_TIME_STAMP = {
value: 12,
run: () => new Date().getTime()
}
// 流水号
static RANDOM = {
value: 13,
run: item => {
let result = []
let range = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
for (let i = 0; i < item.length; i++) {
let index = parseInt(Math.random(0, 10) * 10)
result.push(range[index])
}
return result.join("")
}
}
static BROWSER_SHOW_NAME = {
value: 14,
run: item => {
let fieldId = Utils.convertNameObjToId(item.fieldName)
return WfForm.getBrowserShowName(fieldId)
}
}
}
window.RulesType = RulesType
window.ConfigWorkflowTitle = ConfigWorkflowTitle
/* ******************* 可选择流程中的字段配置流程标题生成规则 end ******************* */