@netang/quasar 0.0.76 → 0.0.77

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.
@@ -1,57 +1,57 @@
1
- # FieldTable 下拉表格
2
-
3
- ::: tip
4
- 继承 `<q-field>` 所有特性
5
- [中文文档](http://www.quasarchs.com/vue-components/field) [英文文档](https://quasar.dev/vue-components/field)
6
- :::
7
-
8
- ## FieldTable API
9
-
10
- ### FieldTable 属性
11
-
12
- | 属性名 | 说明 | 类型 | 可选值 | 默认值 |
13
- |--------------------------|-------------|---------------------|------------------------------------------|-----------------|
14
- | value / v-model | 绑定值 | - | - | - |
15
- | value-key | 值字段 | `String` | - | - |
16
- | label-key | 标签字段 | `String` | - | - |
17
- | value-type | 值类型 | `String` | `string` / `stringArray` / `objectArray` | objectArray |
18
- | value-separator | 值分隔符 | `String` | - | , |
19
- | path | 表格请求路径 | `String` | - | - |
20
- | query | 请求参数 | `object` | - | - |
21
- | data | 附加请求数据 | `object` | - | - |
22
- | no-default-load-selected | 初始不加载已选数据 | `Boolean` | - | false |
23
- | no-update-load-selected | 更新值时不加载已选数据 | `Boolean` | - | false |
24
- | format-label | 格式化显示标签 | `Function` | - | - |
25
- | show-keys | 下拉表格显示的字段数组 | `Array` | - | `[ 值字段, 标签字段 ]` |
26
- | hide-search-keys | 隐藏搜索字段数组 | `Array` | - | - |
27
- | filter-key | 默认筛选字段 | `Array` | - | `标签字段` |
28
- | filter | 是否开启筛选 | `Boolean` | - | false |
29
- | table-props | 表格声明属性 | `Object` | - | - |
30
- | dialog-props | 对话框声明属性 | `Object` | - | - |
31
- | no-dialog | 关闭对话框 | `Boolean` | - | false |
32
- | columns | 表格列数据 | `Array` | - | - |
33
- | rows | 行数据 | `Array` | - | - |
34
- | multiple | 是否多选 | `Boolean` | - | false |
35
- | collapse-tags | 多选模式下是否折叠标签 | `Boolean` | - | false |
36
- | placeholder | 占位符 | `String` | - | - |
37
- | clearable | 是否可清除 | `Boolean` | - | false |
38
- | disable | 是否禁用 | `Boolean` | - | false |
39
- | readonly | 是否只读 | `Boolean` | - | false |
40
- | input-debounce | 输入防抖(毫秒) | `Number` / `String` | - | 500 |
41
-
42
-
43
- ### FieldTable 插槽
44
-
45
- | 插槽名 | 说明 |
46
- |--------------------------|------------------------------------------|
47
- | default | 自定义默认内容(如果存在,则会隐藏下拉表格,并提供接口自定义实现) |
48
-
49
- ### FieldTable `default` 插槽 对外暴露的方法
50
-
51
- | 属性名 | 说明 | 类型 | 示例 |
52
- |--------------------------|--|----------|-----|
53
- | showValue | 显示的已选值 | `String` | - |
54
- | selected | 已选数据 | `Array` | `[ { id: 1, ... }, { id: 2, ... } ]` |
55
- | onRemove | 删除已选 | `Function` | `onRemove(index)` |
56
- | onShowDialog | 显示对话框 | `Function` | - |
57
- | onClear | 清空已选数据 | `Function` | - |
1
+ # FieldTable 下拉表格
2
+
3
+ ::: tip
4
+ 继承 `<q-field>` 所有特性
5
+ [中文文档](http://www.quasarchs.com/vue-components/field) [英文文档](https://quasar.dev/vue-components/field)
6
+ :::
7
+
8
+ ## FieldTable API
9
+
10
+ ### FieldTable 属性
11
+
12
+ | 属性名 | 说明 | 类型 | 可选值 | 默认值 |
13
+ |--------------------------|-------------|---------------------|------------------------------------------|-----------------|
14
+ | value / v-model | 绑定值 | - | - | - |
15
+ | value-key | 值字段 | `String` | - | - |
16
+ | label-key | 标签字段 | `String` | - | - |
17
+ | value-type | 值类型 | `String` | `string` / `stringArray` / `objectArray` | objectArray |
18
+ | value-separator | 值分隔符 | `String` | - | , |
19
+ | path | 表格请求路径 | `String` | - | - |
20
+ | query | 请求参数 | `object` | - | - |
21
+ | data | 附加请求数据 | `object` | - | - |
22
+ | no-default-load-selected | 初始不加载已选数据 | `Boolean` | - | false |
23
+ | no-update-load-selected | 更新值时不加载已选数据 | `Boolean` | - | false |
24
+ | format-label | 格式化显示标签 | `Function` | - | - |
25
+ | show-keys | 下拉表格显示的字段数组 | `Array` | - | `[ 值字段, 标签字段 ]` |
26
+ | hide-search-keys | 隐藏搜索字段数组 | `Array` | - | - |
27
+ | filter-key | 默认筛选字段 | `Array` | - | `标签字段` |
28
+ | filter | 是否开启筛选 | `Boolean` | - | false |
29
+ | table-props | 表格声明属性 | `Object` | - | - |
30
+ | dialog-props | 对话框声明属性 | `Object` | - | - |
31
+ | no-dialog | 关闭对话框 | `Boolean` | - | false |
32
+ | columns | 表格列数据 | `Array` | - | - |
33
+ | rows | 行数据 | `Array` | - | - |
34
+ | multiple | 是否多选 | `Boolean` | - | false |
35
+ | collapse-tags | 多选模式下是否折叠标签 | `Boolean` | - | false |
36
+ | placeholder | 占位符 | `String` | - | - |
37
+ | clearable | 是否可清除 | `Boolean` | - | false |
38
+ | disable | 是否禁用 | `Boolean` | - | false |
39
+ | readonly | 是否只读 | `Boolean` | - | false |
40
+ | input-debounce | 输入防抖(毫秒) | `Number` / `String` | - | 500 |
41
+
42
+
43
+ ### FieldTable 插槽
44
+
45
+ | 插槽名 | 说明 |
46
+ |--------------------------|------------------------------------------|
47
+ | default | 自定义默认内容(如果存在,则会隐藏下拉表格,并提供接口自定义实现) |
48
+
49
+ ### FieldTable `default` 插槽 对外暴露的方法
50
+
51
+ | 属性名 | 说明 | 类型 | 示例 |
52
+ |--------------------------|--|----------|-----|
53
+ | showValue | 显示的已选值 | `String` | - |
54
+ | selected | 已选数据 | `Array` | `[ { id: 1, ... }, { id: 2, ... } ]` |
55
+ | onRemove | 删除已选 | `Function` | `onRemove(index)` |
56
+ | onShowDialog | 显示对话框 | `Function` | - |
57
+ | onClear | 清空已选数据 | `Function` | - |
@@ -8,6 +8,7 @@
8
8
  v-for="(item, itemIndex) in options"
9
9
  >
10
10
  <template v-if="! item.hide">
11
+
11
12
  <!-- 如果有 name 插槽 -->
12
13
  <slot
13
14
  :name="`name-${item.name}`"
@@ -121,6 +122,7 @@
121
122
  v-model="modelValue[itemIndex][index].value"
122
123
  dense
123
124
  outlined
125
+ :value-type="multiple ? 'stringArray' : 'string'"
124
126
  :multiple="multiple"
125
127
  v-bind="item.table"
126
128
  v-else-if="item.searchType === 'table'"
@@ -66,10 +66,12 @@
66
66
  <script>
67
67
  import { watch } from 'vue'
68
68
 
69
+ import $n_isArray from 'lodash/isArray'
69
70
  import $n_cloneDeep from 'lodash/cloneDeep'
70
71
 
71
72
  import $n_split from '@netang/utils/split'
72
73
  import $n_indexOf from '@netang/utils/indexOf'
74
+ import $n_numberDeep from '@netang/utils/numberDeep'
73
75
 
74
76
  import { configs } from '../../utils/config'
75
77
 
@@ -112,21 +114,63 @@ export default {
112
114
  /**
113
115
  * 监听值的比较类型
114
116
  */
115
- watch(()=>props.modelValue[0].compare, function(val) {
116
- // 如果类型不为 in / not in, 为单选
117
- if ($n_indexOf([dicts.SEARCH_COMPARE_TYPE__IN, dicts.SEARCH_COMPARE_TYPE__NOT_IN], val) === -1) {
118
- const arr = $n_split(props.modelValue[0].value, ',')
117
+ watch(()=>props.modelValue[0].compare, function(compare) {
118
+
119
+ // 获取当前值
120
+ const value = props.modelValue[0].value
121
+
122
+ // 如果类型为 in / not in, 则为多选
123
+ // --------------------------------------------------
124
+ if ($n_indexOf([dicts.SEARCH_COMPARE_TYPE__IN, dicts.SEARCH_COMPARE_TYPE__NOT_IN], compare) > -1) {
125
+
126
+ // 如果当前值不为数组
127
+ if (! $n_isArray(value)) {
128
+
129
+ // 则将值转为数组
130
+ // 触发更新值
131
+ emitModelValue($n_split(value, ','))
132
+ }
133
+
134
+ // 否则为单选 && 如果值为: 数组
135
+ // --------------------------------------------------
136
+ } else if ($n_isArray(value)) {
137
+
138
+ // 触发更新值
139
+ emitModelValue(value.length ? $n_numberDeep(value[0]) : '')
140
+
141
+ // 否则为单选 && 值为: 字符串 / 数字
142
+ // --------------------------------------------------
143
+ } else {
144
+
145
+ // 将值转为数组
146
+ const arr = $n_split(value, ',')
147
+
148
+ // 如果数组长度不为 1, 则说明有多个值 || 无值
119
149
  if (arr.length !== 1) {
120
- // 克隆值
121
- const _modelValue = $n_cloneDeep(props.modelValue)
122
150
 
123
- // 更新值
124
- _modelValue[0].value = arr.length > 1 ? arr[0] : ''
125
- emit('update:modelValue', _modelValue)
151
+ // 触发更新值
152
+ emitModelValue(arr.length > 1 ? arr[0] : '')
126
153
  }
127
154
  }
128
155
  })
129
156
 
157
+ // ==========【方法】=============================================================================================
158
+
159
+ /**
160
+ * 触发更新值
161
+ */
162
+ function emitModelValue(value) {
163
+
164
+ // 克隆值
165
+ const _modelValue = $n_cloneDeep(props.modelValue)
166
+
167
+ // 更新值
168
+ _modelValue[0].value = value
169
+
170
+ // 更新值
171
+ emit('update:modelValue', _modelValue)
172
+ }
173
+
130
174
  // ==========【返回】=============================================================================================
131
175
 
132
176
  return {
package/docs/404.html CHANGED
@@ -1,33 +1,33 @@
1
- <!DOCTYPE html>
2
- <html lang="en-US">
3
- <head>
4
- <meta charset="utf-8">
5
- <meta name="viewport" content="width=device-width,initial-scale=1">
6
- <meta name="generator" content="VuePress 2.0.0-beta.60">
7
- <style>
8
- :root {
9
- --c-bg: #fff;
10
- }
11
- html.dark {
12
- --c-bg: #22272e;
13
- }
14
- html, body {
15
- background-color: var(--c-bg);
16
- }
17
- </style>
18
- <script>
19
- const userMode = localStorage.getItem('vuepress-color-scheme');
20
- const systemDarkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
21
- if (userMode === 'dark' || (userMode !== 'light' && systemDarkMode)) {
22
- document.documentElement.classList.toggle('dark', true);
23
- }
24
- </script>
25
- <title>netang-quasar</title><meta name="description" content="">
26
- <link rel="preload" href="/netang-quasar/assets/style-ac5a9aa6.css" as="style"><link rel="stylesheet" href="/netang-quasar/assets/style-ac5a9aa6.css">
27
- <link rel="modulepreload" href="/netang-quasar/assets/app-8c3ae4de.js"><link rel="modulepreload" href="/netang-quasar/assets/framework-204010b2.js"><link rel="modulepreload" href="/netang-quasar/assets/404.html-60b35caa.js"><link rel="modulepreload" href="/netang-quasar/assets/404.html-d1e63d77.js"><link rel="prefetch" href="/netang-quasar/assets/index.html-65a4aa67.js" as="script"><link rel="prefetch" href="/netang-quasar/assets/field-table.html-86cc3511.js" as="script"><link rel="prefetch" href="/netang-quasar/assets/field-tree.html-c98ac993.js" as="script"><link rel="prefetch" href="/netang-quasar/assets/alert.html-568d4e94.js" as="script"><link rel="prefetch" href="/netang-quasar/assets/confirm.html-96f1b004.js" as="script"><link rel="prefetch" href="/netang-quasar/assets/index.html-1695dd7c.js" as="script"><link rel="prefetch" href="/netang-quasar/assets/field-table.html-68d610b0.js" as="script"><link rel="prefetch" href="/netang-quasar/assets/field-tree.html-45410c3c.js" as="script"><link rel="prefetch" href="/netang-quasar/assets/alert.html-f5dbc3e9.js" as="script"><link rel="prefetch" href="/netang-quasar/assets/confirm.html-7a1566f6.js" as="script">
28
- </head>
29
- <body>
30
- <div id="app"><!--[--><div class="theme-container"><main class="page"><div class="theme-default-content"><h1>404</h1><blockquote>That&#39;s a Four-Oh-Four.</blockquote><a href="/netang-quasar/" class="">Take me home</a></div></main></div><!----><!--]--></div>
31
- <script type="module" src="/netang-quasar/assets/app-8c3ae4de.js" defer></script>
32
- </body>
33
- </html>
1
+ <!DOCTYPE html>
2
+ <html lang="en-US">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <meta name="generator" content="VuePress 2.0.0-beta.60">
7
+ <style>
8
+ :root {
9
+ --c-bg: #fff;
10
+ }
11
+ html.dark {
12
+ --c-bg: #22272e;
13
+ }
14
+ html, body {
15
+ background-color: var(--c-bg);
16
+ }
17
+ </style>
18
+ <script>
19
+ const userMode = localStorage.getItem('vuepress-color-scheme');
20
+ const systemDarkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
21
+ if (userMode === 'dark' || (userMode !== 'light' && systemDarkMode)) {
22
+ document.documentElement.classList.toggle('dark', true);
23
+ }
24
+ </script>
25
+ <title>netang-quasar</title><meta name="description" content="">
26
+ <link rel="preload" href="/netang-quasar/assets/style-ac5a9aa6.css" as="style"><link rel="stylesheet" href="/netang-quasar/assets/style-ac5a9aa6.css">
27
+ <link rel="modulepreload" href="/netang-quasar/assets/app-8c3ae4de.js"><link rel="modulepreload" href="/netang-quasar/assets/framework-204010b2.js"><link rel="modulepreload" href="/netang-quasar/assets/404.html-60b35caa.js"><link rel="modulepreload" href="/netang-quasar/assets/404.html-d1e63d77.js"><link rel="prefetch" href="/netang-quasar/assets/index.html-65a4aa67.js" as="script"><link rel="prefetch" href="/netang-quasar/assets/field-table.html-86cc3511.js" as="script"><link rel="prefetch" href="/netang-quasar/assets/field-tree.html-c98ac993.js" as="script"><link rel="prefetch" href="/netang-quasar/assets/alert.html-568d4e94.js" as="script"><link rel="prefetch" href="/netang-quasar/assets/confirm.html-96f1b004.js" as="script"><link rel="prefetch" href="/netang-quasar/assets/index.html-1695dd7c.js" as="script"><link rel="prefetch" href="/netang-quasar/assets/field-table.html-68d610b0.js" as="script"><link rel="prefetch" href="/netang-quasar/assets/field-tree.html-45410c3c.js" as="script"><link rel="prefetch" href="/netang-quasar/assets/alert.html-f5dbc3e9.js" as="script"><link rel="prefetch" href="/netang-quasar/assets/confirm.html-7a1566f6.js" as="script">
28
+ </head>
29
+ <body>
30
+ <div id="app"><!--[--><div class="theme-container"><main class="page"><div class="theme-default-content"><h1>404</h1><blockquote>That&#39;s a Four-Oh-Four.</blockquote><a href="/netang-quasar/" class="">Take me home</a></div></main></div><!----><!--]--></div>
31
+ <script type="module" src="/netang-quasar/assets/app-8c3ae4de.js" defer></script>
32
+ </body>
33
+ </html>
@@ -1 +1 @@
1
- const t=JSON.parse('{"key":"v-3706649a","path":"/404.html","title":"","lang":"en-US","frontmatter":{"layout":"NotFound"},"headers":[],"git":{},"filePathRelative":null}');export{t as data};
1
+ const t=JSON.parse('{"key":"v-3706649a","path":"/404.html","title":"","lang":"en-US","frontmatter":{"layout":"NotFound"},"headers":[],"git":{},"filePathRelative":null}');export{t as data};
@@ -1 +1 @@
1
- import{_ as e,p as t,q as _}from"./framework-204010b2.js";const c={};function r(n,o){return t(),_("div")}const a=e(c,[["render",r],["__file","404.html.vue"]]);export{a as default};
1
+ import{_ as e,p as t,q as _}from"./framework-204010b2.js";const c={};function r(n,o){return t(),_("div")}const a=e(c,[["render",r],["__file","404.html.vue"]]);export{a as default};
@@ -1 +1 @@
1
- const t=JSON.parse('{"key":"v-7b1a2a14","path":"/utils/alert.html","title":"alert","lang":"en-US","frontmatter":{},"headers":[],"git":{"updatedTime":1675652908000,"contributors":[{"name":"junmiao","email":"mj287@163.com","commits":1}]},"filePathRelative":"utils/alert.md"}');export{t as data};
1
+ const t=JSON.parse('{"key":"v-7b1a2a14","path":"/utils/alert.html","title":"alert","lang":"en-US","frontmatter":{},"headers":[],"git":{"updatedTime":1675652908000,"contributors":[{"name":"junmiao","email":"mj287@163.com","commits":1}]},"filePathRelative":"utils/alert.md"}');export{t as data};
@@ -1 +1 @@
1
- import{_ as t,p as a,q as r,R as e,t as c}from"./framework-204010b2.js";const s={},o=e("h1",{id:"alert",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#alert","aria-hidden":"true"},"#"),c(" alert")],-1),n=[o];function _(l,d){return a(),r("div",null,n)}const h=t(s,[["render",_],["__file","alert.html.vue"]]);export{h as default};
1
+ import{_ as t,p as a,q as r,R as e,t as c}from"./framework-204010b2.js";const s={},o=e("h1",{id:"alert",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#alert","aria-hidden":"true"},"#"),c(" alert")],-1),n=[o];function _(l,d){return a(),r("div",null,n)}const h=t(s,[["render",_],["__file","alert.html.vue"]]);export{h as default};