8315-devToTest #1094
|
@ -1,25 +1,18 @@
|
||||||
import { ref } from 'vue';
|
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
import { boot } from 'quasar/wrappers';
|
import { boot } from 'quasar/wrappers';
|
||||||
import qFormMixin from './qformMixin';
|
import qFormMixin from './qformMixin';
|
||||||
import keyShortcut from './keyShortcut';
|
import keyShortcut from './keyShortcut';
|
||||||
import { i18n } from './i18n';
|
|
||||||
import useNotify from 'src/composables/useNotify.js';
|
|
||||||
import VnInput from 'src/components/common/VnInput.vue';
|
|
||||||
import { useVnConfirm } from 'src/composables/useVnConfirm';
|
|
||||||
import { QForm } from 'quasar';
|
import { QForm } from 'quasar';
|
||||||
import { QLayout } from 'quasar';
|
import { QLayout } from 'quasar';
|
||||||
import mainShortcutMixin from './mainShortcutMixin';
|
import mainShortcutMixin from './mainShortcutMixin';
|
||||||
|
import { useCau } from 'src/composables/useCau';
|
||||||
const { notify } = useNotify();
|
|
||||||
const { openConfirmationModal } = useVnConfirm();
|
|
||||||
|
|
||||||
export default boot(({ app }) => {
|
export default boot(({ app }) => {
|
||||||
QForm.mixins = [qFormMixin];
|
QForm.mixins = [qFormMixin];
|
||||||
QLayout.mixins = [mainShortcutMixin];
|
QLayout.mixins = [mainShortcutMixin];
|
||||||
|
|
||||||
app.directive('shortcut', keyShortcut);
|
app.directive('shortcut', keyShortcut);
|
||||||
app.config.errorHandler = (error) => {
|
app.config.errorHandler = async (error) => {
|
||||||
let message;
|
let message;
|
||||||
const response = error.response;
|
const response = error.response;
|
||||||
const responseData = response?.data;
|
const responseData = response?.data;
|
||||||
|
@ -56,64 +49,6 @@ export default boot(({ app }) => {
|
||||||
message = 'Duplicate request';
|
message = 'Duplicate request';
|
||||||
}
|
}
|
||||||
|
|
||||||
const { config, headers, request, status, statusText, data } = response || {};
|
await useCau(response, message);
|
||||||
const { params, url, method, signal, headers: confHeaders } = config || {};
|
|
||||||
const { message: resMessage, code, name } = data?.error || {};
|
|
||||||
const additionalData = {
|
|
||||||
path: location.href,
|
|
||||||
message: resMessage,
|
|
||||||
code,
|
|
||||||
request: request?.responseURL,
|
|
||||||
status,
|
|
||||||
name,
|
|
||||||
statusText: statusText,
|
|
||||||
config: {
|
|
||||||
url,
|
|
||||||
method,
|
|
||||||
params,
|
|
||||||
headers: confHeaders,
|
|
||||||
aborted: signal?.aborted,
|
|
||||||
version: headers?.['salix-version'],
|
|
||||||
},
|
|
||||||
};
|
|
||||||
const opts = {
|
|
||||||
actions: [
|
|
||||||
{
|
|
||||||
icon: 'support_agent',
|
|
||||||
color: 'primary',
|
|
||||||
dense: true,
|
|
||||||
flat: false,
|
|
||||||
round: true,
|
|
||||||
handler: async () => {
|
|
||||||
const locale = i18n.global.t;
|
|
||||||
const reason = ref(
|
|
||||||
code == 'ACCESS_DENIED' ? locale('cau.askPrivileges') : ''
|
|
||||||
);
|
|
||||||
openConfirmationModal(
|
|
||||||
locale('cau.title'),
|
|
||||||
locale('cau.subtitle'),
|
|
||||||
async () => {
|
|
||||||
await axios.post('OsTickets/send-to-support', {
|
|
||||||
reason: reason.value,
|
|
||||||
additionalData,
|
|
||||||
});
|
|
||||||
},
|
|
||||||
null,
|
|
||||||
{
|
|
||||||
component: VnInput,
|
|
||||||
props: {
|
|
||||||
modelValue: reason,
|
|
||||||
'onUpdate:modelValue': (val) => (reason.value = val),
|
|
||||||
label: locale('cau.inputLabel'),
|
|
||||||
class: 'full-width',
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
);
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
};
|
|
||||||
notify(message ?? 'globals.error', 'negative', 'error', opts);
|
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
|
@ -0,0 +1,73 @@
|
||||||
|
import VnInput from 'src/components/common/VnInput.vue';
|
||||||
|
import { useVnConfirm } from 'src/composables/useVnConfirm';
|
||||||
|
import axios from 'axios';
|
||||||
|
import { ref } from 'vue';
|
||||||
|
import { i18n } from 'src/boot/i18n';
|
||||||
|
import useNotify from 'src/composables/useNotify.js';
|
||||||
|
|
||||||
|
export async function useCau(res, message) {
|
||||||
|
const { notify } = useNotify();
|
||||||
|
const { openConfirmationModal } = useVnConfirm();
|
||||||
|
const { config, headers, request, status, statusText, data } = res || {};
|
||||||
|
const { params, url, method, signal, headers: confHeaders } = config || {};
|
||||||
|
const { message: resMessage, code, name } = data?.error || {};
|
||||||
|
|
||||||
|
const additionalData = {
|
||||||
|
path: location.hash,
|
||||||
|
message: resMessage,
|
||||||
|
code,
|
||||||
|
request: request?.responseURL,
|
||||||
|
status,
|
||||||
|
name,
|
||||||
|
statusText: statusText,
|
||||||
|
config: {
|
||||||
|
url,
|
||||||
|
method,
|
||||||
|
params,
|
||||||
|
headers: confHeaders,
|
||||||
|
aborted: signal?.aborted,
|
||||||
|
version: headers?.['salix-version'],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const opts = {
|
||||||
|
actions: [
|
||||||
|
{
|
||||||
|
icon: 'support_agent',
|
||||||
|
color: 'primary',
|
||||||
|
dense: true,
|
||||||
|
flat: false,
|
||||||
|
round: true,
|
||||||
|
handler: async () => {
|
||||||
|
const locale = i18n.global.t;
|
||||||
|
const reason = ref(
|
||||||
|
code == 'ACCESS_DENIED' ? locale('cau.askPrivileges') : ''
|
||||||
|
);
|
||||||
|
openConfirmationModal(
|
||||||
|
locale('cau.title'),
|
||||||
|
locale('cau.subtitle'),
|
||||||
|
async () => {
|
||||||
|
await axios.post('OsTickets/send-to-support', {
|
||||||
|
reason: reason.value,
|
||||||
|
additionalData,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
null,
|
||||||
|
{
|
||||||
|
component: VnInput,
|
||||||
|
props: {
|
||||||
|
modelValue: reason,
|
||||||
|
'onUpdate:modelValue': (val) => (reason.value = val),
|
||||||
|
label: locale('cau.inputLabel'),
|
||||||
|
class: 'full-width',
|
||||||
|
required: true,
|
||||||
|
autofocus: true,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
notify(message ?? 'globals.error', 'negative', 'error', opts);
|
||||||
|
}
|
Loading…
Reference in New Issue