This commit is contained in:
joylink_cuiweidong 2021-04-08 15:18:01 +08:00
commit bbba502ba7
10 changed files with 55 additions and 21 deletions

View File

@ -197,6 +197,7 @@ export default class Controller extends Eventful {
mousemove(e) {
const oldX = this._x;
const oldY = this._y;
const target = this._target||{}
const dx = Math.round(e.offsetX - this._x);
const dy = Math.round(e.offsetY - this._y);
@ -218,7 +219,7 @@ export default class Controller extends Eventful {
if (this.limitDrag({dx, dy})) {
this.trigger(this.events.__Dragging, { dx, dy });
if (this._reflectEnable) {
this.trigger(events.Reflect, {dx, dy});
this.trigger(events.Reflect, {dx, dy, code: target.code});
}
} else {
this._x = oldX;
@ -325,6 +326,7 @@ export default class Controller extends Eventful {
clear() {
this.storage.clear();
this.storage.clearClipboard();
this._target = null;
this._pan = false;
}

View File

@ -7,7 +7,9 @@ class BuilderFactory {
getFormList() {
const elementList = Object.values(elementConst);
elementList.forEach(element=>{
const temp = Object.assign({}, element);
const temp = {};
temp.code = element.code;
temp.name = element.name;
temp.formGroup = [];
temp.model = {};
// 添加通用配置

View File

@ -152,7 +152,7 @@ export const elementConst = {
rules:[
{ required: true, message:'请输入圆角矩形半径', trigger: 'blur' }
],
value: [5, 5, 5, 5],
value: [0, 0, 0, 0],
description: '用于创建圆角矩形。左上、右上、右下、左下角的半径依次为 r1、 r2、 r3、 r4。[1, 1, 1, 1]'
}]
}

View File

@ -1,7 +1,18 @@
import types from './types';
export default [
{ prop: 'z1',
{
prop: 'name',
label: '名称',
type: types.String,
rules:[
{ required: true, message:'请输入名称', trigger: 'blur' }
],
value: '<名称>',
description: '控制图形的前后顺序。'
},
{
prop: 'z1',
label: '层级z1',
type: types.Number,
precision: 0,
@ -30,7 +41,7 @@ export default [
},
{
prop: 'sightless',
label: '图形是否不可见',
label: '是否隐藏',
type: types.Boolean,
rules:[
{ required: true, message:'请选择图形是否不可见', trigger: 'blur' }

View File

@ -101,7 +101,7 @@ export default [
},
{
prop: 'strokeNoScale',
label: '描边粗细缩放而改变',
label: '描边不缩放',
type: types.Boolean,
value: false,
description: '描边粗细不随缩放而改变,不选中时则会根据缩放同比例缩放描边粗细。'

View File

@ -1 +0,0 @@
// export function coverse

View File

@ -56,7 +56,7 @@ function update2List(source, model, action, name='') {
i >= 0 && list.splice(i, 1);
break;
case orders.UPDATE:
Object.assign(list[i]||{}, model)
updateModel = Object.assign(list[i]||{}, model)
break;
}

View File

@ -166,6 +166,7 @@ class JMap {
let newShape = null;
if (updateModel) {
this.$controller.clear()
switch(action.order) {
case orders.BINDING:
case orders.ADD:
@ -180,6 +181,7 @@ class JMap {
if (updateModel) {
curShape = this.$shapeFactory.getShapeByCode(updateModel.code);
oldShape = this.$shapeFactory.removeShape(curShape);
this.$painter.removeFromLayer(oldShape.type, oldShape.instanceHightLight);
this.$painter.remove(oldShape);
}
});
@ -188,12 +190,15 @@ class JMap {
updateModel = this.isDrawing() ? this.$shapeFactory.updateSource(model, action): model;
oldShape = this.$shapeFactory.removeShape(curShape);
newShape = this.$shapeFactory.createShape(updateModel, action.shapeType);
this.$painter.removeFromLayer(oldShape.type, oldShape.instanceHightLight);
this.$painter.removeFromLayer(oldShape.type, newShape.instanceHightLight);
this.$painter.remove(oldShape);
this.$shapeFactory.storageShape(newShape)
this.$painter.add(newShape);
break;
case orders.UNBINDING:
oldShape = this.$shapeFactory.removeShape(curShape);
this.$painter.removeFromLayer(oldShape.type, oldShape.instanceHightLight);
this.$painter.remove(oldShape);
break;
}

View File

@ -84,22 +84,29 @@ export default {
onSave(data) {
},
onSelectTab() {
this.selected = null;
},
onSelected(val) {
if (val) {
this.selected = JSON.parse(JSON.stringify(val));
} else {
this.selected = null;
}
},
onSubmit() {
this.$refs['dataform' + this.enabledTab][0].$refs['form'].validate((valid) => {
onSelected(em) {
if (em.model) {
this.selected = JSON.parse(JSON.stringify(em.model));
const elem = this.elementList.find(el => el.code == this.selected.type);
if (elem) {
elem.model = this.selected;
}
} else {
this.selected = null;
}
},
onSubmit(){
this.$refs['dataform'+this.enabledTab][0].$refs['form'].validate((valid) => {
if (valid) {
const formModel = this.$refs['dataform' + this.enabledTab][0].formModel;
const newModel = JSON.parse(JSON.stringify(formModel));
newModel.type = this.enabledTab;
newModel.code = utils.getUID(this.enabledTab);
newModel.stateList = [];
this.$refs.iscsCanvas.doAction([{model: newModel, action: {shapeType: shapeType.Element, order: orders.ADD}}]);
this.clear(this.enabledTab);
}
});
},
@ -110,6 +117,7 @@ export default {
model.code = this.selected.code;
model.type = this.selected.type;
this.$refs.iscsCanvas.doAction([{model, action: {shapeType: shapeType.Element, order: orders.UPDATE}}]);
this.clear(this.enabledTab);
}
});
},
@ -120,11 +128,14 @@ export default {
model.code = this.selected.code;
model.type = this.selected.type;
this.$refs.iscsCanvas.doAction([{model, action: {shapeType: shapeType.Element, order: orders.DELETE}}]);
this.$refs['dataform' + this.enabledTab][0].init();
this.selected = null;
this.clear(this.enabledTab);
}
});
}
},
clear(enabledTab) {
this.$refs['dataform' + enabledTab][0].init();
this.selected = null;
}
}
};
</script>

View File

@ -96,6 +96,7 @@ export default {
this.$iscs.on('viewLoaded', this.onViewLoaded, this);
this.$iscs.on('contextmenu', this.onContextMenu, this);
this.$iscs.on('selected', this.onSelected, this);
this.$iscs.on('reflect', this.onReflect, this);
this.$iscs.on('keyboard', this.onKeyboard, this);
window.document.oncontextmenu = function () {
return false;
@ -110,8 +111,11 @@ export default {
},
//
onSelected(em={}) {
this.$emit('selected', em.model);
this.$emit('selected', em);
},
onReflect(em={}) {
this.$emit('selected', this.$iscs.getShapeByCode(em.code));
},
//
onContextMenu(em={}) {
this.$emit('contextMenu', em.model);