@kyfe/fms-vue2-components 0.0.6 → 0.0.7

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.
@@ -0,0 +1,143 @@
1
+ import './../fms-copy-box/style.css';
2
+ import { n as l } from "../plugin-vue2_normalizer.ed7092a9.js";
3
+ import './style.css';const r = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSJub25lIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNS4wMTAyNTM5MDYyNSIgaGVpZ2h0PSIxMy45MzgxMTAzNTE1NjI1IiB2aWV3Qm94PSIwIDAgMTUuMDEwMjUzOTA2MjUgMTMuOTM4MTEwMzUxNTYyNSI+PGc+PGc+PHBhdGggZD0iTTMuNzUyNDQsMi4xNDQyOUwyLjI1LDIuMTQ0MjlDMS4wMDczNiwyLjE0NDI5LDAsMy4xNTE2NSwwLDQuMzk0MjlMMCwxMS42ODgxQzAsMTIuOTMwOCwxLjAwNzM2LDEzLjkzODEsMi4yNSwxMy45MzgxTDEyLjc2MDMsMTMuOTM4MUMxNC4wMDI5LDEzLjkzODEsMTUuMDEwMywxMi45MzA4LDE1LjAxMDMsMTEuNjg4MUwxNS4wMTAzLDQuMzk0MjlDMTUuMDEwMywzLjE1MTY1LDE0LjAwMjksMi4xNDQyOSwxMi43NjAzLDIuMTQ0MjlMMTEuMjU3OCwyLjE0NDI5QzExLjI1NzgsMC45NjAwMDYsMTAuMjk3NiwwLDkuMTEzMjgsMEw1Ljg5Njk3LDBDNC43MTI2OSwwLDMuNzUyNDQsMC45NjAwMDYsMy43NTI0NCwyLjE0NDI5Wk0xMS4yMDM2LDcuNzcyNzFDMTEuMjAzNiw5LjgxNTMsOS41NDc0OCwxMS40NzExLDcuNTA0ODgsMTEuNDcxMUM1LjQ2MjI4LDExLjQ3MTEsMy44MDY2NCw5LjgxNTMsMy44MDY2NCw3Ljc3MjcxQzMuODA2NjQsNS43MzAxMSw1LjQ2MjI4LDQuMDc0MjIsNy41MDQ4OCw0LjA3NDIyQzkuNTQ3NDgsNC4wNzQyMiwxMS4yMDM2LDUuNzMwMTEsMTEuMjAzNiw3Ljc3MjcxWk05LjcwMzYxLDcuNzcyNzFDOS43MDM2MSw2LjU1ODUzLDguNzE5MDYsNS41NzQyMiw3LjUwNDg4LDUuNTc0MjJDNi4yOTA3MSw1LjU3NDIyLDUuMzA2NjQsNi41NTg1Myw1LjMwNjY0LDcuNzcyNzFDNS4zMDY2NCw4Ljk4Njg4LDYuMjkwNzEsOS45NzEwNyw3LjUwNDg4LDkuOTcxMDdDOC43MTkwNiw5Ljk3MTA3LDkuNzAzNjEsOC45ODY4OCw5LjcwMzYxLDcuNzcyNzFaIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGZpbGw9IiNFM0U1RUQiIGZpbGwtb3BhY2l0eT0iMSIvPjwvZz48L2c+PC9zdmc+";
4
+ const c = window.vant && window.vant.Toast, M = {
5
+ name: "FmsKsUpload",
6
+ props: {
7
+ value: {
8
+ type: Array,
9
+ default: () => []
10
+ },
11
+ bizId: String,
12
+ bizCode: String,
13
+ maxLength: Number,
14
+ type: {
15
+ type: String,
16
+ default: "edit"
17
+ },
18
+ process: {
19
+ type: Number,
20
+ default: 100
21
+ },
22
+ onPreviewBefore: Function
23
+ },
24
+ data() {
25
+ return {
26
+ show: !1,
27
+ actions: [{ name: "\u4ECE\u76F8\u518C\u9009\u62E9" }, { name: "\u62CD\u7167" }],
28
+ showPdf: !1,
29
+ pdfUrl: ""
30
+ };
31
+ },
32
+ methods: {
33
+ onPreview() {
34
+ this.onPreviewBefore && typeof this.onPreviewBefore == "function" && this.onPreviewBefore() || (this.show = !0);
35
+ },
36
+ onCancel() {
37
+ this.show = !1;
38
+ },
39
+ async onSelect(t) {
40
+ let e = null;
41
+ try {
42
+ if (this.$emit("beforeSelect", t), t.name === "\u4ECE\u76F8\u518C\u9009\u62E9") {
43
+ const s = Number(this.maxLength - this.value.length);
44
+ console.log("\u4ECE\u76F8\u518C\u9009\u62E9", t, s, this.maxLength, this.value.length), e = await window.ks.callFunc({
45
+ method: "pickAssets",
46
+ params: {
47
+ totalCount: s,
48
+ allowRecordVideo: !1,
49
+ selectType: 1,
50
+ quality: 80
51
+ }
52
+ });
53
+ } else
54
+ t.name === "\u62CD\u7167" && (e = await window.ks.takeByCamera());
55
+ this.onCancel(), this.maxLength && e.length > this.maxLength ? c("\u9009\u62E9\u6587\u4EF6\u592A\u591A") : this.upload(e);
56
+ } catch (s) {
57
+ console.info("onSelect--error", s), s && s.msg && c(s.msg), this.onCancel();
58
+ }
59
+ },
60
+ onDelete(t) {
61
+ let e = JSON.parse(JSON.stringify(this.value)), s = e[t];
62
+ e.splice(t, 1), this.$emit("input", e), this.$http("file.deleteByBizAndId", 10124, s).then((a) => {
63
+ this.$emit("deleteSuccess", a, s);
64
+ }).catch((a) => {
65
+ console.log(a);
66
+ });
67
+ },
68
+ async upload(t) {
69
+ try {
70
+ let e = await window.ks.uploadAssets({
71
+ filePaths: t.map((s) => s.filePath),
72
+ fileNames: t.map((s) => s.fileName),
73
+ bizCode: this.bizCode,
74
+ bizId: this.bizId
75
+ });
76
+ console.log("uploadRes---", e), this.$emit("input", e.reverse()), this.$emit("uploadsuccess", t, e), this.onCancel();
77
+ } catch (e) {
78
+ console.log("\u4E0A\u4F20\u5931\u8D25--", e);
79
+ }
80
+ },
81
+ previewAssets(t, e) {
82
+ let s = e.filter((i) => (i.contentType || "").toLowerCase().startsWith("image") || ["jpg", "jpeg", "png", "bmp", "HEIC", "webp", "tiff"].includes(
83
+ (i.extendName || "").toLowerCase()
84
+ )).map((i) => i.url);
85
+ const a = s.findIndex((i) => i === t);
86
+ this.$emit("beforePreviewAssets", {
87
+ index: a,
88
+ list: e
89
+ }), window.ks.previewAssets({
90
+ index: a,
91
+ filePaths: s
92
+ });
93
+ },
94
+ pdfPreview(t) {
95
+ this.$emit("beforePreviewAssets", {
96
+ index,
97
+ list
98
+ }), window.ks.callFunc({
99
+ method: "previewFile",
100
+ params: {
101
+ filePath: t.url,
102
+ fileName: t.name,
103
+ fileSize: String(t.size)
104
+ }
105
+ });
106
+ }
107
+ }
108
+ };
109
+ var w = function() {
110
+ var e = this, s = e._self._c;
111
+ return s("div", { staticClass: "van-uploader" }, [s("div", { staticClass: "van-uploader__wrapper" }, [e._l(e.value, function(a, i) {
112
+ return s("div", { key: i, staticClass: "van-uploader__preview" }, [s("div", { class: { "van-image": !0, "van-uploader__preview-image": !0 }, staticStyle: { overflow: "hidden", "border-radius": "4px", width: "52px", height: "52px" } }, [e.process !== 100 ? s("div", { staticClass: "mask-wrap" }, [s("div", { staticClass: "mask-content" }, [s("div", { staticClass: "mask-progress-bar" }, [s("div", { staticClass: "mask-progress-step", style: { width: `${e.process / 100 * 44}px` } })]), s("div", { staticClass: "mask-text" }, [e._v("\u8BC6\u522B\u4E2D")])])]) : e._e(), (a.contentType || "").toLowerCase().startsWith("image") || ["jpg", "jpeg", "png", "bmp", "HEIC", "webp", "tiff"].includes(
113
+ (a.extendName || "").toLowerCase()
114
+ ) ? s("img", { staticClass: "van-image__img", staticStyle: { "object-fit": "cover" }, attrs: { src: a.url }, on: { click: function(o) {
115
+ return e.previewAssets(a.url, e.value);
116
+ } } }) : (a.contentType || "").toLowerCase().includes("pdf") || ["pdf"].includes((a.extendName || "").toLowerCase()) ? s("div", { on: { click: function(o) {
117
+ return e.pdfPreview(a);
118
+ } } }, [s("img", { staticClass: "van-image__img", attrs: { src: "https://erphostjs.kye-erp.com/hr-oa-kts/ks-app/kuasheng-oa/images/pdf.svg", alt: "" } })]) : s("div", { staticClass: "van-uploader__upload", staticStyle: { margin: "0" } }, [e._m(0, !0)])]), e.type === "edit" ? s("i", { staticClass: "van-icon van-icon-clear van-uploader__preview-delete", staticStyle: { color: "#a7aab7", border: "1px solid #fff", fontSize: "14px" }, on: { click: function(o) {
119
+ return e.onDelete(i);
120
+ } } }) : e._e()]);
121
+ }), (e.maxLength && e.value.length < e.maxLength || !e.maxLength) && e.type === "edit" ? s("div", { staticClass: "van-uploader__upload", staticStyle: { "font-size": "22px" }, on: { click: e.onPreview } }, [s("img", { staticClass: "upload-icon", attrs: { src: r } })]) : e._e()], 2), s("ks-action-sheet", { attrs: { actions: e.actions, "get-container": "body", "cancel-text": "\u53D6\u6D88" }, on: { select: e.onSelect, cancel: e.onCancel }, model: { value: e.show, callback: function(a) {
122
+ e.show = a;
123
+ }, expression: "show" } })], 1);
124
+ }, u = [function() {
125
+ var t = this, e = t._self._c;
126
+ return e("div", { staticClass: "van-uploader__preview-show" }, [t._v("\u6587\u4EF6\u8BF7\u5230"), e("br"), t._v("ERP\u67E5\u770B")]);
127
+ }], d = /* @__PURE__ */ l(
128
+ M,
129
+ w,
130
+ u,
131
+ !1,
132
+ null,
133
+ "d54b97c2",
134
+ null,
135
+ null
136
+ );
137
+ const n = d.exports;
138
+ n.install = function(t) {
139
+ t.component(n.name, n);
140
+ };
141
+ export {
142
+ n as default
143
+ };
@@ -0,0 +1 @@
1
+ .van-uploader[data-v-d54b97c2]{padding-top:4px}.van-uploader__upload[data-v-d54b97c2]{cursor:pointer;border-radius:4px}.van-uploader__preview-delete[data-v-d54b97c2]{font-size:18px;top:-8px;right:-8px;bottom:unset;border-radius:100%;background-color:#fff;color:#969799}.van-uploader .pdf-border[data-v-d54b97c2]{border:1px solid #e8e8e8;display:flex;align-items:center;padding:2px;color:#a6a6a6;font-size:12px}.van-uploader .mask-wrap[data-v-d54b97c2]{width:52px;height:52px;background-color:#000000b3;position:absolute;display:flex;justify-content:center;align-items:center}.van-uploader .mask-wrap .mask-content[data-v-d54b97c2]{display:flex;align-items:center;flex-direction:column;justify-content:center;margin-top:4px}.van-uploader .mask-wrap .mask-content .mask-progress-bar[data-v-d54b97c2]{width:44px;height:4px;background-color:#ffffff80;border-radius:2px}.van-uploader .mask-wrap .mask-content .mask-progress-bar .mask-progress-step[data-v-d54b97c2]{height:4px;background-color:#ffffffe6;border-radius:2px}.van-uploader .mask-wrap .mask-content .mask-text[data-v-d54b97c2]{line-height:24px;color:#fff;font-size:10px}.van-popup[data-v-d54b97c2]{overflow:inherit!important}.van-popup .close-btn[data-v-d54b97c2]{bottom:150px;position:absolute;left:50%;transform:translate(-50%);color:#fff;font-size:25px;background-color:#7972fe;border-radius:50%;border:none;padding:8px}[data-v-d54b97c2] .van-uploader__upload{border:.5px dashed #c6c6d0;width:52px;height:52px;background-color:#fff}.van-uploader__preview-show[data-v-d54b97c2]{font-size:12px;color:#999;text-align:center}
package/dist/index.js CHANGED
@@ -1,37 +1,40 @@
1
1
  import './fms-copy-box/style.css';
2
- import r from "./fms-copy-box/index.js";
3
- import { default as D } from "./fms-copy-box/index.js";
4
- import s from "./fms-empty/index.js";
5
- import { default as L } from "./fms-empty/index.js";
2
+ import s from "./fms-copy-box/index.js";
3
+ import { default as G } from "./fms-copy-box/index.js";
4
+ import r from "./fms-empty/index.js";
5
+ import { default as T } from "./fms-empty/index.js";
6
6
  import "./fms-ks-decrypt/index.js";
7
7
  import t from "./fms-ks-file-upload/index.js";
8
- import { default as U } from "./fms-ks-file-upload/index.js";
8
+ import { default as b } from "./fms-ks-file-upload/index.js";
9
9
  import p from "./fms-ks-file-view/index.js";
10
- import { default as b } from "./fms-ks-file-view/index.js";
10
+ import { default as j } from "./fms-ks-file-view/index.js";
11
11
  import e from "./fms-scroll-list/index.js";
12
- import { default as j } from "./fms-scroll-list/index.js";
13
- import F from "./fms-ks-form-grid/index.js";
14
- import { default as q } from "./fms-ks-form-grid/index.js";
12
+ import { default as q } from "./fms-scroll-list/index.js";
13
+ import a from "./fms-ks-form-grid/index.js";
14
+ import { default as z } from "./fms-ks-form-grid/index.js";
15
15
  import "./fms-ks-search-tips/index.js";
16
- import { F as a } from "./fms-ks-decrypt.2f88e659.js";
17
- import { F as z } from "./fms-ks-decrypt.2f88e659.js";
18
- import { F as f } from "./fms-ks-search-tips.d36859c3.js";
19
- import { F as H } from "./fms-ks-search-tips.d36859c3.js";
20
- const i = [r, s, a, t, p, e, F, f], l = function(m) {
21
- i.forEach((o) => {
16
+ import f from "./fms-ks-upload/index.js";
17
+ import { default as H } from "./fms-ks-upload/index.js";
18
+ import { F } from "./fms-ks-decrypt.2f88e659.js";
19
+ import { F as J } from "./fms-ks-decrypt.2f88e659.js";
20
+ import { F as i } from "./fms-ks-search-tips.d36859c3.js";
21
+ import { F as N } from "./fms-ks-search-tips.d36859c3.js";
22
+ const l = [s, r, F, t, p, e, a, i, f], d = function(m) {
23
+ l.forEach((o) => {
22
24
  m.component(o.name, o);
23
25
  });
24
- }, w = {
25
- install: l
26
+ }, B = {
27
+ install: d
26
28
  };
27
29
  export {
28
- D as FmsCopyBox,
29
- L as FmsEmpty,
30
- z as FmsKsDecrypt,
31
- U as FmsKsFileUpload,
32
- b as FmsKsFileView,
33
- q as FmsKsFormGrid,
34
- H as FmsKsSearchTips,
35
- j as FmsScrollList,
36
- w as default
30
+ G as FmsCopyBox,
31
+ T as FmsEmpty,
32
+ J as FmsKsDecrypt,
33
+ b as FmsKsFileUpload,
34
+ j as FmsKsFileView,
35
+ z as FmsKsFormGrid,
36
+ N as FmsKsSearchTips,
37
+ H as FmsKsUpload,
38
+ q as FmsScrollList,
39
+ B as default
37
40
  };
@@ -1 +1 @@
1
- .ks-date-picker__body{flex:1;overflow:hidden;height:100%;position:relative}.ks-date-picker .van-calendar__body{height:100%;flex:1;overflow:auto;-webkit-overflow-scrolling:touch}.ks-date-picker .van-calendar__month-title{height:40px;line-height:40px;color:#333}.ks-date-picker .van-calendar__day{color:#333}.ks-date-picker .van-calendar__day.van-calendar__day--disabled{color:#ccc}.ks-date-picker .van-calendar__selected-day,.ks-date-picker .van-calendar__day--start,.ks-date-picker .van-calendar__day--end{color:#fff;background-color:#7972fe;border-radius:50%;width:44px;height:44px;line-height:44px;display:flex;align-items:center;justify-content:center}.ks-date-picker .van-calendar__day--start-end{color:#fff;background-color:#7972fe;width:54px;height:44px;line-height:44px;display:flex;align-items:center;justify-content:center;position:relative}.ks-date-picker .van-calendar__day--middle:after{top:3px;bottom:3px}.ks-date-picker .van-calendar__day--start,.ks-date-picker .van-calendar__day--end{position:relative}.ks-date-picker .van-calendar__day--start:after{position:absolute;left:50%;top:0;bottom:0;width:85%;content:" ";background-color:#7972fe1a}.ks-date-picker .van-calendar__day--end:after{position:absolute;right:50%;top:0;bottom:0;width:85%;content:" ";background-color:#7972fe1a}.ks-date-picker .van-calendar__bottom-info{font-size:10px;line-height:10px;font-weight:300;bottom:3px;position:absolute;right:0;left:0}.ks-date-picker .van-calendar__confirm{height:44px;line-height:44px;margin-top:0}.ks-date-picker-top-popup{height:85%}.ks-date-picker-top-popup .van-popup__close-icon--top-left{top:10px}.ks-date-picker-top{height:85vh;overflow:hidden;display:flex;flex-direction:column}.ks-date-picker-top__header{height:40px}.ks-date-picker-top__header-title{text-align:center;height:40px;line-height:40px;font-size:14px;color:#7972fe}.ks-date-picker-top__header-title-split{color:#333}.ks-date-picker-top__header-title-end-not{color:#ddd}.ks-date-picker-top__footer{height:62px;padding:16px 16px 0;box-shadow:0 0 4px #9e9bda38;z-index:1}.ios .ks-date-picker-top-popup{padding-top:20px}.ipx .ks-date-picker-top-popup{padding-top:44px}
1
+ .ks-date-picker__body{flex:1;overflow:hidden;height:100%;position:relative}.ks-date-picker .van-calendar__body{height:100%;flex:1;overflow:auto;-webkit-overflow-scrolling:touch}.ks-date-picker .van-calendar__month-title{height:40px;line-height:40px;color:#333}.ks-date-picker .van-calendar__day{color:#333}.ks-date-picker .van-calendar__day.van-calendar__day--disabled{color:#ccc}.ks-date-picker .van-calendar__selected-day,.ks-date-picker .van-calendar__day--start,.ks-date-picker .van-calendar__day--end{color:#fff;background-color:#7972fe;border-radius:50%;width:44px;height:44px;line-height:44px;display:flex;align-items:center;justify-content:center}.ks-date-picker .van-calendar__day--start-end{color:#fff;background-color:#7972fe;width:54px;height:44px;line-height:44px;display:flex;align-items:center;justify-content:center;position:relative}.ks-date-picker .van-calendar__day--middle:after{top:3px;bottom:3px}.ks-date-picker .van-calendar__day--start,.ks-date-picker .van-calendar__day--end{position:relative}.ks-date-picker .van-calendar__day--start:after{position:absolute;left:50%;top:0;bottom:0;width:85%;content:" ";background-color:#7972fe1a}.ks-date-picker .van-calendar__day--end:after{position:absolute;right:50%;top:0;bottom:0;width:85%;content:" ";background-color:#7972fe1a}.ks-date-picker .van-calendar__bottom-info{font-size:10px;line-height:10px;font-weight:300;bottom:3px;position:absolute;right:0;left:0}.ks-date-picker .van-calendar__confirm{height:44px;line-height:44px;margin-top:0}.ks-date-picker-dropdown-warpper{position:fixed;left:0;right:0;bottom:0;z-index:10;overflow:hidden}.ks-date-picker-dropdown-popup{position:absolute;height:88%}.ks-date-picker-dropdown-popup .van-popup__close-icon--top-left{top:10px}.ks-date-picker-dropdown{height:100%;overflow:hidden;display:flex;flex-direction:column}.ks-date-picker-dropdown__footer{height:62px;padding:16px 16px 0;box-shadow:0 0 4px #9e9bda38;z-index:1}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kyfe/fms-vue2-components",
3
- "version": "0.0.6",
3
+ "version": "0.0.7",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -1,6 +1,5 @@
1
1
  import TimePicker from './time-picker.js'
2
2
  import DatePicker from './date-picker.js'
3
-
4
3
  export default {
5
4
  props: {
6
5
  ...TimePicker.props,
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="15.01025390625" height="13.9381103515625" viewBox="0 0 15.01025390625 13.9381103515625"><g><g><path d="M3.75244,2.14429L2.25,2.14429C1.00736,2.14429,0,3.15165,0,4.39429L0,11.6881C0,12.9308,1.00736,13.9381,2.25,13.9381L12.7603,13.9381C14.0029,13.9381,15.0103,12.9308,15.0103,11.6881L15.0103,4.39429C15.0103,3.15165,14.0029,2.14429,12.7603,2.14429L11.2578,2.14429C11.2578,0.960006,10.2976,0,9.11328,0L5.89697,0C4.71269,0,3.75244,0.960006,3.75244,2.14429ZM11.2036,7.77271C11.2036,9.8153,9.54748,11.4711,7.50488,11.4711C5.46228,11.4711,3.80664,9.8153,3.80664,7.77271C3.80664,5.73011,5.46228,4.07422,7.50488,4.07422C9.54748,4.07422,11.2036,5.73011,11.2036,7.77271ZM9.70361,7.77271C9.70361,6.55853,8.71906,5.57422,7.50488,5.57422C6.29071,5.57422,5.30664,6.55853,5.30664,7.77271C5.30664,8.98688,6.29071,9.97107,7.50488,9.97107C8.71906,9.97107,9.70361,8.98688,9.70361,7.77271Z" fill-rule="evenodd" fill="#E3E5ED" fill-opacity="1"/></g></g></svg>
@@ -0,0 +1,302 @@
1
+ <template>
2
+ <div class="van-uploader">
3
+ <!-- <van-button @click="demo">单击</van-button> -->
4
+ <div class="van-uploader__wrapper">
5
+ <!-- 已经上传后的附件预览 -->
6
+ <div v-for="(item, index) of value"
7
+ :key="index"
8
+ class="van-uploader__preview">
9
+ <div :class="{'van-image': true, 'van-uploader__preview-image': true,}"
10
+ style="overflow: hidden; border-radius: 4px; width: 52px;height: 52px;">
11
+ <!-- 显示识别进度-报销申请页面有使用到 -->
12
+ <div v-if="process !== 100"
13
+ class="mask-wrap">
14
+ <div class="mask-content">
15
+ <div class="mask-progress-bar">
16
+ <div class="mask-progress-step"
17
+ :style="{width: `${process/100*44}px` }"></div>
18
+ </div>
19
+ <div class="mask-text">识别中</div>
20
+ </div>
21
+ </div>
22
+ <img v-if="(item.contentType || '').toLowerCase().startsWith('image') ||
23
+ ['jpg', 'jpeg', 'png', 'bmp', 'HEIC', 'webp', 'tiff'].includes(
24
+ (item.extendName || '').toLowerCase()
25
+ )"
26
+ :src="item.url"
27
+ @click="previewAssets(item.url, value)"
28
+ class="van-image__img"
29
+ style="object-fit: cover;" />
30
+ <div v-else-if="(item.contentType || '').toLowerCase().includes('pdf') ||
31
+ ['pdf'].includes((item.extendName || '').toLowerCase())"
32
+ @click="pdfPreview(item)"><img class="van-image__img"
33
+ src="https://erphostjs.kye-erp.com/hr-oa-kts/ks-app/kuasheng-oa/images/pdf.svg"
34
+ alt=""></div>
35
+ <div v-else
36
+ class="van-uploader__upload"
37
+ style="margin:0;">
38
+ <div class="van-uploader__preview-show">文件请到<br />ERP查看</div>
39
+ </div>
40
+ </div>
41
+ <i class="van-icon van-icon-clear van-uploader__preview-delete"
42
+ v-if="type === 'edit'"
43
+ style="color: #a7aab7;border:1px solid #fff;fontSize: 14px;"
44
+ @click="onDelete(index)"></i>
45
+ </div>
46
+ <!-- 上传按钮 -->
47
+ <div v-if="((maxLength && value.length < maxLength) || !maxLength) && type === 'edit'"
48
+ class="van-uploader__upload"
49
+ @click="onPreview"
50
+ style="font-size: 22px;">
51
+ <img class="upload-icon" src="./camera.svg" />
52
+ <!-- <i class="van-icon van-icon-photograph van-uploader__upload-icon" style="font-size: 16px;"></i> -->
53
+ </div>
54
+ </div>
55
+ <ks-action-sheet v-model="show"
56
+ :actions="actions"
57
+ get-container="body"
58
+ cancel-text="取消"
59
+ @select="onSelect"
60
+ @cancel="onCancel" />
61
+ <!-- <van-popup v-model="showPdf" get-container="body">
62
+ <pdf-prev :url="pdfUrl" v-if="showPdf"></pdf-prev>
63
+ <van-icon name="cross"
64
+ class="close-btn"
65
+ @click="showPdf = false" />
66
+ </van-popup> -->
67
+ </div>
68
+ </template>
69
+
70
+ <script>
71
+ const Toast = window.vant && window.vant.Toast
72
+
73
+ export default {
74
+ name: "FmsKsUpload",
75
+ // components: { PdfPrev },
76
+ props: {
77
+ value: {
78
+ type: Array,
79
+ default: () => ([])
80
+ },
81
+ bizId: String,
82
+ bizCode: String,
83
+ maxLength: Number
84
+ ,
85
+ type: { // edit 可以编辑 detail 不可以编辑
86
+ type: String,
87
+ default: 'edit'
88
+ },
89
+ process: { // 识别进度
90
+ type: Number,
91
+ default: 100
92
+ },
93
+ onPreviewBefore: Function, // 点击上传按钮之前的操作,可终止唤起弹框
94
+ },
95
+ data () {
96
+ return {
97
+ show: false,
98
+ actions: [{ name: "从相册选择" }, { name: "拍照" }],
99
+ showPdf: false,
100
+ pdfUrl: ''
101
+ };
102
+ },
103
+ methods: {
104
+ onPreview () {
105
+ if (this.onPreviewBefore && typeof this.onPreviewBefore === 'function') {
106
+ const flag = this.onPreviewBefore()
107
+ if (flag) {
108
+ return
109
+ }
110
+ }
111
+ this.show = true;
112
+ },
113
+ onCancel () {
114
+ this.show = false;
115
+ },
116
+ async onSelect(item) {
117
+ let fileList = null
118
+ try {
119
+ // NOTE: 此处原代码为 this.$store.commit('setPreviewFile', true),因改为组件库,所以此处改为暴露事件 beforeSelect
120
+ this.$emit('beforeSelect', item)
121
+ if (item.name === '从相册选择') {
122
+ // 选择照片的数量( 默认可选9张图片 )
123
+ const totalCount = Number(this.maxLength - this.value.length)
124
+ console.log('从相册选择', item, totalCount, this.maxLength, this.value.length)
125
+ fileList = await window.ks.callFunc({
126
+ method: 'pickAssets',
127
+ params: {
128
+ totalCount: totalCount,
129
+ allowRecordVideo: false,
130
+ selectType: 1,
131
+ quality: 80,
132
+ },
133
+ })
134
+ } else if (item.name === '拍照') {
135
+ fileList = await window.ks.takeByCamera()
136
+ }
137
+ this.onCancel()
138
+ if (this.maxLength && fileList.length > this.maxLength) {
139
+ Toast('选择文件太多')
140
+ } else {
141
+ this.upload(fileList)
142
+ }
143
+ } catch (error) {
144
+ console.info('onSelect--error', error)
145
+ if (error && error.msg) {
146
+ Toast(error.msg)
147
+ }
148
+ this.onCancel()
149
+ }
150
+ },
151
+ onDelete (index) {
152
+ let list = JSON.parse(JSON.stringify(this.value))
153
+ let data = list[index]
154
+ list.splice(index, 1)
155
+ this.$emit('input', list)
156
+ this.$http('file.deleteByBizAndId', 10124, data).then(res => {
157
+ this.$emit('deleteSuccess', res, data)
158
+ }).catch(err => {
159
+ console.log(err)
160
+ })
161
+ },
162
+ async upload (list) {
163
+ try {
164
+ let res = await window.ks.uploadAssets({
165
+ filePaths: list.map(item => item.filePath),
166
+ fileNames: list.map(item => item.fileName),
167
+ bizCode: this.bizCode,
168
+ bizId: this.bizId
169
+ })
170
+ // 这里有个坑,安卓与IOS机型不同的地方,list中的name,安卓同样图片name不同,为时间戳;苹果同样图片name相同,为之前的文件名称
171
+ console.log('uploadRes---', res)
172
+ this.$emit('input', res.reverse())
173
+ this.$emit('uploadsuccess', list, res)
174
+ this.onCancel()
175
+ } catch (error) {
176
+ console.log('上传失败--', error)
177
+ }
178
+ },
179
+ previewAssets(url, list) {
180
+ // NOTE: 此处原代码为 this.$store.commit('setPreviewFile', true),因改为组件库,所以此处改为暴露事件 beforePreviewAssets
181
+ let filePaths = list.filter(item => (item.contentType || '').toLowerCase().startsWith('image') ||
182
+ ['jpg', 'jpeg', 'png', 'bmp', 'HEIC', 'webp', 'tiff'].includes(
183
+ (item.extendName || '').toLowerCase()
184
+ )).map(item => item.url)
185
+ const index = filePaths.findIndex(item => item === url)
186
+
187
+ this.$emit('beforePreviewAssets', {
188
+ index,
189
+ list,
190
+ })
191
+ window.ks.previewAssets({
192
+ index, // 默认从第几个资源开始浏览 index不能大于assetsPaths的长度
193
+ filePaths // 接口返回的文件系统路径,或者本地路径
194
+ })
195
+ },
196
+ pdfPreview (item) {
197
+ // this.showPdf = true
198
+ // this.pdfUrl = item.url
199
+ // NOTE: 此处原代码为 this.$store.commit('setPreviewFile', true),因改为组件库,所以此处改为暴露事件 beforePreviewAssets
200
+ this.$emit('beforePreviewAssets', {
201
+ index,
202
+ list,
203
+ })
204
+ window.ks.callFunc({
205
+ method: 'previewFile',
206
+ params: {
207
+ filePath: item.url,
208
+ fileName: item.name,
209
+ fileSize: String(item.size) // 改为string类型
210
+ }
211
+ })
212
+ }
213
+ }
214
+ };
215
+ </script>
216
+
217
+ <style lang="less" scoped>
218
+ .van-uploader {
219
+ // padding-bottom: 10px;
220
+ padding-top: 4px;
221
+ &__upload {
222
+ cursor: pointer;
223
+ border-radius: 4px;
224
+ }
225
+ &__preview-delete {
226
+ font-size: 18px;
227
+ top: -8px;
228
+ right: -8px;
229
+ bottom: unset;
230
+ border-radius: 100%;
231
+ background-color: #fff;
232
+ color: #969799;
233
+ }
234
+ .pdf-border {
235
+ border: 1px solid #e8e8e8;
236
+ display: flex;
237
+ align-items: center;
238
+ padding: 2px;
239
+ color: #a6a6a6;
240
+ font-size: 12px;
241
+ }
242
+ .mask-wrap {
243
+ width: 52px;
244
+ height: 52px;
245
+ background-color: rgba(0, 0, 0, 0.7);
246
+ position: absolute;
247
+ display: flex;
248
+ justify-content: center;
249
+ align-items: center;
250
+ .mask-content {
251
+ display: flex;
252
+ align-items: center;
253
+ flex-direction: column;
254
+ justify-content: center;
255
+ margin-top: 4px;
256
+ .mask-progress-bar {
257
+ width: 44px;
258
+ height: 4px;
259
+ background-color: rgba(255, 255, 255, 0.5);
260
+ border-radius: 2px;
261
+ .mask-progress-step {
262
+ // width: 20px;
263
+ height: 4px;
264
+ background-color: rgba(255, 255, 255, 0.9);
265
+ border-radius: 2px;
266
+ }
267
+ }
268
+ .mask-text {
269
+ line-height: 24px;
270
+ color: #fff;
271
+ font-size: 10px;
272
+ }
273
+ }
274
+ }
275
+ }
276
+ .van-popup {
277
+ overflow: inherit !important;
278
+ .close-btn {
279
+ bottom: 150px;
280
+ position: absolute;
281
+ left: 50%;
282
+ transform: translateX(-50%);
283
+ color: #fff;
284
+ font-size: 25px;
285
+ background-color: #7972fe;
286
+ border-radius: 50%;
287
+ border: none;
288
+ padding: 8px;
289
+ }
290
+ }
291
+ /deep/ .van-uploader__upload {
292
+ border: 0.5px dashed #c6c6d0;
293
+ width: 52px;
294
+ height: 52px;
295
+ background-color: #fff;
296
+ }
297
+ .van-uploader__preview-show {
298
+ font-size: 12px;
299
+ color: #999;
300
+ text-align: center;
301
+ }
302
+ </style>
@@ -0,0 +1,7 @@
1
+ import FmsKsUpload from './fms-ks-upload.vue'
2
+
3
+ FmsKsUpload.install = function(Vue) {
4
+ Vue.component(FmsKsUpload.name, FmsKsUpload)
5
+ }
6
+
7
+ export default FmsKsUpload
package/src/index.js CHANGED
@@ -7,6 +7,7 @@ import FmsKsFileView from './components/fms-ks-file-view/index'
7
7
  import FmsScrollList from './components/fms-scroll-list/index'
8
8
  import FmsKsFormGrid from './components/fms-ks-form-grid'
9
9
  import FmsKsSearchTips from './components/fms-ks-search-tips'
10
+ import FmsKsUpload from './components/fms-ks-upload/index'
10
11
 
11
12
  const components = [
12
13
  FmsCopyBox,
@@ -16,7 +17,8 @@ const components = [
16
17
  FmsKsFileView,
17
18
  FmsScrollList,
18
19
  FmsKsFormGrid,
19
- FmsKsSearchTips
20
+ FmsKsSearchTips,
21
+ FmsKsUpload
20
22
  ]
21
23
 
22
24
  const install = function(Vue) {
@@ -34,7 +36,8 @@ export {
34
36
  FmsKsFileView,
35
37
  FmsScrollList,
36
38
  FmsKsFormGrid,
37
- FmsKsSearchTips
39
+ FmsKsSearchTips,
40
+ FmsKsUpload
38
41
  }
39
42
  // 全量导出
40
43
  export default {