| | |
| | | } |
| | | |
| | | /** |
| | | * @description 获取云端图片真实路径 |
| | | * @return {String} url 图片路径 |
| | | */ |
| | | static getcloudurl (url) { |
| | | if (!url) return '' |
| | | |
| | | let baseurl = '' |
| | | |
| | | if (window.GLOB.cloudServiceApi) { |
| | | baseurl = window.GLOB.cloudServiceApi.replace(/webapi(.*)$/, '') |
| | | } else { |
| | | baseurl = window.GLOB.baseurl |
| | | } |
| | | |
| | | return url.match(/^http/) || url.match(/^\/\//) ? url : baseurl + url |
| | | } |
| | | |
| | | /** |
| | | * @description 获取下拉搜索查询条件 |
| | | * @return {String} item 搜索条件信息 |
| | | */ |
| | |
| | | } |
| | | } else if (typeof(val) === 'string') { |
| | | val = val.replace(/(^\s+$)|\t+|\v+/ig, '') |
| | | if (!val && col.required === 'true') { // 时间必填校验 |
| | | errors.push(_position + '内容不可为空') |
| | | } else if (val && !/^[1-9][0-9]{3}/.test(val)) { // 时间正则校验 |
| | | if (!val) { |
| | | if (col.required === 'true') { // 时间必填校验 |
| | | errors.push(_position + '内容不可为空') |
| | | } else if (col.type === 'date') { |
| | | val = '1949-10-01' |
| | | } else if (col.type === 'datetime') { |
| | | val = '1949-10-01 00:00:00' |
| | | } |
| | | } else if (!/^[1-9][0-9]{3}/.test(val)) { // 时间正则校验 |
| | | errors.push(_position + '时间格式错误') |
| | | } |
| | | } else { // 时间格式错误 |
| | | } else { // 时间格式错误 |
| | | errors.push(_position + '时间格式错误') |
| | | } |
| | | } |
| | |
| | | let _uniquesql = '' |
| | | if (btn.uniques && btn.uniques.length > 0) { |
| | | let textFields = [] |
| | | let numberFields = [] |
| | | let dateFields = [] |
| | | btn.columns.forEach((col) => { |
| | | if (/^Nvarchar/ig.test(col.type)) { |
| | | if (/Nvarchar/ig.test(col.type)) { |
| | | textFields.push(col.Column) |
| | | } else if (/Decimal|int/ig.test(col.type)) { |
| | | numberFields.push(col.Column) |
| | | } else if (/date/ig.test(col.type)) { |
| | | dateFields.push(col.Column) |
| | | } |
| | | }) |
| | | |
| | |
| | | |
| | | let _fields = unique.field.split(',') |
| | | let _fields_ = _fields.map(_field => `a.${_field}=b.${_field}`) |
| | | let _afields = _fields.map(_field => `a.${_field}`) |
| | | |
| | | _fields_ = _fields_.join(' and ') |
| | | |
| | | let _where = [] |
| | | _fields.forEach(f => { |
| | | if (textFields.includes(f)) { |
| | | _where.push(`${f}!=''`) |
| | | } else if (numberFields.includes(f)) { |
| | | _where.push(`${f}!=0`) |
| | | } else if (dateFields.includes(f)) { |
| | | _where.push(`${f}>'1949-10-01'`) |
| | | } |
| | | }) |
| | | _where = _where.length ? `where ${_where.join(' and ')} ` : '' |
| | |
| | | if (unique.verifyType === 'logic' || unique.verifyType === 'logic_temp') { |
| | | _fields_ += ' and b.deleted=0' |
| | | } |
| | | |
| | | let _afields = [] |
| | | _fields = _fields.map(f => { |
| | | if (numberFields.includes(f)) { |
| | | _afields.push(`cast(a.${f} as nvarchar(50))`) |
| | | return `cast(${f} as nvarchar(50))` |
| | | } else if (dateFields.includes(f)) { |
| | | _afields.push(`CONVERT(nvarchar(50), a.${f}, 21)`) |
| | | return `CONVERT(nvarchar(50), ${f}, 21)` |
| | | } |
| | | _afields.push(`a.${f}`) |
| | | |
| | | return f |
| | | }) |
| | | |
| | | _uniquesql += ` |
| | | /* 重复性验证 */ |
| | |
| | | |
| | | let _uniquesql = '' |
| | | if (btn.uniques && btn.uniques.length > 0) { |
| | | let textFields = [] |
| | | let numberFields = [] |
| | | let dateFields = [] |
| | | columns.forEach((col) => { |
| | | if (/Nvarchar/ig.test(col.datatype)) { |
| | | textFields.push(col.field) |
| | | } else if (/Decimal|int/ig.test(col.datatype)) { |
| | | numberFields.push(col.field) |
| | | } else if (/date/ig.test(col.datatype)) { |
| | | dateFields.push(col.field) |
| | | } |
| | | }) |
| | | btn.uniques.forEach(unique => { |
| | | if (unique.status === 'false' || !unique.verifyType) return |
| | | |
| | | let _fields = unique.field.split(',') |
| | | let _fields_ = _fields.map(_field => `a.${_field}=b.${_field}`) |
| | | let _afields = _fields.map(_field => `a.${_field}`) |
| | | _fields_ = _fields_.join(' and ') |
| | | |
| | | let _where = [] |
| | | _fields.forEach(f => { |
| | | if (textFields.includes(f)) { |
| | | _where.push(`${f}!=''`) |
| | | } else if (numberFields.includes(f)) { |
| | | _where.push(`${f}!=0`) |
| | | } else if (dateFields.includes(f)) { |
| | | _where.push(`${f}>'1949-10-01'`) |
| | | } |
| | | }) |
| | | _where = _where.length ? `where ${_where.join(' and ')} ` : '' |
| | | |
| | | if (unique.verifyType === 'logic' || unique.verifyType === 'logic_temp') { |
| | | _fields_ += ' and b.deleted=0' |
| | | } |
| | | |
| | | let _afields = [] |
| | | _fields = _fields.map(f => { |
| | | if (numberFields.includes(f)) { |
| | | _afields.push(`cast(a.${f} as nvarchar(50))`) |
| | | return `cast(${f} as nvarchar(50))` |
| | | } else if (dateFields.includes(f)) { |
| | | _afields.push(`CONVERT(nvarchar(50), a.${f}, 21)`) |
| | | return `CONVERT(nvarchar(50), ${f}, 21)` |
| | | } |
| | | _afields.push(`a.${f}`) |
| | | |
| | | return f |
| | | }) |
| | | |
| | | _uniquesql += ` |
| | | /* 重复性验证 */ |
| | |
| | | end |
| | | |
| | | ${unique.verifyType.indexOf('temp') === -1 ? `Set @tbid='' |
| | | Select top 1 @tbid=${_afields.join('+\' \'+')} from #${sheet} a Inner join ${database}${sheet} b on ${_fields_} |
| | | Select top 1 @tbid=${_afields.join('+\' \'+')} from ${_where ? `(select * from #${sheet} ${_where})` : `#${sheet}`} a Inner join ${database}${sheet} b on ${_fields_} |
| | | |
| | | If @tbid!='' |
| | | Begin |
| | |
| | | if (_key === 'bid' && !_val) { // 表单中没有bid则使用系统bid变量 |
| | | _val = BID |
| | | } |
| | | |
| | | |
| | | _fieldValue.push(`${_key}='${_val}'`) |
| | | _value.push(`${_labels[index] || ''}:${_val || ''}`) |
| | | }) |
| | |
| | | let status = 0 |
| | | let statusName = '' |
| | | let detailId = '' |
| | | let sign = '' |
| | | let error = '' |
| | | let userid = sessionStorage.getItem('UserID') || '' |
| | | let checkIds = [] |
| | | let checkUsers = [] |
| | | let noticeIds = [] |
| | | let work_grade = sessionStorage.getItem('work_grade') || 0 |
| | | |
| | | if (verify.flowType === 'start') { |
| | | target = flow.cells.filter(cell => cell.mknode === 'start')[0] |
| | |
| | | if (verify.flowType === 'reject') { |
| | | line = lines.filter(cell => cell.mkdata.flowType === 'reject' || cell.mknode === 'startEdge')[0] |
| | | } else { |
| | | let endEdge = null |
| | | lines = lines.filter(cell => { |
| | | if (cell.mknode === 'endEdge') { |
| | | endEdge = cell |
| | | return false |
| | | } |
| | | |
| | | return cell.mkdata.flowType !== 'reject' && cell.mknode !== 'startEdge' |
| | | }) |
| | | lines = lines.filter(cell => cell.mkdata.flowType !== 'reject' && cell.mknode !== 'startEdge') |
| | | |
| | | if (lines.length === 0) { |
| | | if (!endEdge) { |
| | | error = '无可执行的流程分支' |
| | | } else { |
| | | line = endEdge |
| | | } |
| | | error = '无可执行的流程分支' |
| | | } else { |
| | | let branchKey = verify.flowBranch ? verify.flowBranch.toLowerCase() : '' |
| | | |
| | |
| | | let _key = form.key.toLowerCase() |
| | | _data[_key] = form.value |
| | | }) |
| | | |
| | | |
| | | if (!branchKey) { |
| | | lines.forEach(line => { |
| | | if (line.mkdata.execCondition === 'open') { |
| | |
| | | } |
| | | }) |
| | | if (!error) { |
| | | line = lines[0] |
| | | lines = lines.filter(cell => { |
| | | if (cell.mkdata.seniorCondition === 'open' && !line) { |
| | | cell.mkdata.seniorbers && cell.mkdata.seniorbers.forEach(per => { |
| | | if (per.worker_id === userid) { |
| | | line = cell |
| | | } |
| | | }) |
| | | |
| | | return false |
| | | } |
| | | |
| | | return true |
| | | }) |
| | | |
| | | if (!line) { |
| | | line = lines[0] |
| | | } |
| | | } |
| | | } else if (!_data.hasOwnProperty(branchKey)) { |
| | | error = '信息中无流程控制字段。' |
| | | } else { |
| | | if (endEdge) { |
| | | line = endEdge |
| | | } |
| | | |
| | | let equalLine = null |
| | | let gtOrLtLine = [] |
| | | let unEqualLine = null |
| | | let _def_lines = [] |
| | | let _equ_lines = [] |
| | | let _unequ_lines = [] |
| | | let _or_lines = [] |
| | | let branchVal = _data[branchKey] |
| | | |
| | | if (branchVal && typeof(branchVal) === 'string' && !isNaN(branchVal)) { |
| | |
| | | |
| | | lines.forEach(item => { |
| | | if (item.mkdata.execCondition !== 'open') { |
| | | line = item |
| | | _def_lines.push(item) |
| | | } else { |
| | | if (item.mkdata.match === '=') { |
| | | if (item.mkdata.matchVal === branchVal + '') { |
| | | equalLine = item |
| | | _equ_lines.push(item) |
| | | } |
| | | } else if (item.mkdata.match === '!=') { |
| | | if (item.mkdata.matchVal !== branchVal + '') { |
| | | unEqualLine = item |
| | | _unequ_lines.push(item) |
| | | } |
| | | } else { |
| | | if (item.mkdata.match === '<') { |
| | | if (item.mkdata.matchVal < branchVal) { |
| | | gtOrLtLine.push({...item, dist: Math.abs(item.mkdata.matchVal - branchVal)}) |
| | | _or_lines.push({...item, dist: Math.abs(item.mkdata.matchVal - branchVal)}) |
| | | } |
| | | } else if (item.mkdata.match === '>') { |
| | | if (item.mkdata.matchVal > branchVal) { |
| | | gtOrLtLine.push({...item, dist: Math.abs(item.mkdata.matchVal - branchVal)}) |
| | | _or_lines.push({...item, dist: Math.abs(item.mkdata.matchVal - branchVal)}) |
| | | } |
| | | } else if (item.mkdata.match === '<=') { |
| | | if (item.mkdata.matchVal <= branchVal) { |
| | | gtOrLtLine.push({...item, dist: Math.abs(item.mkdata.matchVal - branchVal)}) |
| | | _or_lines.push({...item, dist: Math.abs(item.mkdata.matchVal - branchVal)}) |
| | | } |
| | | } else if (item.mkdata.match === '>=') { |
| | | if (item.mkdata.matchVal >= branchVal) { |
| | | gtOrLtLine.push({...item, dist: Math.abs(item.mkdata.matchVal - branchVal)}) |
| | | _or_lines.push({...item, dist: Math.abs(item.mkdata.matchVal - branchVal)}) |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }) |
| | | |
| | | if (equalLine) { |
| | | line = equalLine |
| | | } else if (gtOrLtLine.length > 0) { |
| | | gtOrLtLine.sort((a, b) => a.dist - b.dist) |
| | | line = gtOrLtLine[0] |
| | | } else if (unEqualLine) { |
| | | line = unEqualLine |
| | | _or_lines.sort((a, b) => a.dist - b.dist) |
| | | |
| | | let _lines = [..._equ_lines, ..._or_lines, ..._unequ_lines, ..._def_lines] |
| | | |
| | | _lines = _lines.filter(cell => { |
| | | if (cell.mkdata.seniorCondition === 'open' && !line) { |
| | | cell.mkdata.seniorbers && cell.mkdata.seniorbers.forEach(per => { |
| | | if (per.worker_id === userid) { |
| | | line = cell |
| | | } |
| | | }) |
| | | |
| | | return false |
| | | } |
| | | |
| | | return true |
| | | }) |
| | | |
| | | if (!line) { |
| | | line = _lines[0] |
| | | } |
| | | } |
| | | } |
| | |
| | | detailId = line.id |
| | | status = line.mkdata.status |
| | | statusName = line.mkdata.statusName |
| | | sign = line.mkdata.seniorSign || '' |
| | | target = flow.cells.filter(cell => cell.id === line.target.cell)[0] |
| | | |
| | | line.mkdata.members && line.mkdata.members.forEach(item => { |
| | | if (line.mkdata.approver === 'departmentManager') { |
| | | if (item.job_type === 'manage' && departmentcode === item.parentIds[1]) { |
| | | checkIds.push(item.worker_id) |
| | | checkUsers.push(item) |
| | | } |
| | | } else if (line.mkdata.approver === 'directManager') { |
| | | if (departmentcode === item.parentIds[1] && item.work_grade > work_grade) { |
| | | checkIds.push(item.worker_id) |
| | | checkUsers.push(item) |
| | | } |
| | | } else { |
| | | checkIds.push(item.worker_id) |
| | | checkUsers.push(item) |
| | | } |
| | | }) |
| | | line.mkdata.copys && line.mkdata.copys.forEach(item => { |
| | | noticeIds.push(item.worker_id) |
| | | }) |
| | | |
| | | if (!target) { |
| | | error = '未查询到工作流目标节点' |
| | | } else if (checkIds.length === 0 && !['startEdge', 'endEdge', 'throughEdge'].includes(line.mknode)) { |
| | | error = '未获取到下一步审批人' |
| | | } else if (line.approvalMethod === 'countersign' && (!node.checkIds || !node.checkIds.includes(userid))) { |
| | | error = '当前用户不在审批人列表中' |
| | | } |
| | | } else if (!error) { |
| | | error = '工作流中无对应流程' |
| | | } |
| | |
| | | /* 工作流异常sql */ |
| | | select @ErrorCode='E',@retmsg='${error}' goto aaa |
| | | ` |
| | | } else if (verify.flowSql === 'true' && target) { |
| | | } else if (verify.flowSql === 'true') { |
| | | if (verify.flowType === 'start') { |
| | | _sql += ` |
| | | /* 工作流默认sql */ |
| | |
| | | insert into s_my_works_flow_role (works_flow_id,works_flow_code,userid,works_flow_detail_id,createuserid,CreateUser,CreateStaff,upid,typecharone) |
| | | select @ID@,@works_flow_code@,@userid@,@works_flow_detail_id@,@userid@,@UserName,@FullName,@time_id@,'begin' |
| | | ` |
| | | } else if (line && line.approvalMethod === 'countersign' && (!node.checkIds || !node.checkIds.includes(userid))) { |
| | | status = 0 |
| | | statusName = '异常' |
| | | |
| | | _sql += ` |
| | | /* 工作流异常sql */ |
| | | select @ErrorCode='E',@retmsg='当前用户不在审批人列表中' goto aaa |
| | | ` |
| | | } else if (line && line.approvalMethod === 'countersign' && node.checkIds.length > 1) { |
| | | } else if (line.approvalMethod === 'countersign' && node.checkIds.length > 1) { |
| | | let label = '' |
| | | let field = '' |
| | | let mark = line.mark || '已审核' |
| | |
| | | end |
| | | ` |
| | | } |
| | | } else if (verify.flowSql === 'true') { |
| | | status = 0 |
| | | statusName = '异常' |
| | | |
| | | _sql += ` |
| | | /* 工作流异常sql */ |
| | | select @ErrorCode='E',@retmsg='${error || '工作流执行异常'}' goto aaa |
| | | ` |
| | | } |
| | | |
| | | let checkIds = [] |
| | | let checkUsers = [] |
| | | let work_grade = sessionStorage.getItem('work_grade') || 0 |
| | | if (verify.flowType !== 'start') { |
| | | if (line) { |
| | | let noticeIds = [] |
| | | line.mkdata.members && line.mkdata.members.forEach(item => { |
| | | if (line.mkdata.approver === 'departmentManager') { |
| | | if (item.job_type === 'manage' && departmentcode === item.parentIds[1]) { |
| | | checkIds.push(item.worker_id) |
| | | checkUsers.push(item) |
| | | } |
| | | } else if (line.mkdata.approver === 'directManager') { |
| | | if (departmentcode === item.parentIds[1] && item.work_grade > work_grade) { |
| | | checkIds.push(item.worker_id) |
| | | checkUsers.push(item) |
| | | } |
| | | } else { |
| | | checkIds.push(item.worker_id) |
| | | checkUsers.push(item) |
| | | } |
| | | }) |
| | | line.mkdata.copys && line.mkdata.copys.forEach(item => { |
| | | noticeIds.push(item.worker_id) |
| | | }) |
| | | _sql = _sql.replace(/@check_userids@/ig, `'${checkIds.join(',')}'`) |
| | | _sql = _sql.replace(/@notice_userids@/ig, `'${noticeIds.join(',')}'`) |
| | | } else { |
| | | _sql = _sql.replace(/@check_userids@/ig, `''`) |
| | | _sql = _sql.replace(/@notice_userids@/ig, `''`) |
| | | } |
| | | } else { |
| | | _sql = _sql.replace(/@check_userids@/ig, `''`) |
| | | _sql = _sql.replace(/@notice_userids@/ig, `''`) |
| | | if (_backCustomScript) { |
| | | _sql += _backCustomScript |
| | | } |
| | | |
| | | _sql = _sql.replace(/@works_flow_sign@/ig, `'${sign}'`) |
| | | |
| | | _sql = _sql.replace(/@check_userids@/ig, `'${checkIds.join(',')}'`) |
| | | _sql = _sql.replace(/@notice_userids@/ig, `'${noticeIds.join(',')}'`) |
| | | |
| | | _sql = _sql.replace(/@start_type@/ig, `'开始'`) |
| | | _sql = _sql.replace(/@check_type@/ig, verify.flowType === 'reject' ? `'驳回'` : `'审核'`) |
| | |
| | | _sql = _sql.replace(/@statusname@/ig, `'${statusName}'`) |
| | | _sql = _sql.replace(/@work_group@/ig, `'${sessionStorage.getItem('work_group') || ''}'`) |
| | | _sql = _sql.replace(/@work_grade@/ig, `'${work_grade}'`) |
| | | } |
| | | |
| | | if (_backCustomScript) { |
| | | } else if (_backCustomScript) { |
| | | _sql += _backCustomScript |
| | | } |
| | | |