UPDATE ROUTE in CASE DETAIL

This commit is contained in:
Henry Jordan
2020-12-07 18:52:12 +00:00
parent ee8ea68901
commit a39a54cc10
7 changed files with 362 additions and 300 deletions

View File

@@ -53,7 +53,7 @@
</div> </div>
<br /> <br />
<h6 class="card-subtitle mb-2 text-muted">{{ data.titleActions }}</h6> <h6 class="card-subtitle mb-2 text-muted">{{ data.titleActions }}</h6>
<div v-if=data.btnType class="container v-case-summary-center"> <div v-if="data.btnType" class="container v-case-summary-center">
<button <button
type="button" type="button"
class="btn btn-success btn-sm" class="btn btn-success btn-sm"

View File

@@ -59,6 +59,7 @@ export default {
icon: { icon: {
pdf: "fas fa-file-pdf", pdf: "fas fa-file-pdf",
doc: "fas fa-file-word", doc: "fas fa-file-word",
png: "fas fa-picture-o",
}, },
}; };
}, },

View File

@@ -12,29 +12,30 @@
</template> </template>
<script> <script>
import { Tabs, Tab } from 'vue-slim-tabs' import { Tabs, Tab } from "vue-slim-tabs";
export default { export default {
props: { props: {
data: Object data: Object,
}, },
components: { components: {
Tabs, Tab Tabs,
Tab,
}, },
data() { data() {
return { return {
0: function() { 0: function () {
console.log(this.data.items[0].appUid); console.log(this.data.items[0].appUid);
} },
}; };
}, },
methods: { methods: {
selectedTab(e, index) { selectedTab(e, index) {
if (index === 0) { if (index === 0) {
console.log("fabio") console.log("fabio");
} }
} },
}, },
} };
</script> </script>
<style src="vue-slim-tabs/themes/default.css"></style> <style src="vue-slim-tabs/themes/default.css"></style>

View File

