123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- import mockjs from 'mockjs';
- const Random = mockjs.Random;
- export default (column, dic) => {
- let form = {};
- function createName({ en }) {
- if (en) {
- return Random.name(true);
- }
- return Random.cname();
- }
- function createNumber({ max, min, precision }) {
- if (precision) {
- const number = Random.float(min, max, precision) + '';
- const index = number.indexOf('.') + 1;
- return Number(number.substring(0, index + precision));
- } else {
- return Random.integer(min, max)
- }
- }
- function createUrl({ header, footer }) {
- let url = Random.url();
- const index = url.indexOf('://');
- if (header === false) {
- url = url.substring(index + 3);
- } else {
- url = 'http://' + url.substring(index + 3);
- }
- return url;
- }
- function createDatetime({ format, now }) {
- if (now) {
- return Random.now(format)
- }
- return Random.datetime(format)
- }
- function createText({ min, max }) {
- return Random.csentence(min, max)
- }
- function createCounty() {
- return Random.county(true);
- }
- function createDic({ dic, props, columnType, multiple }) {
- const value = props.value || 'value';
- const len = dic.length;
- if (['checkbox'].includes(columnType) || multiple) {
- const number = createNumber({
- min: 1,
- max: len
- });
- let result = [];
- for (let i = 0; i < number; i++) {
- let flag = true;
- while (flag) {
- const numbers = createNumber({
- min: 0,
- max: len - 1
- });
- const values = dic[numbers][value];
- if (!result.includes(values)) {
- result.push(values);
- flag = false;
- }
- }
- }
- return result;
- } else {
- const number = createNumber({
- min: 0,
- max: len - 1
- });
- return dic[number][value];
- }
- }
- function create() {
- Object.keys(column).forEach(index => {
- const ele = column[index];
- if (ele.mock && typeof ele.mock === 'object') {
- let params = ele.mock;
- params.dic = typeof ele.dicData === 'string' ? dic[ele.dicData] : (ele.dicData || []);
- params.props = ele.props || {};
- params.columnType = ele.type;
- params.multiple = ele.multiple;
- switch (params.type) {
- case 'name':
- form[ele.prop] = createName(params);
- break;
- case 'number':
- form[ele.prop] = createNumber(params);
- break;
- case 'datetime':
- form[ele.prop] = createDatetime(params);
- break;
- case 'word':
- form[ele.prop] = createText(params);
- break;
- case 'url':
- form[ele.prop] = createUrl(params);
- break;
- case 'county':
- form[ele.prop] = createCounty(params);
- break;
- case 'dic':
- form[ele.prop] = createDic(params);
- break;
- }
- }
- })
- }
- create();
- return form;
- }
|