Browse Source

审批流程接口对接

duy 2 years ago
parent
commit
94e743f070

+ 157 - 29
src/views/system/components/tab-approve.vue

@@ -4,13 +4,16 @@
             <HcCardItem ui="hac-card-item w-60 mr-5">
                 <template #header>
                     <span class="mr-2">审批类型:</span>
-                 
+                    <el-button _icon hc-btn size="small" type="primary" @click="openpriceEdit(1)">
+                        <HcIcon name="add"/>
+                    </el-button>
                 </template>
                 <div> <span class="mt-2">预算一级科目:</span></div>
                 <div class="hc-layout-left-box menu mt-3">
                     <div class="hc-menu-contents-box">
                         <el-scrollbar>
                             <HcMenuSimple :datas="menuOptions" :keys="menuKey" :props="menusProps"
+                                          :menus="contextMenu" @menuTap="contextMenuClick"
                                           @change="menuChange"/>
                         </el-scrollbar>
                     </div>
@@ -23,80 +26,191 @@
                     <template #header>
                         <span class="mr-2">流程设置:</span>
                     </template>
+                    <template #extra>
+                        <el-button size="large" type="primary" hc-btn>
+                        <HcIcon name="save"/>
+                        <span>保存</span>
+                    </el-button>
+                    </template>
                     <div class="approve-box">
                         <el-checkbox-group v-model="checkList"  @change="handleCheckedApproveChange">
-                            <el-checkbox  v-for="item in checkData" :key="item" :label="item.name"  />
+                            <el-checkbox  v-for="item in checkData" :key="item" :label="item.dictName"  />
                         </el-checkbox-group>
                        <HcTable :column="tableColumn" :datas="tableData" ui="hc-test-drop-table" isRowDrop isSort @row-drop="rowDropTap" @row-sort="rowSortTap" :indexName="'顺序'" class="mt-4"/>
                     </div>
                 
                     <div class="approve-box mt-4">
                         <el-checkbox-group v-model="checkList1" @change="handleCheckedApproveChange1">
-                            <el-checkbox  v-for="item in checkData" :key="item" :label="item.name"  />
+                            <el-checkbox  v-for="item in checkData" :key="item" :label="item.dictName"  />
                   
                         </el-checkbox-group>
                        <HcTable :column="tableColumn1" :datas="tableData1" ui="hc-test-drop-table" isRowDrop isSort @row-drop="rowDropTap" @row-sort="rowSortTap" :indexName="'顺序'" class="mt-4"/>
                     </div>
-             
-                   
-                  
-              
-         
                 </HcCardItem>
             </div>
         </div>
       
     </HcCard>
+                <!--预算分类新增编辑弹窗-->
+                <HcDialog bgColor="#ffffff" widths="22rem" isToBody :show="priceModal" :title="priceTitle" @close="priceModalClose" @save="saveparentClick">
+                        <el-form :model="priceform" label-position="top" label-width="auto" size="large">
+                            <el-form-item label="预算一级科目名称:">
+                                <el-input v-model="priceform.dictName"/>
+                            </el-form-item>
+                        </el-form>
+                    </HcDialog>
 </template>
 
 <script setup>
 import {onMounted, ref, watch} from "vue";
+import {submitDictionary,removeDictionary,getParentList,getChildList} from '~api/system/parameter.js';
+import {getArrValue} from "js-fast-way"
 
 const props = defineProps({
     cur: {
         type: [String,Number],
         default: ''
     },
+    type:{
+        type: [String,Number],
+        default: ''
+    }
 })
 
 const tabsKey = ref(props.cur)
-const checkList = ref(['部门经理'])
-const checkList1 = ref(['人事'])
+const tabsType = ref(props.type)
+
 //监听
 watch(() => [
     props.cur,
-    checkList,
-    checkList1
-], ([key,list,list1]) => {
+    props.type,
+], ([key,type]) => {
     tabsKey.value = key
-    handleCheckedApproveChange(list.value)
-    handleCheckedApproveChange1(list1.value)
+    tabsType.value = type
+   
 })
 
 onMounted(() => {
-
+    setContextMenu()
+    getParentListData()
+    getcheckData()
+   
 })
