cloud-web-corejs 1.0.54-dev.678 → 1.0.54-dev.679
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -1
- package/src/components/baseArea/index.vue +665 -0
- package/src/components/xform/form-designer/form-widget/field-widget/area-select-widget.vue +158 -0
- package/src/components/xform/form-designer/setting-panel/property-editor/field-area-select/areaDataType-editor.vue +24 -0
- package/src/components/xform/form-designer/setting-panel/property-editor/field-area-select/areaName-editor.vue +20 -0
- package/src/components/xform/form-designer/setting-panel/propertyRegister.js +2 -0
- package/src/components/xform/form-designer/widget-panel/widgetsConfig.js +52 -0
- package/src/components/xform/form-render/container-item/data-table-mixin.js +4 -0
- package/src/components/xform/form-render/indexMixin.js +34 -0
- package/src/components/xform/lang/en-US.js +7 -0
- package/src/components/xform/lang/zh-CN.js +7 -0
- package/src/index.js +4 -0
- package/src/layout/components/Sidebar/default.vue +1 -1
- package/src/views/bd/setting/formVersion/compareBasicSection.vue +6 -7
- package/src/views/bd/setting/formVersion/compareCodeSection.vue +21 -17
- package/src/views/bd/setting/formVersion/compareContMixin.scss +14 -20
- package/src/views/bd/setting/formVersion/compareDialog.vue +2 -2
- package/src/views/bd/setting/formVersion/ftHistoryDialog.vue +3 -3
- package/src/views/bd/setting/formVersion/reverButton.vue +1 -1
- package/src/views/bd/setting/formVersion/tableDetailDiff.js +3 -2
- package/src/views/user/form/vform/designer.vue +3 -1
- package/src/views/user/form/vform/formFieldMapping.js +2 -3
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<form-item-wrapper
|
|
3
|
+
:designer="designer"
|
|
4
|
+
:field="field"
|
|
5
|
+
:rules="rules"
|
|
6
|
+
:design-state="designState"
|
|
7
|
+
:parent-widget="parentWidget"
|
|
8
|
+
:parent-list="parentList"
|
|
9
|
+
:index-of-parent-list="indexOfParentList"
|
|
10
|
+
:sub-form-row-index="subFormRowIndex"
|
|
11
|
+
:sub-form-col-index="subFormColIndex"
|
|
12
|
+
:sub-form-row-id="subFormRowId"
|
|
13
|
+
>
|
|
14
|
+
<baseArea
|
|
15
|
+
v-show="!isReadMode"
|
|
16
|
+
class="full-width-input"
|
|
17
|
+
:style="widgetStyle"
|
|
18
|
+
v-model="fieldModel"
|
|
19
|
+
:label-value.sync="areaLabel"
|
|
20
|
+
:max-level="maxLevel"
|
|
21
|
+
:locale="field.options.locale"
|
|
22
|
+
:disabled="field.options.disabled"
|
|
23
|
+
:readonly="field.options.readonly"
|
|
24
|
+
:clearable="field.options.clearable"
|
|
25
|
+
:placeholder="getI18nLabel(field.options.placeholder || '请选择地区')"
|
|
26
|
+
:size="field.options.size || 'small'"
|
|
27
|
+
@change="handleAreaChange"
|
|
28
|
+
/>
|
|
29
|
+
<template v-if="isReadMode">
|
|
30
|
+
<span class="readonly-mode-field">{{ readModeText }}</span>
|
|
31
|
+
</template>
|
|
32
|
+
</form-item-wrapper>
|
|
33
|
+
</template>
|
|
34
|
+
|
|
35
|
+
<script>
|
|
36
|
+
import FormItemWrapper from "./form-item-wrapper";
|
|
37
|
+
import emitter from "../../../../../components/xform/utils/emitter";
|
|
38
|
+
import i18n from "../../../../../components/xform/utils/i18n";
|
|
39
|
+
import fieldMixin from "../../../../../components/xform/form-designer/form-widget/field-widget/fieldMixin";
|
|
40
|
+
import baseArea from "@base/components/baseArea/index.vue";
|
|
41
|
+
|
|
42
|
+
export default {
|
|
43
|
+
name: "area-select-widget",
|
|
44
|
+
componentName: "FieldWidget",
|
|
45
|
+
mixins: [emitter, fieldMixin, i18n],
|
|
46
|
+
components: {
|
|
47
|
+
FormItemWrapper,
|
|
48
|
+
baseArea,
|
|
49
|
+
},
|
|
50
|
+
props: {
|
|
51
|
+
field: Object,
|
|
52
|
+
parentWidget: Object,
|
|
53
|
+
parentList: Array,
|
|
54
|
+
indexOfParentList: Number,
|
|
55
|
+
designer: Object,
|
|
56
|
+
designState: {
|
|
57
|
+
type: Boolean,
|
|
58
|
+
default: false,
|
|
59
|
+
},
|
|
60
|
+
subFormRowIndex: {
|
|
61
|
+
type: Number,
|
|
62
|
+
default: -1,
|
|
63
|
+
},
|
|
64
|
+
subFormColIndex: {
|
|
65
|
+
type: Number,
|
|
66
|
+
default: -1,
|
|
67
|
+
},
|
|
68
|
+
subFormRowId: {
|
|
69
|
+
type: String,
|
|
70
|
+
default: "",
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
inject: ["refList", "globalOptionData", "globalModel"],
|
|
74
|
+
data() {
|
|
75
|
+
return {
|
|
76
|
+
oldFieldValue: null,
|
|
77
|
+
fieldModel: null,
|
|
78
|
+
areaLabel: null,
|
|
79
|
+
rules: [],
|
|
80
|
+
};
|
|
81
|
+
},
|
|
82
|
+
computed: {
|
|
83
|
+
currentData() {
|
|
84
|
+
let tableParam = this.tableParam;
|
|
85
|
+
return tableParam && tableParam.row ? tableParam.row : this.formModel;
|
|
86
|
+
},
|
|
87
|
+
areaNameField() {
|
|
88
|
+
return this.field.options.areaName || null;
|
|
89
|
+
},
|
|
90
|
+
maxLevel() {
|
|
91
|
+
const areaDataType = this.field.options.areaDataType * 1 || 3;
|
|
92
|
+
if (areaDataType === 1) return 2;
|
|
93
|
+
if (areaDataType === 2) return 3;
|
|
94
|
+
return 4;
|
|
95
|
+
},
|
|
96
|
+
readModeText() {
|
|
97
|
+
return this.areaLabel || this.currentAreaNameValue || "--";
|
|
98
|
+
},
|
|
99
|
+
widgetStyle() {
|
|
100
|
+
const widgetWidth = this.field.options.widgetWidth;
|
|
101
|
+
if (widgetWidth != null && widgetWidth !== "") {
|
|
102
|
+
return { width: widgetWidth };
|
|
103
|
+
}
|
|
104
|
+
return { width: "100%" };
|
|
105
|
+
},
|
|
106
|
+
currentAreaNameValue() {
|
|
107
|
+
if (!this.areaNameField) {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
return this.currentData[this.areaNameField] ?? null;
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
watch: {
|
|
114
|
+
currentAreaNameValue: {
|
|
115
|
+
immediate: true,
|
|
116
|
+
handler(val) {
|
|
117
|
+
this.areaLabel = val;
|
|
118
|
+
},
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
created() {
|
|
122
|
+
this.initFieldModel();
|
|
123
|
+
this.registerToRefList();
|
|
124
|
+
this.initEventHandler();
|
|
125
|
+
this.buildFieldRules();
|
|
126
|
+
this.handleOnCreated();
|
|
127
|
+
},
|
|
128
|
+
mounted() {
|
|
129
|
+
this.handleOnMounted();
|
|
130
|
+
},
|
|
131
|
+
beforeDestroy() {
|
|
132
|
+
this.unregisterFromRefList();
|
|
133
|
+
},
|
|
134
|
+
methods: {
|
|
135
|
+
syncAreaName(label) {
|
|
136
|
+
if (this.areaNameField) {
|
|
137
|
+
this.$set(this.currentData, this.areaNameField, label);
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
handleAreaChange(row) {
|
|
141
|
+
const label = row ? row.fullName || row.name || null : null;
|
|
142
|
+
this.areaLabel = label;
|
|
143
|
+
this.syncAreaName(label);
|
|
144
|
+
this.handleChangeEvent(this.fieldModel);
|
|
145
|
+
},
|
|
146
|
+
},
|
|
147
|
+
};
|
|
148
|
+
</script>
|
|
149
|
+
|
|
150
|
+
<style lang="scss" scoped>
|
|
151
|
+
@import "~@/styles/global.scss";
|
|
152
|
+
|
|
153
|
+
.full-width-input {
|
|
154
|
+
width: 100% !important;
|
|
155
|
+
display: block !important;
|
|
156
|
+
box-sizing: border-box;
|
|
157
|
+
}
|
|
158
|
+
</style>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<el-form-item :label="i18nt('designer.setting.areaDataType')">
|
|
3
|
+
<el-select v-model="optionModel.areaDataType" style="width: 100%">
|
|
4
|
+
<el-option :label="i18nt('designer.setting.areaDataType1')" :value="1" />
|
|
5
|
+
<el-option :label="i18nt('designer.setting.areaDataType2')" :value="2" />
|
|
6
|
+
<el-option :label="i18nt('designer.setting.areaDataType3')" :value="3" />
|
|
7
|
+
</el-select>
|
|
8
|
+
</el-form-item>
|
|
9
|
+
</template>
|
|
10
|
+
|
|
11
|
+
<script>
|
|
12
|
+
import i18n from "@base/components/xform/utils/i18n";
|
|
13
|
+
import propertyMixin from "@base/components/xform/form-designer/setting-panel/property-editor/propertyMixin";
|
|
14
|
+
|
|
15
|
+
export default {
|
|
16
|
+
name: "areaDataType-editor",
|
|
17
|
+
mixins: [i18n, propertyMixin],
|
|
18
|
+
props: {
|
|
19
|
+
designer: Object,
|
|
20
|
+
selectedWidget: Object,
|
|
21
|
+
optionModel: Object,
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
</script>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<el-form-item :label="i18nt('designer.setting.areaName')">
|
|
3
|
+
<el-input v-model="optionModel.areaName" :placeholder="i18nt('designer.setting.areaNameHint')" />
|
|
4
|
+
</el-form-item>
|
|
5
|
+
</template>
|
|
6
|
+
|
|
7
|
+
<script>
|
|
8
|
+
import i18n from "@base/components/xform/utils/i18n";
|
|
9
|
+
import propertyMixin from "@base/components/xform/form-designer/setting-panel/property-editor/propertyMixin";
|
|
10
|
+
|
|
11
|
+
export default {
|
|
12
|
+
name: "areaName-editor",
|
|
13
|
+
mixins: [i18n, propertyMixin],
|
|
14
|
+
props: {
|
|
15
|
+
designer: Object,
|
|
16
|
+
selectedWidget: Object,
|
|
17
|
+
optionModel: Object,
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
</script>
|
|
@@ -82,6 +82,8 @@ const COMMON_PROPERTIES = {
|
|
|
82
82
|
echarBarOption: "echart-bar-editor", //柱状图
|
|
83
83
|
echarCategoryOption: "echart-category-editor", //折线图
|
|
84
84
|
vabSearchName: "vabSearchName-editor",
|
|
85
|
+
areaName: "areaName-editor",
|
|
86
|
+
areaDataType: "areaDataType-editor",
|
|
85
87
|
copyButton: "copyButton-editor",
|
|
86
88
|
tempStorageFlag: "tempStorage-editor",
|
|
87
89
|
formatType: "formatType-editor",
|
|
@@ -1393,6 +1393,58 @@ export const basicFields = [
|
|
|
1393
1393
|
showRules: [],
|
|
1394
1394
|
},
|
|
1395
1395
|
},
|
|
1396
|
+
{
|
|
1397
|
+
type: "area-select",
|
|
1398
|
+
icon: "select-field",
|
|
1399
|
+
commonFlag: !0,
|
|
1400
|
+
formItemFlag: !0,
|
|
1401
|
+
columnFlag: true,
|
|
1402
|
+
tableField: null,
|
|
1403
|
+
options: {
|
|
1404
|
+
name: "",
|
|
1405
|
+
keyNameEnabled: !1,
|
|
1406
|
+
keyName: "",
|
|
1407
|
+
label: "",
|
|
1408
|
+
labelColor: "",
|
|
1409
|
+
submitFlag: true,
|
|
1410
|
+
formField: "",
|
|
1411
|
+
labelAlign: "",
|
|
1412
|
+
defaultValue: null,
|
|
1413
|
+
placeholder: "",
|
|
1414
|
+
columnWidth: "200px",
|
|
1415
|
+
widgetWidth: null,
|
|
1416
|
+
size: "",
|
|
1417
|
+
labelWidth: null,
|
|
1418
|
+
labelHidden: !1,
|
|
1419
|
+
readonly: !1,
|
|
1420
|
+
disabled: !1,
|
|
1421
|
+
hidden: !1,
|
|
1422
|
+
clearable: !0,
|
|
1423
|
+
required: !1,
|
|
1424
|
+
requiredHint: "",
|
|
1425
|
+
validation: "",
|
|
1426
|
+
validationHint: "",
|
|
1427
|
+
customClass: "",
|
|
1428
|
+
labelIconClass: null,
|
|
1429
|
+
labelIconPosition: "rear",
|
|
1430
|
+
labelTooltip: null,
|
|
1431
|
+
areaName: "",
|
|
1432
|
+
areaDataType: 3,
|
|
1433
|
+
locale: null,
|
|
1434
|
+
onCreated: "",
|
|
1435
|
+
onMounted: "",
|
|
1436
|
+
onChange: "",
|
|
1437
|
+
onFocus: "",
|
|
1438
|
+
onBlur: "",
|
|
1439
|
+
onValidate: "",
|
|
1440
|
+
accessType: "1",
|
|
1441
|
+
...defaultWfConfig,
|
|
1442
|
+
showRuleFlag: 1,
|
|
1443
|
+
showRuleEnabled: 1,
|
|
1444
|
+
showRules: [],
|
|
1445
|
+
...defaultTextFlagConfig,
|
|
1446
|
+
},
|
|
1447
|
+
},
|
|
1396
1448
|
{
|
|
1397
1449
|
type: "time",
|
|
1398
1450
|
icon: "time-field",
|
|
@@ -2606,6 +2606,10 @@ modules = {
|
|
|
2606
2606
|
let vabSearchName = widget.options.vabSearchName;
|
|
2607
2607
|
if (vabSearchName) newData[vabSearchName] = null;
|
|
2608
2608
|
}
|
|
2609
|
+
if (widget.type === "area-select") {
|
|
2610
|
+
let areaName = widget.options.areaName;
|
|
2611
|
+
if (areaName) newData[areaName] = null;
|
|
2612
|
+
}
|
|
2609
2613
|
}
|
|
2610
2614
|
},
|
|
2611
2615
|
createNewTableData(isEdit, defaultValueEnabled = true) {
|
|
@@ -1564,6 +1564,18 @@ modules = {
|
|
|
1564
1564
|
baseRefUtil.deepClone(val)
|
|
1565
1565
|
);
|
|
1566
1566
|
}
|
|
1567
|
+
} else if ("area-select" === e.type) {
|
|
1568
|
+
let c = currentFormData[fieldKeyName];
|
|
1569
|
+
this.$set(this.formDataModel, fieldKeyName, baseRefUtil.deepClone(c));
|
|
1570
|
+
let areaName = e.options.areaName;
|
|
1571
|
+
if (areaName) {
|
|
1572
|
+
let val = currentFormData[areaName] ?? null;
|
|
1573
|
+
this.$set(
|
|
1574
|
+
this.formDataModel,
|
|
1575
|
+
areaName,
|
|
1576
|
+
baseRefUtil.deepClone(val)
|
|
1577
|
+
);
|
|
1578
|
+
}
|
|
1567
1579
|
} else if ("table2-item" === e.type) {
|
|
1568
1580
|
this.$set(this.formDataModel, fieldKeyName, []);
|
|
1569
1581
|
} else if (e.formItemFlag) {
|
|
@@ -2125,6 +2137,10 @@ modules = {
|
|
|
2125
2137
|
let vabSearchName = widget.options.vabSearchName;
|
|
2126
2138
|
if (vabSearchName) fieldMap[vabSearchName] = vabSearchName;
|
|
2127
2139
|
}
|
|
2140
|
+
if (this.isAreaSelectFlagWidget(widget)) {
|
|
2141
|
+
let areaName = widget.options.areaName;
|
|
2142
|
+
if (areaName) fieldMap[areaName] = areaName;
|
|
2143
|
+
}
|
|
2128
2144
|
}
|
|
2129
2145
|
} else {
|
|
2130
2146
|
if (widget.category === "container") {
|
|
@@ -2161,6 +2177,9 @@ modules = {
|
|
|
2161
2177
|
type === "multiSearch"
|
|
2162
2178
|
);
|
|
2163
2179
|
},
|
|
2180
|
+
isAreaSelectFlagWidget(widget) {
|
|
2181
|
+
return widget?.type === "area-select";
|
|
2182
|
+
},
|
|
2164
2183
|
getFormTemplateTableDTOs() {
|
|
2165
2184
|
let formTemplateTableDTOs = [];
|
|
2166
2185
|
let formCode = this.reportTemplate.formCode;
|
|
@@ -2288,6 +2307,21 @@ modules = {
|
|
|
2288
2307
|
});
|
|
2289
2308
|
}
|
|
2290
2309
|
}
|
|
2310
|
+
} else if (widget.tableField && this.isAreaSelectFlagWidget(widget)) {
|
|
2311
|
+
if (submitFlag) {
|
|
2312
|
+
fields.push({
|
|
2313
|
+
fieldDesc: widget.options.label + "ID",
|
|
2314
|
+
fieldName: widgetName,
|
|
2315
|
+
});
|
|
2316
|
+
let areaName = widget.options.areaName;
|
|
2317
|
+
if (areaName) {
|
|
2318
|
+
fields.push({
|
|
2319
|
+
fieldDesc: widget.options.label,
|
|
2320
|
+
fieldName: areaName,
|
|
2321
|
+
name: areaName,
|
|
2322
|
+
});
|
|
2323
|
+
}
|
|
2324
|
+
}
|
|
2291
2325
|
} else if (widget.tableField) {
|
|
2292
2326
|
if (submitFlag) {
|
|
2293
2327
|
fields.push({
|
|
@@ -55,6 +55,7 @@ export default {
|
|
|
55
55
|
"file-upload": "File",
|
|
56
56
|
"rich-editor": "Rich Editor",
|
|
57
57
|
cascader: "Cascader",
|
|
58
|
+
"area-select": "Area Select",
|
|
58
59
|
slot: "Slot",
|
|
59
60
|
custom: "Custom Component"
|
|
60
61
|
},
|
|
@@ -190,6 +191,12 @@ export default {
|
|
|
190
191
|
textContent: "Text",
|
|
191
192
|
htmlContent: "HTML",
|
|
192
193
|
clearable: "Clearable",
|
|
194
|
+
areaDataType: "Area Level",
|
|
195
|
+
areaDataType1: "Province/City",
|
|
196
|
+
areaDataType2: "Province/City/District",
|
|
197
|
+
areaDataType3: "Province/City/District/Town",
|
|
198
|
+
areaName: "Area Name Field",
|
|
199
|
+
areaNameHint: "Form field name for area full name",
|
|
193
200
|
editable: "Editable",
|
|
194
201
|
format: "Format",
|
|
195
202
|
valueFormat: "Value Format",
|
|
@@ -77,6 +77,7 @@ export default {
|
|
|
77
77
|
"copy_button": "复制按钮",
|
|
78
78
|
"rich-editor": "富文本",
|
|
79
79
|
cascader: "级联选择",
|
|
80
|
+
"area-select": "地区选择",
|
|
80
81
|
slot: "插槽",
|
|
81
82
|
echart: '图表',
|
|
82
83
|
'echart-pie': '饼图',
|
|
@@ -353,6 +354,12 @@ export default {
|
|
|
353
354
|
preWrap: '自动换行',
|
|
354
355
|
htmlContent: "HTML",
|
|
355
356
|
clearable: "可清除",
|
|
357
|
+
areaDataType: "地区层级",
|
|
358
|
+
areaDataType1: "省/市",
|
|
359
|
+
areaDataType2: "省/市/区",
|
|
360
|
+
areaDataType3: "省/市/区/乡镇",
|
|
361
|
+
areaName: "地区名称字段",
|
|
362
|
+
areaNameHint: "用于保存地区全称的表单字段名",
|
|
356
363
|
editable: "可输入",
|
|
357
364
|
format: "显示格式",
|
|
358
365
|
valueFormat: "绑定值格式",
|
package/src/index.js
CHANGED
|
@@ -134,6 +134,10 @@ import baseInputBatch from "@base/components/baseInputBatch/index.vue";
|
|
|
134
134
|
|
|
135
135
|
Vue.component(baseInputBatch.name, baseInputBatch);
|
|
136
136
|
|
|
137
|
+
import baseArea from "@base/components/baseArea/index.vue";
|
|
138
|
+
|
|
139
|
+
Vue.component(baseArea.name, baseArea);
|
|
140
|
+
|
|
137
141
|
Vue.component("baseInputExport", () =>
|
|
138
142
|
import("@base/components/baseInputExport/index.vue")
|
|
139
143
|
);
|
|
@@ -1547,7 +1547,7 @@ export default {
|
|
|
1547
1547
|
// height: auto !important;
|
|
1548
1548
|
// }
|
|
1549
1549
|
.el-menu--vertical{
|
|
1550
|
-
> .el-menu--popup{overflow:
|
|
1550
|
+
> .el-menu--popup{overflow: auto;//不用atuo 超出不出滚动条
|
|
1551
1551
|
.el-submenu__title, .el-menu-item{
|
|
1552
1552
|
height: auto !important;
|
|
1553
1553
|
line-height: 1.4 !important;
|
|
@@ -76,8 +76,8 @@ export default {
|
|
|
76
76
|
@include compare-cont-shell;
|
|
77
77
|
@include compare-cont-title;
|
|
78
78
|
@include compare-version-label;
|
|
79
|
+
margin:16px;
|
|
79
80
|
}
|
|
80
|
-
|
|
81
81
|
.table-border_1 {
|
|
82
82
|
width: 100%;
|
|
83
83
|
border-collapse: collapse;
|
|
@@ -86,8 +86,7 @@ export default {
|
|
|
86
86
|
th,
|
|
87
87
|
td {
|
|
88
88
|
padding: 10px 12px;
|
|
89
|
-
border: 1px solid
|
|
90
|
-
font-size: 13px;
|
|
89
|
+
border: 1px solid rgba(0,0,0,0.15);
|
|
91
90
|
line-height: 20px;
|
|
92
91
|
vertical-align: middle;
|
|
93
92
|
word-break: break-all;
|
|
@@ -95,15 +94,15 @@ export default {
|
|
|
95
94
|
|
|
96
95
|
th {
|
|
97
96
|
width: 160px;
|
|
98
|
-
background:
|
|
99
|
-
color:
|
|
97
|
+
background: rgba(0,0,0,0.04);
|
|
98
|
+
color: rgba(0,0,0,.65);
|
|
100
99
|
font-weight: 500;
|
|
101
100
|
text-align: left;
|
|
102
101
|
}
|
|
103
102
|
|
|
104
103
|
td {
|
|
105
104
|
width: calc((100% - 160px) / 2);
|
|
106
|
-
color:
|
|
105
|
+
color: rgba(0,0,0,.85);
|
|
107
106
|
|
|
108
107
|
.version-blue,
|
|
109
108
|
.version-green {
|
|
@@ -119,7 +118,7 @@ export default {
|
|
|
119
118
|
tr.id-difference {
|
|
120
119
|
td {
|
|
121
120
|
background: #fef0f0;
|
|
122
|
-
color:
|
|
121
|
+
color: $red;
|
|
123
122
|
}
|
|
124
123
|
}
|
|
125
124
|
}
|
|
@@ -10,23 +10,25 @@
|
|
|
10
10
|
</div>
|
|
11
11
|
<div v-if="enableDiff" class="compare-diff-legend">
|
|
12
12
|
<span class="compare-diff-nav">
|
|
13
|
-
<
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
<el-button plain
|
|
14
|
+
:type="!diffNavList.length ? 'info' : 'primary'"
|
|
15
|
+
class="button-sty"
|
|
16
|
+
:disabled="!diffNavList.length"
|
|
16
17
|
@click="diffNavList.length && gotoPrevDiff()"
|
|
17
18
|
>
|
|
18
19
|
<i class="el-icon-top"></i>{{ $t1("上一处差异") }}
|
|
19
|
-
</
|
|
20
|
-
<
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
</el-button>
|
|
21
|
+
<el-button plain
|
|
22
|
+
:type="!diffNavList.length ? 'info' : 'primary'"
|
|
23
|
+
class="button-sty"
|
|
24
|
+
:disabled="!diffNavList.length"
|
|
23
25
|
@click="diffNavList.length && gotoNextDiff()"
|
|
24
26
|
>
|
|
25
27
|
<i class="el-icon-bottom"></i>{{ $t1("下一处差异") }}
|
|
26
|
-
</
|
|
27
|
-
<
|
|
28
|
+
</el-button>
|
|
29
|
+
<el-button type="primary" plain @click="gotoTop" class="button-sty">
|
|
28
30
|
<i class="el-icon-caret-top"></i>{{ $t1("返回顶部") }}
|
|
29
|
-
</
|
|
31
|
+
</el-button>
|
|
30
32
|
<span v-if="diffNavList.length" class="diff-nav-count">
|
|
31
33
|
{{ currentDiffIndex < 0 ? "-" : currentDiffIndex + 1 }} /
|
|
32
34
|
{{ diffNavList.length }}
|
|
@@ -358,7 +360,8 @@ export default {
|
|
|
358
360
|
@include compare-cont-full-link;
|
|
359
361
|
@include compare-version-label;
|
|
360
362
|
@include compare-flex-row;
|
|
361
|
-
|
|
363
|
+
padding:0 16px 16px;
|
|
364
|
+
overflow: hidden;
|
|
362
365
|
.compare-code-flex {
|
|
363
366
|
margin-top: 0;
|
|
364
367
|
|
|
@@ -378,17 +381,15 @@ export default {
|
|
|
378
381
|
position: relative;
|
|
379
382
|
min-height: 28px;
|
|
380
383
|
padding-right: 24px;
|
|
384
|
+
margin-bottom:16px;
|
|
381
385
|
}
|
|
382
386
|
|
|
383
387
|
.compare-header-main {
|
|
384
|
-
|
|
385
|
-
align-items: center;
|
|
386
|
-
flex-wrap: wrap;
|
|
387
|
-
gap: 0 16px;
|
|
388
|
+
position:relative;
|
|
388
389
|
}
|
|
389
390
|
|
|
390
391
|
.title {
|
|
391
|
-
|
|
392
|
+
|
|
392
393
|
}
|
|
393
394
|
|
|
394
395
|
.compare-diff-legend {
|
|
@@ -397,7 +398,9 @@ export default {
|
|
|
397
398
|
flex-wrap: wrap;
|
|
398
399
|
font-size: 12px;
|
|
399
400
|
gap: 0 12px;
|
|
400
|
-
|
|
401
|
+
position: absolute;
|
|
402
|
+
top: 8px;
|
|
403
|
+
left: 127px;
|
|
401
404
|
.legend-item {
|
|
402
405
|
display: inline-block;
|
|
403
406
|
padding: 2px 8px;
|
|
@@ -501,6 +504,7 @@ export default {
|
|
|
501
504
|
flex-direction: column;
|
|
502
505
|
margin: 0;
|
|
503
506
|
overflow: hidden;
|
|
507
|
+
background:#FFF;border-radius:12px;
|
|
504
508
|
|
|
505
509
|
.compare-code-header {
|
|
506
510
|
flex-shrink: 0;
|
|
@@ -1,32 +1,26 @@
|
|
|
1
|
+
@import "~@/styles/variables.scss";
|
|
1
2
|
@mixin compare-cont-shell {
|
|
2
3
|
position: relative;
|
|
3
|
-
margin-bottom: 8px;
|
|
4
|
-
padding: 8px;
|
|
5
|
-
background: #fff;
|
|
6
|
-
border-radius: 2px;
|
|
7
|
-
|
|
8
4
|
~ .compare-cont {
|
|
9
5
|
margin-bottom: 0;
|
|
6
|
+
|
|
10
7
|
}
|
|
11
8
|
}
|
|
12
9
|
|
|
13
10
|
@mixin compare-cont-title {
|
|
14
11
|
> .title {
|
|
15
|
-
|
|
16
|
-
margin-bottom: 8px;
|
|
17
|
-
font-size: 14px;
|
|
18
|
-
color: #303133;
|
|
12
|
+
margin: -16px -16px 16px;
|
|
19
13
|
}
|
|
20
14
|
}
|
|
21
15
|
|
|
22
16
|
@mixin compare-cont-full-link {
|
|
23
17
|
.is-full {
|
|
24
18
|
position: absolute;
|
|
25
|
-
top:
|
|
26
|
-
right:
|
|
27
|
-
padding:
|
|
19
|
+
top: 12px;
|
|
20
|
+
right: 12px;
|
|
21
|
+
padding: 4px 6px;
|
|
28
22
|
font-size: 16px;
|
|
29
|
-
color:
|
|
23
|
+
color: $baseColor;
|
|
30
24
|
background: #f2f6fc;
|
|
31
25
|
border-radius: 4px;
|
|
32
26
|
|
|
@@ -40,21 +34,21 @@
|
|
|
40
34
|
.version-blue,
|
|
41
35
|
.version-green {
|
|
42
36
|
display: inline-block;
|
|
43
|
-
height:
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
font-size: 12px;
|
|
47
|
-
line-height: 22px;
|
|
37
|
+
height: 26px;
|
|
38
|
+
padding: 0 8px;
|
|
39
|
+
line-height: 26px;
|
|
48
40
|
color: #fff;
|
|
49
41
|
vertical-align: middle;
|
|
42
|
+
width: 88px;
|
|
43
|
+
text-align: center;
|
|
50
44
|
}
|
|
51
45
|
|
|
52
46
|
.version-blue {
|
|
53
|
-
background:
|
|
47
|
+
background: $baseColor;
|
|
54
48
|
}
|
|
55
49
|
|
|
56
50
|
.version-green {
|
|
57
|
-
background:
|
|
51
|
+
background: $green;
|
|
58
52
|
}
|
|
59
53
|
}
|
|
60
54
|
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
:close-on-click-modal="falseValue"
|
|
8
8
|
:visible.sync="showDialog"
|
|
9
9
|
:modal="falseValue"
|
|
10
|
-
custom-class="dialog-style list-dialog dialog-checkbox
|
|
10
|
+
custom-class="dialog-style list-dialog dialog-checkbox nopd0 form-version-compare-dialog"
|
|
11
11
|
width="1200px"
|
|
12
12
|
@close="dialogClose"
|
|
13
13
|
v-el-drag-dialog
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
>
|
|
17
17
|
<div
|
|
18
18
|
class="cont compare-dialog-cont"
|
|
19
|
-
style="height: calc(100vh -
|
|
19
|
+
style="height: calc(100vh - 48px); overflow: auto"
|
|
20
20
|
>
|
|
21
21
|
<compareContent
|
|
22
22
|
v-if="compareReady"
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
:close-on-click-modal="falseValue"
|
|
8
8
|
:visible.sync="showDialog"
|
|
9
9
|
:modal="falseValue"
|
|
10
|
-
custom-class="dialog-style list-dialog dialog-checkbox
|
|
10
|
+
custom-class="dialog-style list-dialog dialog-checkbox nopd0"
|
|
11
11
|
width="1200px"
|
|
12
12
|
@close="dialogClose"
|
|
13
13
|
v-el-drag-dialog
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
<div
|
|
18
18
|
class="cont"
|
|
19
19
|
id="containt"
|
|
20
|
-
style="height: calc(100vh -
|
|
20
|
+
style="height: calc(100vh - 48px); overflow: hidden"
|
|
21
21
|
>
|
|
22
22
|
<el-tabs ref="xTabs" v-model="activeName" class="tab-box">
|
|
23
23
|
<el-tab-pane :label="$t1('详情')" name="first">
|
|
@@ -392,7 +392,7 @@ export default {
|
|
|
392
392
|
</script>
|
|
393
393
|
<style scoped lang="scss">
|
|
394
394
|
.grid-height {
|
|
395
|
-
height: calc(100vh -
|
|
395
|
+
height: calc(100vh - 106px) !important;
|
|
396
396
|
}
|
|
397
397
|
::v-deep .detail-wrap .d-cont {
|
|
398
398
|
height: calc(100vh - 148px) !important;
|
|
@@ -34,14 +34,15 @@ export function getDetailRowKey(row, index = 0) {
|
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
export function sortDetailRowsByZdEn(rows = []) {
|
|
37
|
-
return [...rows].sort((a, b) => {
|
|
37
|
+
/* return [...rows].sort((a, b) => {
|
|
38
38
|
const aVal = String(a?.zdEn ?? "");
|
|
39
39
|
const bVal = String(b?.zdEn ?? "");
|
|
40
40
|
return aVal.localeCompare(bVal, "zh-CN", {
|
|
41
41
|
numeric: true,
|
|
42
42
|
sensitivity: "base",
|
|
43
43
|
});
|
|
44
|
-
});
|
|
44
|
+
}); */
|
|
45
|
+
return [...rows];
|
|
45
46
|
}
|
|
46
47
|
|
|
47
48
|
export function buildRowDiffMaps(preCellDiff = {}, curCellDiff = {}) {
|