form-create-designer-ant
Version:
由@form-create/designer修改而来,基于ant design组件
238 lines (218 loc) • 7.97 kB
JavaScript
export function makeOptionsRule(to) {
return {
type: 'radio',
title: '选项数据',
field: '_optionType',
value: 0,
options: [
{'label': '静态数据', 'value': 0},
{'label': '字典数据', 'value': 1},
],
props: {
type: 'button'
},
control: [
{
value: 0,
rule: [
{
type: 'Struct',
field: 'formCreate'+ upper(to).replace('.', '>'),
props: {defaultValue: [{value: '1', label: '选项1'},
{value: '2', label: '选项2'}]}
},
],
},
{
value: 1,
rule: [
{
type:'select',
field:'formCreateDict'+ upper(to).replace('.', '>'),
title:'选择字典项',
value:'',
options: getDictType(),
}
]
}
]
};
}
import axios from 'axios';
import Vue from 'vue';
export const dictOriginDataKey = 'UI_CACHE_DB_DICT_DATA';
export const dictStructDataKey = 'UI_CACHE_DB_DICT_STRUCT_DATA';
export const dictTypeDataKey = 'UI_CACHE_DB_DICT_TYPE_DATA';
export const formSearchUrl = 'http://localhost:8080/biz-table/search';
export const userSearchUrl = 'http://localhost:8080/user/search';
export const formDataSearchUrl = 'http://localhost:8080/biz-table-data/search';
export const fileUploadUrl = ()=>{ return Vue.lsl.get('FILE_UPLOAD_URL')?window._CONFIG['domianURL']+Vue.lsl.get('FILE_UPLOAD_URL'):'http://localhost:8080/file/upload'; };
// export const fileUploadUrl = '/file/upload';
export const requestHeaders = ()=> { return{
token: Vue.lsl.get('Access-Token')
}; };
export const handleUpload = (callback)=>{
console.log('handleUpload');
if(callback)callback();
};
export const fetchForm = ()=>{ return{
action: formSearchUrl,
to: 'options',
method:'POST',
headers: requestHeaders(),
data:{},
dataType:'json',
parse: (result,rule,fApi)=>{
Vue.lsl.set('Forms',result);
let formId = fApi.getValue('formId');
if(formId){
let options = getFieldsByFormId(formId);
fApi.updateRule('labelCol',{options:options});
}
return result.data.map(item=>{
return {
label: item.formName,
value: item.id
};
});
},
onError:(e)=>{
Vue.prototype['$message'].error('发生错误'+e.message);
}
}; };
export const getFieldsByFormId = (formId)=>{
console.log('formid',formId);
console.log('forms ', Vue.lsl.get('Forms'));
let options = JSON.parse(Vue.lsl.get('Forms').data.filter((f)=>{
return f.id == formId;
})[0].definition).rule.map((r)=>{
return {
label: r.title,
value: r.field,
id: r.field
};
});
console.log('selectedForm',options);
return options;
};
export const fetchFormFields = (params)=>{ return{
action: formSearchUrl,
to: 'options',
method:'POST',
headers: requestHeaders(),
data:params,
dataType:'json',
parse: (result,rule,fApi)=>{
return result.data.map(item=>{
return {
label: item.formName,
value: item.id
};
});
},
onError:(e)=>{
Vue.prototype['$message'].error('发生错误'+e.message);
}
}; };
export function upper(str) {
return str.replace(str[0], str[0].toLocaleUpperCase());
}
export function setDictsCache(){
//return [{label:'dict1',value:['v1','v2']},{label:'dict2',value:['v3','v4']}];
let cachedDicts = Vue.lsl.get(dictOriginDataKey);
// console.log('cachedDicts',cachedDicts);
if(!cachedDicts) return [];
let newArr = [];
let dictArr = [];
cachedDicts.forEach(element => {
let dictTypeCode = element.typeCode;
let dictTypeName = element.dictTypeName;
let containsType = dictArr.filter(item=>item.key==dictTypeCode).length>0;
if(!containsType){
dictArr.push({key:dictTypeCode,label:dictTypeName,value:dictTypeCode});
}
// console.log('item',element);
let newArrItem = newArr.filter(item=>item.key==dictTypeCode);
let contains = newArrItem.length>0;
// console.log('newArr',newArr);
let childObj = {key:element.id,value:element.dictCode,label:element.dictName};
if(contains)
{
// console.log('newArrItem',newArrItem);
newArrItem[0].value.push(childObj);
// console.log('newArrItem-asfterPush',newArrItem);
}
else
{
let parentObj = {key:dictTypeCode,value:[],label:dictTypeName};
parentObj.value.push(childObj);
newArr.push(parentObj);
}
});
Vue.lsl.set(dictStructDataKey,newArr);
Vue.lsl.set(dictTypeDataKey,[...new Set(dictArr)]);
}
export function getDictType(){
let dictTypeData = Vue.lsl.get(dictTypeDataKey);
if(!dictTypeData || dictTypeData.length==0) return [];
return dictTypeData;
}
export function getDictStructData(){
let dictStructData = Vue.lsl.get(dictStructDataKey);
if(!dictStructData || dictStructData.length==0) return [];
return dictStructData;
}
export function getCachedDictData(){
let dictCachedData = Vue.lsl.get(dictOriginDataKey);
if(!dictCachedData || dictCachedData.length==0) return [];
return dictCachedData;
}
export function getDictTypeItems(dictTypeCode){
let dictStructData = getDictStructData();
let items = dictStructData.filter(item=>item.key==dictTypeCode);
if(items && items.length>0) return items[0].value;
return [];
}
export function getUserList(pageIndex,pageSize,params){
return axios.post(userSearchUrl,Object.assign(params,{pageIndex:pageIndex,pageSize:pageSize}),{headers:requestHeaders()});
}
export function getFromDataList(pageIndex,pageSize,params){
return axios.post(formDataSearchUrl,Object.assign(params,{pageIndex:pageIndex,pageSize:pageSize}),{headers:requestHeaders()});
}
export function uploadExtentions(){
return '.jpeg,.jpg,.gif,.png,.pdf,.doc.docx,.xls,.xlsx,.ppt,.pptx,.txt,.7z,.zip,.rar';
}
export function previewSupportFileTypes(){
return '.jpeg,.jpg,.gif,.png,.pdf';
}
export function downFile(url, parameter, method) {
return axios({
url: url,
method: method ? method :'get',
data: parameter,
responseType: 'blob',
headers:requestHeaders()
});
}
export function downloadFile(url, fileName, parameter) {
return downFile(url, parameter).then((data) => {
let type = data.headers.content-type;
if (!data.data || data.data.size === 0) {
Vue.prototype['$message'].warning('文件下载失败');
return;
}
if (typeof window.navigator.msSaveBlob !== 'undefined') {
window.navigator.msSaveBlob(new Blob([data.data],{type: type}), fileName);
} else {
let url = window.URL.createObjectURL(new Blob([data.data],{type: type}));
let link = document.createElement('a');
link.style.display = 'none';
link.href = url;
link.setAttribute('download', fileName);
document.body.appendChild(link);
link.click();
document.body.removeChild(link); //下载完成移除元素
window.URL.revokeObjectURL(url); //释放掉blob对象
}
});
}