matrix_components 2.0.300 → 2.0.303

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.
@@ -0,0 +1,155 @@
1
+ <template>
2
+ <div class="saturation-line-view">
3
+ <span>浸润线</span>
4
+ <NsSaturationline ref="canvasRef" class="saturationline-canvas" :data="state.damData" :waterLevel="state.waterLevel"></NsSaturationline>
5
+ </div>
6
+ </template>
7
+ <script setup lang="ts" name="">
8
+ import { reactive } from 'vue';
9
+
10
+ const state = reactive({
11
+ damData: {
12
+ // 坝体
13
+ sectionTableList: [
14
+ {
15
+ xPoint: "-44",
16
+ yPoint: "17",
17
+ isTop: false,
18
+ },
19
+ {
20
+ xPoint: "-26",
21
+ yPoint: "24",
22
+ isTop: false,
23
+ },
24
+ {
25
+ xPoint: "-16",
26
+ yPoint: "24",
27
+ isTop: false,
28
+ },
29
+ {
30
+ xPoint: "-8",
31
+ yPoint: "29",
32
+ isTop: true,
33
+ },
34
+ {
35
+ xPoint: "8",
36
+ yPoint: "29",
37
+ isTop: true,
38
+ },
39
+ {
40
+ xPoint: "22",
41
+ yPoint: "25",
42
+ isTop: false,
43
+ },
44
+ {
45
+ xPoint: "40",
46
+ yPoint: "22",
47
+ isTop: false,
48
+ },
49
+ {
50
+ xPoint: "47",
51
+ yPoint: "22",
52
+ isTop: false,
53
+ },
54
+ {
55
+ xPoint: "62",
56
+ yPoint: "17",
57
+ isTop: false,
58
+ },
59
+ {
60
+ xPoint: "70",
61
+ yPoint: "17",
62
+ isTop: false,
63
+ },
64
+ ],
65
+ // 测压管
66
+ pipelineTableList: [
67
+ {
68
+ xPoint: "-8",
69
+ yPoint: "29",
70
+ height: "15",
71
+ pointCode: "UP1-1",
72
+ },
73
+ {
74
+ xPoint: "8",
75
+ yPoint: "29",
76
+ height: "17",
77
+ pointCode: "UP1-2",
78
+ },
79
+ {
80
+ xPoint: "17",
81
+ yPoint: "26.3",
82
+ height: "15",
83
+ pointCode: "UP1-3",
84
+ },
85
+ ],
86
+ // y/x偏移
87
+ isWall: "1",
88
+ yStart: "10",
89
+ wallXpoint: "-2",
90
+ },
91
+ waterLevel: {
92
+ map: [
93
+ {
94
+ id: null,
95
+ projectCode: null,
96
+ transectName: "0+155",
97
+ pointCode: "UP1-3",
98
+ waterLevel: 14.8,
99
+ date: "2025-05-20T05:00:00",
100
+ createBy: null,
101
+ createTime: null,
102
+ updateBy: null,
103
+ updateTime: null,
104
+ isDelete: null,
105
+ code: null,
106
+ },
107
+ {
108
+ id: null,
109
+ projectCode: null,
110
+ transectName: "0+155",
111
+ pointCode: "UP1-2",
112
+ waterLevel: 16.0,
113
+ date: "2025-05-20T05:00:00",
114
+ createBy: null,
115
+ createTime: null,
116
+ updateBy: null,
117
+ updateTime: null,
118
+ isDelete: null,
119
+ code: null,
120
+ },
121
+ {
122
+ id: null,
123
+ projectCode: null,
124
+ transectName: "0+155",
125
+ pointCode: "UP1-1",
126
+ waterLevel: 18.3,
127
+ date: "2025-05-20T00:00:00",
128
+ createBy: null,
129
+ createTime: null,
130
+ updateBy: null,
131
+ updateTime: null,
132
+ isDelete: null,
133
+ code: null,
134
+ },
135
+ ],
136
+ kssw: 22,
137
+ xxsw: 15,
138
+ sjsw: 24,
139
+ jhsw: 26,
140
+ },
141
+ });
142
+ </script>
143
+ <style lang="scss" scoped>
144
+ .saturation-line-view {
145
+ width: calc(100% - 40px);
146
+ height: calc(100% - 20px);
147
+ padding: 20px;
148
+ display: flex;
149
+ flex-direction: column;
150
+ .saturationline-canvas {
151
+ flex: 1;
152
+ height: 100%;
153
+ }
154
+ }
155
+ </style>
@@ -0,0 +1,97 @@
1
+ {
2
+ "formData": {
3
+ "name": "xx",
4
+ "email": "yy@zz.com",
5
+ "age": null,
6
+ "city": "",
7
+ "description": ""
8
+ },
9
+ "formItems": [
10
+ {
11
+ "label": "姓名",
12
+ "prop": "name",
13
+ "component": "input",
14
+ "span": 24,
15
+ "required": true,
16
+ "placeholder": "请输入姓名",
17
+ "props": {
18
+ "clearable": true
19
+ }
20
+ },
21
+ {
22
+ "label": "邮箱",
23
+ "prop": "email",
24
+ "component": "input",
25
+ "span": 24,
26
+ "required": true,
27
+ "placeholder": "请输入邮箱",
28
+ "props": {
29
+ "clearable": true
30
+ },
31
+ "rules": [
32
+ {
33
+ "type": "email",
34
+ "message": "请输入正确的邮箱地址",
35
+ "trigger": "blur"
36
+ }
37
+ ]
38
+ },
39
+ {
40
+ "label": "年龄",
41
+ "prop": "age",
42
+ "component": "number",
43
+ "span": 24,
44
+ "placeholder": "请输入年龄",
45
+ "props": {
46
+ "min": 1,
47
+ "max": 120,
48
+ "controlsPosition": "right"
49
+ }
50
+ },
51
+ {
52
+ "label": "城市",
53
+ "prop": "city",
54
+ "component": "select",
55
+ "span": 24,
56
+ "placeholder": "请选择城市",
57
+ "options": [
58
+ { "label": "北京", "value": "beijing" },
59
+ { "label": "上海", "value": "shanghai" },
60
+ { "label": "广州", "value": "guangzhou" },
61
+ { "label": "深圳", "value": "shenzhen" }
62
+ ],
63
+ "props": {
64
+ "clearable": true
65
+ }
66
+ },
67
+ {
68
+ "label": "描述",
69
+ "prop": "description",
70
+ "component": "textarea",
71
+ "span": 24,
72
+ "placeholder": "请输入描述",
73
+ "props": {
74
+ "rows": 3,
75
+ "maxlength": 200,
76
+ "showWordLimit": true
77
+ }
78
+ }
79
+ ],
80
+ "formRules": {
81
+ "name": [
82
+ {
83
+ "required": true,
84
+ "message": "请输入姓名",
85
+ "trigger": "blur"
86
+ }
87
+ ],
88
+ "email": [
89
+ {
90
+ "required": true,
91
+ "message": "请输入邮箱地址",
92
+ "trigger": "blur"
93
+ }
94
+ ]
95
+ },
96
+ "optionsData": {}
97
+ }
@@ -1,6 +1,79 @@
1
1
  <template>
