瀏覽代碼

Merge remote-tracking branch 'origin/master'

ZaiZai 2 年之前
父節點
當前提交
34c90917b7

+ 39 - 45
src/views/home/task/components/cost-budget.vue

@@ -1,75 +1,76 @@
 <!--  -->
 <template>
     <div>
-        <HcTable :column="basetableColumn" :datas="basetableData" :isIndex="false" />
-        <HcCard actionUi="text-center">
+        <HcTable :column="basetableColumn" :datas="basetableData" :isIndex="false" >
+        </HcTable>
+        <HcCard actionUi="text-center" class="mt-4">
             <template #extra>
                 <HcNewSwitch :datas="tabTab" :keys="tabKey" @change="tabChange" :round="false" />
             </template>
             <HcTable :isIndex="false" :column="tableColumn" :datas="tableData">
                 <template #deptId="{ row, index }">
-                    <el-select v-model="row.deptId" block placeholder="请选择">
+                    <el-select v-model="row.deptId" block placeholder="请选择" disabled>
                         <el-option v-for="item in departMent" :label="item.deptName" :value="item.id" />
                     </el-select>
                 </template>
                 <template #costType="{ row, index }">
-                    <el-select v-model="row.costType" block placeholder="请选择">
+                    <el-select v-model="row.costType" block placeholder="请选择" disabled>
                         <el-option v-for="item in costTypeList" :label="item.dictName" :value="item.dictValue" />
                     </el-select>
                 </template>
                 <template #projectProcess="{ row, index }">
-                    <el-select v-model="row.projectProcess" block placeholder="请选择">
+                    <el-select v-model="row.projectProcess" block placeholder="请选择" disabled>
                         <el-option v-for="item in processList" :label="item.name" :value="item.id" />
                     </el-select>
                 </template>
                 <template #budgetType="{ row, index }">
-                    <el-select v-model="row.budgetType">
+                    <el-select v-model="row.budgetType" disabled>
                         <el-option v-for="item in budgetTypeList" :label="item.dictName" :value="item.dictValue" />
                     </el-select>
                 </template>
-                <template #taskDetail="{ row, index }">
-                    <el-select v-model="row.taskDetail" :getdata="budgetTypeChange(row?.budgetType, index)">
+                <template #taskDetail="{ row, index }" >
+                    <el-select v-model="row.taskDetail" :getdata="budgetTypeChange(row?.budgetType, index)" disabled>
                         <el-option v-for="item in taskDetailList[index]" :label="item.dictName" :value="item.dictValue" />
                     </el-select>
                 </template>
-                <template #budgetDays="{ row, index }">
-                    <el-input v-model="row.budgetDays" />
+                <template #budgetDays="{ row, index }" >
+                    <el-input v-model="row.budgetDays" disabled/>
                 </template>
-                <template #postType="{ row, index }">
-                    <el-select v-model="row.postType">
+                <template #postType="{ row, index }" >
+                    <el-select v-model="row.postType" disabled>
                         <el-option v-for="item in postTypeList" :label="item.dictName" :value="item.code" />
                     </el-select>
                 </template>
 
-                <template #staffCount="{ row, index }">
-                    <el-input v-model="row.staffCount" />
+                <template #staffCount="{ row, index }" >
+                    <el-input v-model="row.staffCount"  disabled/>
                 </template>
-                <template #budgetStaffCost="{ row, index }">
+                <template #budgetStaffCost="{ row, index }" >
                     <el-input v-model="row.budgetStaffCost" disabled />
                 </template>
                 <template #budgetTravelExpense="{ row, index }">
-                    <el-input v-model="row.budgetTravelExpense" />
+                    <el-input v-model="row.budgetTravelExpense" disabled/>
                 </template>
                 <template #outsourceUnitPrice="{ row, index }">
-                    <el-input v-model="row.outsourceUnitPrice" />
+                    <el-input v-model="row.outsourceUnitPrice" disabled/>
                 </template>
                 <template #outsourcePeopleCount="{ row, index }">
