mirror of
https://github.com/beak-insights/felicity-lims.git
synced 2025-02-24 08:53:00 +08:00
added action permission checks
This commit is contained in:
parent
ae3c7ec849
commit
ba5127b42d
3 changed files with 134 additions and 18 deletions
|
@ -127,7 +127,6 @@ class WorkSheet(WSBase):
|
|||
def has_processed_samples(self):
|
||||
states = [
|
||||
analysis_conf.states.result.RESULTED,
|
||||
analysis_conf.states.result.TO_BE_VERIFIED,
|
||||
analysis_conf.states.result.VERIFIED]
|
||||
processed = any([res.status in states for res in self.analysis_results])
|
||||
return processed
|
||||
|
@ -136,7 +135,6 @@ class WorkSheet(WSBase):
|
|||
if self.state != conf.worksheet_states.TO_BE_VERIFIED:
|
||||
states = [
|
||||
analysis_conf.states.result.RESULTED,
|
||||
analysis_conf.states.result.TO_BE_VERIFIED,
|
||||
analysis_conf.states.result.VERIFIED]
|
||||
|
||||
if all([res.status in states for res in self.analysis_results]):
|
||||
|
|
|
@ -103,10 +103,22 @@
|
|||
</div>
|
||||
|
||||
<section class="my-4">
|
||||
<button @click.prevent="submitResults()" class="px-2 py-1 mr-2 border-blue-500 border text-blue-500 rounded transition duration-300 hover:bg-blue-700 hover:text-white focus:outline-none">Submit</button>
|
||||
<button @click.prevent="retractResults()" class="px-2 py-1 mr-2 border-blue-500 border text-blue-500 rounded transition duration-300 hover:bg-blue-700 hover:text-white focus:outline-none">Retract</button>
|
||||
<button @click.prevent="verifyResults()" class="px-2 py-1 mr-2 border-blue-500 border text-blue-500 rounded transition duration-300 hover:bg-blue-700 hover:text-white focus:outline-none">Verify</button>
|
||||
<button @click.prevent="retestResults()" class="px-2 py-1 mr-2 border-blue-500 border text-blue-500 rounded transition duration-300 hover:bg-blue-700 hover:text-white focus:outline-none">Retest</button>
|
||||
<button
|
||||
v-if="can_submit"
|
||||
@click.prevent="submitResults()"
|
||||
class="px-2 py-1 mr-2 border-blue-500 border text-blue-500 rounded transition duration-300 hover:bg-blue-700 hover:text-white focus:outline-none">Submit</button>
|
||||
<button
|
||||
v-if="can_retract"
|
||||
@click.prevent="retractResults()"
|
||||
class="px-2 py-1 mr-2 border-blue-500 border text-blue-500 rounded transition duration-300 hover:bg-blue-700 hover:text-white focus:outline-none">Retract</button>
|
||||
<button
|
||||
v-if="can_verify"
|
||||
@click.prevent="verifyResults()"
|
||||
class="px-2 py-1 mr-2 border-blue-500 border text-blue-500 rounded transition duration-300 hover:bg-blue-700 hover:text-white focus:outline-none">Verify</button>
|
||||
<button
|
||||
v-if="can_retest"
|
||||
@click.prevent="retestResults()"
|
||||
class="px-2 py-1 mr-2 border-blue-500 border text-blue-500 rounded transition duration-300 hover:bg-blue-700 hover:text-white focus:outline-none">Retest</button>
|
||||
</section>
|
||||
|
||||
</template>
|
||||
|
@ -117,7 +129,7 @@ import tabCases from '../comps/CaseTable.vue';
|
|||
import tabLogs from '../../_components/timeline/AuditLog.vue';
|
||||
|
||||
import Swal from 'sweetalert2';
|
||||
import { defineComponent, ref, toRefs, computed, PropType } from 'vue';
|
||||
import { defineComponent, ref, toRefs, computed, PropType, watch } from 'vue';
|
||||
import { useRoute } from 'vue-router';
|
||||
import { useStore } from 'vuex';
|
||||
import { useMutation } from '@urql/vue';
|
||||
|
@ -132,6 +144,11 @@ export default defineComponent({
|
|||
const route = useRoute();
|
||||
const store = useStore();
|
||||
|
||||
let can_submit = ref(false);
|
||||
let can_retract = ref(false);
|
||||
let can_verify = ref(false);
|
||||
let can_retest = ref(false);
|
||||
|
||||
let allChecked = ref(false);
|
||||
|
||||
store.dispatch(ActionTypes.FETCH_ANALYSIS_RESULTS_FOR_SAMPLE, route.params.sampleUid)
|
||||
|
@ -191,22 +208,32 @@ export default defineComponent({
|
|||
} else {
|
||||
allChecked.value = false;
|
||||
}
|
||||
console.log("check action perms");
|
||||
checkUserActionPermissios()
|
||||
}
|
||||
|
||||
function check(result): void {
|
||||
result.checked = true;
|
||||
console.log("check action perms");
|
||||
checkUserActionPermissios()
|
||||
}
|
||||
|
||||
function unCheck(result): void {
|
||||
result.checked = false;
|
||||
console.log("check action perms");
|
||||
checkUserActionPermissios()
|
||||
}
|
||||
|
||||
function toggleCheckAll(): void {
|
||||
analysisResults?.value?.forEach(result => allChecked.value ? check(result) : unCheck(result));
|
||||
async function toggleCheckAll(): void {
|
||||
await analysisResults?.value?.forEach(result => allChecked.value ? check(result) : unCheck(result));
|
||||
console.log("check action perms");
|
||||
checkUserActionPermissios()
|
||||
}
|
||||
|
||||
function unCheckAll(): void {
|
||||
analysisResults?.value?.forEach(result => unCheck(result))
|
||||
async function unCheckAll(): void {
|
||||
await analysisResults?.value?.forEach(result => unCheck(result))
|
||||
console.log("check action perms");
|
||||
checkUserActionPermissios()
|
||||
}
|
||||
|
||||
function profileAnalysesText(profiles: IProfile[], analyses: IAnalysis[]): string {
|
||||
|
@ -272,6 +299,34 @@ export default defineComponent({
|
|||
}
|
||||
}
|
||||
|
||||
function checkUserActionPermissios(): void {
|
||||
// reset
|
||||
can_submit.value = false;
|
||||
can_retract.value = false;
|
||||
can_verify.value = false;
|
||||
can_retest.value = false;
|
||||
|
||||
const checked = getResultsChecked();
|
||||
if(checked.length === 0) return;
|
||||
|
||||
// can submit
|
||||
if(checked.every(result => result.status === 'pending')){
|
||||
can_submit.value = true;
|
||||
}
|
||||
|
||||
// can verify/ retract
|
||||
if(checked.every(result => result.status === 'resulted')){
|
||||
can_retract.value = true;
|
||||
can_verify.value = true;
|
||||
}
|
||||
|
||||
// can retest
|
||||
if(checked.every(result => result.status === 'verified')){
|
||||
can_retest.value = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
const submitResults = async () => {
|
||||
try {
|
||||
Swal.fire({
|
||||
|
@ -400,7 +455,11 @@ export default defineComponent({
|
|||
submitResults,
|
||||
verifyResults,
|
||||
retractResults,
|
||||
retestResults
|
||||
retestResults,
|
||||
can_submit,
|
||||
can_retract,
|
||||
can_verify,
|
||||
can_retest,
|
||||
}
|
||||
},
|
||||
});
|
||||
|
|
|
@ -103,11 +103,21 @@
|
|||
</div>
|
||||
|
||||
<section class="my-4">
|
||||
<button @click.prevent="unAssignSamples()" class="px-2 py-1 mr-2 border-blue-500 border text-blue-500 rounded transition duration-300 hover:bg-blue-700 hover:text-white focus:outline-none">Un Assign</button>
|
||||
<button @click.prevent="submitResults()" class="px-2 py-1 mr-2 border-blue-500 border text-blue-500 rounded transition duration-300 hover:bg-blue-700 hover:text-white focus:outline-none">Submit</button>
|
||||
<button @click.prevent="retractResults()" class="px-2 py-1 mr-2 border-blue-500 border text-blue-500 rounded transition duration-300 hover:bg-blue-700 hover:text-white focus:outline-none">Retract</button>
|
||||
<button @click.prevent="verifyResults()" class="px-2 py-1 mr-2 border-blue-500 border text-blue-500 rounded transition duration-300 hover:bg-blue-700 hover:text-white focus:outline-none">Verify</button>
|
||||
<button @click.prevent="retestResults()" class="px-2 py-1 mr-2 border-blue-500 border text-blue-500 rounded transition duration-300 hover:bg-blue-700 hover:text-white focus:outline-none">Retest</button>
|
||||
<button
|
||||
v-if="can_unassign"
|
||||
@click.prevent="unAssignSamples()" class="px-2 py-1 mr-2 border-blue-500 border text-blue-500 rounded transition duration-300 hover:bg-blue-700 hover:text-white focus:outline-none">Un Assign</button>
|
||||
<button
|
||||
v-if="can_submit"
|
||||
@click.prevent="submitResults()" class="px-2 py-1 mr-2 border-blue-500 border text-blue-500 rounded transition duration-300 hover:bg-blue-700 hover:text-white focus:outline-none">Submit</button>
|
||||
<button
|
||||
v-if="can_retract"
|
||||
@click.prevent="retractResults()" class="px-2 py-1 mr-2 border-blue-500 border text-blue-500 rounded transition duration-300 hover:bg-blue-700 hover:text-white focus:outline-none">Retract</button>
|
||||
<button
|
||||
v-if="can_verify"
|
||||
@click.prevent="verifyResults()" class="px-2 py-1 mr-2 border-blue-500 border text-blue-500 rounded transition duration-300 hover:bg-blue-700 hover:text-white focus:outline-none">Verify</button>
|
||||
<button
|
||||
v-if="can_retest"
|
||||
@click.prevent="retestResults()" class="px-2 py-1 mr-2 border-blue-500 border text-blue-500 rounded transition duration-300 hover:bg-blue-700 hover:text-white focus:outline-none">Retest</button>
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
@ -135,6 +145,12 @@ export default defineComponent({
|
|||
const route = useRoute();
|
||||
const store = useStore();
|
||||
|
||||
let can_submit = ref(false);
|
||||
let can_retract = ref(false);
|
||||
let can_verify = ref(false);
|
||||
let can_retest = ref(false);
|
||||
let can_unassign = ref(false);
|
||||
|
||||
let allChecked = ref(false);
|
||||
let viewDetail = ref(false);
|
||||
let worksheet = computed(()=> store.getters.getWorkSheet);
|
||||
|
@ -196,6 +212,7 @@ export default defineComponent({
|
|||
} else {
|
||||
allChecked.value = false;
|
||||
}
|
||||
checkUserActionPermissios()
|
||||
}
|
||||
|
||||
function check(result): void {
|
||||
|
@ -204,6 +221,7 @@ export default defineComponent({
|
|||
return;
|
||||
};
|
||||
result.checked = true;
|
||||
checkUserActionPermissios()
|
||||
}
|
||||
|
||||
function checkDisabled(result): boolean {
|
||||
|
@ -212,14 +230,17 @@ export default defineComponent({
|
|||
|
||||
function unCheck(result): void {
|
||||
result.checked = false;
|
||||
checkUserActionPermissios()
|
||||
}
|
||||
|
||||
function toggleCheckAll(): void {
|
||||
worksheet?.value?.analysisResults?.forEach(result => allChecked.value ? check(result) : unCheck(result));
|
||||
checkUserActionPermissios()
|
||||
}
|
||||
|
||||
function unCheckAll(): void {
|
||||
worksheet?.value?.analysisResults?.forEach(result => unCheck(result))
|
||||
checkUserActionPermissios()
|
||||
}
|
||||
|
||||
function analysesText(analyses: IAnalysis[]): string {
|
||||
|
@ -298,6 +319,39 @@ export default defineComponent({
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
function checkUserActionPermissios(): void {
|
||||
// reset
|
||||
can_submit.value = false;
|
||||
can_unassign.value = false;
|
||||
can_retract.value = false;
|
||||
can_verify.value = false;
|
||||
can_retest.value = false;
|
||||
|
||||
const checked = getResultsChecked();
|
||||
if(checked.length === 0) return;
|
||||
|
||||
// can submit
|
||||
if(checked.every(result => result.status === 'pending')){
|
||||
can_submit.value = true;
|
||||
can_unassign.value = true;
|
||||
}
|
||||
|
||||
// can verify/ retract
|
||||
if(checked.every(result => result.status === 'resulted')){
|
||||
can_retract.value = true;
|
||||
can_verify.value = true;
|
||||
}
|
||||
|
||||
// can retest
|
||||
if(checked.every(result => result.status === 'verified')){
|
||||
can_retest.value = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
const submitResults = async () => {
|
||||
try {
|
||||
Swal.fire({
|
||||
|
@ -455,7 +509,12 @@ export default defineComponent({
|
|||
submitResults,
|
||||
verifyResults,
|
||||
retractResults,
|
||||
retestResults
|
||||
retestResults,
|
||||
can_submit,
|
||||
can_retract,
|
||||
can_verify,
|
||||
can_retest,
|
||||
can_unassign,
|
||||
};
|
||||
},
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue