@netang/quasar 0.1.61 → 0.1.63

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/utils/$power.js CHANGED
@@ -79,6 +79,8 @@ function create(options) {
79
79
  leftDrawerIcon: 'format_list_bulleted',
80
80
  // 右边侧滑菜单图标
81
81
  rightDrawerIcon: 'search',
82
+ // 请求上传网络外链
83
+ requestUploadNet: null,
82
84
  // 请求前执行
83
85
  requestBefore: null,
84
86
  // 请求成功执行
@@ -175,6 +177,7 @@ function create(options) {
175
177
  */
176
178
  function checkUploading() {
177
179
  for (const uploader of data.uploader) {
180
+ // 检查是否上传中
178
181
  if (uploader.checkUploading()) {
179
182
  return true
180
183
  }
@@ -182,6 +185,80 @@ function create(options) {
182
185
  return false
183
186
  }
184
187
 
188
+ /**
189
+ * 上传网络外链
190
+ */
191
+ async function uploadNet(callback) {
192
+
193
+ // 是否全部完成
194
+ let isFinish = false
195
+
196
+ // 回调
197
+ function cb() {
198
+
199
+ // 如果没有回调方法
200
+ if (! $n_isFunction(callback)) {
201
+ return
202
+ }
203
+
204
+ // 是否上传中
205
+ const uploading = checkUploading()
206
+
207
+ // 如果全部完成
208
+ if (isFinish) {
209
+ // 则无任何操作
210
+ return
211
+ }
212
+
213
+ // let loaded = 0
214
+ // let total = 0
215
+ // let progress = 0
216
+
217
+ if (
218
+ // 上传完成
219
+ ! uploading
220
+ // 未完成
221
+ && ! isFinish
222
+ ) {
223
+ // 全部完成
224
+ isFinish = true
225
+ // 进度
226
+ // progress = 100
227
+
228
+ }
229
+ // else {
230
+ // for (const uploader of data.uploader) {
231
+ // const p = uploader.getUploadNetProgress()
232
+ // loaded += p.loaded
233
+ // total += p.total
234
+ // }
235
+ // progress = Math.round(loaded * 100 / total)
236
+ // }
237
+
238
+ // 回调
239
+ callback({
240
+ uploading,
241
+ uploader: data.uploader,
242
+ // loaded,
243
+ // total,
244
+ // progress,
245
+ })
246
+ }
247
+
248
+ for (const uploader of data.uploader) {
249
+ // 初始化上传网络外链列表
250
+ uploader.initUploadNetLists(cb)
251
+ }
252
+
253
+ for (const uploader of data.uploader) {
254
+ // 上传网络外链文件
255
+ await uploader.uploadNet()
256
+ }
257
+
258
+ // 执行回调
259
+ cb()
260
+ }
261
+
185
262
  const _data = {
186
263
  // 表格实例
187
264
  $table: null,
@@ -251,6 +328,8 @@ function create(options) {
251
328
  uploader: [],
252
329
  // 检查是否上传中
253
330
  checkUploading,
331
+ // 上传网络外链
332
+ uploadNet,
254
333
  }
255
334
 
256
335
  // 如果是权限页面
@@ -267,7 +346,7 @@ function create(options) {
267
346
  // 当前页面权限
268
347
  data.powerPage = res.page
269
348
  // 当前页面权限按钮
270
- data.powerBtns = ref(o.showPowerBtns ? res.btns : [])
349
+ data.powerBtns = ref(o.showPowerBtns ? res.btns.map(e => { e.loading = false; return e }) : [])
271
350
  // 当前页面工具栏权限按钮
272
351
  data.toolbarPowerBtns = computed(function() {
273
352
 
@@ -350,7 +429,14 @@ function create(options) {
350
429
  $form: _data.$form,
351
430
  // 检查是否正在上传文件
352
431
  checkUploading,
353
-
432
+ // 加载中
433
+ loading(status) {
434
+ powerBtn.loading = status
435
+ },
436
+ // 上传网络外链
437
+ uploadNet,
438
+ // 请求上传网络外链
439
+ requestUploadNet: o.requestUploadNet,
354
440
  // 请求前执行
355
441
  requestBefore: o.requestBefore,
356
442
  // 请求成功执行
@@ -860,6 +946,12 @@ async function request(options) {
860
946
  tableSelected: [],
861
947
  // 检查是否正在上传文件
862
948
  checkUploading: null,
949
+ // 加载中
950
+ loading: null,
951
+ // 上传网络外链
952
+ uploadNet: null,
953
+ // 请求上传网络外链
954
+ requestUploadNet: null,
863
955
  // 请求前执行
864
956
  requestBefore: null,
865
957
  // 请求成功执行
@@ -946,6 +1038,7 @@ async function request(options) {
946
1038
  const resBefore = await $n_runAsync(o.requestBefore)({
947
1039
  options: o,
948
1040
  requestData: query,
1041
+ next: nextBefore,
949
1042
  })
950
1043
  if (resBefore !== void 0) {
951
1044
  if (resBefore === false) {
@@ -954,10 +1047,13 @@ async function request(options) {
954
1047
  query = resBefore
955
1048
  }
956
1049
 
957
- $n_router.push({
958
- path: o.powerBtn.data.url,
959
- query,
960
- })
1050
+ function nextBefore() {
1051
+ $n_router.push({
1052
+ path: o.powerBtn.data.url,
1053
+ query,
1054
+ })
1055
+ }
1056
+ nextBefore()
961
1057
  return
962
1058
  }
963
1059
 
@@ -968,11 +1064,11 @@ async function request(options) {
968
1064
 
969
1065
  // 如果是提交表单
970
1066
  // --------------------------------------------------
971
- if (o.powerBtn.data.type === dicts.POWER_DATA_TYPE__FORM) {
1067
+ const isForm = o.powerBtn.data.type === dicts.POWER_DATA_TYPE__FORM
1068
+ if (isForm) {
972
1069
 
973
1070
  // 获取表单注入
974
1071
  o.$form = $n_has(options, '$form') ? options.$form : inject(NFormKey)
975
-
976
1072
  if (! o.$form) {
977
1073
  throw new Error('没有创建表单实例')
978
1074
  }
@@ -995,34 +1091,11 @@ async function request(options) {
995
1091
  throw new Error('没有获取到表单数据')
996
1092
  }
997
1093
 
998
- // 检查是否正在上传文件
999
- if ($n_isFunction(o.checkUploading) && o.checkUploading()) {
1000
- // 轻提示
1001
- $n_toast({
1002
- message: '文件上传中,请耐心等待',
1003
- })
1004
- return
1005
- }
1006
-
1007
- // 获取请求数据
1008
- requestData = $n_merge({}, formatQuery(query, false), o.$form.formData.value)
1009
-
1010
- // 合并请求原始表单数据
1011
- if ($n_isValidObject(o.$form.requestRawFormData.value)) {
1012
- _formDataClone = $n_cloneDeep(o.$form.formData.value)
1013
- Object.assign(requestData, {
1014
- n__raw: o.$form.requestRawFormData.value
1015
- })
1016
- }
1017
-
1018
1094
  // 如果是请求数据
1019
1095
  // --------------------------------------------------
1020
1096
  } else {
1021
1097
  // 获取表格注入
1022
1098
  o.$table = $n_has(options, '$table') ? options.$table : inject(NTableKey)
1023
-
1024
- // 获取请求数据
1025
- requestData = formatQuery(query, false)
1026
1099
  }
1027
1100
 
1028
1101
  // 判断是否有确认框
@@ -1042,14 +1115,78 @@ async function request(options) {
1042
1115
  message: $n_isValidString(isConfirm) ? isConfirm : '确认要执行该操作吗?',
1043
1116
  })
1044
1117
  // 点击确认执行
1045
- .onOk(onRequest)
1118
+ .onOk(onConfirmRequest)
1046
1119
 
1047
1120
  return
1048
1121
  }
1049
1122
  }
1050
1123
 
1051
- // 否则执行请求
1052
- await onRequest()
1124
+ // 否则执行确认请求事件
1125
+ await onConfirmRequest()
1126
+
1127
+ /**
1128
+ * 确认请求事件
1129
+ */
1130
+ function onConfirmRequest() {
1131
+
1132
+ // 下一步
1133
+ function next() {
1134
+
1135
+ // 如果是表单
1136
+ if (isForm) {
1137
+
1138
+ // 获取请求数据
1139
+ requestData = $n_merge({}, formatQuery(query, false), o.$form.formData.value)
1140
+
1141
+ // 合并请求原始表单数据
1142
+ if ($n_isValidObject(o.$form.requestRawFormData.value)) {
1143
+ _formDataClone = $n_cloneDeep(o.$form.formData.value)
1144
+ Object.assign(requestData, {
1145
+ n__raw: o.$form.requestRawFormData.value
1146
+ })
1147
+ }
1148
+
1149
+ // 如果是请求数据
1150
+ // --------------------------------------------------
1151
+ } else {
1152
+ // 获取请求数据
1153
+ requestData = formatQuery(query, false)
1154
+ }
1155
+
1156
+ // 执行请求
1157
+ onRequest()
1158
+ .finally()
1159
+ }
1160
+
1161
+ // 如果是表单
1162
+ if (isForm) {
1163
+
1164
+ if (
1165
+ // 如果有请求上传网络外链方法
1166
+ $n_isFunction(o.requestUploadNet)
1167
+ // 如果有上传网络外链方法
1168
+ && $n_isFunction(o.uploadNet)
1169
+ ) {
1170
+ // 上传网络外链
1171
+ o.uploadNet(function(e) {
1172
+ o.requestUploadNet(Object.assign(e, { next }))
1173
+ }).finally()
1174
+ return
1175
+ }
1176
+
1177
+ // 否则检查是否正在上传文件
1178
+ if ($n_isFunction(o.checkUploading) && o.checkUploading()) {
1179
+ // 轻提示
1180
+ $n_toast({
1181
+ message: '文件上传中,请耐心等待',
1182
+ })
1183
+ return
1184
+ }
1185
+ }
1186
+
1187
+ // 下一步
1188
+ next()
1189
+ }
1053
1190
 
1054
1191
  /**
1055
1192
  * 请求事件
@@ -1060,6 +1197,7 @@ async function request(options) {
1060
1197
  const resBefore = await $n_runAsync(o.requestBefore)({
1061
1198
  options: o,
1062
1199
  requestData,
1200
+ next: nextBefore,
1063
1201
  })
1064
1202
  if (resBefore !== void 0) {
1065
1203
  if (resBefore === false) {
@@ -1068,117 +1206,125 @@ async function request(options) {
1068
1206
  requestData = resBefore
1069
1207
  }
1070
1208
 
1071
- // 请求
1072
- const res = await $n_http({
1073
- // 请求地址
1074
- url: o.powerBtn.data.url,
1075
- // 请求数据
1076
- data: requestData,
1077
- })
1209
+ async function nextBefore() {
1078
1210
 
1079
- // 返回结果数据
1080
- const resultData = Object.assign({
1081
- // 参数
1082
- options: o,
1083
- // 请求数据
1084
- requestData,
1085
- }, res)
1211
+ // 请求
1212
+ const res = await $n_http({
1213
+ // 请求地址
1214
+ url: o.powerBtn.data.url,
1215
+ // 请求数据
1216
+ data: requestData,
1217
+ // 加载中
1218
+ loading: o.loading,
1219
+ })
1086
1220
 
1087
- // 请求后执行
1088
- if (await $n_runAsync(o.requestAfter)(resultData) === false) {
1089
- return
1090
- }
1221
+ // 返回结果数据
1222
+ const resultData = Object.assign({
1223
+ // 参数
1224
+ options: o,
1225
+ // 请求数据
1226
+ requestData,
1227
+ }, res)
1091
1228
 
1092
- // 如果请求成功
1093
- if (res.status) {
1229
+ // 请求后执行
1230
+ if (await $n_runAsync(o.requestAfter)(resultData) === false) {
1231
+ return
1232
+ }
1094
1233
 
1095
- // 下一步
1096
- function next(isNotify = true) {
1234
+ // 如果请求成功
1235
+ if (res.status) {
1097
1236
 
1098
- // 轻提示
1099
- if (isNotify) {
1100
- $n_toast({
1101
- type: 'positive',
1102
- message: '恭喜您,操作成功',
1103
- })
1104
- }
1237
+ // 下一步
1238
+ function next(isNotify = true) {
1105
1239
 
1106
- // 判断是否有请求成功后的操作动作
1107
- if ($n_has(o.powerBtn.data, 'requestSuccess.type')) {
1108
- switch (o.powerBtn.data.requestSuccess.type) {
1109
-
1110
- // 关闭当前页面
1111
- case 'close':
1112
- // 关闭窗口并跳转页面
1113
- case 'closePush':
1114
- // 关闭窗口、跳转并刷新页面
1115
- case 'closePushRefresh':
1116
-
1117
- // 如果是渲染页面
1118
- // 说明该页面在 <table-splitter> 组件内部被渲染, 则不需要关闭当前窗口
1119
- if ($n_has($route.query, 'n_render_page') && $route.query.n_render_page === 1) {
1120
- // 则无任何操作
1121
- return
1122
- }
1240
+ // 轻提示
1241
+ if (isNotify) {
1242
+ $n_toast({
1243
+ type: 'positive',
1244
+ message: '恭喜您,操作成功',
1245
+ })
1246
+ }
1123
1247
 
1124
- const opts = {
1125
- type: 'closeCurrentTab',
1126
- }
1248
+ // 判断是否有请求成功后的操作动作
1249
+ if ($n_has(o.powerBtn.data, 'requestSuccess.type')) {
1250
+ switch (o.powerBtn.data.requestSuccess.type) {
1251
+
1252
+ // 关闭当前页面
1253
+ case 'close':
1254
+ // 关闭窗口并跳转页面
1255
+ case 'closePush':
1256
+ // 关闭窗口、跳转并刷新页面
1257
+ case 'closePushRefresh':
1258
+
1259
+ // 如果是渲染页面
1260
+ // 说明该页面在 <table-splitter> 组件内部被渲染, 则不需要关闭当前窗口
1261
+ if ($n_has($route.query, 'n_render_page') && $route.query.n_render_page === 1) {
1262
+ // 则无任何操作
1263
+ return
1264
+ }
1127
1265
 
1128
- if (
1129
- // 如果不是关闭当前页面, 则为关闭窗口并跳转页面
1130
- o.powerBtn.data.requestSuccess.type !== 'close'
1131
- // 如果有来源页面
1132
- && $n_has($route.query, 'n_from_page')
1133
- && $n_isValidString($route.query.n_from_page)
1134
- ) {
1135
- Object.assign(opts, {
1136
- // 跳转页面地址
1137
- pushPage: decodeURIComponent($route.query.n_from_page),
1138
- // 是否跳转并刷新页面
1139
- isPushRefresh: o.powerBtn.data.requestSuccess.type === 'closePushRefresh',
1140
- })
1141
-
1142
- // 否则如果定义了跳转页面
1143
- // else if ($n_has(o.powerBtn.data, 'requestSuccess.params') && $n_isValidString(o.powerBtn.data.requestSuccess.params)) {
1144
- // pushPage = o.powerBtn.data.requestSuccess.params
1145
- // }
1146
- }
1266
+ const opts = {
1267
+ type: 'closeCurrentTab',
1268
+ }
1269
+
1270
+ if (
1271
+ // 如果不是关闭当前页面, 则为关闭窗口并跳转页面
1272
+ o.powerBtn.data.requestSuccess.type !== 'close'
1273
+ // 如果有来源页面
1274
+ && $n_has($route.query, 'n_from_page')
1275
+ && $n_isValidString($route.query.n_from_page)
1276
+ ) {
1277
+ Object.assign(opts, {
1278
+ // 跳转页面地址
1279
+ pushPage: decodeURIComponent($route.query.n_from_page),
1280
+ // 是否跳转并刷新页面
1281
+ isPushRefresh: o.powerBtn.data.requestSuccess.type === 'closePushRefresh',
1282
+ })
1283
+
1284
+ // 否则如果定义了跳转页面
1285
+ // else if ($n_has(o.powerBtn.data, 'requestSuccess.params') && $n_isValidString(o.powerBtn.data.requestSuccess.params)) {
1286
+ // pushPage = o.powerBtn.data.requestSuccess.params
1287
+ // }
1288
+ }
1147
1289
 
1148
- // 关闭当前标签页
1149
- $n_bus.emit('main', opts)
1150
- break
1290
+ // 关闭当前标签页
1291
+ $n_bus.emit('main', opts)
1292
+ break
1151
1293
 
1152
- // 重置表单
1153
- case 'resetForm':
1154
- $n_run(o.$form?.resetForm)()
1155
- break
1294
+ // 重置表单
1295
+ case 'resetForm':
1296
+ $n_run(o.$form?.resetForm)()
1297
+ break
1156
1298
 
1157
- // 刷新列表
1158
- case 'refreshList':
1159
- $n_run(o.$table?.tableRefresh)()
1160
- break
1299
+ // 刷新列表
1300
+ case 'refreshList':
1301
+ $n_run(o.$table?.tableRefresh)()
1302
+ break
1303
+ }
1161
1304
  }
1162
1305
  }
1163
- }
1164
1306
 
1165
- // 设置原始数据
1166
- if (_formDataClone !== null) {
1167
- o.$form.setRaw(_formDataClone)
1168
- }
1307
+ // 设置原始数据
1308
+ if (_formDataClone !== null) {
1309
+ o.$form.setRaw(_formDataClone)
1310
+ }
1169
1311
 
1170
- // 请求成功执行
1171
- if (await $n_runAsync(o.requestSuccess)(Object.assign({ next }, resultData)) === false) {
1172
- return
1173
- }
1312
+ // 请求成功执行
1313
+ if (await $n_runAsync(o.requestSuccess)(Object.assign({ next }, resultData)) === false) {
1314
+ return
1315
+ }
1174
1316
 
1175
- // 下一步
1176
- next()
1317
+ // 下一步
1318
+ next()
1177
1319
 
1178
- } else {
1179
- // 请求失败执行
1180
- $n_run(o.requestFail)(resultData)
1320
+ } else {
1321
+ // 请求失败执行
1322
+ $n_run(o.requestFail)(resultData)
1323
+ }
1181
1324
  }
1325
+
1326
+ nextBefore()
1327
+ .finally()
1182
1328
  }
1183
1329
  }
1184
1330