-                    <el-input v-model="row.outsourcePeopleCount" />
+                    <el-input v-model="row.outsourcePeopleCount" disabled/>
                 </template>
                 <template #outsourceCountMoney="{ row, index }">
                     <el-input v-model="row.outsourceCountMoney" disabled />
                 </template>
                 <template #otherBudgetMoney="{ row, index }">
-                    <el-input v-model="row.otherBudgetMoney" />
+                    <el-input v-model="row.otherBudgetMoney" disabled/>
                 </template>
                 <template #budgetCountMoney="{ row, index }">
-                    <el-input v-model="row.budgetCountMoney" />
+                    <el-input v-model="row.budgetCountMoney" disabled/>
                 </template>
                 <template #budgetRemark="{ row, index }">
-                    <el-input v-model="row.budgetRemark" />
+                    <el-input v-model="row.budgetRemark" disabled/>
                 </template>
                 <template #key15="{ row, index }">
-                    <el-input v-model="row.key15" />
+                    <el-input v-model="row.key15" disabled />
                 </template>
        
             </HcTable>
@@ -84,12 +85,12 @@ import { getArrValue } from "js-fast-way";
 import costApi from '~api/project/cost.js';
 
 onActivated(() => {
-    getProjectData()
+
     getdepartmentListData()
     getCostTypeDict()
     getProcessList(otherInfo.value.projectId)
-    getBudgetTypeList()
     getPostDict()
+    getBudgetTypeList()
 })
 //参数
 const props = defineProps({
@@ -109,6 +110,18 @@ watch(() => [
     supervisorUnitData.value=otherInfo?.supervisorUnit||[]
     tabKey.value='construction'
     tableData.value=constructUnitData.value
+    basetableData.value=[
+        {
+            projectName: otherInfo?.projectName,
+            projectCostTotal: otherInfo?.projectCostTotal,
+            devCostTotal: otherInfo?.devCostTotal,
+            businessCostTotal: otherInfo?.businessCostTotal,
+            marketCostTotal: otherInfo?.marketCostTotal,
+            maintainCostTotal: otherInfo?.maintainCostTotal,
+            outsourceCostTotal: otherInfo?.outsourceCostTotal,
+            manageCostTotal: otherInfo?.manageCostTotal,
+        }
+    ]
 
 })
 const basetableColumn = [
@@ -123,28 +136,9 @@ const basetableColumn = [
 
 ]
 const basetableData = ref([
-    {
-        projectName: otherInfo.value?.projectName,
-        projectName: otherInfo.value?.projectCostTotal,
-        devCostTotal: otherInfo.value?.devCostTotal,
-        businessCostTotal: otherInfo.value?.businessCostTotal,
-        marketCostTotal: otherInfo.value?.marketCostTotal,
-        maintainCostTotal: otherInfo.value?.maintainCostTotal,
-        outsourceCostTotal: otherInfo.value?.outsourceCostTotal,
-        manageCostTotal: otherInfo.value?.manageCostTotal,
-    }
+   
 ])
-//项目类型
-const projectType = ref([])
-const getProjectData = async () => {
-    const { error, code, data } = await getProjectList()
-    //判断状态
-    if (!error && code === 200) {
-        projectType.value = getArrValue(data)
-    } else {
-        projectType.value = []
-    }
-}
+
 //类型tab数据和相关处理
 const tabKey = ref('construction')
 const tabTab = ref([

+ 6 - 2
src/views/project/cost/form.vue

@@ -123,7 +123,7 @@
                             <HcIcon name="add"/>
                             <span>新增</span>
                         </el-button>
-                        <el-button size="small" type="danger" @click="delRow(index)">
+                        <el-button size="small" type="danger" @click="delRow(index)" :disabled="tableData.length==1">
                             <HcIcon name="delete-bin"/>
                             <span>删除</span>
                         </el-button>
@@ -444,7 +444,11 @@ const submitForm=async()=>{
         submitLoaing.value=false
         if (!error && code === 200) {
         window.$message.success(msg)
-        getBudgetStatsById()
+          
+            router.push({
+                name: 'project-cost',
+                
+            })
         } 
     }
 

+ 3 - 3
src/views/project/cost/index.vue

@@ -29,7 +29,7 @@
                 <span class="text-blue" @click="rowNameTap(row)">{{row.projectName}}</span>
             </template>
             <template #action="{row,index}">
-                <el-button plain size="small" type="success" @click="approvalRowClick(row)" :disabled="row?.approveStatus!=='1'">提交审批</el-button>
+                <el-button plain size="small" type="success" @click="approvalRowClick(row)" v-if="row?.approveStatus==='1'">提交审批</el-button>
                 <el-button plain size="small" type="primary" @click="editRowClick(row)">编辑</el-button>
                 <el-button plain size="small" type="danger" @click="delRowClick(row)">删除</el-button>
             </template>
@@ -42,7 +42,7 @@
 </template>
 
 <script setup>
-import {ref,onMounted} from "vue";
+import {ref,onMounted,onActivated} from "vue";
 import {useRouter} from 'vue-router'
 import costApi from '~api/project/cost.js';
 import {getArrValue} from "js-fast-way"
@@ -50,7 +50,7 @@ import {delMessage} from "~uti/tools";
 
 
 const router = useRouter()
-onMounted(()=>{
+onActivated(()=>{
     getTableData()
   
 })

+ 7 - 6
src/views/project/list/list-info.vue

@@ -104,7 +104,7 @@
                 <span v-if="dataType !== 'view'">取消并返回</span>
                 <span v-else>返回</span>
             </el-button>
-            <el-button size="large" type="primary" hc-btn @click="doubleClick" v-if="dataType !== 'view'" :loading="saveLoading">
+            <el-button size="large" type="primary" hc-btn @click="doubleClick" v-if="dataType !== 'view'" :loading="saveLoading" :disabled="saveLoading" >
                 <HcIcon name="check-double"/>
                 <span>提交保存</span>
             </el-button>
@@ -299,6 +299,7 @@ const goBackClick = () => {
 const saveLoading=ref(false)
 //提交保存
 const doubleClick =async () => {
+    saveLoading.value=true
     formModel.value.projectProcessList=timeLineData.value
     const res = await formValidate(formRef.value)
     if(res){
@@ -308,13 +309,12 @@ const doubleClick =async () => {
         }else{
             addProjectInfo()
         }
+    } else {
+        saveLoading.value=false;
     }
-   
-
 }
 //新增项目
 const addProjectInfo=async()=>{
-    saveLoading.value=true;
     const {error, code, data,msg} = await projectApi.addProjectInfo( formModel.value)
     saveLoading.value=false;
     if (!error && code === 200) {
@@ -323,15 +323,16 @@ const addProjectInfo=async()=>{
             name: 'project',
         })
     } 
-
 }
 //修改
 const updateProjectInfo=async()=>{
-    saveLoading.value=true;
     const {error, code, data,msg} = await projectApi.updateProjectInfo( formModel.value)
     saveLoading.value=false;
     if (!error && code === 200) {
        window.$message.success(msg)
+       router.push({
+            name: 'project',
+        })
     } 
 
 }

+ 11 - 5
src/views/task/logs/components/logs-content.vue

@@ -16,7 +16,7 @@
 
         <div class="hc-logs-content-item" v-if="!isEditState">
             <div class="title">今日工作内容</div>
-            <div class="warning-tip">警告:有{{undefinedNum}}条任务已超期逾期未完成,请及时完成!</div>
+            <div class="warning-tip" v-if="undefinedNum>0">警告:有{{undefinedNum}}条任务已超期逾期未完成,请及时完成!</div>
             <div class="content">
                 <HcTable :isIndex="false" :column="taskColumn" :datas="logData?.taskList ?? []" :row-style="tableRowStyle"/>
             </div>
@@ -49,7 +49,7 @@
 </template>
 
 <script setup>
-import {ref, watch, onMounted} from "vue";
+import {ref, watch, onActivated, onMounted} from "vue";
 import logsApi from "~api/task/logs";
 import {deepClone, getArrValue} from "js-fast-way"
 import avatarPng from '~src/assets/images/avatar.png';
@@ -67,6 +67,10 @@ const props = defineProps({
     isShowmyEdit:{
         type: Boolean,
         default: false
+    },
+    undefinedNum:{
+        type: Number,
+        default: 0
     }
 })
 
@@ -74,7 +78,7 @@ const props = defineProps({
 const isEditState = ref(props.edit);
 const logData = ref(props.data);
 const ismyEdit=ref(props.isShowmyEdit)
-const undefinedNum=ref(null)//未完成数量
+const undefinedNum=ref(props.undefinedNum)//未完成数量
 
 //渲染完成
 onMounted(() => {
@@ -96,10 +100,12 @@ watch(() => [
 //深度监听
 watch(() => [
     props.data,
-    props.isShowmyEdit
+    props.isShowmyEdit,
+    props.undefinedNum
     
-], ([data,edit]) => {
+], ([data,edit,num]) => {
     logData.value = data
+    undefinedNum.value=num
     console.log(edit,'edit');
     console.log(ismyEdit.value,'ismyEdit');
 }, {deep: true})

+ 18 - 2
src/views/task/logs/index.vue

@@ -74,8 +74,8 @@
                 </HcCardItem>
             </div>
             <div class="hac-logs-content-body" v-loading="logLoading">
-                <HcLogsContent :data="logForm" ref="logsRef" v-if="isEditState" :isShowmyEdit="isShowEdit"/>
-                <HcLogsContent :data="logDetail" :edit="false" v-else/>
+                <HcLogsContent :data="logForm" ref="logsRef" v-if="isEditState" :isShowmyEdit="isShowEdit" />
+                <HcLogsContent :data="logDetail" :edit="false" v-else :undefinedNum="undefinedNum"/>
             </div>
         </div>
     </HcCard>
@@ -174,6 +174,7 @@ const userItemId = ref({})
 const userItemClick = (item) => {
     if (!isEditState.value) {
         userItemId.value = item
+        isShowEdit.value=false
         getLogDetail()
     } else {
         window.$message?.warning('请先提交日志或退出填写日志状态')
@@ -182,6 +183,7 @@ const userItemClick = (item) => {
 
 //日志填报详情
 const logDetail = ref({})
+const undefinedNum=ref(null)
 const getLogDetail = async () => {
     const item = userItemId.value
     if(item.id){
@@ -196,6 +198,7 @@ const getLogDetail = async () => {
             console.log(logTitle,'logTitle');
             let index = logTitle.lastIndexOf("的");
             let str = logTitle.substring(0,index);
+            //判断是否编辑自己的日志
             if(real_name===str){
                 isShowEdit.value=true
             }
@@ -203,6 +206,16 @@ const getLogDetail = async () => {
             logDetail.value = {}
             window.$message?.error(msg)
         }
+        //计算未完成数量
+        console.log(logDetail.value.taskList,'taskList');
+        let arr=[]
+        arr=logDetail.value.taskList.filter((ele)=>{
+            if(ele?.isOverdue==1){
+                return ele
+            }
+        })
+        undefinedNum.value=arr.length
+       console.log( undefinedNum.value,' undefinedNum.value');
     }
 
 }
@@ -220,6 +233,7 @@ const logForm = ref({
 //当前状态,false查看模式,true写日志模式
 const isEditState = ref(false)
 const editLogsClick = () => {
+    console.log('写日志');
     logForm.value={
     headPicture: '',
     logTitle: '',
@@ -237,6 +251,7 @@ const editLogsClick = () => {
 //修改自己的日志
 
 const editmyLog=()=>{
+    console.log('修改自己的');
     isEditState.value = true
     logForm.value=logDetail.value
   
@@ -244,6 +259,7 @@ const editmyLog=()=>{
 //返回到查看日志界面
 const gobackLog=()=>{
     isEditState.value = false
+    isShowEdit.value=false
 }
 const logsRef = ref(null)
 const logLoading = ref(false)