diff --git a/resources/assets/js/api/CaseNotes.js b/resources/assets/js/api/CaseNotes.js index 071edc35e..4f463212b 100644 --- a/resources/assets/js/api/CaseNotes.js +++ b/resources/assets/js/api/CaseNotes.js @@ -6,8 +6,16 @@ export let caseNotes = { params.append('appUid', data.APP_UID); params.append('noteText', data.COMMENT); params.append('swSendMail', data.SEND_MAIL ? 1 : 0); + + _.each(data.FILES, (f) => { + params.append("filesToUpload[]", f); + }) return axios.post(window.config.SYS_SERVER + window.config.SYS_URI + - `appProxy/postNote`, params); - } + `appProxy/postNote`, params, { + headers: { + "Content-Type": "multipart/form-data", + }, + }); + }, }; diff --git a/resources/assets/js/components/home/caseDetail/AttachedDocuments.vue b/resources/assets/js/components/home/caseDetail/AttachedDocuments.vue index 79f96a037..ec8a5e28a 100644 --- a/resources/assets/js/components/home/caseDetail/AttachedDocuments.vue +++ b/resources/assets/js/components/home/caseDetail/AttachedDocuments.vue @@ -51,7 +51,7 @@ export default { return "btn v-btn-request " + cls; }, classIcon(icon) { - return this.icon[icon]; + return this.icon[icon] ? this.icon[icon] : "fas fa-file-alt"; }, href(item) { return ( diff --git a/resources/assets/js/components/home/caseDetail/AttachedDocumentsEdit.vue b/resources/assets/js/components/home/caseDetail/AttachedDocumentsEdit.vue new file mode 100644 index 000000000..473df42e0 --- /dev/null +++ b/resources/assets/js/components/home/caseDetail/AttachedDocumentsEdit.vue @@ -0,0 +1,122 @@ + + + + + \ No newline at end of file diff --git a/resources/assets/js/components/home/caseDetail/CaseComment.vue b/resources/assets/js/components/home/caseDetail/CaseComment.vue index 214101f25..31fe9446a 100644 --- a/resources/assets/js/components/home/caseDetail/CaseComment.vue +++ b/resources/assets/js/components/home/caseDetail/CaseComment.vue @@ -11,6 +11,12 @@
{{ data.user }} {{ data.date }} +
+ +

{{ data.comment }}

diff --git a/resources/assets/js/components/home/caseDetail/CaseComments.vue b/resources/assets/js/components/home/caseDetail/CaseComments.vue index 343dcc63b..7d55afb13 100644 --- a/resources/assets/js/components/home/caseDetail/CaseComments.vue +++ b/resources/assets/js/components/home/caseDetail/CaseComments.vue @@ -14,7 +14,16 @@ />
-
+
+
+

{{ $t("ID_UPLOAD_FILE") }}

+
{ + that.files.push(f); + }); + + _.each(that.files, (f) => { + fls.push({ + data: f, + title: f.name, + extension: f.name.split(".").pop(), + onClick: () => {}, + }); + }); + + this.dropFiles(fls); + this.showMaskDrop = false; + }, + onDragOver(e) { + e.preventDefault(); + if (!this.showMaskDrop) { + this.showMaskDrop = true; + } + }, + onDragLeave(e) { + if (this.showMaskDrop) { + this.showMaskDrop = false; + } + }, + removeFile(file) { + _.remove(this.files, function (n) { + return file.title == n.name; + }); + }, }, }; @@ -111,8 +166,47 @@ export default { padding-right: 20px; } +.v-comments { + display: inline-block; +} + +.mask { + z-index: 100; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + overflow: hidden; + background-attachment: fixed; + outline: 5px dashed #2ba070; + outline-offset: -20px; +} +.flex-center { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + height: 100%; +} +.rgba-green-strong, +.rgba-green-strong:after { + background-color: rgba(76, 175, 80, 0.7); +} + .v-img-fluid { max-width: 30px; height: auto; } +.white-text { + font-size: 32px; + color: antiquewhite; +} \ No newline at end of file diff --git a/resources/assets/js/components/home/caseDetail/IoDocuments.vue b/resources/assets/js/components/home/caseDetail/IoDocuments.vue index 313021aaa..ce92f23e9 100644 --- a/resources/assets/js/components/home/caseDetail/IoDocuments.vue +++ b/resources/assets/js/components/home/caseDetail/IoDocuments.vue @@ -14,9 +14,13 @@
@@ -36,9 +40,13 @@
-
+ {{ item.title }} -
+
@@ -68,7 +76,23 @@ export default { return "btn v-btn-request " + cls; }, classIcon(icon) { - return this.icon[icon]; + return this.icon[icon] ? this.icon[icon] : "fas fa-file-alt"; + }, + href(item) { + return ( + window.config.SYS_SERVER + + window.config.SYS_URI + + `cases/cases_ShowDocument?a=${item.data.APP_DOC_UID}&v=${item.data.DOC_VERSION}` + ); + }, + hrefOutput(item) { + let random = _.random(0, 10000000), + cacheTime = Date.now(); + return ( + window.config.SYS_SERVER + + window.config.SYS_URI + + `cases/cases_ShowOutputDocument?a=${item.data.APP_DOC_UID}&v=${item.data.DOC_VERSION}&ext=doc&random=${random}&nocachetime=${cacheTime}` + ); }, }, }; diff --git a/resources/assets/js/home/CaseDetail.vue b/resources/assets/js/home/CaseDetail.vue index 4c5343549..2ce2e9103 100644 --- a/resources/assets/js/home/CaseDetail.vue +++ b/resources/assets/js/home/CaseDetail.vue @@ -67,16 +67,23 @@
+
@@ -86,6 +93,7 @@ import IoDocuments from "../components/home/caseDetail/IoDocuments.vue"; import CaseSummary from "../components/home/caseDetail/CaseSummary.vue"; import AttachedDocuments from "../components/home/caseDetail/AttachedDocuments.vue"; +import AttachedDocumentsEdit from "../components/home/caseDetail/AttachedDocumentsEdit.vue"; import CaseComment from "../components/home/caseDetail/CaseComment"; import CaseComments from "../components/home/caseDetail/CaseComments"; import TabsCaseDetail from "../home/TabsCaseDetail.vue"; @@ -102,12 +110,13 @@ export default { IoDocuments, CaseSummary, AttachedDocuments, + AttachedDocumentsEdit, CaseComment, CaseComments, ModalCancelCase, ButtonFleft, ModalNewRequest, - TaskCell + TaskCell, }, props: {}, data() { @@ -164,6 +173,7 @@ export default { title: "Attached Documents", items: [], }, + attachDocuments: false, dataComments: { title: "Comments", items: [], @@ -181,17 +191,20 @@ export default { this.getCasesNotes(); }, methods: { - postComment(comment, send) { + postComment(comment, send, files) { let that = this; Api.caseNotes .post( _.extend({}, this.dataCase, { COMMENT: comment, SEND_MAIL: send, + FILES: files, }) ) .then((response) => { if (response.data.success === "success") { + that.attachDocuments = false; + this.dataAttachedDocuments.items = []; that.getCasesNotes(); } }); @@ -263,7 +276,8 @@ export default { info = { title: document[i].TITLE, extension: document[i].TITLE.split(".")[1], - onClick: document[i].DOWNLOAD_LINK, + onClick: () => {}, + data: document[i], }; this.dataIoDocuments.inputDocuments.push(info); } @@ -288,7 +302,8 @@ export default { info = { title: document[i].TITLE, extension: document[i].TITLE.split(".")[1], - onClick: document[i].DOWNLOAD_LINK, + onClick: () => {}, + data: document[i], }; this.dataIoDocuments.outputDocuments.push(info); } @@ -298,6 +313,13 @@ export default { throw new Error(err); }); }, + dropFiles(files) { + this.attachDocuments = true; + this.dataAttachedDocuments.items = files; + }, + onRemoveAttachedDocument(file) { + this.$refs["case-comments"].removeFile(file); + }, /** * Get for user format name configured in Processmaker Environment Settings * @@ -386,18 +408,18 @@ export default { dt; return new Promise((resolutionFunc, rejectionFunc) => { Api.cases - .pendingtask(that.$parent.dataCase) - .then((response) => { - dt = that.formatDataResponse(response.data); - resolutionFunc({ - data: dt, - count: response.data.length + .pendingtask(that.$parent.dataCase) + .then((response) => { + dt = that.formatDataResponse(response.data); + resolutionFunc({ + data: dt, + count: response.data.length, + }); + that.showTable = response.data.length > 0 ? true : false; + }) + .catch((err) => { + throw new Error(err); }); - that.showTable = response.data.length > 0 ? true : false; - }) - .catch((err) => { - throw new Error(err); - }); }); }, formatDataResponse(response) { @@ -407,17 +429,17 @@ export default { TASK: { TITLE: v.TAS_TITLE, CODE_COLOR: v.TAS_COLOR, - COLOR: v.TAS_COLOR_LABEL + COLOR: v.TAS_COLOR_LABEL, }, CASE_TITLE: v.DEL_TITLE, ASSIGNEE: v.USR_FIRSTNAME + " " + v.USR_LASTNAME, STATUS: v.DEL_THREAD_STATUS, DUE_DATE: v.DEL_TASK_DUE_DATE, - TASK_COLOR: v.TAS_COLOR_LABEL - }); + TASK_COLOR: v.TAS_COLOR_LABEL, + }); }); return data; - } + }, }, }; diff --git a/resources/assets/js/home/modal/ModalComments.vue b/resources/assets/js/home/modal/ModalComments.vue index 88d71808d..4e3356bcb 100644 --- a/resources/assets/js/home/modal/ModalComments.vue +++ b/resources/assets/js/home/modal/ModalComments.vue @@ -4,15 +4,23 @@
+
@@ -23,17 +31,20 @@ import Api from "./../../api/index"; import CaseComments from "../../components/home/caseDetail/CaseComments.vue"; import AttachedDocuments from "../../components/home/caseDetail/AttachedDocuments.vue"; +import AttachedDocumentsEdit from "../../components/home/caseDetail/AttachedDocumentsEdit.vue"; export default { name: "ModalComments", components: { CaseComments, AttachedDocuments, + AttachedDocumentsEdit, }, props: {}, mounted() {}, data() { return { dataCase: null, + attachDocuments: false, dataComments: { title: this.$i18n.t("ID_COMMENTS"), items: [], @@ -55,17 +66,20 @@ export default { }); this.dataAttachedDocuments.items = att; }, - postComment: (comment, send) => { + postComment: (comment, send, files) => { let that = this; Api.caseNotes .post( _.extend({}, this.dataCase, { COMMENT: comment, SEND_MAIL: send, + FILES: files, }) ) .then((response) => { if (response.data.success === "success") { + that.attachDocuments = false; + this.dataAttachedDocuments.items = []; that.getCasesNotes(); } }); @@ -94,6 +108,9 @@ export default { throw new Error(err); }); }, + onRemoveAttachedDocument(file) { + this.$refs["case-comments"].removeFile(file); + }, formatResponseCaseNotes(notes) { let that = this, notesArray = []; @@ -112,6 +129,10 @@ export default { this.dataComments.items = notesArray; }, + dropFiles(files) { + this.attachDocuments = true; + this.dataAttachedDocuments.items = files; + }, /** * Get for user format name configured in Processmaker Environment Settings *