From 8e13a2190b88fb8179b949bd9a4daabc3e540ef6 Mon Sep 17 00:00:00 2001
From: joylink_cuiweidong <364937672@qq.com>
Date: Wed, 7 Apr 2021 13:54:55 +0800
Subject: [PATCH] =?UTF-8?q?iscs=20=E4=BB=A3=E7=A0=81=E8=B0=83=E6=95=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/iscs_new/core/form/builderFactory.js | 29 ++-
src/iscs_new/core/form/elementConst.js | 290 +++++++++++----------
src/iscs_new/core/form/form2Base.js | 48 ++--
src/iscs_new/core/form/form2ShapeStyle.js | 232 ++++++++---------
src/views/iscs_new/components/dataForm.vue | 15 +-
src/views/iscs_new/iscsDraw/index.vue | 113 ++++----
6 files changed, 382 insertions(+), 345 deletions(-)
diff --git a/src/iscs_new/core/form/builderFactory.js b/src/iscs_new/core/form/builderFactory.js
index 22d525f52..da48db832 100644
--- a/src/iscs_new/core/form/builderFactory.js
+++ b/src/iscs_new/core/form/builderFactory.js
@@ -5,7 +5,7 @@ class BuilderFactory {
this.formList = [];
}
getFormList() {
- const elementList = elementConst.elementsList;
+ const elementList = Object.values(elementConst);
elementList.forEach(element=>{
const temp = Object.assign({}, element);
@@ -14,13 +14,32 @@ class BuilderFactory {
temp.rules = {};
// 添加通用配置
- temp.formGroup.push({name:'通用配置', code:'base', styleList:form2Base});
+ temp.model['base'] = {};
+ temp.rules['base'] = {};
form2Base.forEach(each=>{
- temp.model[each.prop] = each.defValue;
- temp.rules[each.prop] = each.rules;
+ temp.model['base'][each.prop] = each.value;
+ if (each.rules) {
+ each.required = true;
+ temp.rules['base'][each.prop] = each.rules;
+ }
});
+ temp.formGroup.push({name:'通用配置', code:'base', styleList:form2Base});
+
+ // 添加样式配置 样式
+ temp.model['style'] = {};
+ temp.rules['style'] = {};
+ const styleList = element.formList.style;
+ styleList.forEach(each=>{
+ temp.model['style'][each.prop] = each.value;
+ if (each.rules) {
+ each.required = true;
+ temp.rules['style'][each.prop] = each.rules;
+ }
+ });
+ temp.formGroup.push({name:'样式配置', code:'style', styleList:styleList});
+ // shape
+ // element
- // 添加绘图配置 shape
// temp.formGroup.push({name:'绘图配置', code:'shape', styleList:form2Base});
// temp.rules
// let ClassName=element.code;
diff --git a/src/iscs_new/core/form/elementConst.js b/src/iscs_new/core/form/elementConst.js
index e085478ad..d426fa2d8 100644
--- a/src/iscs_new/core/form/elementConst.js
+++ b/src/iscs_new/core/form/elementConst.js
@@ -1,163 +1,167 @@
import * as graphic from '../../core/graphic';
-
+import form2ShapeStyle from './form2ShapeStyle';
const graphicType = Object.fromEntries(Object.keys(graphic).map(type => [type, type]));
export const elementConst = {
- [graphicType.Line]: {
- code: graphicType.Line,
- name:'线段',
- formList: {
- style: [
+ [graphicType.Line]: {
+ code: graphicType.Line,
+ name:'线段',
+ formList: {
+ style: [
+ ...form2ShapeStyle
+ ],
+ shape: [
+ // opts.shape.x1 number 0 起始点横坐标。
+ // opts.shape.y1 number 0 起始点纵坐标。
+ // opts.shape.x2 number 0 终止点横坐标。
+ // opts.shape.y2 number 0 终止点纵坐标。
+ // opts.shape.percent number 1 已显示的百分比,用于绘制动画。
+ ]
+ }
+ },
+ [graphicType.Text]: {
+ code: graphicType.Text,
+ name:'文字',
+ formList: {
+ style: [
- ],
- shape: [
+ ],
+ shape: [
- ]
- }
- },
- [graphicType.Text]: {
- code: graphicType.Text,
- name:'文字',
- formList: {
- style: [
+ ]
+ }
+ },
+ [graphicType.Rect]: {
+ code: graphicType.Rect,
+ name:'矩形',
+ formList: {
+ style: [
+ ...form2ShapeStyle
+ ],
+ shape: [
- ],
- shape: [
+ ]
+ }
+ },
+ [graphicType.Circle]: {
+ code: graphicType.Circle,
+ name:'圆形',
+ formList:{
+ style: [
+ ...form2ShapeStyle
+ ],
+ shape: [
- ]
- }
- },
- [graphicType.Rect]: {
- code: graphicType.Rect,
- name:'矩形',
- formList: {
- style: [
+ ]
+ }
+ },
+ [graphicType.Polygon]: {
+ code: graphicType.Polygon,
+ name:'多边形',
+ formList: {
+ style: [
+ ...form2ShapeStyle
+ ],
+ shape: [
- ],
- shape: [
+ ]
+ }
+ },
+ [graphicType.Arrow]: {
+ code: graphicType.Arrow,
+ name:'箭头',
+ formList: {
+ style: [
- ]
- }
- },
- [graphicType.Circle]: {
- code: graphicType.Circle,
- name:'圆形',
- formList:{
- style: [
+ ],
+ shape: [
- ],
- shape: [
+ ]
+ }
+ },
+ [graphicType.Polyline]: {
+ code: graphicType.Polyline,
+ name:'多边形折线段',
+ formList: {
+ style: [
+ ...form2ShapeStyle
+ ],
+ shape: [
- ]
- }
- },
- [graphicType.Polygon]: {
- code: graphicType.Polygon,
- name:'多边形',
- formList: {
- style: [
+ ]
+ }
+ },
+ [graphicType.Isogon]: {
+ code: graphicType.Isogon,
+ name:'正多边形',
+ formList: {
+ style: [
+ ...form2ShapeStyle
+ ],
+ shape:[
- ],
- shape: [
+ ]
+ }
+ },
+ [graphicType.Ellipse]: {
+ code: graphicType.Ellipse,
+ name:'椭圆',
+ formList: {
+ style: [
+ ...form2ShapeStyle
+ ],
+ shape:[
- ]
- }
- },
- [graphicType.Arrow]: {
- code: graphicType.Arrow,
- name:'箭头',
- formList: {
- style: [
+ ]
+ }
+ },
+ [graphicType.Arc]: {
+ code: graphicType.Arc,
+ name:'圆弧',
+ formList: {
+ style: [
+ ...form2ShapeStyle
+ ],
+ shape: [
- ],
- shape: [
+ ]
+ }
+ },
+ [graphicType.Sector]: {
+ code: graphicType.Sector,
+ name:'扇形',
+ formList: {
+ style: [
+ ...form2ShapeStyle
+ ],
+ shape: [
- ]
- }
- },
- [graphicType.Polyline]: {
- code: graphicType.Polyline,
- name:'多边形折线段',
- formList: {
- style: [
+ ]
+ }
+ },
+ [graphicType.Heart]: {
+ code: graphicType.Heart,
+ name:'心形',
+ formList: {
+ style: [
+ ...form2ShapeStyle
+ ],
+ shape: [
- ],
- shape: [
+ ]
+ }
+ },
+ [graphicType.Droplet]: {
+ code: graphicType.Droplet,
+ name:'水滴',
+ formList: {
+ style: [
+ ...form2ShapeStyle
+ ],
+ shape: [
- ]
- }
- },
- [graphicType.Isogon]: {
- code: graphicType.Isogon,
- name:'正多边形',
- formList: {
- style: [
-
- ],
- shape:[
-
- ]
- }
- },
- [graphicType.Ellipse]: {
- code: graphicType.Ellipse,
- name:'椭圆',
- formList: {
- style: [
-
- ],
- shape:[
-
- ]
- }
- },
- [graphicType.Arc]: {
- code: graphicType.Arc,
- name:'圆弧',
- formList: {
- style: [
-
- ],
- shape: [
-
- ]
- }
- },
- [graphicType.Sector]: {
- code: graphicType.Sector,
- name:'扇形',
- formList: {
- style: [
-
- ],
- shape: [
-
- ]
- }
- },
- [graphicType.Heart]: {
- code: graphicType.Heart,
- name:'心形',
- formList: {
- style: [
-
- ],
- shape: [
-
- ]
- }
- },
- [graphicType.Droplet]: {
- code: graphicType.Droplet,
- name:'水滴',
- formList: {
- style: [
-
- ],
- shape: [
-
- ]
- }
- }
+ ]
+ }
+ }
};
diff --git a/src/iscs_new/core/form/form2Base.js b/src/iscs_new/core/form/form2Base.js
index b408873e4..061551b52 100644
--- a/src/iscs_new/core/form/form2Base.js
+++ b/src/iscs_new/core/form/form2Base.js
@@ -2,40 +2,40 @@ import types from './types';
export default [
{ prop: 'z1',
- label: '层级z1',
+ label: '层级z1',
type: types.Number,
- precisionFlag: 0,
- min:0,
- max:20,
- step:1,
+ precisionFlag: 0,
+ min:0,
+ max:20,
+ step:1,
rules:[
- { required: true, message:'请输入层级z', trigger: 'blur' }
- ],
+ { required: true, message:'请输入层级z', trigger: 'blur' }
+ ],
value: 10,
- description: '控制图形的前后顺序。'
+ description: '控制图形的前后顺序。'
},
{
- prop: 'z2',
- label: '层级z2',
+ prop: 'z2',
+ label: '层级z2',
type: types.Number,
- precisionFlag: 0,
- min: 0,
- max: 100,
- step: 1,
+ precisionFlag: 0,
+ min: 0,
+ max: 100,
+ step: 1,
rules:[
- { required: true, message:'请输入层级z2', trigger: 'blur' }
- ],
+ { required: true, message:'请输入层级z2', trigger: 'blur' }
+ ],
value: 50,
- description: '控制图形的前后顺序。z2 值小的图形会被 z2 值大的图形覆盖。z2 相比 z1 优先级更低。'
+ description: '控制图形的前后顺序。z2 值小的图形会被 z2 值大的图形覆盖。z2 相比 z1 优先级更低。'
},
- {
- prop: 'sightless',
- label: '图形是否不可见',
+ {
+ prop: 'sightless',
+ label: '图形是否不可见',
type: types.Boolean,
rules:[
- { required: true, message:'请选择图形是否不可见', trigger: 'blur' }
- ],
+ { required: true, message:'请选择图形是否不可见', trigger: 'blur' }
+ ],
value: false,
- description: '图形是否不可见,选中时不绘制图形。'
- }
+ description: '图形是否不可见,选中时不绘制图形。'
+ }
];
diff --git a/src/iscs_new/core/form/form2ShapeStyle.js b/src/iscs_new/core/form/form2ShapeStyle.js
index 65b0c1870..af406edcf 100644
--- a/src/iscs_new/core/form/form2ShapeStyle.js
+++ b/src/iscs_new/core/form/form2ShapeStyle.js
@@ -1,152 +1,152 @@
import types from './types';
export default [
- {
- prop: 'fill',
- label: '填充样式',
- type: types.String,
+ {
+ prop: 'fill',
+ label: '填充样式',
+ type: types.Color,
rules:[
- { required: true, message:'请输入填充样式', trigger: 'blur' }
- ],
+ { required: true, message:'请输入填充样式', trigger: 'blur' }
+ ],
value: '',
- description: '填充样式。'
- },
- {
- prop: 'stroke',
- label: '描边样式',
- type: types.String,
+ description: '填充样式。'
+ },
+ {
+ prop: 'stroke',
+ label: '描边样式',
+ type: types.Color,
rules:[
- { required: true, message:'请输入描边样式', trigger: 'blur' }
- ],
+ { required: true, message:'请输入描边样式', trigger: 'blur' }
+ ],
value: '',
- description: '描边样式。'
- },
- {
- prop: 'opacity',
- label: '描边样式',
+ description: '描边样式。'
+ },
+ {
+ prop: 'opacity',
+ label: '不透明度',
type: types.Number,
- min: 0,
- max: 1,
- step: 0.05,
- precisionFlag: 2,
+ min: 0,
+ max: 1,
+ step: 0.05,
+ precisionFlag: 2,
rules:[
- { required: true, message:'请输入不透明度', trigger: 'blur' }
- ],
+ { required: true, message:'请输入不透明度', trigger: 'blur' }
+ ],
value: 1,
- description: '不透明度。'
- },
- {
- prop: 'lineDash',
- label: '描边样式',
+ description: '不透明度。'
+ },
+ {
+ prop: 'lineDash',
+ label: '描边虚线',
type: types.NumberArray,
- min: 0,
- max: 100,
- step: 1,
- precisionFlag: 0,
+ min: 0,
+ max: 100,
+ step: 1,
+ precisionFlag: 0,
rules:[
- { required: true, message:'请输入描边虚线样式', trigger: 'blur' }
- ],
+ { required: true, message:'请输入描边虚线样式', trigger: 'blur' }
+ ],
value: 1,
- description: '描边虚线样式,参考 SVG stroke-dasharray。'
- },
- {
- prop: 'lineDashOffset',
- label: '描边虚线偏移',
+ description: '描边虚线样式,参考 SVG stroke-dasharray。'
+ },
+ {
+ prop: 'lineDashOffset',
+ label: '描边虚线偏移',
type: types.Point,
- min: 0,
- max: 100,
- step: 1,
- precisionFlag: 0,
+ min: 0,
+ max: 100,
+ step: 1,
+ precisionFlag: 0,
rules:[
- { required: true, message:'请输入描边虚线偏移', trigger: 'blur' }
- ],
- value: [0,0],
- description: '描边虚线偏移,参考 SVG stroke-dashoffset。'
- },
- {
- prop: 'shadowBlur',
- label: '阴影模糊大小',
+ { required: true, message:'请输入描边虚线偏移', trigger: 'blur' }
+ ],
+ value: [0, 0],
+ description: '描边虚线偏移,参考 SVG stroke-dashoffset。'
+ },
+ {
+ prop: 'shadowBlur',
+ label: '阴影模糊大小',
type: types.Number,
- min: 0,
- max: 100,
- step: 1,
- precisionFlag: 0,
+ min: 0,
+ max: 100,
+ step: 1,
+ precisionFlag: 0,
rules:[
- { required: true, message:'请输入阴影模糊大小', trigger: 'blur' }
- ],
+ { required: true, message:'请输入阴影模糊大小', trigger: 'blur' }
+ ],
value: 0,
- description: '阴影模糊大小。'
- },
- {
- prop: 'shadowColor',
- label: '阴影颜色',
+ description: '阴影模糊大小。'
+ },
+ {
+ prop: 'shadowColor',
+ label: '阴影颜色',
type: types.String,
rules:[
- { required: true, message:'请输入阴影颜色', trigger: 'blur' }
- ],
+ { required: true, message:'请输入阴影颜色', trigger: 'blur' }
+ ],
value: '',
- description: '阴影颜色。'
- },
- {
- prop: 'shadowOffsetX',
- label: '阴影横向偏移',
+ description: '阴影颜色。'
+ },
+ {
+ prop: 'shadowOffsetX',
+ label: '阴影横向偏移',
type: types.Number,
- min: 0,
- max: 100,
- step: 1,
- precisionFlag: 0,
+ min: 0,
+ max: 100,
+ step: 1,
+ precisionFlag: 0,
rules:[
- { required: true, message:'请输入阴影横向偏移', trigger: 'blur' }
- ],
+ { required: true, message:'请输入阴影横向偏移', trigger: 'blur' }
+ ],
value: 0,
- description: '阴影横向偏移。'
- },
- {
- prop: 'shadowOffsetY',
- label: '阴影纵向偏移',
+ description: '阴影横向偏移。'
+ },
+ {
+ prop: 'shadowOffsetY',
+ label: '阴影纵向偏移',
type: types.Number,
- min: 0,
- max: 100,
- step: 1,
- precisionFlag: 0,
+ min: 0,
+ max: 100,
+ step: 1,
+ precisionFlag: 0,
rules:[
- { required: true, message:'请输入阴影纵向偏移', trigger: 'blur' }
- ],
+ { required: true, message:'请输入阴影纵向偏移', trigger: 'blur' }
+ ],
value: 0,
- description: '阴影纵向偏移。'
- },
- {
- prop: 'lineWidth',
- label: '线宽',
+ description: '阴影纵向偏移。'
+ },
+ {
+ prop: 'lineWidth',
+ label: '线宽',
type: types.Number,
- min: 0,
- max: 100,
- step: 1,
- precisionFlag: 0,
+ min: 0,
+ max: 100,
+ step: 1,
+ precisionFlag: 0,
rules:[
- { required: true, message:'请输入线宽', trigger: 'blur' }
- ],
+ { required: true, message:'请输入线宽', trigger: 'blur' }
+ ],
value: 0,
- description: '线宽。'
- },
- {
- prop: 'strokeNoScale',
- label: '描边粗细不随缩放而改变',
+ description: '线宽。'
+ },
+ {
+ prop: 'strokeNoScale',
+ label: '描边粗细不随缩放而改变',
type: types.Boolean,
rules:[
- { required: true, message:'请选择描边粗细不随缩放而改变', trigger: 'blur' }
- ],
+ { required: true, message:'请选择描边粗细不随缩放而改变', trigger: 'blur' }
+ ],
value: false,
- description: '描边粗细不随缩放而改变,不选中时则会根据缩放同比例缩放描边粗细。'
- },
- {
- prop: 'blend',
- label: '混合模式',
+ description: '描边粗细不随缩放而改变,不选中时则会根据缩放同比例缩放描边粗细。'
+ },
+ {
+ prop: 'blend',
+ label: '混合模式',
type: types.String,
rules:[
- { required: true, message:'请输入混合模式', trigger: 'blur' }
- ],
+ { required: true, message:'请输入混合模式', trigger: 'blur' }
+ ],
value: '',
- description: '混合模式,同 Canvas globalCompositeOperation。'
- }
-]
+ description: '混合模式,同 Canvas globalCompositeOperation。'
+ }
+];
diff --git a/src/views/iscs_new/components/dataForm.vue b/src/views/iscs_new/components/dataForm.vue
index 5f0323576..c9e22d8f3 100644
--- a/src/views/iscs_new/components/dataForm.vue
+++ b/src/views/iscs_new/components/dataForm.vue
@@ -5,8 +5,9 @@
{{ styleGroup.name }}
-
-
+
+
+
-
-
-
-
+
+
-
-
+
+
diff --git a/src/views/iscs_new/iscsDraw/index.vue b/src/views/iscs_new/iscsDraw/index.vue
index 554778bfb..7061e4950 100644
--- a/src/views/iscs_new/iscsDraw/index.vue
+++ b/src/views/iscs_new/iscsDraw/index.vue
@@ -14,10 +14,7 @@
@click="handleSave"
>保存
-
-
+
@@ -36,7 +33,7 @@ import IscsPlate from '@/views/iscsSystem/index';
// import {allElements} from '@/iscs_new/core/form/allElments';
import BuilderFactory from '@/iscs_new/core/form/builderFactory';
import DataForm from '../components/dataForm';
-import { saveIscsElement } from '@/api/iscs';
+// import { saveIscsElement } from '@/api/iscs';
export default {
name: 'IscsView',
@@ -113,59 +110,77 @@ export default {
+