@ibiz-template/mob-vue3-components 0.0.2 → 0.0.3

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 +1 @@
1
- .ibiz-form-item-container{--ibiz-form-item-container-label-width:8.125rem;--ibiz-form-item-container-line-height:var(--ibiz-form-item-line-height);--ibiz-form-item-container-require-mark-color:var(--ibiz-color-danger);--ibiz-form-item-container-container-padding:var(--ibiz-spacing-base);--ibiz-form-item-container-left-container-padding:var(--ibiz-spacing-base);--ibiz-form-item-container-error-margin-top:var(--ibiz-spacing-extra-tight);--ibiz-form-item-container-bg-color:var(--ibiz-color-bg-1);--ibiz-form-item-container-label-font-size:var(--ibiz-font-size-header-6);--ibiz-form-item-container-label-text-color:var(--ibiz-color-text-0);--ibiz-form-item-container-container-error-padding:0 var(--ibiz-spacing-base);--ibiz-form-item-container-border:0.0625rem var(--ibiz-color-border) solid;--ibiz-form-item-container-editor-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-none) var(--ibiz-spacing-tight) var(--ibiz-spacing-none);--ibiz-form-item-label-line-height:1;--ibiz-form-item-label-font-size:var(--ibiz-font-size-header-5);--ibiz-form-item-label-text-color:var(--ibiz-color-text-0);position:relative;width:100%;height:100%;padding:var(--ibiz-form-item-container-container-padding);font-size:var(--ibiz-form-item-font-size);background-color:var(--ibiz-form-item-container-bg-color);border-width:calc(100% - var(--ibiz-spacing-base) * 2);border-radius:var(--ibiz-border-radius-small)}.ibiz-form-item-container::after{position:absolute;z-index:1;width:calc(100% - var(--ibiz-spacing-base) * 2);height:.00625rem;content:"";background-color:var(--ibiz-color-border)}.ibiz-form-item-container__label{position:relative;flex-shrink:0;width:var(--ibiz-form-item-container-label-width);overflow:visible;color:var(--ibiz-form-item-label-text-color)}.ibiz-form-item-container__label span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;width:100%;font-size:var(--ibiz-form-item-container-label-font-size);text-align:var(--ibiz-form-item-container-label-align)}.ibiz-form-item-container__editor{width:100%;text-align:var(--ibiz-form-item-container-editor-align)}.ibiz-form-item-container__editor .van-cell{padding-bottom:0}.ibiz-form-item-container.is-required .ibiz-form-item-container__label::before{position:absolute;top:.1875rem;left:-.625rem;display:inline-block;height:100%;font-size:.875rem;color:var(--ibiz-form-item-error-color);content:"*"}.ibiz-form-item-container.is-error::after{background-color:var(--ibiz-form-item-error-color)}.ibiz-form-item-container.is-error .ibiz-form-item-container-content{border-color:var(--ibiz-form-item-error-color)}.ibiz-form-item-container--left::after{bottom:0}.ibiz-form-item-container--right.is-required .ibiz-form-item-container__label::before{right:-.625rem;left:auto}.ibiz-form-item-container--right .ibiz-form-item-container__editor{width:calc(100% - var(--ibiz-form-item-container-label-width))}.ibiz-form-item-container--left .ibiz-form-item-container__editor{width:calc(100% - var(--ibiz-form-item-container-label-width))}.ibiz-form-item-container--top .ibiz-form-item-container__editor{padding:var(--ibiz-form-item-container-editor-padding)}.ibiz-form-item-container--bottom .ibiz-form-item-container__editor{padding:var(--ibiz-form-item-container-editor-padding)}.ibiz-form-item-container-content{position:relative}.ibiz-form-item-container--left .ibiz-form-item-container-content,.ibiz-form-item-container--right .ibiz-form-item-container-content{height:100%;display:flex;align-items:center;justify-content:center}.ibiz-form-item-container-error{position:absolute;bottom:0;width:calc(100% - var(--ibiz-spacing-base));padding-right:var(--ibiz-spacing-base);font-size:var(--ibiz-form-item-error-font-size);line-height:var(--ibiz-form-item-font-size);color:var(--ibiz-form-item-error-color);text-align:var(--ibiz-form-item-container-editor-align)}
1
+ .ibiz-form-item-container{--ibiz-form-item-container-label-width:8.125rem;--ibiz-form-item-container-line-height:var(--ibiz-form-item-line-height);--ibiz-form-item-container-require-mark-color:var(--ibiz-color-danger);--ibiz-form-item-container-container-padding:var(--ibiz-spacing-base);--ibiz-form-item-container-left-container-padding:var(--ibiz-spacing-base);--ibiz-form-item-container-error-margin-top:var(--ibiz-spacing-extra-tight);--ibiz-form-item-container-bg-color:var(--ibiz-color-bg-1);--ibiz-form-item-container-label-font-size:var(--ibiz-font-size-header-6);--ibiz-form-item-container-label-text-color:var(--ibiz-color-text-0);--ibiz-form-item-container-container-error-padding:0 var(--ibiz-spacing-base);--ibiz-form-item-container-border:0.0625rem var(--ibiz-color-border) solid;--ibiz-form-item-container-editor-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-none) var(--ibiz-spacing-tight) var(--ibiz-spacing-none);--ibiz-form-item-label-line-height:1;--ibiz-form-item-label-font-size:var(--ibiz-font-size-header-5);--ibiz-form-item-label-text-color:var(--ibiz-color-text-0);position:relative;width:100%;height:100%;padding:var(--ibiz-form-item-container-container-padding);font-size:var(--ibiz-form-item-font-size);background-color:var(--ibiz-form-item-container-bg-color);border-width:calc(100% - var(--ibiz-spacing-base) * 2);border-radius:var(--ibiz-border-radius-small)}.ibiz-form-item-container::after{position:absolute;z-index:1;width:calc(100% - var(--ibiz-spacing-base) * 2);height:.00625rem;content:"";background-color:var(--ibiz-color-border)}.ibiz-form-item-container__label{position:relative;flex-shrink:0;width:var(--ibiz-form-item-container-label-width);overflow:visible;color:var(--ibiz-form-item-label-text-color)}.ibiz-form-item-container__label span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;width:100%;font-size:var(--ibiz-form-item-container-label-font-size);text-align:var(--ibiz-form-item-container-label-align)}.ibiz-form-item-container__editor{width:100%;text-align:var(--ibiz-form-item-container-editor-align)}.ibiz-form-item-container__editor .van-cell{padding-bottom:0}.ibiz-form-item-container.is-required .ibiz-form-item-container__label::before{position:absolute;top:.1875rem;left:-.625rem;display:inline-block;height:100%;font-size:.875rem;color:var(--ibiz-form-item-error-color);content:"*"}.ibiz-form-item-container.is-error::after{background-color:var(--ibiz-form-item-error-color)}.ibiz-form-item-container.is-error .ibiz-form-item-container-content{border-color:var(--ibiz-form-item-error-color)}.ibiz-form-item-container--left::after{bottom:0}.ibiz-form-item-container--right.is-required .ibiz-form-item-container__label::before{right:-.625rem;left:auto}.ibiz-form-item-container--right .ibiz-form-item-container__editor{position:relative;width:calc(100% - var(--ibiz-form-item-container-label-width))}.ibiz-form-item-container--left .ibiz-form-item-container__editor{width:calc(100% - var(--ibiz-form-item-container-label-width))}.ibiz-form-item-container--top .ibiz-form-item-container__editor{padding:var(--ibiz-form-item-container-editor-padding)}.ibiz-form-item-container--bottom .ibiz-form-item-container__editor{padding:var(--ibiz-form-item-container-editor-padding)}.ibiz-form-item-container-content{position:relative}.ibiz-form-item-container--left .ibiz-form-item-container-content,.ibiz-form-item-container--right .ibiz-form-item-container-content{height:100%;display:flex;align-items:center;justify-content:center}.ibiz-form-item-container-error{position:absolute;bottom:0;width:calc(100% - var(--ibiz-spacing-base));padding-right:var(--ibiz-spacing-base);font-size:var(--ibiz-form-item-error-font-size);line-height:var(--ibiz-form-item-font-size);color:var(--ibiz-form-item-error-color);text-align:var(--ibiz-form-item-container-editor-align)}
@@ -28,7 +28,7 @@ export declare const IBizPickerSelectView: import("vue").DefineComponent<{
28
28
  [x: string]: any;
29
29
  [x: symbol]: any;
30
30
  srfsandbox?: string | undefined;
31
- srfappid?: string | undefined;
31
+ srfappid: string;
32
32
  getOwnContext: () => IData;
33
33
  destroy: () => void;
34
34
  clone: () => IContext;
@@ -1 +1 @@
1
- .ibiz-file-upload{width:100%}.ibiz-file-upload .van-uploader__preview{display:none}.ibiz-file-upload .ibiz-file-upload-button{height:1.875rem}.ibiz-file-upload .ibiz-file-upload-button span{font-size:var(--ibiz-form-item-font-size);color:var(--ibiz-form-item-text-color)}.ibiz-file-upload .van-uploader__preview .van-uploader__file-icon{display:none}.ibiz-file-upload .van-uploader__preview .van-uploader__file-name{display:none}.ibiz-file-upload .ibiz-file-upload-item-cover{position:absolute;top:0;bottom:0;box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:100%;font-size:.75rem;line-height:initial;color:#fff;text-align:center;background:var(--ibiz-color-overlay-bg)}.ibiz-file-upload .ibiz-file-upload-preview{width:100%}.ibiz-file-upload .ibiz-file-upload-preview-item{display:flex;align-items:center;border-bottom:.0625rem solid var(--ibiz-color-border)}.ibiz-file-upload .ibiz-file-upload-preview-item:last-child{border-width:0}.ibiz-file-upload .ibiz-file-upload-preview-item-img{width:3.125rem;min-width:3.125rem;padding:.625rem}.ibiz-file-upload .ibiz-file-upload-preview-item-img img{width:100%;height:100%;border-radius:.25rem}.ibiz-file-upload .ibiz-file-upload-preview-item-text{overflow:hidden;font-size:.875rem;text-overflow:ellipsis;white-space:nowrap}.ibiz-file-upload .ibiz-file-upload-preview-item-action{display:flex;flex-grow:1;align-items:center;justify-content:flex-end;min-width:3.125rem;color:var(--ibiz-color-overlay-bg);text-align:right}
1
+ .ibiz-file-upload{width:100%}.ibiz-file-upload .van-uploader__preview{display:none}.ibiz-file-upload .ibiz-file-upload-button{width:1.25rem;height:1.25rem;font-size:var(--ibiz-font-size-header-4);color:var(--ibiz-color-text-2);background:0 0;border:none;border-radius:50%}.ibiz-file-upload .van-uploader__preview .van-uploader__file-icon{display:none}.ibiz-file-upload .van-uploader__preview .van-uploader__file-name{display:none}.ibiz-file-upload .ibiz-file-upload-item-cover{position:absolute;top:0;bottom:0;box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:100%;font-size:.75rem;line-height:initial;color:#fff;text-align:center;background:var(--ibiz-color-overlay-bg)}.ibiz-file-upload .ibiz-file-upload-preview{width:100%;margin-top:.625rem}.ibiz-file-upload .ibiz-file-upload-preview-item{display:flex;align-items:center;justify-content:space-between;width:100%;padding:0 var(--ibiz-spacing-tight);margin-bottom:var(--ibiz-spacing-tight);background:var(--ibiz-color-disabled-bg);border-radius:var(--ibiz-border-radius-small)}.ibiz-file-upload .ibiz-file-upload-preview-item:last-child{margin:0;border-width:0}.ibiz-file-upload .ibiz-file-upload-preview-item-img{flex-shrink:0;width:2.5rem;min-width:2.5rem;height:2.5rem;padding:.375rem}.ibiz-file-upload .ibiz-file-upload-preview-item-img img{width:100%;height:100%;border-radius:.25rem}.ibiz-file-upload .ibiz-file-upload-preview-item-left{display:flex;flex-grow:1;align-items:center;width:calc(100% - 1.25rem)}.ibiz-file-upload .ibiz-file-upload-preview-item-text{display:flex;flex:1;align-items:center;width:calc(100% - 2.5rem);padding-left:var(--ibiz-spacing-tight);font-size:.875rem}.ibiz-file-upload .ibiz-file-upload-preview-item-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ibiz-file-upload .ibiz-file-upload-preview-item-action{display:flex;flex-shrink:0;align-items:center;justify-content:flex-end;width:1.25rem;color:var(--ibiz-color-overlay-bg);text-align:right}.ibiz-file-upload .van-uploader__input-wrapper{width:100%;text-align:right}.ibiz-form-item-container--top .ibiz-file-upload .van-uploader{position:absolute;top:0;right:0;width:100%}
@@ -32,6 +32,9 @@ export declare const IBizFileUpload: import("vue").DefineComponent<{
32
32
  beforeUpload: () => void;
33
33
  onDownload: (file: IData) => void;
34
34
  afterRead: (file: IData | IData[]) => Promise<void>;
35
+ getFileSuffix: (name: string) => string;
36
+ getFileName: (filename: string) => string;
37
+ getPreviewImg: (name: string) => string;
35
38
  limit: import("vue").ComputedRef<1 | 9999>;
36
39
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
37
40
  change: (_value: unknown, _name?: string | undefined) => boolean;
@@ -1,4 +1,4 @@
1
- import { resolveComponent, createTextVNode, createVNode, defineComponent } from 'vue';
1
+ import { resolveComponent, createVNode, createTextVNode, defineComponent } from 'vue';
2
2
  import { getUploadProps, getEditorEmits, useNamespace } from '@ibiz-template/vue3-util';
3
3
  import './ibiz-file-upload.css';
4
4
  import { useVanUpload } from '../use/use-van-upload.mjs';
@@ -25,6 +25,27 @@ const IBizFileUpload = /* @__PURE__ */ defineComponent({
25
25
  } = useVanUpload(props, (value) => {
26
26
  emit("change", value);
27
27
  }, c);
28
+ const getFileSuffix = (name) => {
29
+ const lastDotIndex = name.lastIndexOf(".");
30
+ if (lastDotIndex === -1) {
31
+ return "";
32
+ }
33
+ const extension = name.substring(lastDotIndex + 1).toLowerCase();
34
+ return extension;
35
+ };
36
+ const getFileName = (filename) => {
37
+ const lastDotIndex = filename.lastIndexOf(".");
38
+ if (lastDotIndex === -1) {
39
+ return filename;
40
+ }
41
+ const name = filename.substring(0, lastDotIndex);
42
+ return name;
43
+ };
44
+ const getPreviewImg = (name) => {
45
+ const suffix = getFileSuffix(name);
46
+ const type = c.fileTypeMap.get(suffix) || "unknown";
47
+ return `./assets/img/file/${type}.svg`;
48
+ };
28
49
  return {
29
50
  ns,
30
51
  c,
@@ -35,6 +56,9 @@ const IBizFileUpload = /* @__PURE__ */ defineComponent({
35
56
  beforeUpload,
36
57
  onDownload,
37
58
  afterRead,
59
+ getFileSuffix,
60
+ getFileName,
61
+ getPreviewImg,
38
62
  limit
39
63
  };
40
64
  },
@@ -53,17 +77,17 @@ const IBizFileUpload = /* @__PURE__ */ defineComponent({
53
77
  }, {
54
78
  default: () => {
55
79
  return !this.readonly && !this.disabled && createVNode(resolveComponent("van-button"), {
56
- "class": this.ns.b("button")
57
- }, {
58
- default: () => [createTextVNode("\u4E0A\u4F20\u6587\u4EF6")]
59
- });
80
+ "class": this.ns.b("button"),
81
+ "icon": "add-o",
82
+ "type": "primary"
83
+ }, null);
60
84
  },
61
85
  "preview-cover": (file) => {
62
86
  return createVNode("div", {
63
87
  "class": this.ns.b("item-cover")
64
88
  }, [file.name]);
65
89
  }
66
- }), createVNode("div", {
90
+ }), this.files.length > 0 && createVNode("div", {
67
91
  "class": this.ns.b("preview")
68
92
  }, [this.files.map((item) => {
69
93
  return createVNode("div", {
@@ -71,18 +95,25 @@ const IBizFileUpload = /* @__PURE__ */ defineComponent({
71
95
  "onClick": () => {
72
96
  this.onDownload(item);
73
97
  }
98
+ }, [createVNode("div", {
99
+ "class": this.ns.b("preview-item-left")
74
100
  }, [createVNode("div", {
75
101
  "class": this.ns.b("preview-item-img")
76
102
  }, [createVNode("img", {
77
- "src": "./assets/img/file.png",
103
+ "src": this.getPreviewImg(item.name),
78
104
  "alt": ""
79
105
  }, null)]), createVNode("div", {
80
106
  "class": this.ns.b("preview-item-text")
81
- }, [item.name]), !this.readonly && !this.disabled && createVNode("div", {
107
+ }, [createVNode("div", {
108
+ "class": this.ns.b("preview-item-name")
109
+ }, [this.getFileName(item.name)]), this.getFileSuffix(item.name) && createVNode("div", {
110
+ "class": this.ns.b("preview-item-suffix")
111
+ }, [createTextVNode("."), this.getFileSuffix(item.name)])])]), !this.readonly && !this.disabled && createVNode("div", {
82
112
  "class": this.ns.b("preview-item-action")
83
113
  }, [createVNode(resolveComponent("van-icon"), {
84
114
  "name": "cross",
85
- "onClick": () => {
115
+ "onClick": (e) => {
116
+ e.stopPropagation();
86
117
  this.onRemove(item);
87
118
  }
88
119
  }, null)])]);
@@ -27,6 +27,14 @@ export declare class UploadEditorController extends EditorController<IFileUpload
27
27
  * 下载参数
28
28
  */
29
29
  exportParams?: IParams;
30
+ /**
31
+ * 文件类型
32
+ *
33
+ * @author zk
34
+ * @date 2023-12-07 03:12:25
35
+ * @memberof UploadEditorController
36
+ */
37
+ fileTypeMap: Map<string, string>;
30
38
  protected onInit(): Promise<void>;
31
39
  /**
32
40
  * 计算文件的上传路径和下载路径
@@ -32,6 +32,56 @@ class UploadEditorController extends EditorController {
32
32
  * 下载参数
33
33
  */
34
34
  __publicField(this, "exportParams");
35
+ /**
36
+ * 文件类型
37
+ *
38
+ * @author zk
39
+ * @date 2023-12-07 03:12:25
40
+ * @memberof UploadEditorController
41
+ */
42
+ __publicField(this, "fileTypeMap", /* @__PURE__ */ new Map([
43
+ // word文档
44
+ ["docx", "docx"],
45
+ ["doc", "docx"],
46
+ ["dotx", "docx"],
47
+ ["dot", "docx"],
48
+ // pdf
49
+ ["pdf", "pdf"],
50
+ // text
51
+ ["txt", "text"],
52
+ //
53
+ ["xlsx", "excel"],
54
+ ["xls", "excel"],
55
+ ["xlsm", "excel"],
56
+ ["xlsb", "excel"],
57
+ ["csv", "excel"],
58
+ // ppt
59
+ ["pptx", "ppt"],
60
+ // 图片
61
+ ["jpg", "img"],
62
+ ["png", "img"],
63
+ ["gif", "img"],
64
+ ["bmp", "img"],
65
+ ["svg", "img"],
66
+ // 音频
67
+ ["mp3", "audio"],
68
+ ["wav", "audio"],
69
+ ["aac", "audio"],
70
+ ["flac", "audio"],
71
+ ["wma", "audio"],
72
+ // 视频
73
+ ["mp4", "video"],
74
+ ["avi", "video"],
75
+ ["mov", "video"],
76
+ ["mkv", "video"],
77
+ ["wmv", "video"],
78
+ // 压缩
79
+ ["zip", "zip"],
80
+ ["rar", "zip"],
81
+ ["7z", "zip"],
82
+ ["gz", "zip"],
83
+ ["tar", "zip"]
84
+ ]));
35
85
  }
36
86
  async onInit() {
37
87
  var _a;
@@ -10,11 +10,6 @@ function useVanUpload(props, valueChange, c) {
10
10
  });
11
11
  const uploadUrl = ref("");
12
12
  const downloadUrl = ref("");
13
- const uploadCache = {
14
- count: 0,
15
- cacheFiles: []
16
- // iview上传过程中不能改default-file-list,所以需要缓存
17
- };
18
13
  watch(
19
14
  () => props.value,
20
15
  (newVal) => {
@@ -56,34 +51,28 @@ function useVanUpload(props, valueChange, c) {
56
51
  { immediate: true }
57
52
  );
58
53
  const emitValue = () => {
59
- const _files = [...files.value, ...uploadCache.cacheFiles];
54
+ const _files = [...files.value];
60
55
  const value = _files.length > 0 ? JSON.stringify(_files.map((file) => ({ name: file.name, id: file.id }))) : null;
61
- uploadCache.cacheFiles = [];
62
56
  valueChange(value);
63
57
  };
64
58
  const beforeUpload = () => {
65
59
  if (!c.multiple && files.value.length === 1) {
66
60
  return false;
67
61
  }
68
- uploadCache.count += 1;
69
62
  return true;
70
63
  };
71
64
  const onSuccess = (response) => {
72
65
  if (!response) {
73
66
  return;
74
67
  }
75
- uploadCache.cacheFiles.push({
68
+ files.value.push({
76
69
  name: response.filename,
77
70
  id: response.fileid
78
71
  });
79
- uploadCache.count -= 1;
80
- if (uploadCache.count === 0) {
81
- emitValue();
82
- }
72
+ emitValue();
83
73
  };
84
74
  const onError = (...args) => {
85
75
  const error = args[0];
86
- uploadCache.count -= 1;
87
76
  throw new HttpError({
88
77
  response: { data: JSON.parse(error.message), status: error.status }
89
78
  });
@@ -90,14 +90,18 @@ class PanelButtonController extends PanelItemController {
90
90
  */
91
91
  async onActionClick(event) {
92
92
  const { uiactionId } = this.model;
93
- await UIActionUtil.execAndResolved(uiactionId, {
94
- context: this.panel.context,
95
- params: this.panel.params,
96
- data: [this.data],
97
- view: this.panel.view,
98
- event,
99
- noWaitRoute: true
100
- });
93
+ await UIActionUtil.execAndResolved(
94
+ uiactionId,
95
+ {
96
+ context: this.panel.context,
97
+ params: this.panel.params,
98
+ data: [this.data],
99
+ view: this.panel.view,
100
+ event,
101
+ noWaitRoute: true
102
+ },
103
+ this.model.appId
104
+ );
101
105
  }
102
106
  calcItemVisible(data) {
103
107
  if (this.state.uiActionState.visible === false) {
@@ -1 +1 @@
1
- .ibiz-form-item-container{--ibiz-form-item-container-label-width:8.125rem;--ibiz-form-item-container-line-height:var(--ibiz-form-item-line-height);--ibiz-form-item-container-require-mark-color:var(--ibiz-color-danger);--ibiz-form-item-container-container-padding:var(--ibiz-spacing-base);--ibiz-form-item-container-left-container-padding:var(--ibiz-spacing-base);--ibiz-form-item-container-error-margin-top:var(--ibiz-spacing-extra-tight);--ibiz-form-item-container-bg-color:var(--ibiz-color-bg-1);--ibiz-form-item-container-label-font-size:var(--ibiz-font-size-header-6);--ibiz-form-item-container-label-text-color:var(--ibiz-color-text-0);--ibiz-form-item-container-container-error-padding:0 var(--ibiz-spacing-base);--ibiz-form-item-container-border:0.0625rem var(--ibiz-color-border) solid;--ibiz-form-item-container-editor-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-none) var(--ibiz-spacing-tight) var(--ibiz-spacing-none);--ibiz-form-item-label-line-height:1;--ibiz-form-item-label-font-size:var(--ibiz-font-size-header-5);--ibiz-form-item-label-text-color:var(--ibiz-color-text-0);position:relative;width:100%;height:100%;padding:var(--ibiz-form-item-container-container-padding);font-size:var(--ibiz-form-item-font-size);background-color:var(--ibiz-form-item-container-bg-color);border-width:calc(100% - var(--ibiz-spacing-base) * 2);border-radius:var(--ibiz-border-radius-small)}.ibiz-form-item-container::after{position:absolute;z-index:1;width:calc(100% - var(--ibiz-spacing-base) * 2);height:.00625rem;content:"";background-color:var(--ibiz-color-border)}.ibiz-form-item-container__label{position:relative;flex-shrink:0;width:var(--ibiz-form-item-container-label-width);overflow:visible;color:var(--ibiz-form-item-label-text-color)}.ibiz-form-item-container__label span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;width:100%;font-size:var(--ibiz-form-item-container-label-font-size);text-align:var(--ibiz-form-item-container-label-align)}.ibiz-form-item-container__editor{width:100%;text-align:var(--ibiz-form-item-container-editor-align)}.ibiz-form-item-container__editor .van-cell{padding-bottom:0}.ibiz-form-item-container.is-required .ibiz-form-item-container__label::before{position:absolute;top:.1875rem;left:-.625rem;display:inline-block;height:100%;font-size:.875rem;color:var(--ibiz-form-item-error-color);content:"*"}.ibiz-form-item-container.is-error::after{background-color:var(--ibiz-form-item-error-color)}.ibiz-form-item-container.is-error .ibiz-form-item-container-content{border-color:var(--ibiz-form-item-error-color)}.ibiz-form-item-container--left::after{bottom:0}.ibiz-form-item-container--right.is-required .ibiz-form-item-container__label::before{right:-.625rem;left:auto}.ibiz-form-item-container--right .ibiz-form-item-container__editor{width:calc(100% - var(--ibiz-form-item-container-label-width))}.ibiz-form-item-container--left .ibiz-form-item-container__editor{width:calc(100% - var(--ibiz-form-item-container-label-width))}.ibiz-form-item-container--top .ibiz-form-item-container__editor{padding:var(--ibiz-form-item-container-editor-padding)}.ibiz-form-item-container--bottom .ibiz-form-item-container__editor{padding:var(--ibiz-form-item-container-editor-padding)}.ibiz-form-item-container-content{position:relative}.ibiz-form-item-container--left .ibiz-form-item-container-content,.ibiz-form-item-container--right .ibiz-form-item-container-content{height:100%;display:flex;align-items:center;justify-content:center}.ibiz-form-item-container-error{position:absolute;bottom:0;width:calc(100% - var(--ibiz-spacing-base));padding-right:var(--ibiz-spacing-base);font-size:var(--ibiz-form-item-error-font-size);line-height:var(--ibiz-form-item-font-size);color:var(--ibiz-form-item-error-color);text-align:var(--ibiz-form-item-container-editor-align)}
1
+ .ibiz-form-item-container{--ibiz-form-item-container-label-width:8.125rem;--ibiz-form-item-container-line-height:var(--ibiz-form-item-line-height);--ibiz-form-item-container-require-mark-color:var(--ibiz-color-danger);--ibiz-form-item-container-container-padding:var(--ibiz-spacing-base);--ibiz-form-item-container-left-container-padding:var(--ibiz-spacing-base);--ibiz-form-item-container-error-margin-top:var(--ibiz-spacing-extra-tight);--ibiz-form-item-container-bg-color:var(--ibiz-color-bg-1);--ibiz-form-item-container-label-font-size:var(--ibiz-font-size-header-6);--ibiz-form-item-container-label-text-color:var(--ibiz-color-text-0);--ibiz-form-item-container-container-error-padding:0 var(--ibiz-spacing-base);--ibiz-form-item-container-border:0.0625rem var(--ibiz-color-border) solid;--ibiz-form-item-container-editor-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-none) var(--ibiz-spacing-tight) var(--ibiz-spacing-none);--ibiz-form-item-label-line-height:1;--ibiz-form-item-label-font-size:var(--ibiz-font-size-header-5);--ibiz-form-item-label-text-color:var(--ibiz-color-text-0);position:relative;width:100%;height:100%;padding:var(--ibiz-form-item-container-container-padding);font-size:var(--ibiz-form-item-font-size);background-color:var(--ibiz-form-item-container-bg-color);border-width:calc(100% - var(--ibiz-spacing-base) * 2);border-radius:var(--ibiz-border-radius-small)}.ibiz-form-item-container::after{position:absolute;z-index:1;width:calc(100% - var(--ibiz-spacing-base) * 2);height:.00625rem;content:"";background-color:var(--ibiz-color-border)}.ibiz-form-item-container__label{position:relative;flex-shrink:0;width:var(--ibiz-form-item-container-label-width);overflow:visible;color:var(--ibiz-form-item-label-text-color)}.ibiz-form-item-container__label span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;width:100%;font-size:var(--ibiz-form-item-container-label-font-size);text-align:var(--ibiz-form-item-container-label-align)}.ibiz-form-item-container__editor{width:100%;text-align:var(--ibiz-form-item-container-editor-align)}.ibiz-form-item-container__editor .van-cell{padding-bottom:0}.ibiz-form-item-container.is-required .ibiz-form-item-container__label::before{position:absolute;top:.1875rem;left:-.625rem;display:inline-block;height:100%;font-size:.875rem;color:var(--ibiz-form-item-error-color);content:"*"}.ibiz-form-item-container.is-error::after{background-color:var(--ibiz-form-item-error-color)}.ibiz-form-item-container.is-error .ibiz-form-item-container-content{border-color:var(--ibiz-form-item-error-color)}.ibiz-form-item-container--left::after{bottom:0}.ibiz-form-item-container--right.is-required .ibiz-form-item-container__label::before{right:-.625rem;left:auto}.ibiz-form-item-container--right .ibiz-form-item-container__editor{position:relative;width:calc(100% - var(--ibiz-form-item-container-label-width))}.ibiz-form-item-container--left .ibiz-form-item-container__editor{width:calc(100% - var(--ibiz-form-item-container-label-width))}.ibiz-form-item-container--top .ibiz-form-item-container__editor{padding:var(--ibiz-form-item-container-editor-padding)}.ibiz-form-item-container--bottom .ibiz-form-item-container__editor{padding:var(--ibiz-form-item-container-editor-padding)}.ibiz-form-item-container-content{position:relative}.ibiz-form-item-container--left .ibiz-form-item-container-content,.ibiz-form-item-container--right .ibiz-form-item-container-content{height:100%;display:flex;align-items:center;justify-content:center}.ibiz-form-item-container-error{position:absolute;bottom:0;width:calc(100% - var(--ibiz-spacing-base));padding-right:var(--ibiz-spacing-base);font-size:var(--ibiz-form-item-error-font-size);line-height:var(--ibiz-form-item-font-size);color:var(--ibiz-form-item-error-color);text-align:var(--ibiz-form-item-container-editor-align)}
@@ -27,6 +27,27 @@ const IBizFileUpload = /* @__PURE__ */ vue.defineComponent({
27
27
  } = useVanUpload.useVanUpload(props, (value) => {
28
28
  emit("change", value);
29
29
  }, c);
30
+ const getFileSuffix = (name) => {
31
+ const lastDotIndex = name.lastIndexOf(".");
32
+ if (lastDotIndex === -1) {
33
+ return "";
34
+ }
35
+ const extension = name.substring(lastDotIndex + 1).toLowerCase();
36
+ return extension;
37
+ };
38
+ const getFileName = (filename) => {
39
+ const lastDotIndex = filename.lastIndexOf(".");
40
+ if (lastDotIndex === -1) {
41
+ return filename;
42
+ }
43
+ const name = filename.substring(0, lastDotIndex);
44
+ return name;
45
+ };
46
+ const getPreviewImg = (name) => {
47
+ const suffix = getFileSuffix(name);
48
+ const type = c.fileTypeMap.get(suffix) || "unknown";
49
+ return `./assets/img/file/${type}.svg`;
50
+ };
30
51
  return {
31
52
  ns,
32
53
  c,
@@ -37,6 +58,9 @@ const IBizFileUpload = /* @__PURE__ */ vue.defineComponent({
37
58
  beforeUpload,
38
59
  onDownload,
39
60
  afterRead,
61
+ getFileSuffix,
62
+ getFileName,
63
+ getPreviewImg,
40
64
  limit
41
65
  };
42
66
  },
@@ -55,17 +79,17 @@ const IBizFileUpload = /* @__PURE__ */ vue.defineComponent({
55
79
  }, {
56
80
  default: () => {
57
81
  return !this.readonly && !this.disabled && vue.createVNode(vue.resolveComponent("van-button"), {
58
- "class": this.ns.b("button")
59
- }, {
60
- default: () => [vue.createTextVNode("\u4E0A\u4F20\u6587\u4EF6")]
61
- });
82
+ "class": this.ns.b("button"),
83
+ "icon": "add-o",
84
+ "type": "primary"
85
+ }, null);
62
86
  },
63
87
  "preview-cover": (file) => {
64
88
  return vue.createVNode("div", {
65
89
  "class": this.ns.b("item-cover")
66
90
  }, [file.name]);
67
91
  }
68
- }), vue.createVNode("div", {
92
+ }), this.files.length > 0 && vue.createVNode("div", {
69
93
  "class": this.ns.b("preview")
70
94
  }, [this.files.map((item) => {
71
95
  return vue.createVNode("div", {
@@ -73,18 +97,25 @@ const IBizFileUpload = /* @__PURE__ */ vue.defineComponent({
73
97
  "onClick": () => {
74
98
  this.onDownload(item);
75
99
  }
100
+ }, [vue.createVNode("div", {
101
+ "class": this.ns.b("preview-item-left")
76
102
  }, [vue.createVNode("div", {
77
103
  "class": this.ns.b("preview-item-img")
78
104
  }, [vue.createVNode("img", {
79
- "src": "./assets/img/file.png",
105
+ "src": this.getPreviewImg(item.name),
80
106
  "alt": ""
81
107
  }, null)]), vue.createVNode("div", {
82
108
  "class": this.ns.b("preview-item-text")
83
- }, [item.name]), !this.readonly && !this.disabled && vue.createVNode("div", {
109
+ }, [vue.createVNode("div", {
110
+ "class": this.ns.b("preview-item-name")
111
+ }, [this.getFileName(item.name)]), this.getFileSuffix(item.name) && vue.createVNode("div", {
112
+ "class": this.ns.b("preview-item-suffix")
113
+ }, [vue.createTextVNode("."), this.getFileSuffix(item.name)])])]), !this.readonly && !this.disabled && vue.createVNode("div", {
84
114
  "class": this.ns.b("preview-item-action")
85
115
  }, [vue.createVNode(vue.resolveComponent("van-icon"), {
86
116
  "name": "cross",
87
- "onClick": () => {
117
+ "onClick": (e) => {
118
+ e.stopPropagation();
88
119
  this.onRemove(item);
89
120
  }
90
121
  }, null)])]);
@@ -1 +1 @@
1
- .ibiz-file-upload{width:100%}.ibiz-file-upload .van-uploader__preview{display:none}.ibiz-file-upload .ibiz-file-upload-button{height:1.875rem}.ibiz-file-upload .ibiz-file-upload-button span{font-size:var(--ibiz-form-item-font-size);color:var(--ibiz-form-item-text-color)}.ibiz-file-upload .van-uploader__preview .van-uploader__file-icon{display:none}.ibiz-file-upload .van-uploader__preview .van-uploader__file-name{display:none}.ibiz-file-upload .ibiz-file-upload-item-cover{position:absolute;top:0;bottom:0;box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:100%;font-size:.75rem;line-height:initial;color:#fff;text-align:center;background:var(--ibiz-color-overlay-bg)}.ibiz-file-upload .ibiz-file-upload-preview{width:100%}.ibiz-file-upload .ibiz-file-upload-preview-item{display:flex;align-items:center;border-bottom:.0625rem solid var(--ibiz-color-border)}.ibiz-file-upload .ibiz-file-upload-preview-item:last-child{border-width:0}.ibiz-file-upload .ibiz-file-upload-preview-item-img{width:3.125rem;min-width:3.125rem;padding:.625rem}.ibiz-file-upload .ibiz-file-upload-preview-item-img img{width:100%;height:100%;border-radius:.25rem}.ibiz-file-upload .ibiz-file-upload-preview-item-text{overflow:hidden;font-size:.875rem;text-overflow:ellipsis;white-space:nowrap}.ibiz-file-upload .ibiz-file-upload-preview-item-action{display:flex;flex-grow:1;align-items:center;justify-content:flex-end;min-width:3.125rem;color:var(--ibiz-color-overlay-bg);text-align:right}
1
+ .ibiz-file-upload{width:100%}.ibiz-file-upload .van-uploader__preview{display:none}.ibiz-file-upload .ibiz-file-upload-button{width:1.25rem;height:1.25rem;font-size:var(--ibiz-font-size-header-4);color:var(--ibiz-color-text-2);background:0 0;border:none;border-radius:50%}.ibiz-file-upload .van-uploader__preview .van-uploader__file-icon{display:none}.ibiz-file-upload .van-uploader__preview .van-uploader__file-name{display:none}.ibiz-file-upload .ibiz-file-upload-item-cover{position:absolute;top:0;bottom:0;box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:100%;font-size:.75rem;line-height:initial;color:#fff;text-align:center;background:var(--ibiz-color-overlay-bg)}.ibiz-file-upload .ibiz-file-upload-preview{width:100%;margin-top:.625rem}.ibiz-file-upload .ibiz-file-upload-preview-item{display:flex;align-items:center;justify-content:space-between;width:100%;padding:0 var(--ibiz-spacing-tight);margin-bottom:var(--ibiz-spacing-tight);background:var(--ibiz-color-disabled-bg);border-radius:var(--ibiz-border-radius-small)}.ibiz-file-upload .ibiz-file-upload-preview-item:last-child{margin:0;border-width:0}.ibiz-file-upload .ibiz-file-upload-preview-item-img{flex-shrink:0;width:2.5rem;min-width:2.5rem;height:2.5rem;padding:.375rem}.ibiz-file-upload .ibiz-file-upload-preview-item-img img{width:100%;height:100%;border-radius:.25rem}.ibiz-file-upload .ibiz-file-upload-preview-item-left{display:flex;flex-grow:1;align-items:center;width:calc(100% - 1.25rem)}.ibiz-file-upload .ibiz-file-upload-preview-item-text{display:flex;flex:1;align-items:center;width:calc(100% - 2.5rem);padding-left:var(--ibiz-spacing-tight);font-size:.875rem}.ibiz-file-upload .ibiz-file-upload-preview-item-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ibiz-file-upload .ibiz-file-upload-preview-item-action{display:flex;flex-shrink:0;align-items:center;justify-content:flex-end;width:1.25rem;color:var(--ibiz-color-overlay-bg);text-align:right}.ibiz-file-upload .van-uploader__input-wrapper{width:100%;text-align:right}.ibiz-form-item-container--top .ibiz-file-upload .van-uploader{position:absolute;top:0;right:0;width:100%}
@@ -34,6 +34,56 @@ class UploadEditorController extends runtime.EditorController {
34
34
  * 下载参数
35
35
  */
36
36
  __publicField(this, "exportParams");
37
+ /**
38
+ * 文件类型
39
+ *
40
+ * @author zk
41
+ * @date 2023-12-07 03:12:25
42
+ * @memberof UploadEditorController
43
+ */
44
+ __publicField(this, "fileTypeMap", /* @__PURE__ */ new Map([
45
+ // word文档
46
+ ["docx", "docx"],
47
+ ["doc", "docx"],
48
+ ["dotx", "docx"],
49
+ ["dot", "docx"],
50
+ // pdf
51
+ ["pdf", "pdf"],
52
+ // text
53
+ ["txt", "text"],
54
+ //
55
+ ["xlsx", "excel"],
56
+ ["xls", "excel"],
57
+ ["xlsm", "excel"],
58
+ ["xlsb", "excel"],
59
+ ["csv", "excel"],
60
+ // ppt
61
+ ["pptx", "ppt"],
62
+ // 图片
63
+ ["jpg", "img"],
64
+ ["png", "img"],
65
+ ["gif", "img"],
66
+ ["bmp", "img"],
67
+ ["svg", "img"],
68
+ // 音频
69
+ ["mp3", "audio"],
70
+ ["wav", "audio"],
71
+ ["aac", "audio"],
72
+ ["flac", "audio"],
73
+ ["wma", "audio"],
74
+ // 视频
75
+ ["mp4", "video"],
76
+ ["avi", "video"],
77
+ ["mov", "video"],
78
+ ["mkv", "video"],
79
+ ["wmv", "video"],
80
+ // 压缩
81
+ ["zip", "zip"],
82
+ ["rar", "zip"],
83
+ ["7z", "zip"],
84
+ ["gz", "zip"],
85
+ ["tar", "zip"]
86
+ ]));
37
87
  }
38
88
  async onInit() {
39
89
  var _a;
@@ -12,11 +12,6 @@ function useVanUpload(props, valueChange, c) {
12
12
  });
13
13
  const uploadUrl = vue.ref("");
14
14
  const downloadUrl = vue.ref("");
15
- const uploadCache = {
16
- count: 0,
17
- cacheFiles: []
18
- // iview上传过程中不能改default-file-list,所以需要缓存
19
- };
20
15
  vue.watch(
21
16
  () => props.value,
22
17
  (newVal) => {
@@ -58,34 +53,28 @@ function useVanUpload(props, valueChange, c) {
58
53
  { immediate: true }
59
54
  );
60
55
  const emitValue = () => {
61
- const _files = [...files.value, ...uploadCache.cacheFiles];
56
+ const _files = [...files.value];
62
57
  const value = _files.length > 0 ? JSON.stringify(_files.map((file) => ({ name: file.name, id: file.id }))) : null;
63
- uploadCache.cacheFiles = [];
64
58
  valueChange(value);
65
59
  };
66
60
  const beforeUpload = () => {
67
61
  if (!c.multiple && files.value.length === 1) {
68
62
  return false;
69
63
  }
70
- uploadCache.count += 1;
71
64
  return true;
72
65
  };
73
66
  const onSuccess = (response) => {
74
67
  if (!response) {
75
68
  return;
76
69
  }
77
- uploadCache.cacheFiles.push({
70
+ files.value.push({
78
71
  name: response.filename,
79
72
  id: response.fileid
80
73
  });
81
- uploadCache.count -= 1;
82
- if (uploadCache.count === 0) {
83
- emitValue();
84
- }
74
+ emitValue();
85
75
  };
86
76
  const onError = (...args) => {
87
77
  const error = args[0];
88
- uploadCache.count -= 1;
89
78
  throw new core.HttpError({
90
79
  response: { data: JSON.parse(error.message), status: error.status }
91
80
  });
@@ -92,14 +92,18 @@ class PanelButtonController extends runtime.PanelItemController {
92
92
  */
93
93
  async onActionClick(event) {
94
94
  const { uiactionId } = this.model;
95
- await runtime.UIActionUtil.execAndResolved(uiactionId, {
96
- context: this.panel.context,
97
- params: this.panel.params,
98
- data: [this.data],
99
- view: this.panel.view,
100
- event,
101
- noWaitRoute: true
102
- });
95
+ await runtime.UIActionUtil.execAndResolved(
96
+ uiactionId,
97
+ {
98
+ context: this.panel.context,
99
+ params: this.panel.params,
100
+ data: [this.data],
101
+ view: this.panel.view,
102
+ event,
103
+ noWaitRoute: true
104
+ },
105
+ this.model.appId
106
+ );
103
107
  }
104
108
  calcItemVisible(data) {
105
109
  if (this.state.uiActionState.visible === false) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ibiz-template/mob-vue3-components",
3
- "version": "0.0.2",
3
+ "version": "0.0.3",
4
4
  "description": "使用 rollup 编译 vue 组件或者 jsx",
5
5
  "main": "lib/index.cjs",
6
6
  "module": "es/index.mjs",
@@ -24,11 +24,11 @@
24
24
  },
25
25
  "dependencies": {
26
26
  "@ibiz-template-package/vs-tree-ex": "^0.1.1",
27
- "@ibiz-template/core": "^0.4.5",
28
- "@ibiz-template/model-helper": "^0.4.5",
29
- "@ibiz-template/runtime": "^0.4.5",
27
+ "@ibiz-template/core": "^0.4.6",
28
+ "@ibiz-template/model-helper": "^0.4.8",
29
+ "@ibiz-template/runtime": "^0.4.8",
30
30
  "@ibiz-template/theme": "^0.4.0",
31
- "@ibiz-template/vue3-util": "^0.4.5",
31
+ "@ibiz-template/vue3-util": "^0.4.8",
32
32
  "@ibiz/model-core": "^0.0.26",
33
33
  "async-validator": "^4.2.5",
34
34
  "cherry-markdown": "^0.8.26",