@@ -1,300 +1,339 @@
<template> <template>
<div id="case-detail" ref="case-detail" class="v-container-mycases"> <div id="case-detail" ref="case-detail" class="v-container-mycases">
<div> <div>
<p class="mb-2"><b-icon icon="arrow-left" @click="backSearch()"></b-icon><u>Back to Results</u></p> <p class="mb-2">
</div> <b-icon icon="arrow-left" @click="backSearch()"></b-icon
<div class="row"> ><u>Back to Results</u>
<div class="col-sm-8"> </p>
<div id="pending-task" ref="pending-task">
<v-server-table
:data="tableData"
:columns="columns"
:options="options"
ref="vueTable"
style="height:120px"
>
<div slot="task" slot-scope="props">
{{ props.row.TASK }}
</div>
<div slot="case_title" slot-scope="props">
{{ props.row.CASE_TITLE }}
</div>
<div slot="assignee" slot-scope="props">
{{ props.row.ASSIGNEE }}
</div>
<div slot="status" slot-scope="props">
{{ props.row.STATUS }}
</div>
<div slot="due_date" slot-scope="props">
{{ props.row.DUE_DATE }}
</div>
<div slot="actions">
<div class="btn-default">
<i class="fas fa-comments"></i>
<span class="badge badge-light">9</span>
<span class="sr-only">Continue</span>
</div>
</div>
</v-server-table>
</div>
<Tabs :data="dataTabs"></Tabs>
<div>
<p><b>Comments</b></p>
<div class="form-group">
<textarea class="form-control" name="comments" id="comments" cols="80" rows="5"></textarea>
<div class="form-check">
<input type="checkbox" class="form-check-input" id="sendEmail">
<label class="form-check-label" for="sendEmail">Send email to Participants</label>
<button class="btn btn-secondary btn-sm" id="comment" name="comment">Comment</button>
</div>
</div>
</div>
</div>
<div class="col-sm4">
<case-summary :data="dataCaseSummary"></case-summary>
<io-documents :data="dataIoDocuments"></io-documents>
<attached-documents :data="dataAttachedDocuments"></attached-documents>
</div>
</div>
</div> </div>
<div class="row">
<div class="col-sm-8">
<div id="pending-task" ref="pending-task">
<v-server-table
:data="tableData"
:columns="columns"
:options="options"
ref="vueTable"
style="height: 120px"
>
<div slot="task" slot-scope="props">
{{ props.row.TASK }}
</div>
<div slot="case_title" slot-scope="props">
{{ props.row.CASE_TITLE }}
</div>
<div slot="assignee" slot-scope="props">
{{ props.row.ASSIGNEE }}
</div>
<div slot="status" slot-scope="props">
{{ props.row.STATUS }}
</div>
<div slot="due_date" slot-scope="props">
{{ props.row.DUE_DATE }}
</div>
<div slot="actions">
<div class="btn-default">
<i class="fas fa-comments"></i>
<span class="badge badge-light">9</span>
<span class="sr-only">Continue</span>
</div>
</div>
</v-server-table>
</div>
<Tabs :data="dataTabs"></Tabs>
<div>
<p><b>Comments</b></p>
<div class="form-group">
<textarea
class="form-control"
name="comments"
id="comments"
cols="80"
rows="5"
></textarea>
<div class="form-check">
<input type="checkbox" class="form-check-input" id="sendEmail" />
<label class="form-check-label" for="sendEmail"
>Send email to Participants</label
>
<button
class="btn btn-secondary btn-sm"
id="comment"
name="comment"
>
Comment
</button>
</div>
</div>
</div>
</div>
<div class="col-sm4">
<case-summary :data="dataCaseSummary"></case-summary>
<io-documents :data="dataIoDocuments"></io-documents>
<attached-documents :data="dataAttachedDocuments"></attached-documents>
</div>
</div>
</div>
</template> </template>
<script> <script>
import Tabs from '../components/Tabs.vue'; import Tabs from "../components/home/caseDetail/Tabs.vue";
import IoDocuments from '../components/cases/IoDocuments.vue'; import IoDocuments from "../components/home/caseDetail/IoDocuments.vue";
import CaseSummary from '../components/cases/CaseSummary.vue'; import CaseSummary from "../components/home/caseDetail/CaseSummary.vue";
import AttachedDocuments from '../components/cases/AttachedDocuments.vue'; import AttachedDocuments from "../components/home/caseDetail/AttachedDocuments.vue";
export default { export default {
name: "CaseDetail", name: "CaseDetail",
components: { components: {
Tabs, Tabs,
IoDocuments, IoDocuments,
CaseSummary, CaseSummary,
AttachedDocuments AttachedDocuments,
},
props: {},
data() {
return {
columns: [
"task",
"case_title",
"assignee",
"status",
"due_date",
"actions",
],
tableData: [
{
task: "Approve Art",
case_title: "Case Title A",
assignee: "User 1",
status: "To Do",
due_date: "3 days",
},
],
options: {
headings: {
task: this.$i18n.t("ID_TASK"),
case_title: this.$i18n.t("ID_CASE_TITLE"),
assignee: this.$i18n.t("ID_ASSIGNEE"),
status: this.$i18n.t("ID_STATUS"),
due_date: this.$i18n.t("ID_DUE_DATE"),
actions: this.$i18n.t("ID_ACTIONS"),
},
selectable: {
mode: "single", // or 'multiple'
only: function (row) {
return true; // any condition
},
selectAllMode: "all", // or 'page',
programmatic: false,
},
filterable: false,
},
dataCaseSummary: {
title: "Case Summary",
titleActions: "Actions",
btnLabel: "Cancel Request",
btnType: false,
onClick: () => {
console.log("acitons");
},
label: {
numberCase: "Case #",
process: "Process",
status: "Status",
caseTitle: "Case title",
created: "Created",
delegationDate: "Delegation Date",
duration: "Duration",
},
text: {
numberCase: "",
process: "",
status: "",
caseTitle: "",
created: "",
delegationDate: "",
duration: "",
},
},
dataIoDocuments: {
titleInput: "Input Document",
inputDocuments: [
{
title: "Invoice January 2018.pdf",
extension: "pdf",
onClick: () => {
console.log("Attached document");
},
},
],
titleOutput: "Output Document",
outputDocuments: [
{
title: "Invoice January 2018.pdf",
extension: "pdf",
onClick: () => {
console.log("Attached document");
},
},
],
},
dataAttachedDocuments: {
title: "Attached Documents",
items: [
{
title: "Invoice January 2018.pdf",
extension: "pdf",
onClick: () => {
console.log("Attached document");
},
},
],
},
dataTabs: {
items: [
{
title: "Request Summary",
data: {
firstName: "Jason",
lastName: "Burne",
userName: "jburne@processmaker.com",
},
},
{
title: "Process Map",
data: [
{
pro_uid: "123dit",
},
],
},
{
title: "Case History",
},
{
title: "Change Log",
},
],
},
};
},
mounted() {
let that = this;
this.$el.getElementsByClassName("VuePagination__count")[0].remove();
this.getDataCaseSummary();
this.getDataIODocuments();
},
methods: {
getDataCaseSummary() {
var data = new FormData();
data.append("appUid", APP_UID);
data.append("delIndex", DEL_INDEX);
data.append("action", "todo");
ProcessMaker.apiClient
.post("../../../appProxy/getSummary", data)
.then((response) => {
var data = response.data;
this.dataCaseSummary = {
title: "Case Summary",
titleActions: "Actions",
btnLabel: "Cancel Request",
btnType: false,
onClick: () => {
console.log("acitons");
},
label: {
numberCase: data[2].label,
process: data[0].label,
status: data[3].label,
caseTitle: data[1].label,
created: data[6].label,
delegationDate: response.data[11].label,
duration: "Duration",
},
text: {
numberCase: data[2].value,
process: data[0].value,
status: data[3].value,
caseTitle: data[1].value,
created: data[6].value,
delegationDate: response.data[11].value.split(" ")[0],
duration: response.data[11].value.split(" ")[1],
},
};
})
.catch((err) => {
throw new Error(err);
});
}, },
props: {}, getDataIODocuments() {
data () { this.getInputDocuments();
return { this.getOutputDocuments();
columns: ["task", "case_title", "assignee", "status", "due_date", "actions"],
tableData:[{
task: "Approve Art",
case_title: "Case Title A",
assignee: "User 1",
status: "To Do",
due_date: "3 days",
}],
options: {
headings: {
task: this.$i18n.t("ID_TASK"),
case_title: this.$i18n.t("ID_CASE_TITLE"),
assignee: this.$i18n.t("ID_ASSIGNEE"),
status: this.$i18n.t("ID_STATUS"),
due_date: this.$i18n.t("ID_DUE_DATE"),
actions: this.$i18n.t("ID_ACTIONS")
},
selectable: {
mode: 'single', // or 'multiple'
only: function (row) {
return true // any condition
},
selectAllMode: 'all',// or 'page',
programmatic: false,
},
filterable: false
},
dataCaseSummary: {
title: "Case Summary",
titleActions: "Actions",
btnLabel: "Cancel Request",
btnType: false,
onClick: () => {
console.log("acitons");
},
label: {
numberCase: "Case #",
process: "Process",
status: "Status",
caseTitle: "Case title",
created: "Created",
delegationDate: "Delegation Date",
duration: "Duration",
},
text: {
numberCase: "",
process: "",
status: "",
caseTitle: "",
created: "",
delegationDate: "",
duration: "",
},
},
dataIoDocuments: {
titleInput: "Input Document",
inputDocuments: [
{
title: "Invoice January 2018.pdf",
extension: "pdf",
onClick: () => {
console.log("Attached document");
}
}
],
titleOutput: "Output Document",
outputDocuments: [
{
title: "Invoice January 2018.pdf",
extension: "pdf",
onClick: () => {
console.log("Attached document");
}
}
],
},
dataAttachedDocuments: {
title: "Attached Documents",
items: [
{
title: "Invoice January 2018.pdf",
extension: "pdf",
onClick: () => {
console.log("Attached document");
},
}
],
},
dataTabs: {
items: [
{
title: "Request Summary",
data: {
firstName: "Jason",
lastName: "Burne",
userName: "jburne@processmaker.com",
}
},
{
title: "Process Map",
data: [
{
pro_uid: "123dit"
}
]
},
{
title: "Case History"
},
{
title: "Change Log"
}
]
}
};
},
mounted() {
let that = this;
this.$el.getElementsByClassName('VuePagination__count')[0].remove();
this.getDataCaseSummary();
this.getDataIODocuments();
}, },
methods: { getInputDocuments() {
getDataCaseSummary() { var data = new FormData();
var data = new FormData(); data.append("appUid", APP_UID);
data.append('appUid', APP_UID); data.append("delIndex", DEL_INDEX);
data.append('delIndex', DEL_INDEX); ProcessMaker.apiClient
data.append('action', 'todo'); .post(
"../../../cases/cases_Ajax.php?action=getCasesInputDocuments",
data
)
.then((response) => {
var data = response.data,
document = data.data,
i,
info;
ProcessMaker.apiClient.post('../../../appProxy/getSummary', data).then((response) => { if (data.totalCount > 0 && document !== []) {
var data = response.data; this.dataIoDocuments.inputDocuments = [];
this.dataCaseSummary = { for (i = 0; i < data.totalCount; i += 1) {
title: "Case Summary", info = {
titleActions: "Actions", title: document[i].TITLE,
btnLabel: "Cancel Request", extension: document[i].TITLE.split(".")[1],
btnType: false, onClick: document[i].DOWNLOAD_LINK,
onClick: () => { };
console.log("acitons"); this.dataIoDocuments.inputDocuments.push(info);
}, }
label: { }
numberCase: data[2].label, })
process: data[0].label, .catch((err) => {
status: data[3].label, throw new Error(err);
caseTitle: data[1].label, });
created: data[6].label, },
delegationDate: response.data[11].label, getOutputDocuments() {
duration: "Duration", var data = new FormData();
}, data.append("appUid", APP_UID);
text: { data.append("delIndex", DEL_INDEX);
numberCase: data[2].value, ProcessMaker.apiClient
process: data[0].value, .post(
status: data[3].value, "../../../cases/cases_Ajax.php?action=getCasesOutputDocuments",
caseTitle: data[1].value, data
created: data[6].value, )
delegationDate: response.data[11].value.split(" ")[0], .then((response) => {
duration: response.data[11].value.split(" ")[1], var data = response.data,
}, document = data.data,
} i,
}).catch((err) => { info;
throw new Error(err);
});
},
getDataIODocuments() {
this.getInputDocuments();
this.getOutputDocuments();
},
getInputDocuments() {
var data = new FormData();
data.append ('appUid', APP_UID);
data.append ('delIndex', DEL_INDEX);
ProcessMaker.apiClient.post('../../../cases/cases_Ajax.php?action=getCasesInputDocuments',data).then((response) => {
var data = response.data,
document = data.data,
i,
info;
if (data.totalCount > 0 && document !== []) { if (data.totalCount > 0 && document !== []) {
this.dataIoDocuments.inputDocuments = []; this.dataIoDocuments.outputDocuments = [];
for (i = 0; i < data.totalCount; i += 1) { for (i = 0; i < data.totalCount; i += 1) {
info = { info = {
"title" : document[i].TITLE, title: document[i].TITLE,
"extension" : document[i].TITLE.split(".")[1], extension: document[i].TITLE.split(".")[1],
"onClick" : document[i].DOWNLOAD_LINK onClick: document[i].DOWNLOAD_LINK,
}; };
this.dataIoDocuments.inputDocuments.push(info); this.dataIoDocuments.outputDocuments.push(info);
} }
} }
}).catch((err) => { })
throw new Error(err); .catch((err) => {
}); throw new Error(err);
}, });
getOutputDocuments() { },
var data = new FormData(); },
data.append ('appUid', APP_UID); };
data.append ('delIndex', DEL_INDEX);
ProcessMaker.apiClient.post('../../../cases/cases_Ajax.php?action=getCasesOutputDocuments',data).then((response) => {
var data = response.data,
document = data.data,
i,
info;
if (data.totalCount > 0 && document !== []) {
this.dataIoDocuments.outputDocuments = [];
for (i = 0; i < data.totalCount; i += 1) {
info = {
"title" : document[i].TITLE,
"extension" : document[i].TITLE.split(".")[1],
"onClick" : document[i].DOWNLOAD_LINK
};
this.dataIoDocuments.outputDocuments.push(info);
}
}
}).catch((err) => {
throw new Error(err);
});
},
}
}
</script> </script>

