UNPKG

@choerodon/master

Version:
307 lines (271 loc) 9.9 kB
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } import queryString from 'query-string'; import { DataSet } from 'choerodon-ui/pro/lib'; import moment from 'moment'; import { PROJECT_TYPE } from "../constant"; import axios from "../../../../../../components/axios"; // 项目编码只能由小写字母、数字、"-"组成,且以小写字母开头,不能以"-"结尾且不能连续出现两个"-" /^[a-z](([a-z0-9]|-(?!-))*[a-z0-9])*$/ // 项目名称只能由汉字、字母、数字、"_"、"."、"-"、"——"和空格组成 /^[-—\.\w\s\u4e00-\u9fa5]{1,32}$/ // 瀑布项目 结项时间最小为今天+1, 立项时间与结项时间最小间隔一天 var nameValidator = function nameValidator(value) { if (!value) { return '名称必输。'; } if (value.trim() === '') { return '名称不能全为空。'; } if (value.length > 110) { return '名称长度不能超过110!'; } // eslint-disable-next-line no-useless-escape var reg = /^[-—.\w\s\u0800-\u9fa5]{1,110}$/; if (!reg.test(value)) { return '名称只能由汉字、字母、数字、"_"、"."、"-"、"——"和空格组成'; } return true; }; var statusDs = new DataSet({ autoQuery: false, selection: false, fields: [{ name: 'key', type: 'string' }, { name: 'value', type: 'string' }], data: [{ key: 'true', value: '启用' }, { key: 'false', value: '停用' }] }); export default (function (AppState, history, categoryDs) { var codeValidator = /*#__PURE__*/function () { var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(value, name, record) { var reg, _AppState$currentMenu, id, type, organizationId, apiOrgId, url, params, res; return regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: if (!(record.status !== 'add')) { _context.next = 2; break; } return _context.abrupt("return", true); case 2: if (value) { _context.next = 4; break; } return _context.abrupt("return", '请输入编码。'); case 4: if (!(value.length > 14)) { _context.next = 6; break; } return _context.abrupt("return", '编码长度不能超过14!'); case 6: if (!(value.trim() === '')) { _context.next = 8; break; } return _context.abrupt("return", '编码不能全为空!'); case 8: // eslint-disable-next-line no-useless-escape reg = /^[a-z]([\-/a-z0-9]*[a-z0-9])?$/; if (reg.test(value)) { _context.next = 11; break; } return _context.abrupt("return", '编码只能由小写字母、数字、"-"组成,且以小写字母开头,不能以"-"结尾且不能连续出现两个"-"。'); case 11: _context.prev = 11; _AppState$currentMenu = AppState.currentMenuType, id = _AppState$currentMenu.id, type = _AppState$currentMenu.type, organizationId = _AppState$currentMenu.organizationId; apiOrgId = organizationId; if (type === 'organization') { apiOrgId = id || organizationId; } else if (type === 'project') { apiOrgId = organizationId; } url = name === 'code' ? "/iam/choerodon/v1/organizations/".concat(apiOrgId, "/projects/check") : "/iam/choerodon/v1/organizations/".concat(apiOrgId, "/applications/check/").concat(value); params = { code: value }; _context.next = 19; return axios({ method: name === 'code' ? 'post' : 'get', url: url, data: name === 'code' ? params : undefined }); case 19: res = _context.sent; if (!(res === false)) { _context.next = 22; break; } return _context.abrupt("return", '项目编码已存在'); case 22: if (!(res && res.failed)) { _context.next = 24; break; } return _context.abrupt("return", res.message); case 24: return _context.abrupt("return", true); case 27: _context.prev = 27; _context.t0 = _context["catch"](11); return _context.abrupt("return", '编码已存在或编码重名校验失败,请稍后再试'); case 30: case "end": return _context.stop(); } } }, _callee, null, [[11, 27]]); })); return function codeValidator(_x, _x2, _x3) { return _ref.apply(this, arguments); }; }(); return { autoQuery: false, selection: false, paging: false, transport: { read: { method: 'get' }, submit: function submit(_ref2) { var dataSet = _ref2.dataSet; return { url: "/iam/choerodon/v1/organizations/".concat(queryString.parse(history.location.search).organizationId, "/projects/").concat(dataSet.current.get('id')), method: 'put', data: dataSet.current.toData() }; } }, fields: [{ name: 'name', type: 'string', label: '项目名称', required: true, validator: nameValidator }, { name: 'code', type: 'string', label: '项目编码', required: true, validator: codeValidator }, { name: 'enabled', type: 'boolean', label: '项目状态' }, // { name: 'applicationCode', type: 'string', label: '应用编码', required: true, validator: codeValidator }, // { name: 'applicationName', type: 'string', label: '应用名称', required: true, validator: nameValidator }, { name: 'category', type: 'string', label: '项目类型', required: true, textField: 'name', valueField: 'code', options: categoryDs, defaultValue: 'GENERAL' }, { name: 'programName', type: 'string', label: '项目群' }, { name: 'createUserName', type: 'string', label: '创建人' }, { name: 'createUserImageUrl', type: 'string' }, { name: 'startTime', type: 'date', label: '立项时间', dynamicProps: { required: function required(_ref3) { var record = _ref3.record; var waterfallTimeRequired = record.get('waterfallTimeRequired'); return typeof waterfallTimeRequired !== 'undefined' ? waterfallTimeRequired : record.get('category') === 'WATERFALL'; }, max: function max(_ref4) { var record = _ref4.record; var endDate = record.get('endTime'); return endDate ? moment(endDate, 'YYYY-MM-DD').subtract(1, 'day') : undefined; } } }, { name: 'endTime', type: 'date', label: '结项时间', dynamicProps: { required: function required(_ref5) { var record = _ref5.record; var waterfallTimeRequired = record.get('waterfallTimeRequired'); return typeof waterfallTimeRequired !== 'undefined' ? waterfallTimeRequired : record.get('category') === 'WATERFALL'; }, min: function min(_ref6) { var record = _ref6.record; var startDate = record.get('startTime'); return startDate ? moment.max(moment(startDate, 'YYYY-MM-DD').add(1, 'day'), moment(moment().add(1, 'day').format('YYYY-MM-DD'), 'YYYY-MM-DD')) : moment(moment().add(1, 'day').format('YYYY-MM-DD'), 'YYYY-MM-DD'); } } }, { name: 'creationDate', type: 'date', label: '创建时间' }, { name: 'creationDate', type: 'date', label: '创建时间' }, { name: 'createType', type: 'string' }, { name: 'createByExist', type: 'number' }], queryFields: [{ name: 'name', type: 'string', label: '项目名称' }, { name: 'code', type: 'string', label: '项目编码' }, { name: 'category', type: 'string', label: '项目类型', textField: 'name', valueField: 'code', options: categoryDs }, { name: 'enabled', type: 'auto', label: '状态', textField: 'value', valueField: 'key', options: statusDs }], events: { update: function update(_ref7) { var record = _ref7.record, name = _ref7.name, value = _ref7.value; if (record.status === 'add' && name === 'code' && !record.get('applicationCode')) { record.set('applicationCode', value); } if (record.status === 'add' && name === 'name' && !record.get('applicationName')) { record.set('applicationName', value); } } } }; });