2
- <span>Test</span>
2
+ <div style="padding: 20px;">
3
+ <h2>测试 el-autocomplete 和 el-input 的 v-length 指令</h2>
4
+
5
+ <div style="margin-bottom: 20px;">
6
+ <h3>el-autocomplete (限制2个字符)</h3>
7
+ <el-autocomplete
8
+ ref="autocompleteRef"
9
+ v-model="userName"
10
+ v-length="2"
11
+ :fetch-suggestions="querySearch"
12
+ placeholder="请输入用户名"
13
+ style="width: 300px;"
14
+ />
15
+ <p>当前值: "{{ userName }}" (长度: {{ userName.length }})</p>
16
+ <button @click="checkDOM">检查 DOM 结构</button>
17
+ </div>
18
+
19
+ <div style="margin-bottom: 20px;">
20
+ <h3>el-input (限制2个字符)</h3>
21
+ <el-input
22
+ v-model="xxx"
23
+ v-length="2"
24
+ placeholder="请输入内容"
25
+ style="width: 300px;"
26
+ />
27
+ <p>当前值: "{{ xxx }}" (长度: {{ xxx.length }})</p>
28
+ </div>
29
+
30
+ <div style="margin-bottom: 20px;">
31
+ <h3>原生 input (限制2个字符)</h3>
32
+ <input
33
+ v-model="nativeInput"
34
+ v-length="2"
35
+ placeholder="请输入内容"
36
+ style="width: 300px; padding: 8px; border: 1px solid #dcdfe6; border-radius: 4px;"
37
+ />
38
+ <p>当前值: "{{ nativeInput }}" (长度: {{ nativeInput.length }})</p>
39
+ </div>
40
+
41
+ <div id="dom-info" style="margin-top: 20px; padding: 10px; background: #f5f5f5;"></div>
42
+ </div>
3
43
  </template>
4
44
  <script setup lang="ts">
