@choerodon/master
Version:
A package of Master for Choerodon platform.
307 lines (271 loc) • 9.9 kB
JavaScript
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);
}
}
}
};
});