|
@@ -36,11 +36,11 @@
|
|
|
</div>
|
|
|
</template>
|
|
|
<template #extra>
|
|
|
- <el-button size="large" type="warning" v-if="isEditState" @click="isEditState = false">
|
|
|
+ <el-button size="large" type="warning" v-if="isEditState" @click="submitLogsClick">
|
|
|
<HcIcon name="check-double"/>
|
|
|
<span>提交日志</span>
|
|
|
</el-button>
|
|
|
- <el-button size="large" type="primary" v-else @click="isEditState = true">
|
|
|
+ <el-button size="large" type="primary" v-else @click="editLogsClick">
|
|
|
<HcIcon name="add"/>
|
|
|
<span>写日志</span>
|
|
|
</el-button>
|
|
@@ -52,7 +52,7 @@
|
|
|
<div class="label">{{key}}</div>
|
|
|
<template v-for="items in item">
|
|
|
<div class="user-item" :class="userItemId.id === items.id?'cur':''" @click="userItemClick(items)">
|
|
|
- <img class="avatar" :src="items?.headPicture" alt=""/>
|
|
|
+ <img class="avatar" :src="items?.headPicture || avatarPng" alt=""/>
|
|
|
<div class="name">{{items?.logTitle}}</div>
|
|
|
<div class="state">
|
|
|
<span class="text-xl text-red mr-2">
|
|
@@ -65,53 +65,9 @@
|
|
|
</div>
|
|
|
</HcCardItem>
|
|
|
</div>
|
|
|
- <div class="hac-logs-content-body">
|
|
|
- <HcCardItem scrollbar>
|
|
|
- <div class="hac-logs-user-info">
|
|
|
- <img class="user-avatar" src="https://bladex-chongqing-info.oss-cn-hangzhou.aliyuncs.com/upload/20220616/8ed37a156f2b177d69181c876892739f.jpg" alt=""/>
|
|
|
- <div class="user-info">
|
|
|
- <div class="name">张三的日志</div>
|
|
|
- <div class="time">2023-02-12 21:08 添加</div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="hc-logs-content-item">
|
|
|
- <div class="title">风险预警</div>
|
|
|
- <div class="content">
|
|
|
- <el-input v-model="riskWarning" :autosize="{ minRows: 3, maxRows: 5 }" :readonly="!isEditState" :placeholder="isEditState?'请输入文字说明':'无'" type="textarea"/>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <div class="hc-logs-content-item" v-if="!isEditState">
|
|
|
- <div class="title">今日工作内容</div>
|
|
|
- <div class="warning-tip">警告:有三条任务已超期逾期未完成,请及时完成!</div>
|
|
|
- <div class="content">
|
|
|
- <HcTable :isIndex="false" :column="tableColumn" :datas="tableData" :row-style="tableRowStyle"/>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <div class="hc-logs-content-item" v-if="isEditState">
|
|
|
- <div class="title">今日工作范围勾选</div>
|
|
|
- <div class="extra-tip">提示:仅勾当日的工作内容,如果勾选项任务已完成,则点击【变更已完成】进行提交部门领导审批</div>
|
|
|
- <div class="content">
|
|
|
- <HcTable :isIndex="false" isCheck :column="tableColumn1" :datas="tableData1" @selection-change="tableSelectionChange">
|
|
|
- <template #action="{row, index}">
|
|
|
- <el-button size="small" type="primary">变更已完成</el-button>
|
|
|
- </template>
|
|
|
- </HcTable>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <div class="hc-logs-content-item">
|
|
|
- <div class="title">工作内容描述</div>
|
|
|
- <div class="content">
|
|
|
- <el-input v-model="riskWarning" :autosize="{ minRows: 5, maxRows: 8 }" :readonly="!isEditState" :placeholder="isEditState?'请输入工作内容描述':'无'" type="textarea"/>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <HcListItem title="差旅报销:" isCenter class="mt-8" v-if="isEditState">
|
|
|
- <el-input class="w-72" placeholder="报销金额(元)"/>
|
|
|
- </HcListItem>
|
|
|
- </HcCardItem>
|
|
|
+ <div class="hac-logs-content-body" v-loading="logLoading">
|
|
|
+ <HcLogsContent :data="logForm" ref="logsRef" v-if="isEditState"/>
|
|
|
+ <HcLogsContent :data="logDetail" :edit="false" v-else/>
|
|
|
</div>
|
|
|
</div>
|
|
|
</HcCard>
|
|
@@ -120,10 +76,18 @@
|
|
|
<script setup>
|
|
|
import {onActivated, ref} from "vue";
|
|
|
import logsApi from "~api/task/logs";
|
|
|
+import {useAppStore} from "~src/store";
|
|
|
import {getObjValue} from "js-fast-way";
|
|
|
+import HcLogsContent from "./components/logs-content.vue";
|
|
|
+import avatarPng from '~src/assets/images/avatar.png';
|
|
|
+import dayjs from 'dayjs';
|
|
|
+
|
|
|
+const useAppState = useAppStore()
|
|
|
+const userInfo = ref(useAppState.getUserInfo);
|
|
|
|
|
|
// 调用时机为首次挂载, 以及每次从缓存中被重新插入时
|
|
|
onActivated(() => {
|
|
|
+ isEditState.value = false
|
|
|
getLogList()
|
|
|
})
|
|
|
|
|
@@ -132,7 +96,11 @@ const searchForm = ref({orgDept: null, userId: null, startTime: null, endTime: n
|
|
|
|
|
|
//搜索
|
|
|
const searchClick = () => {
|
|
|
- getLogList()
|
|
|
+ if (!isEditState.value) {
|
|
|
+ getLogList()
|
|
|
+ } else {
|
|
|
+ window.$message?.warning('请先提交日志或退出填写日志状态')
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//重置
|
|
@@ -165,11 +133,16 @@ const getLogList = async () => {
|
|
|
//用户列表点击
|
|
|
const userItemId = ref({})
|
|
|
const userItemClick = (item) => {
|
|
|
- userItemId.value = item
|
|
|
- getLogDetail()
|
|
|
+ if (!isEditState.value) {
|
|
|
+ userItemId.value = item
|
|
|
+ getLogDetail()
|
|
|
+ } else {
|
|
|
+ window.$message?.warning('请先提交日志或退出填写日志状态')
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//日志填报详情
|
|
|
+const logDetail = ref({})
|
|
|
const getLogDetail = async () => {
|
|
|
const item = userItemId.value
|
|
|
const {error, code, data, msg} = await logsApi.getLogDetail({
|
|
@@ -177,56 +150,53 @@ const getLogDetail = async () => {
|
|
|
})
|
|
|
//判断状态
|
|
|
if (!error && code === 200) {
|
|
|
- console.log(data)
|
|
|
+ logDetail.value = getObjValue(data)
|
|
|
} else {
|
|
|
+ logDetail.value = {}
|
|
|
window.$message?.error(msg)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-//风险预警
|
|
|
-const riskWarning = ref('')
|
|
|
+//日志填报表单
|
|
|
+const logForm = ref({
|
|
|
+ headPicture: '',
|
|
|
+ logTitle: '',
|
|
|
+ createTime: '',
|
|
|
+ riskWarning: '',
|
|
|
+ workDesc: '',
|
|
|
+ expenseReimbursementAmount: '',
|
|
|
+})
|
|
|
|
|
|
//当前状态,false查看模式,true写日志模式
|
|
|
const isEditState = ref(false)
|
|
|
-
|
|
|
-//表格
|
|
|
-const tableColumn = [
|
|
|
- {key: 'key1', name: '任务内容'},
|
|
|
- {key: 'key2', name: '起止日期', width: '280', align: 'center'},
|
|
|
- {key: 'key3', name: '状态', width: '160', align: 'center'},
|
|
|
-]
|
|
|
-const tableData = ref([
|
|
|
- {id: 1, key1: 'xx', key2: 'xx', key3: '已完成'},
|
|
|
- {id: 2, key1: 'xx', key2: 'xx', key3: '未完成'},
|
|
|
- {id: 3, key1: 'xx', key2: 'xx', key3: '未完成'},
|
|
|
- {id: 4, key1: 'xx', key2: 'xx', key3: '未完成'},
|
|
|
- {id: 5, key1: 'xx', key2: 'xx', key3: '未完成'},
|
|
|
-])
|
|
|
-
|
|
|
-//表格行样式
|
|
|
-const tableRowStyle = ({row}) => {
|
|
|
- if (row.id === 2) {
|
|
|
- return {
|
|
|
- '--el-fill-color-lighter': 'rgba(189, 49, 36, 0.79)',
|
|
|
- '--el-table-row-hover-bg-color': 'var(--el-fill-color-lighter)',
|
|
|
- 'background-color': 'var(--el-fill-color-lighter)',
|
|
|
- 'color': 'white'
|
|
|
- }
|
|
|
- }
|
|
|
+const editLogsClick = () => {
|
|
|
+ const {real_name, avatar} = userInfo.value
|
|
|
+ isEditState.value = true
|
|
|
+ logForm.value.headPicture = avatar || avatarPng
|
|
|
+ logForm.value.logTitle = real_name + '的日志'
|
|
|
+ logForm.value.createTime = dayjs().format('YYYY-MM-DD')
|
|
|
}
|
|
|
|
|
|
-//表格
|
|
|
-const tableColumn1 = [
|
|
|
- {key: 'key1', name: '任务内容'},
|
|
|
- {key: 'action', name: '操作', width: 130, align: 'center'}
|
|
|
-]
|
|
|
-const tableData1 = ref([{id: 1, key1: 'xx'}, {id: 2, key1: 'xx'}, {id: 3, key1: 'xx'}, {id: 4, key1: 'xx'}])
|
|
|
-
|
|
|
-//多选事件
|
|
|
-const tableSelectionChange = (rows) => {
|
|
|
- console.log(rows)
|
|
|
+const logsRef = ref(null)
|
|
|
+const logLoading = ref(false)
|
|
|
+
|
|
|
+const submitLogsClick = async () => {
|
|
|
+ logLoading.value = true
|
|
|
+ const form = logsRef.value?.getLogForm()
|
|
|
+ //移除不必要的字段
|
|
|
+ delete form.createTime
|
|
|
+ delete form.headPicture
|
|
|
+ delete form.logTitle
|
|
|
+ //发起请求
|
|
|
+ const {error, code, msg} = await logsApi.setLogSubmit(form)
|
|
|
+ //判断状态
|
|
|
+ logLoading.value = false
|
|
|
+ if (!error && code === 200) {
|
|
|
+ isEditState.value = false
|
|
|
+ getLogList()
|
|
|
+ } else {
|
|
|
+ window.$message?.error(msg)
|
|
|
+ }
|
|
|
}
|
|
|
</script>
|
|
|
|