45
+ import { ref } from 'vue'
46
+
47
+ const userName = ref('')
48
+ const xxx = ref('')
49
+ const nativeInput = ref('')
50
+ const autocompleteRef = ref(null)
51
+
52
+ function querySearch(queryString, cb) {
53
+ const results = queryString
54
+ ? [{ value: '测试1' }, { value: '测试2' }, { value: '测试3' }, { value: '测试4' }, { value: '测试5' }].filter(item => item.value.includes(queryString))
55
+ : []
56
+ cb(results)
57
+ }
58
+
59
+ function checkDOM() {
60
+ const autocompleteElement = autocompleteRef.value.$el;
61
+ const domInfo = document.getElementById('dom-info');
62
+
63
+ // 显示 el-autocomplete 的 DOM 结构
64
+ let html = '<h4>el-autocomplete DOM 结构:</h4>';
65
+ html += '<pre>' + autocompleteElement.outerHTML.replace(/</g, '&lt;').replace(/>/g, '&gt;') + '</pre>';
66
+
67
+ // 查找所有 input 元素
68
+ const inputs = autocompleteElement.querySelectorAll('input');
69
+ html += '<h4>找到的 input 元素:</h4>';
70
+ html += '<p>数量: ' + inputs.length + '</p>';
71
+
72
+ inputs.forEach((input, index) => {
73
+ html += '<p>Input ' + index + ': ' + input.tagName + ' (type: ' + input.type + ')</p>';
74
+ });
75
+
76
+ domInfo.innerHTML = html;
77
+ }
5
78
  </script>
6
- <style scoped></style>
79
+ <style scoped></style>
@@ -0,0 +1,129 @@
1
+ // 测试表单配置文件 - 用于验证默认值加载功能
2
+ export const formConfig = {
3
+ // 表单数据初始值
4
+ formData: {
5
+ testName: "默认姓名",
6
+ testEmail: "default@example.com",
7
+ testAge: 25,
8
+ testGender: "male",
9
+ testHobbies: ["reading", "music"],
10
+ testIsVip: true,
11
+ testScore: 80,
12
+ testBirthday: "1998-01-01",
13
+ testDescription: "这是默认的描述信息",
14
+ },
15
+
16
+ // 表单配置项
17
+ formItems: [
18
+ {
19
+ label: "姓名",
20
+ prop: "testName",
21
+ component: "input",
22
+ span: 12,
23
+ required: true,
24
+ placeholder: "请输入姓名",
25
+ props: {
26
+ clearable: true,
27
+ },
28
+ },
29
+ {
30
+ label: "邮箱",
31
+ prop: "testEmail",
32
+ component: "input",
33
+ span: 12,
34
+ required: true,
35
+ props: {
36
+ clearable: true,
37
+ },
38
+ rules: [
39
+ { type: "email", message: "请输入正确的邮箱地址", trigger: "blur" },
40
+ ],
41
+ },
42
+ {
43
+ label: "年龄",
44
+ prop: "testAge",
45
+ component: "number",
46
+ span: 12,
47
+ props: {
48
+ min: 1,
49
+ max: 120,
50
+ controlsPosition: "right",
51
+ },
52
+ },
53
+ {
54
+ label: "性别",
55
+ prop: "testGender",
56
+ component: "radio-group",
57
+ span: 12,
58
+ options: [
59
+ { label: "男", value: "male" },
60
+ { label: "女", value: "female" },
61
+ ],
62
+ },
63
+ {
64
+ label: "爱好",
65
+ prop: "testHobbies",
66
+ component: "checkbox-group",
67
+ span: 24,
68
+ options: [
69
+ { label: "读书", value: "reading" },
70
+ { label: "运动", value: "sports" },
71
+ { label: "音乐", value: "music" },
72
+ { label: "旅行", value: "travel" },
73
+ ],
74
+ },
75
+ {
76
+ label: "VIP用户",
77
+ prop: "testIsVip",
78
+ component: "switch",
79
+ span: 12,
80
+ },
81
+ {
82
+ label: "评分",
83
+ prop: "testScore",
84
+ component: "slider",
85
+ span: 12,
86
+ props: {
87
+ min: 0,
88
+ max: 100,
89
+ showStops: true,
90
+ showTooltip: false,
91
+ },
92
+ },
93
+ {
94
+ label: "生日",
95
+ prop: "testBirthday",
96
+ component: "date-picker",
97
+ span: 12,
98
+ props: {
99
+ type: "date",
100
+ format: "YYYY-MM-DD",
101
+ valueFormat: "YYYY-MM-DD",
102
+ },
103
+ },
104
+ {
105
+ label: "描述",
106
+ prop: "testDescription",
107
+ component: "textarea",
108
+ span: 24,
109
+ props: {
110
+ rows: 4,
111
+ maxlength: 200,
112
+ showWordLimit: true,
113
+ },
114
+ },
115
+ ],
116
+
117
+ // 表单验证规则
118
+ formRules: {
119
+ testName: [
120
+ { required: true, message: "请输入姓名"},
121
+ ],
122
+ testEmail: [{ required: true, message: "请输入邮箱地址"}],
123
+ },
124
+
125
+ // 下拉框选项数据源
126
+ optionsData: {},
127
+ };
128
+
129
+ export default formConfig;
@@ -5,8 +5,8 @@ const nsVideoRef = ref()
5
5
 
