gyyg-components 0.2.7 → 0.2.9

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.
Files changed (29) hide show
  1. package/lib/gyyg-components.common.js +753 -185
  2. package/lib/gyyg-components.umd.js +753 -185
  3. package/lib/gyyg-components.umd.min.js +753 -185
  4. package/package.json +2 -2
  5. package/src/App.vue +31 -95
  6. package/src/components/GyygModal/GyygModal.vue +1 -1
  7. package/src/components/MECDefaultText/MECDefaultText.js +5 -0
  8. package/src/components/MECDefaultText/MECDefaultText.vue +9 -0
  9. package/src/components/MecButtonGroup/MecButtonGroup.vue +8 -5
  10. package/src/components/MecCheckbox/MecCheckbox.js +5 -0
  11. package/src/components/MecCheckbox/MecCheckbox.vue +86 -0
  12. package/src/components/MecDatePicker/MecDatePicker.js +5 -0
  13. package/src/components/MecDatePicker/MecDatePicker.vue +94 -0
  14. package/src/components/MecDialog/MecDialog.js +5 -0
  15. package/src/components/MecDialog/MecDialog.vue +225 -0
  16. package/src/components/MecForm/MecForm.js +5 -0
  17. package/src/components/MecForm/MecForm.vue +82 -0
  18. package/src/components/MecInput/MecInput.vue +35 -6
  19. package/src/components/MecPopoverButton/MecPopoverButton.vue +32 -2
  20. package/src/components/MecRadio/MecRadio.js +5 -0
  21. package/src/components/MecRadio/MecRadio.vue +62 -0
  22. package/src/components/MecSearchForm/MecSearchForm.vue +47 -32
  23. package/src/components/MecSelect/MecSelect.vue +30 -8
  24. package/src/components/MecTable/MecTable.vue +16 -3
  25. package/src/components/MecTabs/MecTabs.js +6 -0
  26. package/src/components/MecTabs/MecTabs.vue +66 -0
  27. package/src/directive/hasPermi.js +2 -4
  28. package/src/otherComponents/iconButton.vue +1 -1
  29. package/src/otherComponents/styleText.vue +6 -15
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gyyg-components",
3
- "version": "0.2.7",
3
+ "version": "0.2.9",
4
4
  "private": false,
5
5
  "main": "lib/gyyg-components.umd.js",