+const menuItem=ref({})
+//获取一级科目
+const getParentListData=async()=>{
+    const { error, code, data,msg } = await getParentList({
+        type:tabsType.value,
+       
+    })
+    if (!error && code === 200) {
+        menuOptions.value = getArrValue(data['records'])
+        if( menuOptions.value.length>0){
+            menuKey.value= menuOptions.value[0]?.id
+            menuItem.value.id =   menuOptions.value[0]?.id
+           
+        }
+    } 
+    else {
+        menuOptions.value =[]
+        window.$message?.warning(msg)
+    }
+}
 
-//左侧菜单
-const menuKey = ref('1')
-const menuOptions = ref([
-    {key: '1', label: '合同洽谈', badge: 0},
-    {key: '2', label: '合同洽谈', badge: 0},
-    {key: '3', label: '合同洽谈', badge: 0},
-    {key: '4', label: '合同洽谈', badge: 0},
-    {key: '5', label: '合同洽谈', badge: 0},
-]);
+const checkList = ref(['部门经理'])
+const checkList1 = ref(['人事'])
 
+//左侧菜单
+const menuKey = ref('')
+const menuOptions = ref([]);
 const menuChange = (item) => {
     console.log(item)
-    menuKey.value = item?.key
+    menuKey.value = item?.id
+    menuItem.value=item
+    // getChildListData()
 }
 const menusProps = ref({
-    key: 'key',
-    label: 'label'
+    key: 'id',
+    label: 'dictName'
 })
 
+//菜单的右键菜单
+const contextMenu = ref([])
+const setContextMenu = () => {
+    let newArr = [];
+    newArr.push({icon: 'draft', label: '编辑分类', key: "edit"})
+    newArr.push({icon: 'delete-bin', label: '删除分类', key: "del"})
+
+    contextMenu.value = newArr
+}
+const priceTitle = ref('')
+const priceModal = ref(false)
+const openpriceEdit = (type) => {
+    if (type === 1) {
+        priceTitle.value = '新增分类'
+        priceform.value={}
+        menuKey.value=''
+    } else {
+        priceTitle.value = '编辑分类'
+    }
+
+    priceModal.value = true
+}
+
+const priceform = ref({})
+const priceModalClose = () => {
+    priceModal.value = false
+}
 