6
6
  // 视频信息
7
7
  const videoData = reactive({
8
- videoModel: 'hk',
9
- hkPath: '/martrix/cdn/h5player',
8
+ // videoModel: 'hk',
9
+ // hkPath: '/martrix/cdn/h5player',
10
10
  // 显示视频关闭按钮
11
11
  showClose: true,
12
12
  // 显示树
@@ -25,7 +25,7 @@ const videoData = reactive({
25
25
  videoModel: 'easyplayer',
26
26
  id: '111',
27
27
  label: '视频A--1视频A--1视频A--1视频A--1视频A--1视频A--1视频A--1视频A--1视频A--1视频A--1视频A--1视频A--1视频A--1视频A--1视频A--1视频A--1',
28
- url: 'ws://199.10.9.192:30200/rtp/34020000001110000001_34020000001320000001.live.flv',
28
+ url: 'ws://199.10.9.192:30200/rtp/34020000001110000001_34020000001320000015.live.flv',
29
29
  deviceId: 'a1',
30
30
  channelId: 'a11',
31
31
  icontype: 'on',
@@ -33,20 +33,11 @@ const videoData = reactive({
33
33
  {
34
34
  id: '222',
35
35
  label: '视频A--2',
36
- url: 'ws://199.10.9.192:30200/rtp/34020000001110000001_34020000001320000004.live.flv',
36
+ url: 'ws://199.10.9.192:30200/rtp/34020000001110000001_34020000001320000013.live.flv',
37
37
  deviceId: 'b1',
38
38
  channelId: 'b11',
39
39
  icontype: 'off',
40
40
  },
41
- {
42
- videoModel: 'hk',
43
- hkPath: '/22222/cdn/h5player',
44
- id: '3aaaaa',
45
- label: '视频A--3',
46
- url: 'ws://199.10.9.192:30200/rtp/34020000001110000001_34020000001320000004.live.flv',
47
- deviceId: 'c1',
48
- channelId: 'c11',
49
- },
50
41
  ],
51
42
  },
52
43
  {
@@ -56,7 +47,7 @@ const videoData = reactive({
56
47
  {
57
48
  id: 'b1',
58
49
  label: '视频A--1视频A--1视频A--1视频A--1视频A--1视频A--1视频A--1视频A--1视频A--1视频A--1视频A--1视频A--1视频A--1视频A--1视频A--1视频A--1',
59
- url: 'wss://gbs.liveqing.com:10010/sms/34020000002020000001/ws-flv/hls/34020000001320000264_34020000001320000264.flv?token=xDaY0uodE5Oj8-4YokeKWnJWDkBSKOeP96vHopkQLa8.oxNzQ3ODMzNDg3LCJwIjoiMGIwOTZlZmI1NyIsInQiOjE3NDc4MzMyMzcsInUiOiIwYjA5NmVmYjU3In0eyJlIj.GciOiJIUzI1NiIsInR5cCI6IkpXVCJ9eyJhb&raw=1',
50
+ url: 'ws://199.10.9.192:30200/rtp/34020000001110000001_34020000001320000003.live.flv',
60
51
  deviceId: 'a1',
61
52
  channelId: 'a11',
62
53
  icontype: 'on',
@@ -64,7 +55,7 @@ const videoData = reactive({
64
55
  {
65
56
  id: 'b2',
66
57
  label: '视频A--2',
67
- url: 'ws://199.10.9.192:30200/rtp/34020000001110000001_34020000001320000002.live.flv',
58
+ url: 'ws://199.10.9.192:30200/rtp/34020000001110000001_34020000001320000015.live.flv',
68
59
  deviceId: 'b1',
69
60
  channelId: 'b11',
70
61
  icontype: 'off',
@@ -72,7 +63,7 @@ const videoData = reactive({
72
63
  {
73
64
  id: 'b3',
74
65
  label: '视频A--3',
75
- url: 'ws://199.10.9.192:30200/rtp/34020000001110000001_34020000001320000004.live.flv',
66
+ url: 'ws://199.10.9.192:30200/rtp/34020000001110000001_34020000001320000009.live.flv',
76
67
  deviceId: 'c1',
77
68
  channelId: 'c11',
78
69
  },