diff --git a/resources/assets/js/api/Cases.js b/resources/assets/js/api/Cases.js
index ff4baab68..f522e9ca1 100644
--- a/resources/assets/js/api/Cases.js
+++ b/resources/assets/js/api/Cases.js
@@ -239,6 +239,21 @@ export let cases = {
}
});
},
+ /**
+ * get the list of users to re-assign
+ * @param {*} data
+ * @returns
+ */
+ getUsersToReassign(data) {
+ return Api.get({
+ service: "GET_USERS_TO_REASSIGN",
+ data: {},
+ keys: {
+ task_uid: data.TAS_UID,
+ app_uid: data.APP_UID
+ }
+ });
+ },
reassingCase(data) {
return Api.update({
service: "REASSIGN_CASE",
@@ -254,6 +269,25 @@ export let cases = {
}
});
},
+ /**
+ * Reassign a case to a new user
+ * @param {*} data
+ */
+ reassingCaseSupervisor(data) {
+ return Api.update({
+ service: "REASSIGN_CASE",
+ data: {
+ usr_uid_target: data.userSelected,
+ del_index: data.DEL_INDEX,
+ reason: data.reasonReassign,
+ sendMail: data.notifyUser,
+ usr_uid_source: data.USR_UID
+ },
+ keys: {
+ app_uid: data.APP_UID
+ }
+ });
+ },
/**
* Claim case with endpoint
* @param {*} data
@@ -270,6 +304,38 @@ export let cases = {
}
});
},
+ /**
+ * Assign case with endpoint
+ * @param {*} data
+ * @returns
+ */
+ assignCase(data) {
+ return Api.update({
+ service: "ASSIGN_CASE",
+ data: {
+ reason: data.reasonReassign,
+ sendMail: data.notifyUser,
+ index: data.DEL_INDEX
+ },
+ keys: {
+ app_uid: data.APP_UID,
+ usr_uid: data.userSelected
+ }
+ });
+ },
+ /**
+ * Verify if the user is Supervisor
+ * @param {*} data
+ * @returns
+ */
+ getIsSupervisor(data) {
+ return Api.get({
+ service: "IS_SUPERVISOR",
+ keys: {
+ app_num: data
+ }
+ });
+ },
/**
* Service to jump a case by it's number
* @param {object} dt
diff --git a/resources/assets/js/api/Services.js b/resources/assets/js/api/Services.js
index 71183beb5..bf3cae70b 100644
--- a/resources/assets/js/api/Services.js
+++ b/resources/assets/js/api/Services.js
@@ -1,4 +1,6 @@
export default {
+ ASSIGN_CASE: "/cases/{app_uid}/{usr_uid}/assign",
+ IS_SUPERVISOR: "/cases/{app_num}/supervisor",
AUTHENTICATE_USER: "/oauth2/token",
USER_DATA: "/light/user/data",
GET_MAIN_MENU_COUNTERS: "/light/counters",
@@ -10,6 +12,7 @@
GET_LISTS_PAUSED: "/light/paused",
GET_LISTS_COMPLETED: "/light/completed",
GET_USERS_PICTURES: "/light/users/data",
+ GET_USERS_TO_REASSIGN: "/cases/{task_uid}/{app_uid}/userstoreassign",
FORMS_ARRAY: "/light/project/{pro_uid}/activity/{act_uid}/steps",
GET_NEW_CASES: "/case/start-cases?type_view=category",
GET_HISTORY_CASES: "/light/history/{app_uid}",
diff --git a/resources/assets/js/home/CaseDetail.vue b/resources/assets/js/home/CaseDetail.vue
index a2933414a..dde49e1f5 100755
--- a/resources/assets/js/home/CaseDetail.vue
+++ b/resources/assets/js/home/CaseDetail.vue
@@ -54,7 +54,7 @@
{{ $t("ID_CONTINUE") }}{{ $t("ID_UNPAUSE") }}
+
+
+ {{ $t("ID_ASSIGN") }}
+
+
+
+ {{ $t("ID_REASSIGN") }}
+
+
+
+
+ {{ $t("ID_REVIEW_CASE") }}
+
+
+
+
+
@@ -125,9 +154,11 @@ import CaseComment from "../components/home/caseDetail/CaseComment";
import CaseComments from "../components/home/caseDetail/CaseComments";
import TabsCaseDetail from "../home/TabsCaseDetail.vue";
import ButtonFleft from "../components/home/ButtonFleft.vue";
+import ModalAssignCase from "./modal/ModalAssignCase.vue";
import ModalCancelCase from "../home/modal/ModalCancelCase.vue";
import ModalNewRequest from "./ModalNewRequest.vue";
import ModalClaimCase from "./modal/ModalClaimCase.vue";
+import ModalReassignCase from "./modal/ModalReassignCase.vue";
import TaskCell from "../components/vuetable/TaskCell.vue";
import CurrentUserCell from "../components/vuetable/CurrentUserCell.vue"
import utils from "./../utils/utils";
@@ -143,10 +174,12 @@ export default {
AttachedDocumentsEdit,
CaseComment,
CaseComments,
+ ModalAssignCase,
ModalCancelCase,
ButtonFleft,
ModalNewRequest,
ModalClaimCase,
+ ModalReassignCase,
TaskCell,
CurrentUserCell
},
@@ -230,7 +263,11 @@ export default {
dataComments: {
title: "Comments",
items: []
- }
+ },
+ dataCaseReview: {},
+ app_num: this.$parent.dataCase.APP_NUMBER,
+ supervisor: false,
+ flagSupervising: false
};
},
@@ -242,6 +279,7 @@ export default {
//set dataCase
this.dataCase = this.$parent.dataCase;
this.$el.getElementsByClassName("VuePagination__count")[0].remove();
+ this.changeFlagSupervising(this.dataCase.FLAG);
this.getDataCaseSummary();
this.getInputDocuments();
this.getOutputDocuments();
@@ -506,6 +544,8 @@ export default {
.pendingtask(that.$parent.dataCase)
.then((response) => {
dt = that.formatDataResponse(response.data);
+ this.dataCaseReview = dt[0];
+ this.supervisor = that.isSupervisor();
resolutionFunc({
data: dt,
count: response.data.length,
@@ -538,7 +578,8 @@ export default {
PRO_UID: v.PRO_UID,
TAS_UID: v.TAS_UID,
UNASSIGNED: v.UNASSIGNED,
- USR_ID: v.USR_ID
+ USR_ID: v.USR_ID,
+ USR_UID: v.USR_UID
});
});
return data;
@@ -606,6 +647,21 @@ export default {
this.$emit("onUpdatePage", "XCase");
}
},
+ /**
+ * Review case Click handler
+ *
+ * @param {object} data
+ */
+ onClickReview(data) {
+ this.$emit("onUpdateDataCase", {
+ APP_UID: data.APP_UID,
+ DEL_INDEX: data.DEL_INDEX,
+ PRO_UID: data.PRO_UID,
+ TAS_UID: data.TAS_UID,
+ ACTION: "to_revise"
+ });
+ this.$emit("onUpdatePage", "XCase");
+ },
/**
* Unpause click handler
*
@@ -622,6 +678,58 @@ export default {
.catch((error) => {
that.showAlert(error.response.data.error.message, 'danger');
});
+ },
+ /**
+ * Assign click handler
+ *
+ * @param {object} item
+ */
+ onClickAssign(item) {
+ let that = this;
+ Api.cases.open(_.extend({ ACTION: "assign" }, item)).then(() => {
+ Api.cases.cases_open(_.extend({ ACTION: "todo" }, item)).then(() => {
+ that.$refs["modal-assign-case"].data = item;
+ that.$refs["modal-assign-case"].show();
+ });
+ });
+ },
+ /**
+ * Reassign click handler
+ *
+ * @param {object} item
+ */
+ onClickReassign(item) {
+ let that = this;
+ item.FLAG = this.flagSupervising;
+ Api.cases.open(_.extend({ ACTION: "reassign" }, item)).then(() => {
+ Api.cases.cases_open(_.extend({ ACTION: "todo" }, item)).then(() => {
+ that.$refs["modal-reassign-case"].data = item;
+ that.$refs["modal-reassign-case"].show();
+ });
+ });
+ },
+ /**
+ * Is supervisor
+ *
+ * @return {bool} response
+ */
+ isSupervisor() {
+ Api.cases.getIsSupervisor(this.app_num).then((response) => {
+ let res = false;
+ if (response.statusText === "OK" || response.status === 200) {
+ this.supervisor = response.data;
+ }
+ })
+ },
+ /**
+ * Change the flag supervisor
+ *
+ * @param {string} data
+ */
+ changeFlagSupervising(data) {
+ if (data === 'SUPERVISING'){
+ this.flagSupervising = true;
+ }
},
/**
* Claim case
@@ -675,4 +783,7 @@ export default {
padding-right: 10px;
line-height: 40px;
}
+.table td, .table th {
+ vertical-align: middle;
+}
\ No newline at end of file
diff --git a/resources/assets/js/home/MyCases/MyCases.vue b/resources/assets/js/home/MyCases/MyCases.vue
index 72bc4ed0a..957dff815 100755
--- a/resources/assets/js/home/MyCases/MyCases.vue
+++ b/resources/assets/js/home/MyCases/MyCases.vue
@@ -358,6 +358,7 @@ export default {
PRO_UID: item.PRO_UID,
TAS_UID: item.TAS_UID,
APP_NUMBER: item.CASE_NUMBER,
+ FLAG: this.filterHeader,
ACTION:
that.filterHeader === "SUPERVISING"
? "to_revise"
diff --git a/resources/assets/js/home/modal/ModalAssignCase.vue b/resources/assets/js/home/modal/ModalAssignCase.vue
new file mode 100644
index 000000000..83b5f39a8
--- /dev/null
+++ b/resources/assets/js/home/modal/ModalAssignCase.vue
@@ -0,0 +1,190 @@
+
+
+
+
+ {{ $t('ID_ASSIGN_CASE') }}
+
+
+
+ {{ dataAlert.message }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/assets/js/home/modal/ModalReassignCase.vue b/resources/assets/js/home/modal/ModalReassignCase.vue
index d8e2f021f..d85490b15 100644
--- a/resources/assets/js/home/modal/ModalReassignCase.vue
+++ b/resources/assets/js/home/modal/ModalReassignCase.vue
@@ -7,7 +7,7 @@
>
{{ $t('ID_REASSIGN_CASE') }}
-
+
{
+ api.cases.getUserToReassign(this.data).then((response) => {
var users = response.data.data,
i;
if (response.statusText == "OK" || response.status === 200) {
@@ -146,25 +151,47 @@ export default {
this.data.userSelected = this.userSelected;
this.data.reasonReassign = this.reasonReassign;
this.notifyUser = this.notifyUser;
- api.cases.reassingCase(this.data).then((response) => {
- if (response.statusText == "OK" || response.status === 200) {
- that.$refs["modal-reassign-case"].hide();
- if (that.$parent.$refs["vueTable"] !== undefined) {
- that.$parent.$refs["vueTable"].getData();
+ if (!this.data.FLAG){
+ api.cases.reassingCase(this.data).then((response) => {
+ if (response.statusText == "OK" || response.status === 200) {
+ that.$refs["modal-reassign-case"].hide();
+ if (that.$parent.$refs["vueTable"] !== undefined) {
+ that.$parent.$refs["vueTable"].getData();
+ }
+ if (that.$parent.$refs["vueListView"] !== undefined) {
+ that.$parent.$refs["vueListView"].getData();
+ }
+ if (that.$parent.$refs["vueCardView"] !== undefined) {
+ that.$parent.$refs["vueCardView"].getData();
+ }
}
- if (that.$parent.$refs["vueListView"] !== undefined) {
- that.$parent.$refs["vueListView"].getData();
+ })
+ .catch((e) => {
+ if(e.response.data && e.response.data.error){
+ that.showAlert(e.response.data.error.message, "danger");
}
- if (that.$parent.$refs["vueCardView"] !== undefined) {
- that.$parent.$refs["vueCardView"].getData();
+ });
+ } else {
+ api.cases.reassingCaseSupervisor(this.data).then((response) => {
+ if (response.statusText == "OK" || response.status === 200) {
+ that.$refs["modal-reassign-case"].hide();
+ if (that.$parent.$refs["vueTable"] !== undefined) {
+ that.$parent.$refs["vueTable"].getData();
+ }
+ if (that.$parent.$refs["vueListView"] !== undefined) {
+ that.$parent.$refs["vueListView"].getData();
+ }
+ if (that.$parent.$refs["vueCardView"] !== undefined) {
+ that.$parent.$refs["vueCardView"].getData();
+ }
}
- }
- })
- .catch((e) => {
- if(e.response.data && e.response.data.error){
- that.showAlert(e.response.data.error.message, "danger");
- }
- });
+ })
+ .catch((e) => {
+ if(e.response.data && e.response.data.error){
+ that.showAlert(e.response.data.error.message, "danger");
+ }
+ });
+ }
},
/**
* Show the alert message
diff --git a/workflow/engine/content/translations/english/processmaker.en.po b/workflow/engine/content/translations/english/processmaker.en.po
index 55f2b251a..4e62b8735 100755
--- a/workflow/engine/content/translations/english/processmaker.en.po
+++ b/workflow/engine/content/translations/english/processmaker.en.po
@@ -2419,6 +2419,12 @@ msgstr "Array of variables is empty"
msgid "Assign"
msgstr "Assign"
+# TRANSLATION
+# LABEL/ID_ASSIGN_CASE
+#: LABEL/ID_ASSIGN_CASE
+msgid "Assign Case"
+msgstr "Assign Case"
+
# TRANSLATION
# LABEL/ID_ASSIGNED_FIEDS
#: LABEL/ID_ASSIGNED_FIEDS
@@ -24017,6 +24023,12 @@ msgstr "Resume"
msgid "Return"
msgstr "Return"
+# TRANSLATION
+# LABEL/ID_REVIEW_CASE
+#: LABEL/ID_REVIEW_CASE
+msgid "Review Case"
+msgstr "Review Case"
+
# TRANSLATION
# LABEL/ID_RIGHT
#: LABEL/ID_RIGHT
diff --git a/workflow/engine/data/mysql/insert.sql b/workflow/engine/data/mysql/insert.sql
index b101bb0b3..8da14ffab 100755
--- a/workflow/engine/data/mysql/insert.sql
+++ b/workflow/engine/data/mysql/insert.sql
@@ -57205,6 +57205,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
( 'LABEL','ID_ARE_YOU_SURE_UNPAUSE_TASK','en','Are you sure want to unpause the task?','2021-01-26') ,
( 'LABEL','ID_ARRAY_VARIABLES_EMPTY','en','Array of variables is empty','2014-01-15') ,
( 'LABEL','ID_ASSIGN','en','Assign','2014-01-15') ,
+( 'LABEL','ID_ASSIGN_CASE','en','Assign Case','2022-11-04') ,
( 'LABEL','ID_ASSIGNED_FIEDS','en','ASSIGNED FIELDS','2014-01-15') ,
( 'LABEL','ID_ASSIGNED_GROUPS','en','ASSIGNED GROUPS','2014-01-15') ,
( 'LABEL','ID_ASSIGNED_MEMBERS','en','MEMBERS','2014-01-15') ,
@@ -60924,6 +60925,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
( 'LABEL','ID_RESTORING_CASE','en','Restoring case','2015-09-15') ,
( 'LABEL','ID_RESULT','en','Result','2014-01-15') ,
( 'LABEL','ID_RESUME','en','Resume','2014-01-15') ,
+( 'LABEL','ID_REVIEW_CASE','en','Review Case','2022-11-10') ,
( 'LABEL','ID_RETURN_ADVANCED_SEARCH','en','Return','2019-07-17') ,
( 'LABEL','ID_RIGHT','en','right','2014-09-18') ,
( 'LABEL','ID_RIGHT_MARGIN','en','Right Margin','2014-01-15') ,