@netang/quasar 0.1.17 → 0.1.19

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.
@@ -148,7 +148,7 @@
148
148
  <template v-if="dataType !== dicts.POWER_DATA_TYPE__OPEN">
149
149
 
150
150
  <!-- 是否表单验证 -->
151
- <div class="col-xs-12 col-sm-6 col-md-3">
151
+ <div class="col-xs-12 col-sm-6 col-md-3" v-if="dataType === dicts.POWER_DATA_TYPE__FORM">
152
152
  <q-select
153
153
  class="n-field-fieldset"
154
154
  label="提交前验证表单"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@netang/quasar",
3
- "version": "0.1.17",
3
+ "version": "0.1.19",
4
4
  "description": "netang-quasar",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"
package/utils/$form.js CHANGED
@@ -1,56 +1,67 @@
1
- import { ref, provide, inject } from 'vue'
2
-
3
- import $n_has from 'lodash/has'
4
-
5
- import { NPowerKey, NFormKey } from './symbols'
6
-
7
- /**
8
- * 创建表单
9
- */
10
- function create(params) {
11
-
12
- // ==========【数据】=================================================================================================
13
-
14
- // 获取参数
15
- const o = Object.assign({
16
- // 初始表单数据
17
- formData: {},
18
- // 重置表单方法
19
- resetForm: null,
20
- }, params)
21
-
22
- // 获取权限注入
23
- const $power = $n_has(params, '$power') ? params.$power : inject(NPowerKey)
24
-
25
- // ==========【返回】=================================================================================================
26
-
27
- const resForm = {
28
- // 表单节点
29
- formRef: ref(null),
30
- // 原始表单数据
31
- rawFormData: o.formData,
32
- // 表单数据
33
- formData: ref(o.formData),
34
- }
35
-
36
- if ($power) {
37
- $power.update(function(data, _data) {
38
- _data.$form = resForm
39
- })
40
- }
41
-
42
- // 提供可以被后代组件注入的值
43
- provide(NFormKey, resForm)
44
-
45
- return resForm
46
- }
47
-
48
- /**
49
- * 业务表单
50
- */
51
- const $form = {
52
- // 创建表单
53
- create,
54
- }
55
-
56
- export default $form
1
+ import { ref, provide, inject } from 'vue'
2
+
3
+ import $n_has from 'lodash/has'
4
+
5
+ import { NPowerKey, NFormKey } from './symbols'
6
+
7
+ /**
8
+ * 创建表单
9
+ */
10
+ function create(params) {
11
+
12
+ // ==========【数据】=================================================================================================
13
+
14
+ // 获取参数
15
+ const o = Object.assign({
16
+ // 初始表单数据
17
+ formData: {},
18
+ // 重置表单方法
19
+ resetForm: null,
20
+ }, params)
21
+
22
+ // 获取权限注入
23
+ const $power = $n_has(params, '$power') ? params.$power : inject(NPowerKey)
24
+
25
+ // ==========【返回】=================================================================================================
26
+
27
+ const resForm = {
28
+ // 表单节点
29
+ formRef: ref(null),
30
+ // 原始表单数据(用于业务使用)
31
+ rawFormData: o.formData,
32
+ // 请求服务器的原始表单数据(只有执行 setRaw 方法才会生成, 用于请求接口使用)
33
+ requestRawFormData: null,
34
+ // 表单数据
35
+ formData: ref(o.formData),
36
+ }
37
+
38
+ /**
39
+ * 设置原始数据
40
+ */
41
+ resForm.setRaw = function (value) {
42
+ resForm.rawFormData = value
43
+ resForm.requestRawFormData = value
44
+ return value
45
+ }
46
+
47
+ if ($power) {
48
+ $power.update(function(data, _data) {
49
+ _data.$form = resForm
50
+ })
51
+ }
52
+
53
+ // 提供可以被后代组件注入的值
54
+ provide(NFormKey, resForm)
55
+
56
+ return resForm
57
+ }
58
+
59
+ /**
60
+ * 业务表单
61
+ */
62
+ const $form = {
63
+ // 创建表单
64
+ create,
65
+ }
66
+
67
+ export default $form
package/utils/$power.js CHANGED
@@ -743,15 +743,12 @@ function formatBtns(powerBtns, filterBtns, toObject = false) {
743
743
  */
744
744
  function getRequestQuery(o) {
745
745
 
746
- // 获取按钮数据
747
- const btnData = o.powerBtn.data
748
-
749
746
  // 传参
750
747
  const query = {}
751
748
 
752
749
  // 如果有请求传参的传参设置
753
- if ($n_has(btnData, 'requestQuery.query')) {
754
- const resQuery = parseQuery(o.query, btnData.requestQuery.query)
750
+ if ($n_has(o.powerBtn.data, 'requestQuery.query')) {
751
+ const resQuery = parseQuery(o.query, o.powerBtn.data.requestQuery.query)
755
752
  if ($n_isValidObject(resQuery)) {
756
753
  Object.assign(query, resQuery)
757
754
  }
@@ -760,18 +757,18 @@ function getRequestQuery(o) {
760
757
  // 获取列表数据
761
758
  if (
762
759
  // 如果按钮参数有显示类型
763
- $n_has(btnData, 'show')
760
+ $n_has(o.powerBtn.data, 'show')
764
761
  // 按钮参数的显示类型必须是单选或多选
765
- && $n_indexOf(['single', 'multiple'], btnData.show) > -1
762
+ && $n_indexOf(['single', 'multiple'], o.powerBtn.data.show) > -1
766
763
  // 如果有请求传参的列表设置
767
- && $n_has(btnData, 'requestQuery.list')
764
+ && $n_has(o.powerBtn.data, 'requestQuery.list')
768
765
  // 如果有表格数据
769
766
  && $n_isValidArray(o.tableSelected)
770
767
  ) {
771
768
  let newQuery = {}
772
769
 
773
770
  // 如果是单选
774
- if (btnData.show === 'single') {
771
+ if (o.powerBtn.data.show === 'single') {
775
772
  // 取表格选中第一条数据
776
773
  newQuery = o.tableSelected[0]
777
774
 
@@ -789,7 +786,7 @@ function getRequestQuery(o) {
789
786
  }
790
787
  }
791
788
 
792
- const resTable = parseQuery(newQuery, btnData.requestQuery.list)
789
+ const resTable = parseQuery(newQuery, o.powerBtn.data.requestQuery.list)
793
790
  if ($n_isValidObject(resTable)) {
794
791
  Object.assign(query, resTable)
795
792
  }
@@ -922,15 +919,12 @@ async function request(options) {
922
919
  })
923
920
  }
924
921
 
925
- // 获取按钮数据
926
- const btnData = o.powerBtn.data
927
-
928
922
  // 获取请求参数
929
923
  let query = getRequestQuery(o)
930
924
 
931
925
  // 如果是打开新窗口
932
926
  // --------------------------------------------------
933
- if (btnData.type === dicts.POWER_DATA_TYPE__OPEN) {
927
+ if (o.powerBtn.data.type === dicts.POWER_DATA_TYPE__OPEN) {
934
928
 
935
929
  query = formatQuery(query, true)
936
930
 
@@ -941,7 +935,7 @@ async function request(options) {
941
935
  }
942
936
 
943
937
  // 如果不是禁止添加来源页面参数
944
- if ($n_get(btnData, 'noFromPageQuery') !== true) {
938
+ if ($n_get(o.powerBtn.data, 'noFromPageQuery') !== true) {
945
939
  // 来源页面是当前路由的完整路径
946
940
  query.n_from_page = encodeURIComponent($currentRoute.fullPath)
947
941
  }
@@ -956,7 +950,7 @@ async function request(options) {
956
950
  }
957
951
 
958
952
  $n_router.push({
959
- path: btnData.url,
953
+ path: o.powerBtn.data.url,
960
954
  query,
961
955
  })
962
956
  return
@@ -967,7 +961,7 @@ async function request(options) {
967
961
 
968
962
  // 如果是提交表单
969
963
  // --------------------------------------------------
970
- if (btnData.type === dicts.POWER_DATA_TYPE__FORM) {
964
+ if (o.powerBtn.data.type === dicts.POWER_DATA_TYPE__FORM) {
971
965
 
972
966
  // 获取表单注入
973
967
  o.$form = $n_has(options, '$form') ? options.$form : inject(NFormKey)
@@ -977,7 +971,7 @@ async function request(options) {
977
971
  }
978
972
 
979
973
  // 如果验证表单
980
- if ($n_get(btnData, 'validate') !== false) {
974
+ if ($n_get(o.powerBtn.data, 'validate') !== false) {
981
975
 
982
976
  if (! o.$form.formRef) {
983
977
  throw new Error('没有绑定 fromRef')
@@ -1006,6 +1000,13 @@ async function request(options) {
1006
1000
  // 获取请求数据
1007
1001
  requestData = $n_merge({}, formatQuery(query, false), o.$form.formData.value)
1008
1002
 
1003
+ // 合并请求原始表单数据
1004
+ if ($n_isValidObject(o.$form.requestRawFormData)) {
1005
+ Object.assign(requestData, {
1006
+ n__raw: o.$form.requestRawFormData
1007
+ })
1008
+ }
1009
+
1009
1010
  // 如果是请求数据
1010
1011
  // --------------------------------------------------
1011
1012
  } else {
@@ -1017,12 +1018,12 @@ async function request(options) {
1017
1018
  }
1018
1019
 
1019
1020
  // 判断是否有确认框
1020
- const isConfirm = $n_get(btnData, 'confirm')
1021
+ const isConfirm = $n_get(o.powerBtn.data, 'confirm')
1021
1022
  if (
1022
1023
  // 如果有确认框
1023
1024
  isConfirm
1024
1025
  // 如果有密码确认框
1025
- || $n_get(btnData, 'confirmPassword')
1026
+ || $n_get(o.powerBtn.data, 'confirmPassword')
1026
1027
  ) {
1027
1028
  // 如果需要先弹出确认框
1028
1029
  if (isConfirm) {
@@ -1059,7 +1060,7 @@ async function request(options) {
1059
1060
  // 请求
1060
1061
  const res = await $n_http({
1061
1062
  // 请求地址
1062
- url: btnData.url,
1063
+ url: o.powerBtn.data.url,
1063
1064
  // 请求数据
1064
1065
  data: requestData,
1065
1066
  })
@@ -1092,8 +1093,8 @@ async function request(options) {
1092
1093
  }
1093
1094
 
1094
1095
  // 判断是否有请求成功后的操作动作
1095
- if ($n_has(btnData, 'requestSuccess.type')) {
1096
- switch (btnData.requestSuccess.type) {
1096
+ if ($n_has(o.powerBtn.data, 'requestSuccess.type')) {
1097
+ switch (o.powerBtn.data.requestSuccess.type) {
1097
1098
 
1098
1099
  // 关闭当前页面
1099
1100
  case 'close':
@@ -1115,7 +1116,7 @@ async function request(options) {
1115
1116
 
1116
1117
  if (
1117
1118
  // 如果不是关闭当前页面, 则为关闭窗口并跳转页面
1118
- btnData.requestSuccess.type !== 'close'
1119
+ o.powerBtn.data.requestSuccess.type !== 'close'
1119
1120
  // 如果有来源页面
1120
1121
  && $n_has($route.query, 'n_from_page')
1121
1122
  && $n_isValidString($route.query.n_from_page)
@@ -1124,12 +1125,12 @@ async function request(options) {
1124
1125
  // 跳转页面地址
1125
1126
  pushPage: decodeURIComponent($route.query.n_from_page),
1126
1127
  // 是否跳转并刷新页面
1127
- isPushRefresh: btnData.requestSuccess.type === 'closePushRefresh',
1128
+ isPushRefresh: o.powerBtn.data.requestSuccess.type === 'closePushRefresh',
1128
1129
  })
1129
1130
 
1130
1131
  // 否则如果定义了跳转页面
1131
- // else if ($n_has(btnData, 'requestSuccess.params') && $n_isValidString(btnData.requestSuccess.params)) {
1132
- // pushPage = btnData.requestSuccess.params
1132
+ // else if ($n_has(o.powerBtn.data, 'requestSuccess.params') && $n_isValidString(o.powerBtn.data.requestSuccess.params)) {
1133
+ // pushPage = o.powerBtn.data.requestSuccess.params
1133
1134
  // }
1134
1135
  }
1135
1136