View File

@@ -28,9 +28,10 @@ import Draft from "./Draft";
import Paused from "./Paused"; import Paused from "./Paused";
import Unassigned from "./Unassigned"; import Unassigned from "./Unassigned";
import BatchRouting from "./BatchRouting"; import BatchRouting from "./BatchRouting";
import CaseDetail from "./CaseDetail";
import XCase from "./XCase"; import XCase from "./XCase";
import TaskReassignments from "./TaskReassignments"; import TaskReassignments from "./TaskReassignments";
import AdvancedSearch from "./AdvancedSearch" import AdvancedSearch from "./AdvancedSearch";
export default { export default {
name: "Home", name: "Home",
@@ -46,6 +47,7 @@ export default {
Draft, Draft,
Paused, Paused,
Unassigned, Unassigned,
CaseDetail,
}, },
data() { data() {
return { return {
@@ -88,10 +90,10 @@ export default {
/** /**
* Toggle sidebar handler * Toggle sidebar handler
* @param {Boolean} collapsed - if sidebar is collapsed true|false * @param {Boolean} collapsed - if sidebar is collapsed true|false
* *
*/ */
onToggleCollapse(collapsed) { onToggleCollapse(collapsed) {
this.collapsed = collapsed; this.collapsed = collapsed;
}, },
}, },
}; };

View File

@@ -9,6 +9,11 @@
:options="options" :options="options"
ref="vueTable" ref="vueTable"
> >
<div slot="detail" slot-scope="props">
<div class="btn-default" @click="openCaseDetail(props)">
<i class="fas fa-info-circle"></i>
</div>
</div>
<div slot="case_number" slot-scope="props"> <div slot="case_number" slot-scope="props">
{{ props.row.CASE_NUMBER }} {{ props.row.CASE_NUMBER }}
</div> </div>
@@ -74,6 +79,7 @@ export default {
}, },
}, },
columns: [ columns: [
"detail",
"case_number", "case_number",
"case_title", "case_title",
"process_name", "process_name",
@@ -216,6 +222,19 @@ export default {
}; };
this.$parent.page = "XCase"; this.$parent.page = "XCase";
}, },
/**
* Open case detail
*
* @param {object} item
*/
openCaseDetail(item) {
this.$parent.dataCase = {
APP_UID: item.APP_UID,
DEL_INDEX: item.DEL_INDEX,
ACTION: "todo",
};
this.$parent.page = "case-detail";
},
}, },
}; };
</script> </script>