|
|
@@ -49,8 +49,12 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</main>
|
|
|
- <ApproverSelectDialog ref="approverSelectDialogRef" />
|
|
|
- <ApprovalNodeCreateDialog ref="approvalNodeCreateDialogRef" />
|
|
|
+ <ApproverSelectDialog ref="approverSelectDialogRef" @submit="handleApproverSelect" />
|
|
|
+ <ApprovalNodeCreateDialog
|
|
|
+ ref="approvalNodeCreateDialogRef"
|
|
|
+ :order-list="approvalOrderList"
|
|
|
+ @success="getTabelData"
|
|
|
+ />
|
|
|
<UploadLoading loading-text="加载中" :form-loading="formLoading" v-if="formLoading" />
|
|
|
</div>
|
|
|
</template>
|
|
|
@@ -59,7 +63,7 @@
|
|
|
import { useRoute } from 'vue-router';
|
|
|
import { ElMessage } from 'element-plus';
|
|
|
import { Plus } from '@element-plus/icons-vue';
|
|
|
- import { onMounted, ref } from 'vue';
|
|
|
+ import { computed, onMounted, ref } from 'vue';
|
|
|
import { useFormConfigHook } from '@/hooks/useFormConfigHook';
|
|
|
import UploadLoading from '@/components/UploadLoading.vue';
|
|
|
import BasicForm from '@/components/BasicForm.vue';
|
|
|
@@ -72,19 +76,29 @@
|
|
|
import { APPROVER_TYPE_MAP, APPROVAL_TYPE_MAP } from './constants';
|
|
|
import ApproverSelectDialog from './components/ApproverSelectDialog.vue';
|
|
|
import ApprovalNodeCreateDialog from './components/ApprovalNodeCreateDialog.vue';
|
|
|
- import { getApprovalNodeInstanceList } from '@/api/approval/approval';
|
|
|
- import { updateApprovalInstance } from '@/api/approval/approval';
|
|
|
+ import {
|
|
|
+ getApprovalNodeInstanceList,
|
|
|
+ updateApprovalInstance,
|
|
|
+ updateApprvoerInfo,
|
|
|
+ delApprovalNodeInstance,
|
|
|
+ } from '@/api/approval/approval';
|
|
|
import { queryUserInfoByIds } from '@/api/system/person-group';
|
|
|
+ import { PersonGroupItem } from '@/types/person-group/type';
|
|
|
|
|
|
const route = useRoute();
|
|
|
|
|
|
const id = route.query.id;
|
|
|
+ const curNodeId = ref();
|
|
|
const approvalInstance = ref<ApprovalInstanceRuleForm>();
|
|
|
|
|
|
const formLoading = ref(false);
|
|
|
const basicFormRef = ref<InstanceType<typeof BasicForm>>();
|
|
|
const { ruleFormConfig, ruleFormData, formRules, cloneRuleFormData, beforeRouteLeave } =
|
|
|
useFormConfigHook<ApprovalInstanceRuleForm>(APPROVAL_FORM_CONFIG, APPROVAL_FORM_DATA, APPROVAL_FORM_RULES);
|
|
|
+
|
|
|
+ const approvalOrderList = computed(() => {
|
|
|
+ return tableData.value.map((item) => item.approvalOrder);
|
|
|
+ });
|
|
|
function initForm(initData: ApprovalInstanceRuleForm) {
|
|
|
ruleFormData.id = initData.id;
|
|
|
ruleFormData.templateName = initData.templateName;
|
|
|
@@ -130,24 +144,50 @@
|
|
|
|
|
|
const approvalNodeCreateDialogRef = ref();
|
|
|
const handleCreateApprovalNode = () => {
|
|
|
- approvalNodeCreateDialogRef.value.initForm(true, { approvalTemplateId: id });
|
|
|
+ approvalNodeCreateDialogRef.value.initForm(true, { approvalTemplateId: Number(id) });
|
|
|
approvalNodeCreateDialogRef.value.openDialog();
|
|
|
};
|
|
|
const handleEditApprovalNode = (row: ApprovalNodeInstanceType) => {
|
|
|
- console.log(row);
|
|
|
- // approvalNodeCreateDialogRef.value.initForm(false, row);
|
|
|
- // approvalNodeCreateDialogRef.value.openDialog();
|
|
|
+ approvalNodeCreateDialogRef.value.initForm(false, { ...row, approvalTemplateId: Number(id) });
|
|
|
+ approvalNodeCreateDialogRef.value.openDialog();
|
|
|
};
|
|
|
|
|
|
const approverSelectDialogRef = ref();
|
|
|
const handleOpenAppoverSelect = async (node: ApprovalNodeInstanceType) => {
|
|
|
if (approverSelectDialogRef.value) {
|
|
|
- const res = await queryUserInfoByIds(node.approverInfoList.map((x) => x.approverId));
|
|
|
- approverSelectDialogRef.value.setSelectedUser(res);
|
|
|
+ if (node.approverInfoList.length > 0) {
|
|
|
+ const res = await queryUserInfoByIds(node.approverInfoList.map((x) => x.approverId));
|
|
|
+ approverSelectDialogRef.value.setSelectedUser(res);
|
|
|
+ }
|
|
|
+ curNodeId.value = node.id;
|
|
|
approverSelectDialogRef.value.openDialog();
|
|
|
}
|
|
|
};
|
|
|
- const handleDeleteNode = (id: number) => {};
|
|
|
+
|
|
|
+ const handleApproverSelect = async (list: PersonGroupItem[]) => {
|
|
|
+ try {
|
|
|
+ await updateApprvoerInfo({
|
|
|
+ id: curNodeId.value,
|
|
|
+ approvalTemplateId: Number(id),
|
|
|
+ approverList: '[' + list.map((item) => item.id).join(',') + ']',
|
|
|
+ });
|
|
|
+ approverSelectDialogRef.value.closeDialog();
|
|
|
+ getTabelData();
|
|
|
+ curNodeId.value = undefined;
|
|
|
+ } catch (e) {
|
|
|
+ console.log(e);
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ const handleDeleteNode = async (id: number) => {
|
|
|
+ try {
|
|
|
+ tableConfig.loading = true;
|
|
|
+ await delApprovalNodeInstance(id);
|
|
|
+ getTabelData();
|
|
|
+ } catch (e) {
|
|
|
+ console.log(e);
|
|
|
+ }
|
|
|
+ };
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|