+//菜单的右键菜单被点击
+const contextMenuClick = ({key, item}) => {
+    console.log(item,'item');
+    menuKey.value = item?.id
+  
+    if (key === 'edit') {
+        openpriceEdit(2)
+        menuKey.value = item?.id
+        priceform.value.dictName=item.dictName
+    } else if (key === 'del') {
+        window?.$messageBox?.alert('您确定要删除该预算分类信息吗? 一旦注销数据将彻底清除,请谨慎操作?', '删除提醒', {
+            showCancelButton: true,
+            confirmButtonText: '确认注销',
+            cancelButtonText: '取消',
+            type: 'warning',
+            callback: async(action) => {
+                if (action === 'confirm') {
+                        const {error, code, msg} = await removeDictionary({
+                            ids: item?.id,
+                        })
+                        if (!error && code === 200) {
+                            window?.$message?.success('删除成功')
+                            getParentListData()
+                        } else {
+                            window?.$message?.warning(msg)
+                        }
+                }
+            }
+        })
+    }
+}
+
+//新增一级科目
+const saveparentClick=async()=>{
+    const { error, code, data,msg } = await submitDictionary({
+        type:tabsType.value,
+        dictName:priceform.value?.dictName,
+        id:menuKey.value||null,
+    })
+   
+    if (!error && code === 200) {
+        window.$message?.success(msg)
+        priceModal.value=false
+        getParentListData()
+    } 
+    else {
+        window.$message?.warning(msg)
+    }
+}
 const tableColumn = [
     {key: 'name', name: '审批岗位',align:'center'},
   
@@ -126,7 +240,21 @@ const tableColumn1 = [
     {key: 'name', name: '抄送信息',align:'center'},
   
 ]
-
+const getcheckData=async()=>{
+    const { error, code, data,msg } = await getParentList({
+        code:'dept_info',
+        type:11
+       
+    })
+    if (!error && code === 200) {
+        checkData.value = getArrValue(data['records'])
+        
+    } 
+    else {
+        checkData.value =[]
+        window.$message?.warning(msg)
+    }
+}
 const checkData = ref([
     {name: '部门经理', },
     {name: '财务', },

+ 151 - 57
src/views/system/components/tab-cost.vue

@@ -19,10 +19,10 @@
                     </div>
 
                     <!--预算分类新增编辑弹窗-->
-                    <HcDialog bgColor="#ffffff" widths="22rem" isToBody :show="priceModal" :title="priceTitle" @close="priceModalClose">
+                    <HcDialog bgColor="#ffffff" widths="22rem" isToBody :show="priceModal" :title="priceTitle" @close="priceModalClose" @save="saveparentClick">
                         <el-form :model="priceform" label-position="top" label-width="auto" size="large">
                             <el-form-item label="预算一级科目名称:">
-                                <el-input v-model="priceform.name"/>
+                                <el-input v-model="priceform.dictName"/>
                             </el-form-item>
                         </el-form>
                     </HcDialog>
@@ -37,18 +37,18 @@
                             <HcIcon name="add"/>
                         </el-button>
                     </template>
-                    <HcTable :column="tableColumn" :datas="tableData"  :isIndex="false">
+                    <HcTable :column="tableColumn" :datas="tableData"  :isIndex="false" :loading="tableLoaing">
                         <template #action="{row, index}">
-                            <el-button size="small" type="primary" @click="openEdit(2)">编辑</el-button>
-                            <el-button size="small" type="primary" @click="delTask">删除</el-button>
+                            <el-button size="small" type="primary" @click="openEdit(2,row)">编辑</el-button>
+                            <el-button size="small" type="primary" @click="delTask(row)">删除</el-button>
                         </template>
                     </HcTable>
 
                     <!--任务明细弹窗-->
-                    <HcDialog bgColor="#ffffff" widths="24rem" isToBody :show="editTaskModal" :title="taskTitle" @close="testModalClose">
+                    <HcDialog bgColor="#ffffff" widths="24rem" isToBody :show="editTaskModal" :title="taskTitle" @close="testModalClose" @save="savechilidClick">
                         <el-form label-position="top" label-width="auto" :model="formLabelAlign" size="large">
                             <el-form-item label="预算二级科目名称:">
-                                <el-input v-model="formLabelAlign.name"/>
+                                <el-input v-model="formLabelAlign.dictName"/>
                             </el-form-item>
                         </el-form>
                     </HcDialog>
@@ -56,53 +56,58 @@
                 </HcCardItem>
             </div>
         </div>
-        <template #action>
-            <HcPages :pages="searchForm" @change="pageChange"/>
-        </template>
+ 
     </HcCard>
 </template>
 
 <script setup>
 import {onMounted, ref, watch} from "vue";
+import {submitDictionary,removeDictionary,getParentList,getChildList} from '~api/system/parameter.js';
+import {getArrValue} from "js-fast-way"
 
 const props = defineProps({
     cur: {
         type: [String,Number],
         default: ''
     },
+    type:{
+        type: [String,Number],
+        default: ''
+    }
 })
 
 const tabsKey = ref(props.cur)
+const tabsType = ref(props.type)
 
 //监听
 watch(() => [
     props.cur,
-], ([key]) => {
+    props.type,
+], ([key,type]) => {
     tabsKey.value = key
-    console.log(key)
+    tabsType.value = type
+   
 })
 
 onMounted(() => {
     setContextMenu()
+    getParentListData()
+   
 })
 
 //左侧菜单
-const menuKey = ref('1')
-const menuOptions = ref([
-    {key: '1', label: '合同洽谈', badge: 0},
-    {key: '2', label: '合同洽谈', badge: 0},
-    {key: '3', label: '合同洽谈', badge: 0},
-    {key: '4', label: '合同洽谈', badge: 0},
-    {key: '5', label: '合同洽谈', badge: 0},
-]);
-
+const menuKey = ref('')
+const menuOptions = ref([]);
+const menuItem=ref({})
 const menuChange = (item) => {
     console.log(item)
-    menuKey.value = item?.key
+    menuKey.value = item?.id
+    menuItem.value=item
+    getChildListData()
 }
 const menusProps = ref({
-    key: 'key',
-    label: 'label'
+    key: 'id',
+    label: 'dictName'
 })
 
 //菜单的右键菜单
@@ -117,18 +122,30 @@ const setContextMenu = () => {
 
 //菜单的右键菜单被点击
 const contextMenuClick = ({key, item}) => {
+    console.log(item,'item');
+    menuKey.value = item?.id
+  
     if (key === 'edit') {
         openpriceEdit(2)
-        menuKey.value = item?.key
+        menuKey.value = item?.id
+        priceform.value.dictName=item.dictName
     } else if (key === 'del') {
         window?.$messageBox?.alert('您确定要删除该预算分类信息吗? 一旦注销数据将彻底清除,请谨慎操作?', '删除提醒', {
             showCancelButton: true,
             confirmButtonText: '确认注销',
             cancelButtonText: '取消',
             type: 'warning',
-            callback: (action) => {
+            callback: async(action) => {
                 if (action === 'confirm') {
-                    console.log(11111);
+                        const {error, code, msg} = await removeDictionary({
+                            ids: item?.id,
+                        })
+                        if (!error && code === 200) {
+                            window?.$message?.success('删除成功')
+                            getParentListData()
+                        } else {
+                            window?.$message?.warning(msg)
+                        }
                 }
             }
         })
@@ -140,6 +157,8 @@ const priceModal = ref(false)
 const openpriceEdit = (type) => {
     if (type === 1) {
         priceTitle.value = '新增分类'
+        priceform.value={}
+        menuKey.value=''
     } else {
         priceTitle.value = '编辑分类'
     }
@@ -153,14 +172,24 @@ const priceModalClose = () => {
 }
 
 const taskTitle = ref('')
-const openEdit = (type) => {
+const openEdit = (type,row) => {
+    
     if (type === 1) {
+        formLabelAlign.value.dictName=''
+        formLabelAlign.value.id=''
         taskTitle.value = '新增'
     } else {
+        formLabelAlign.value.dictName=row.dictName
+        formLabelAlign.value.id=row.id
         taskTitle.value = '编辑'
     }
-
-    editTaskModal.value = true
+    if(menuKey.value){
+       
+        editTaskModal.value = true
+    }else{
+        window.$message.warning('请先选择一级科目')
+    }
+   
 }
 
 
@@ -169,46 +198,112 @@ const testModalClose = () => {
     editTaskModal.value = false
 }
 
-const delTask = () => {
-    window?.$messageBox?.alert('您确定要删除该预算科目吗? 一旦注销数据将彻底清除,请谨慎操作?', '删除提醒', {
-        showCancelButton: true,
-        confirmButtonText: '确认注销',
-        cancelButtonText: '取消',
-        type: 'warning',
-        callback: (action) => {
-            if (action === 'confirm') {
-                console.log(11111);
+const delTask = (item) => {
+    window?.$messageBox?.alert('您确定要删除该预算科目信息吗? 一旦注销数据将彻底清除,请谨慎操作?', '删除提醒', {
+            showCancelButton: true,
+            confirmButtonText: '确认注销',
+            cancelButtonText: '取消',
+            type: 'warning',
+            callback: async(action) => {
+                if (action === 'confirm') {
+                        const {error, code, msg} = await removeDictionary({
+                            ids: item?.id,
+                        })
+                        if (!error && code === 200) {
+                            window?.$message?.success('删除成功')
+                            getParentListData()
+                        } else {
+                            window?.$message?.warning(msg)
+                        }
+                }
             }
-        }
-    })
+        })
 }
 
 const tableColumn = [
-    {key: 'name', name: '预算二级科目',align:'center'},
+    {key: 'dictName', name: '预算二级科目',align:'center'},
     // {key: 'text', name: '任务内容'},
     // {key: 'color', name: '完成指标'},
     {key: 'action', name: '操作', width: 200}
 ]
-const tableData = ref([
-    {name: '名称1', text: '文本1', color: 'red'},
-    {name: '名称2', text: '文本2', color: 'blue'},
-    {name: '名称3', text: '文本3', color: '无'}
-])
-
+const tableData = ref([])
+const tableLoaing=ref(false)
 const formLabelAlign = ref({
     name: '',
     region: '',
     type: '',
 })
 
-const searchForm = ref({
-    postType: '', name: '',
-    current: 1, size: 20, total: 0
-})
-//分页被点击
-const pageChange = ({current, size}) => {
-    searchForm.value.current = current
-    searchForm.value.size = size
+
+//新增一级科目
+const saveparentClick=async()=>{
+    const { error, code, data,msg } = await submitDictionary({
+        type:tabsType.value,
+        dictName:priceform.value?.dictName,
+        id:menuKey.value||null,
+    })
+   
+    if (!error && code === 200) {
+        window.$message?.success(msg)
+        priceModal.value=false
+        getParentListData()
+    } 
+    else {
+        window.$message?.warning(msg)
+    }
+}
+//新增二级级科目
+const savechilidClick=async()=>{
+    const { error, code, data,msg } = await submitDictionary({
+        type:tabsType.value,
+        dictName:formLabelAlign.value?.dictName,
+        id:formLabelAlign.value.id||null,
+        parentId:menuKey.value
+    })
+   
+    if (!error && code === 200) {
+        window.$message?.success(msg)
+        editTaskModal.value=false
+        getChildListData()
+    } 
+    else {
+        window.$message?.warning(msg)
+    }
+}
+//获取一级科目
+const getParentListData=async()=>{
+    const { error, code, data,msg } = await getParentList({
+        type:tabsType.value,
+       
+    })
+    if (!error && code === 200) {
+        menuOptions.value = getArrValue(data['records'])
+        if( menuOptions.value.length>0){
+            menuKey.value= menuOptions.value[0]?.id
+            menuItem.value.id =   menuOptions.value[0]?.id
+            getChildListData()
+        }
+    } 
+    else {
+        menuOptions.value =[]
+        window.$message?.warning(msg)
+    }
+}
+//获取二级科目
+const getChildListData=async()=>{
+    tableLoaing.value=true
+    const { error, code, data,msg } = await getChildList({
+        parentId: menuItem.value.id,
+        type:tabsType.value,
+    })
+    tableLoaing.value=false
+    if (!error && code === 200) {
+        tableData.value=getArrValue(data)
+        // tab.value = getArrValue(data['records'])
+    } 
+    else {
+        window.$message?.warning(msg)
+    }
 }
 </script>
 
@@ -281,4 +376,3 @@ const pageChange = ({current, size}) => {
     }
 }
 </style>
-

+ 2 - 2
src/views/system/components/tab-other.vue

@@ -86,7 +86,7 @@
                             />
                         </el-form-item>
                     </el-col>
-                    <el-col :span="12">
+                    <!-- <el-col :span="12">
                         <el-form-item label="封存:" prop="isstorage">
                             <el-switch
                                 v-model="formcode.isstorage"
@@ -100,7 +100,7 @@
                         <el-form-item label="字典备注:">
                             <el-input v-model="formcode.price"/>
                         </el-form-item>
-                    </el-col>
+                    </el-col> -->
                 </el-row>
           
             

+ 1 - 1
src/views/system/components/tab-pricetype.vue

@@ -273,7 +273,7 @@ const savechilidClick=async()=>{
 //获取一级科目
 const getParentListData=async()=>{
     const { error, code, data,msg } = await getParentList({
-        type:1,
+        type:tabsType.value,
        
     })
     if (!error && code === 200) {