6
6
  "scripts": {
@@ -19,7 +19,7 @@
19
19
  "devDependencies": {
20
20
  "@vue/cli-plugin-babel": "~4.5.15",
21
21
  "@vue/cli-plugin-eslint": "~4.5.15",
22
- "@vue/cli-service": "~4.5.15",
22
+ "@vue/cli-service": "^4.5.15",
23
23
  "babel-eslint": "^10.1.0",
24
24
  "eslint": "^6.7.2",
25
25
  "eslint-plugin-vue": "^6.2.2",
package/src/App.vue CHANGED
@@ -12,113 +12,49 @@
12
12
  @page-change="handlePageChange"
13
13
  @show="show"
14
14
  ></mec-input-table>-->
15
- <mec-search-form
16
- :formGroups="formGroups"
17
- >
15
+ <!-- <mec-form :formData="formData" :showBtn="true" @submit="submit"></mec-form> -->
18
16
 
19
- </mec-search-form>
17
+ <mec-form ref="planForm" :formData="formData" :label-width="'100px'"></mec-form>
18
+ <mec-popover-button :btnInfo="btnInfo"></mec-popover-button>
20
19
  </div>
21
-
22
20
  </template>
23
21
 
24
22
  <script>
25
-
26
23
  export default {
27
24
  data() {
28
- const _this = this
25
+ const _this = this;
29
26
  return {
30
- formGroups: [
31
- {
32
- componentName: 'mec-select',
33
- value: '',
34
- prop: 'a',
35
- componentProps: {
36
- options: [
37
- { id: 'option1', name: '选项1' },
38
- { id: 'option2', name: '选项2' },
39
- { id: 'option3', name: '选项3' }
40
- ],
41
- placeholder: '请选择一个选项',
42
- clearable: true,
43
- filterable: true,
44
- props: {
45
- label: 'name',
46
- value: 'id'
47
- }
48
- },
49
- componentListeners: {
50
- change: (val) => {
51
- this.formGroups[0].value = val
52
- console.log(this.formGroups[0].value);
53
- },
54
- clear: () => {
55
- console.log(_this);
56
- }
57
- }
58
- },
59
- {
60
- label: '选择项',
61
- componentName: 'MecInputTable',
62
- value: '',
63
- prop: 'b',
64
- componentProps: {
65
- tableData: [
66
- { name: 'John', age: 30, address: 'New York' },
67
- { name: 'Tom', age: 25, address: 'London' },
68
- { name: 'Jerry', age: 35, address: 'Paris' }
69
- ],
70
- columns: [
71
- { label: '姓名', bind: 'name' },
72
- { label: '年龄', bind: 'age' },
73
- { label: '地址', bind: 'address' }
74
- ],
75
- inputInfo: {
76
- inputPlaceholder: '点击选择',
77
- tablePlaceholder: '请输入',
78
- },
79
- showSearch: true,
80
- page: {
81
- currentPage: 1,
82
- pageSize: 10,
83
- total: 3
84
- }
85
- },
86
- componentListeners: {
87
- 'row-click': (row) => {
88
- _this.formGroups[1].value = row.name
89
- console.log('Row clicked:', row);
90
- },
91
- 'size-change': (val) => {
92
- console.log('Page size changed:', val);
93
- },
94
- 'current-change': (val) => {
95
- console.log('Page changed:', val);
27
+ formData:{
28
+ // 日期组件
29
+ wpaApplicationDate: {
30
+ label: '申请日期',
31
+ componentName: 'mec-date-picker',
32
+ placeholder: '请选择日期',
33
+ dateType: 'datetime',
34
+ col: 12,
35
+ valueFormat: 'yyyy-MM-dd HH:mm:ss',
36
+ value: '',
37
+ rules: [{ required: true, message: '请选择日期', trigger: 'change' }],
96
38
  },
97
- 'show': () => {
98
- console.log('Dropdown shown');
99
- },
100
- 'input': (val) => {
101
- console.log('Input changed:', val);
102
- },
103
- 'search': (val) => {
104
- console.log('Search:', val);
105
- },
106
- 'refresh': () => {
107
- console.log('Refreshed');
108
- }
109
- }
110
- }
111
- ]
39
+ },
40
+ btnInfo: {
41
+ text: '操作',
42
+ type: 'primary',
43
+ disabled: false,
44
+ hasPermi: '',
45
+ options: [
46
+ { id: '1', label: '选项1', hasPermi: '' },
47
+ { id: '2', label: '选项2', hasPermi: '' },
48
+ { id: '3', label: '选项3' }
49
+ ]
50
+ }
112
51
  };
113
52
  },
114
53
  methods: {
115
- handleSelectChange(val) {
116
- console.log('Selected value changed:', val);
54
+ handleEnter() {
55
+ console.log('enter');
117
56
  },
118
- handleSelectClear() {
119
- console.log('Selection cleared');
120
- }
121
- }
57
+ },
122
58
  // methods: {
123
59
  // handleRowClick(row) {
124
60
  // console.log('Row clicked:', row);
@@ -135,7 +71,7 @@ export default {
135
71
  // },
136
72
  // show() {
137
73
  // console.log('显示');
138
-
74
+
139
75
  // }
140
76
  // }
141
77
  };
@@ -187,7 +187,7 @@ export default {
187
187
  }
188
188
  </script>
189
189
 
190
- <style lang="less">
190
+ <style lang="less" scoped>
191
191
  .el-dialog__wrapper {
192
192
  overflow: hidden;
193
193
  display: flex;
@@ -0,0 +1,5 @@
1
+ import MECDefaultText from "./MECDefaultText.vue";
2
+
3
+ MECDefaultText.install = Vue => Vue.component(MECDefaultText.name, MECDefaultText); //注册组件
4
+
5
+ export default MECDefaultText;
@@ -0,0 +1,9 @@
1
+ <template>
2
+ <div>{{ value }}</div>
3
+ </template>
4
+ <script>
5
+ export default {
6
+ name: 'mec-defaultText',
7
+ props:['value']
8
+ }
9
+ </script>
@@ -1,15 +1,16 @@
1
1
  <template>
2
2
  <div class="btn-group">
3
- <div v-for="btn in btnList" :key="btn.id">
3
+ <div v-for="btn in btnList" :key="btn.id"
4
+ v-has-permi="btn.hasPermi ? [btn.hasPermi] : undefined">
4
5
  <el-button
5
6
  v-if="!btn['componentType']"
6
- v-has-permi="[btn.hasPermi]"
7
7
  :disabled="btn.disabled"
8
- :size="btn.size"
8
+ :size="btn.size || 'small'"
9
9
  :type="btn.type"
10
10
  :icon="!btn.rightIcon ? btn.icon: ''"
11
11
  :loading="btn.loading"
12
12
  @click="btnClick(btn)"
13
+ :plain="btn.plain || true"
13
14
  >{{ btn.text }}
14
15
  <i v-if="btn.rightIcon" :class="btn.icon + ' el-icon--right'"></i>
15
16
  </el-button>
@@ -20,7 +21,6 @@
20
21
  ></component>
21
22
  </div>
22
23
  </div>
23
-
24
24
  </div>
25
25
  </template>
26
26
  <script>
@@ -51,7 +51,10 @@ export default {
51
51
  flex-wrap: wrap;
52
52
  &>div {
53
53
  margin-left: 15px;
54
- margin-bottom: 15px;
54
+ margin-bottom: 10px;
55
+ &:first-child {
56
+ margin-left: 0;
57
+ }
55
58
  }
56
59
  }
57
60
  </style>
@@ -0,0 +1,5 @@
1
+ import MecCheckbox from "./MecCheckbox.vue";
2
+
3
+ MecCheckbox.install = Vue => Vue.component(MecCheckbox.name, MecCheckbox); //注册组件
4
+
5
+ export default MecCheckbox;
@@ -0,0 +1,86 @@
1
+ <template>
2
+ <div class="checkbox-group">
3
+ <el-checkbox
4
+ :indeterminate="isIndeterminate"
5
+ v-if="isCheckAll"
6
+ v-model="checkAll"
7
+ @change="handleCheckAllChange">全选</el-checkbox>
8
+ <div style="margin: 15px 0;" v-if="isCheckAll" ></div>
9
+ <el-checkbox-group v-model="checkbox" @change="handleCheckedCitiesChange">
10
+ <el-checkbox v-for="(item, index) in options"
11
+ :label="item[props.value]"
12
+ :disabled="item.disabled"
13
+ :key="index">{{ item[props.label] }}</el-checkbox>
14
+ </el-checkbox-group>
15
+ </div>
16
+ </template>
17
+ <script>
18
+ const cityOptions = ['上海', '北京', '广州', '深圳'];
19
+ export default {
20
+ name: 'mec-checkbox',
21
+ props: {
22
+ value: {},
23
+ options: {
24
+ type: Array,
25
+ default() {
26
+ return [];
27
+ }
28
+ },
29
+ props: {
30
+ default() {
31
+ return {
32
+ label: 'label',
33
+ value: 'value'
34
+ }
35
+ }
36
+ },
37
+ isCheckAll: {
38
+ default() {
39
+ return false;
40
+ }
41
+ },
42
+ },
43
+ data() {
44
+ return {
45
+ checkAll: false,
46
+ checkbox: [],
47
+ isIndeterminate: true
48
+ };
49
+ },
50
+ watch: {
51
+ value: {
52
+ handler (val) {
53
+ this.checkbox = [].concat(val);
54
+ },
55
+ immediate: true
56
+ },
57
+ },
58
+ computed: {
59
+ checkboxAll () {
60
+ return this.options.map(item => {
61
+ return item[this.props.value]
62
+ })
63
+ }
64
+ },
65
+ methods: {
66
+ handleCheckAllChange(val) {
67
+ this.checkbox = val ? this.checkboxAll : [];
68
+ this.isIndeterminate = false;
69
+ },
70
+ handleCheckedCitiesChange(value) {
71
+ let checkedCount = value.length;
72
+ this.checkAll = checkedCount === this.checkboxAll.length;
73
+ this.isIndeterminate = checkedCount > 0 && checkedCount < this.checkboxAll.length;
74
+ this.$emit('input', value)
75
+ console.log(value)
76
+ }
77
+ }
78
+ };
79
+ </script>
80
+ <style lang="less" scoped>
81
+ .checkbox-group {
82
+ /deep/ .el-checkbox__label {
83
+ font-weight: normal;
84
+ }
85
+ }
86
+ </style>
@@ -0,0 +1,5 @@
1
+ import MecDatePicker from "./MecDatePicker.vue";
2
+
3
+ MecDatePicker.install = Vue => Vue.component(MecDatePicker.name, MecDatePicker); //注册组件
4
+
5
+ export default MecDatePicker;
@@ -0,0 +1,94 @@
1
+ <template>
2
+ <div>
3
+ <el-date-picker
4
+ v-model="date"
5
+ :type="dateType"
6
+ :placeholder="placeholder"
7
+ :disabled="disabled"
8
+ :readonly="readonly"
9
+ :size="size"
10
+ @change="change"
11
+ :picker-options="pickerOptions"
12
+ :start-placeholder="startPlaceholder"
13
+ :end-placeholder="endPlaceholder"
14
+ :range-separator="rangeSeparator"
15
+ :value-format="valueFormat"
16
+ style="width: 100%;">
17
+ </el-date-picker>
18
+ </div>
19
+ </template>
20
+ <script>
21
+ export default {
22
+ name: 'mec-date-picker',
23
+ props: {
24
+ value: {},
25
+ dateType: {
26
+ type: String,
27
+ default: 'date'
28
+ },
29
+ placeholder: {
30
+ type: String,
31
+ default: '选择日期时间'
32
+ },
33
+ disabled: {
34
+ type: Boolean,
35
+ default: false
36
+ },
37
+ readonly: {
38
+ type: Boolean,
39
+ default: false
40
+ },
41
+ size: {
42
+ type: String,
43
+ },
44
+ pickerOptions: {
45
+ type: Object,
46
+
47
+ },
48
+ startPlaceholder: {
49
+ type: String,
50
+ default: '开始日期'
51
+ },
52
+ endPlaceholder: {
53
+ type: String,
54
+ default: '结束日期'
55
+
56
+ },
57
+ rangeSeparator: {
58
+ type: String,
59
+ default: '至'
60
+ },
61
+ valueFormat: {
62
+ type: String,
63
+ default: 'yyyy-MM-dd'
64
+ }
65
+
66
+ },
67
+ data() {
68
+ return {
69
+ date: ''
70
+ }
71
+ },
72
+ methods: {
73
+ change(val) {
74
+ this.$emit('change', val);
75
+ }
76
+ },
77
+ watch: {
78
+ value: {
79
+ handler(val) {
80
+ this.date = val;
81
+ },
82
+ immediate: true
83
+ },
84
+ date: {
85
+ handler(val) {
86
+ this.$emit('input', val);
87
+ }
88
+
89
+ }
90
+ }
91
+ }
92
+ </script>
93
+ <style lang="less" scoped>
94
+ </style>
@@ -0,0 +1,5 @@
1
+ import MecDialog from "./MecDialog.vue";
2
+
3
+ MecDialog.install = Vue => Vue.component(MecDialog.name, MecDialog); //注册组件
4
+
5
+ export default MecDialog;
@@ -0,0 +1,225 @@
1
+ <template>
2
+ <div class="base-dialog">
3
+ <el-dialog
4
+ :class="dialogClass"
5
+ v-el-drag-dialog="dragDialog"
6
+ :type="type"
7
+ :width="width"
8
+ :custom-class="customClass"
9
+ :fullscreen="fullscreen"
10
+ :title="title"
11
+ :close-on-click-modal="closeOnClickModal"
12
+ :append-to-body="appendToBody"
13
+ :visible.sync="visible"
14
+ :before-close="beforeClose"
15
+ :show-close="showClose"
16
+ v-if="visible"
17
+ @closed="closed"
18
+ @close="closeMethod"
19
+ :destroy-on-close="destroyOnClose"
20
+ :modal='modal'
21
+ >
22
+ <slot name="body" />
23
+ <div v-if="footer" slot="footer">
24
+ <slot name="footer" />
25
+ </div>
26
+ </el-dialog>
27
+ </div>
28
+ </template>
29
+
30
+ <script>
31
+ import elDragDialog from "@/directive/el-drag-dialog"; // 引入拖拽指令
32
+ export default {
33
+ name: "mec-dialog",
34
+ directives: { elDragDialog },
35
+ props: {
36
+ appendToBody: {
37
+ type: Boolean,
38
+ default: false,
39
+ }, // 是否嵌套
40
+ closeOnClickModal: {
41
+ type: Boolean,
42
+ default: false,
43
+ }, // 是否可以点击关闭
44
+ footer: {
45
+ type: Boolean,
46
+ default: true,
47
+ }, // 是否显示底部
48
+ title: {
49
+ type: String,
50
+ default: "",
51
+ }, // 对话框title
52
+ type: {
53
+ type: String,
54
+ default: "",
55
+ }, // 对话框类型:1.基础表单[base-dialog-form] 2.表格[base-dialog-table] 3.全屏 [base-dialog-fullscreen]
56
+ width: {
57
+ type: String,
58
+ default: "",
59
+ }, // 对话框宽度800px 或 50%
60
+ destroyOnClose: {
61
+ type: Boolean,
62
+ default: true,
63
+ },
64
+ beforeClose: Function, // 关闭回调函数
65
+ dialogClass: {
66
+ //class
67
+ type: String,
68
+ default: "",
69
+ },
70
+ // 是否显示叉号
71
+ showClose: {
72
+ default: true,
73
+ type: Boolean
74
+ },
75
+ //是否需要遮罩层
76
+ modal:{
77
+ default: true,
78
+ type: Boolean
79
+ },
80
+ dragDialog: {
81
+ type: Boolean,
82
+ default: true,
83
+ },
84
+ },
85
+ data() {
86
+ return {
87
+ visible: false,
88
+ fullscreen: false,
89
+ };
90
+ },
91
+ computed: {
92
+ customClass() {
93
+ let className = "";
94
+ switch (this.type) {
95
+ case "form":
96
+ className = "base-dialog-form";
97
+ break;
98
+ case "table":
99
+ className = "base-dialog-table";
100
+ break;
101
+ case "fullscreen":
102
+ className = "base-dialog-fullscreen";
103
+ break;
104
+ }
105
+ return className;
106
+ },
107
+ },
108
+ created() {
109
+ this.type === "fullscreen" && (this.fullscreen = true);
110
+ },
111
+ methods: {
112
+ open() {
113
+ this.visible = true;
114
+ },
115
+ close() {
116
+ this.visible = false;
117
+ },
118
+ closed() {
119
+ this.$emit("closed");
120
+ },
121
+ closeMethod() {
122
+ this.$emit("close");
123
+ },
124
+ },
125
+ };
126
+ </script>
127
+
128
+ <style lang="less" scoped>
129
+ .base-dialog {
130
+ text-align: left;
131
+ }
132
+ /deep/.el-dialog__wrapper {
133
+ overflow: hidden;
134
+ display: flex;
135
+ justify-content: center;
136
+ align-items: center;
137
+ .el-dialog {
138
+ display: flex;
139
+ flex-direction: column;
140
+ border-radius: 8px;
141
+ margin: 0;
142
+ margin-top: 0 !important;
143
+ .el-dialog__header {
144
+ text-align: left;
145
+ background-color: #efefef;
146
+ height: 48px;
147
+ line-height: 48px;
148
+ padding: 0 20px;
149
+ color: #fff;
150
+ border-top-left-radius: 8px;
151
+ border-top-right-radius: 8px;
152
+ font-weight: bold;
153
+
154
+ .el-dialog__title {
155
+ font-size: 16px;
156
+ // font-weight: bold;
157
+ }
158
+
159
+ .el-dialog__headerbtn {
160
+ top: 12px;
161
+ }
162
+ }
163
+
164
+ .el-dialog__body {
165
+ flex: 1;
166
+ overflow: auto;
167
+ padding: 20px;
168
+ padding-bottom: 52px;
169
+ }
170
+
171
+ .el-dialog__footer {
172
+ box-sizing: border-box;
173
+ padding: 10px 20px;
174
+ border: none;
175
+ background-color: #efefef;
176
+ border-bottom-left-radius: 8px;
177
+ border-bottom-right-radius: 8px;
178
+ }
179
+ }
180
+
181
+ .base-dialog-form {
182
+ height: auto;
183
+
184
+ .el-dialog__body {
185
+ padding: 20px 20px 0 20px;
186
+ }
187
+
188
+ .el-dialog__footer {
189
+ height: 32px;
190
+ border: none;
191
+ background-color: #efefef;
192
+ border-bottom-left-radius: 8px;
193
+ border-bottom-right-radius: 8px;
194
+ }
195
+
196
+ .custom-table {
197
+ // 取消表格下边线
198
+ tbody tr:last-child td {
199
+ border-bottom: none !important;
200
+ }
201
+ }
202
+ }
203
+
204
+ .base-dialog-table {
205
+ height: 90vh;
206
+ margin-top: 5vh !important;
207
+ }
208
+
209
+ .base-dialog-fullscreen {
210
+ height: 100vh;
211
+ width: 100vw;
212
+
213
+ .el-dialog__body {
214
+ padding: 10px;
215
+ }
216
+ .el-dialog__footer {
217
+ padding: 10px;
218
+ border: none;
219
+ background-color: #efefef;
220
+ border-bottom-left-radius: 8px;
221
+ border-bottom-right-radius: 8px;
222
+ }
223
+ }
224
+ }
225
+ </style>
@@ -0,0 +1,5 @@
1
+ import MecForm from "./MecForm.vue";
2
+
3
+ MecForm.install = Vue => Vue.component(MecForm.name, MecForm); //注册组件
4
+
5
+ export default MecForm;