dev_4newlayout
deng 1 year ago
parent 568950cba6
commit f8f15ca2a4
  1. 610
      ant-design-vue-jeecg/src/views/newLayout/myTask/list/assignment.vue

@ -2,25 +2,66 @@
<div class="assignmnet">
<header>
<div class="left">
<i class="el-icon-s-order"></i>
<span>部门任务</span>
<i class="el-icon-menu" style="margin-left: 20px"></i>
<span>需求任务</span>
<i class="el-icon-menu"></i>
<!-- 任务日期范围选择 -->
<i class="el-icon-s-order" style="font-size: 16px"
><span> 全部任务</span></i
>
<div class="btns">
<el-button
type="primary"
plain
v-for="i in time"
:key="i.id"
v-model="timeSearchData"
@click="timeSearch(i)"
>{{ i.name }}</el-button
>
</div>
</div>
<div class="right">
<div
class="div"
style="width: 70px; height: 40px; background-color: pink"
></div>
<div
class="div"
style="width: 70px; height: 40px; background-color: pink"
></div>
<div
class="div"
style="width: 70px; height: 40px; background-color: pink"
></div>
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="12">
<a-col :md="6" :sm="8" style="height: 80%">
<a-form-item>
<j-dict-select-tag
v-model="queryParam.typeId"
placeholder="请选择任务类型"
dict-code="task_type,type_name,id"
></j-dict-select-tag>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8" style="height: 80%">
<a-form-item>
<j-dict-select-tag
v-model="queryParam.projectId"
placeholder="请选择项目"
dict-code="projectx,project_name,id"
style="width: 100%"
></j-dict-select-tag>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8">
<span
style="float: left; overflow: hidden"
class="table-page-search-submitButtons"
>
<a-button type="primary" @click="searchTask" icon="search">
查询
</a-button>
<a-button
type="primary"
@click="reset"
icon="reload"
style="margin-left: 8px"
>重置</a-button
>
</span>
</a-col>
</a-row>
</a-form>
<!-- </div> -->
</div>
</div>
</header>
<div class="content">
@ -31,10 +72,12 @@
<span>{{ assignmnetData.total }}</span>
</div>
<div class="right">
<i class="el-icon-plus" @click="toAdd()"></i>
<i class="el-icon-plus" @click="handleAdd()"></i>
<i class="el-icon-more"></i>
</div>
</div>
<!-- ---------------- -->
<div
class="cards"
@scroll.passive="assignmnetScroll"
@ -43,7 +86,6 @@
<Container
drag-class="card-ghost"
drop-class="card-ghost-drop"
:drop-placeholder="dropPlaceholderOptions"
group-name="col"
@drop="(e) => onAssignmnetCardDrop(e)"
:get-child-payload="getAssignmnetCardPayload()"
@ -86,29 +128,19 @@
<div class="word" v-if="item.contentType === 'file'">
<div class="word_img">
<img
src="https://cube.elemecdn.com/6/94/4d3ea53c084bad6931a56d5158a48jpeg.jpeg"
src="http://localhost:18081/jeecg-boot/sys/common/static/scott/pic/Snipaste_2023-07-22_09-41-03_1689990077264.png"
alt="图片占位"
width="100%"
height="100%"
/>
</div>
<div class="operate">
<span>点击查看</span>
<el-upload
class="upload-demo"
action="https://jsonplaceholder.typicode.com/posts/"
:on-preview="handlePreview"
:on-remove="handleRemove"
:before-remove="beforeRemove"
multiple
:limit="3"
:on-exceed="handleExceed"
:file-list="fileList"
<el-link type="success" @click="toLook(item)"
>点击预览</el-link
>
<el-link type="primary" :href="item.taskFile"
>点击下载</el-link
>
<el-button size="small" type="primary"
>点击上传</el-button
>
</el-upload>
</div>
</div>
<div class="concept_map" v-if="item.contentType === 'image'">
@ -129,7 +161,7 @@
item.contentType !== 'image'
"
>
<el-image></el-image>
<el-empty :image-size="200"></el-empty>
</div>
</div>
<!-- <div class="progess">
@ -170,9 +202,9 @@
</div>
</div>
<div class="tag">
<el-tag type="warning">一级分类</el-tag>
<el-tag type="success">二级分类</el-tag>
<el-tag>任务等级</el-tag>
<el-tag type="warning">{{ item.typePid_dictText }}</el-tag>
<el-tag type="success">{{ item.typeId_dictText }}</el-tag>
<el-tag>{{ item.workLevel }}</el-tag>
</div>
</div>
</Draggable>
@ -189,7 +221,7 @@
<span>{{ developedData.total }}</span>
</div>
<div class="right">
<i class="el-icon-plus"></i>
<i class="el-icon-plus" @click="handleAdd()"></i>
<i class="el-icon-more"></i>
</div>
</div>
@ -201,7 +233,6 @@
<Container
drag-class="card-ghost"
drop-class="card-ghost-drop"
:drop-placeholder="dropPlaceholderOptions"
group-name="col"
@drop="(e) => onDevelopedCardDrop(e)"
:get-child-payload="getDevelopedCardPayload()"
@ -216,9 +247,24 @@
<div class="name" :title="item.taskName">
{{ item.taskName }}
</div>
<div class="functions">
<i class="el-icon-more"></i>
</div>
<el-dropdown>
<span class="el-dropdown-link">
<i class="el-icon-more"></i>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item @click.native="Tofengjie(item)"
>分解任务</el-dropdown-item
>
<el-dropdown-item>关联任务</el-dropdown-item>
<el-dropdown-item>子级任务</el-dropdown-item>
<el-dropdown-item @click.native="toEdit(item)"
>编辑任务</el-dropdown-item
>
<el-dropdown-item @click.native="delCardData(item)"
>删除任务</el-dropdown-item
>
</el-dropdown-menu>
</el-dropdown>
</div>
<div class="level">任务层级{{ item.level_dictText }}</div>
<div class="union">{{ item.union }}</div>
@ -229,29 +275,19 @@
<div class="word" v-if="item.contentType === 'file'">
<div class="word_img">
<img
src="https://cube.elemecdn.com/6/94/4d3ea53c084bad6931a56d5158a48jpeg.jpeg"
src="http://localhost:18081/jeecg-boot/sys/common/static/scott/pic/Snipaste_2023-07-22_09-41-03_1689990077264.png"
alt="图片占位"
width="100%"
height="100%"
/>
</div>
<div class="operate">
<span>点击查看</span>
<el-upload
class="upload-demo"
action="https://jsonplaceholder.typicode.com/posts/"
:on-preview="handlePreview"
:on-remove="handleRemove"
:before-remove="beforeRemove"
multiple
:limit="3"
:on-exceed="handleExceed"
:file-list="fileList"
<el-link type="success" @click="toLook(item)"
>点击预览</el-link
>
<el-link type="primary" :href="item.taskFile"
>点击下载</el-link
>
<el-button size="small" type="primary"
>点击上传</el-button
>
</el-upload>
</div>
</div>
<div class="concept_map" v-if="item.contentType === 'image'">
@ -272,7 +308,7 @@
item.contentType !== 'image'
"
>
<el-image></el-image>
<el-empty :image-size="200"></el-empty>
</div>
</div>
<!-- <div class="progess">
@ -313,9 +349,9 @@
</div>
</div>
<div class="tag">
<el-tag type="warning">一级分类</el-tag>
<el-tag type="success">二级分类</el-tag>
<el-tag>任务等级</el-tag>
<el-tag type="warning">{{ item.typePid_dictText }}</el-tag>
<el-tag type="success">{{ item.typeId_dictText }}</el-tag>
<el-tag>{{ item.workLevel }}</el-tag>
</div>
</div>
</Draggable>
@ -371,29 +407,19 @@
<div class="word" v-if="item.contentType === 'file'">
<div class="word_img">
<img
src="https://cube.elemecdn.com/6/94/4d3ea53c084bad6931a56d5158a48jpeg.jpeg"
src="http://localhost:18081/jeecg-boot/sys/common/static/scott/pic/Snipaste_2023-07-22_09-41-03_1689990077264.png"
alt="图片占位"
width="100%"
height="100%"
/>
</div>
<div class="operate">
<span>点击查看</span>
<el-upload
class="upload-demo"
action="https://jsonplaceholder.typicode.com/posts/"
:on-preview="handlePreview"
:on-remove="handleRemove"
:before-remove="beforeRemove"
multiple
:limit="3"
:on-exceed="handleExceed"
:file-list="fileList"
<el-link type="success" @click="toLook(item)"
>点击预览</el-link
>
<el-link type="primary" :href="item.taskFile"
>点击下载</el-link
>
<el-button size="small" type="primary"
>点击上传</el-button
>
</el-upload>
</div>
</div>
<div class="concept_map" v-if="item.contentType === 'image'">
@ -455,9 +481,9 @@
</div>
</div>
<div class="tag">
<el-tag type="warning">一级分类</el-tag>
<el-tag type="success">二级分类</el-tag>
<el-tag>任务等级</el-tag>
<el-tag type="warning">{{ item.typePid_dictText }}</el-tag>
<el-tag type="success">{{ item.typeId_dictText }}</el-tag>
<el-tag>{{ item.workLevel }}</el-tag>
</div>
</div>
</Draggable>
@ -509,29 +535,19 @@
<div class="word" v-if="item.contentType === 'file'">
<div class="word_img">
<img
src="https://cube.elemecdn.com/6/94/4d3ea53c084bad6931a56d5158a48jpeg.jpeg"
src="http://localhost:18081/jeecg-boot/sys/common/static/scott/pic/Snipaste_2023-07-22_09-41-03_1689990077264.png"
alt="图片占位"
width="100%"
height="100%"
/>
</div>
<div class="operate">
<span>点击查看</span>
<el-upload
class="upload-demo"
action="https://jsonplaceholder.typicode.com/posts/"
:on-preview="handlePreview"
:on-remove="handleRemove"
:before-remove="beforeRemove"
multiple
:limit="3"
:on-exceed="handleExceed"
:file-list="fileList"
<el-link type="success" @click="toLook(item)"
>点击预览</el-link
>
<el-link type="primary" :href="item.taskFile"
>点击下载</el-link
>
<el-button size="small" type="primary"
>点击上传</el-button
>
</el-upload>
</div>
</div>
<div class="concept_map" v-if="item.contentType === 'image'">
@ -593,9 +609,9 @@
</div>
</div>
<div class="tag">
<el-tag type="warning">一级分类</el-tag>
<el-tag type="success">二级分类</el-tag>
<el-tag>任务等级</el-tag>
<el-tag type="warning">{{ item.typePid_dictText }}</el-tag>
<el-tag type="success">{{ item.typeId_dictText }}</el-tag>
<el-tag>{{ item.workLevel }}</el-tag>
</div>
</div>
</Draggable>
@ -644,10 +660,18 @@
</div>
</el-drawer>
</div>
<task-modal ref="modalForm" @ok="modalFormOk"></task-modal>
<task-modal
ref="modalForm"
@ok="modalFormOk"
@refresh="allUpadate"
></task-modal>
</div>
</template>
<script
type="text/javascript"
src="https://cdn.jsdelivr.net/npm/js-base64@3.6.0/base64.min.js"
></script>
<script>
import {
getMyTaskData,
@ -671,6 +695,7 @@ const changeStyle = (arr) => {
let newArr = arr.map((item) => {
item.headpic = getFileAccessHttpUrl(item.headpic)
item.taskPic = getFileAccessHttpUrl(item.taskPic)
item.taskFile = getFileAccessHttpUrl(item.taskFile)
item.expectedEndTime = changeTime(item.expectedEndTime)
item.startTime = changeTime(item.startTime)
item.submitTime = changeTime(item.submitTime)
@ -678,6 +703,7 @@ const changeStyle = (arr) => {
})
return newArr
}
export default {
mixins: [JeecgListMixin, mixinDevice],
components: { Container, Draggable, TaskModal },
@ -711,16 +737,7 @@ export default {
page: 1,
limit: 10
},
fileList: [
{
name: 'food.jpeg',
url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'
},
{
name: 'food2.jpeg',
url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'
}
],
fileList: [],
drawer: false,
direction: 'rtl',
drawerData: {},
@ -728,10 +745,38 @@ export default {
className: 'drop-preview',
animationDuration: '1000',
showOnTop: true
}
},
time: [
{ id: 1, name: '当天', select: false },
{ id: 2, name: '本周', select: false },
{ id: 3, name: '本月', select: false },
{ id: 4, name: '全部', select: false }
],
timeSearchData: ''
}
},
methods: {
timeSearch(time) {
this.timeSearchData = time.id
console.log('this.timeSearchData', this.timeSearchData)
this.allUpadate()
},
//
handleAdd() {
this.$refs.modalForm.add()
this.$refs.modalForm.title = '新增'
this.$refs.modalForm.disableSubmit = false
this.loadData()
},
//
searchTask() {
this.allUpadate()
},
//
reset() {
this.queryParam = {}
this.allUpadate()
},
allUpadate() {
this.getMyTaskAssignmentData()
this.getMyTaskDevelopedData()
@ -741,133 +786,189 @@ export default {
//
async getMyTaskAssignmentData() {
let workStatus = 0
await getMyTaskData({ workStatus }).then(({ result: res }) => {
console.log(res)
this.assignmnetData.cardList = res.records
this.assignmnetData.total = res.total
this.assignmnetData.page = res.current
this.assignmnetData.limit = res.size
changeStyle(this.assignmnetData.cardList)
})
let typeId = this.queryParam.typeId
let projectId = this.queryParam.projectId
let time = this.timeSearchData
await getMyTaskData({ workStatus, typeId, projectId, time }).then(
({ result: res }) => {
console.log(res)
this.assignmnetData.cardList = res.records
this.assignmnetData.total = res.total
this.assignmnetData.page = res.current
this.assignmnetData.limit = res.size
changeStyle(this.assignmnetData.cardList)
}
)
},
async getMyTaskDevelopedData() {
let workStatus = 2
await getMyTaskData({ workStatus }).then(({ result: res }) => {
this.developedData.cardList = res.records
this.developedData.total = res.total
this.developedData.page = res.current
this.developedData.limit = res.size
changeStyle(this.developedData.cardList)
})
let typeId = this.queryParam.typeId
let projectId = this.queryParam.projectId
let time = this.timeSearchData
await getMyTaskData({ workStatus, typeId, projectId, time }).then(
({ result: res }) => {
this.developedData.cardList = res.records
this.developedData.total = res.total
this.developedData.page = res.current
this.developedData.limit = res.size
changeStyle(this.developedData.cardList)
}
)
},
async getMyTaskCompletedData() {
let workStatus = 3
await getMyTaskData({ workStatus }).then(({ result: res }) => {
this.completedData.cardList = res.records
this.completedData.total = res.total
this.completedData.page = res.current
this.completedData.limit = res.size
changeStyle(this.completedData.cardList)
})
let typeId = this.queryParam.typeId
let projectId = this.queryParam.projectId
let time = this.timeSearchData
await getMyTaskData({ workStatus, typeId, projectId, time }).then(
({ result: res }) => {
this.completedData.cardList = res.records
this.completedData.total = res.total
this.completedData.page = res.current
this.completedData.limit = res.size
changeStyle(this.completedData.cardList)
}
)
},
async getMyTaskAuditedData() {
let workStatus = 4
await getMyTaskData({ workStatus }).then(({ result: res }) => {
this.auditedData.cardList = res.records
this.auditedData.total = res.total
this.auditedData.page = res.current
this.auditedData.limit = res.size
changeStyle(this.auditedData.cardList)
})
let typeId = this.queryParam.typeId
let projectId = this.queryParam.projectId
let time = this.timeSearchData
await getMyTaskData({ workStatus, typeId, projectId, time }).then(
({ result: res }) => {
this.auditedData.cardList = res.records
this.auditedData.total = res.total
this.auditedData.page = res.current
this.auditedData.limit = res.size
changeStyle(this.auditedData.cardList)
}
)
},
//
async delCardData(item) {
let id = item.id
console.log(id)
await delCardData({ id })
.then((res) => {
console.log(res)
this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(async () => {
let id = item.id
console.log(id)
await delCardData({ id })
.then((res) => {
console.log(res)
})
.catch((error) => {
console.log(error)
})
this.allUpadate()
this.$message({
type: 'success',
message: '删除成功!'
})
})
.catch((error) => {
console.log(error)
.catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
})
})
this.allUpadate()
},
//
toEdit(item) {
this.handleEdit(item)
},
//
toAdd() {
this.handleAdd()
},
//
Tofengjie(item) {
this.fengjieRenwu(item)
},
toLook(item) {
let url = item.taskFile
console.log(url)
let Base64 = require('js-base64').Base64
this.dialogurl =
'http://127.0.0.1:8012/onlinePreview?url=' +
encodeURIComponent(Base64.encode(url))
window.open(this.dialogurl)
},
//
assignmnetScroll(e) {
let isLoading = true //
this.$refs.assignmnetcards.onscroll = async () => {
const { scrollTop, clientHeight, scrollHeight } = e.target
console.log(scrollTop, clientHeight, scrollHeight)
let bottomOfWindow = scrollTop + clientHeight === scrollHeight
if (bottomOfWindow && isLoading == true) {
this.assignmnetData.page = this.assignmnetData.page + 1 //+1
let workStatus = 0
let pageNo = this.assignmnetData.page
let pageSize = this.assignmnetData.limit
let typeId = this.queryParam.typeId
let projectId = this.queryParam.projectId
let time = this.timeSearchData
// console.log(pageNo, pageSize)
await getMyTaskData({ workStatus, pageNo, pageSize }).then(
({ result: res }) => {
console.log('1111111', res)
//
if (res.records.length > 0) {
changeStyle(res.records)
this.assignmnetData.cardList.push(...res.records) // 使 ...
isLoading = true
} else {
this.$notify({
title: '温馨提示:',
message: '暂无更多数据信息!',
position: 'bottom-right'
})
isLoading = false //
}
await getMyTaskData({
workStatus,
pageNo,
pageSize,
typeId,
projectId,
time
}).then(({ result: res }) => {
//
if (res.records.length > 0) {
changeStyle(res.records)
this.assignmnetData.cardList.push(...res.records) // 使 ...
isLoading = true
} else {
this.$notify({
title: '温馨提示:',
message: '暂无更多数据信息!',
position: 'bottom-right'
})
isLoading = false //
}
)
})
}
}
},
developedScroll(e) {
async developedScroll(e) {
let isLoading = true //
this.$refs.developedcards.onscroll = async () => {
const { scrollTop, clientHeight, scrollHeight } = e.target
let bottomOfWindow = scrollTop + clientHeight === scrollHeight
if (bottomOfWindow && isLoading == true) {
this.developedData.page = this.developedData.page + 1 //+1
let workStatus = 2
let pageNo = this.developedData.page
let pageSize = this.developedData.limit
// console.log(pageNo, pageSize)
await getMyTaskData({ workStatus, pageNo, pageSize }).then(
({ result: res }) => {
console.log('1111111', res)
//
if (res.records.length > 0) {
changeStyle(res.records)
this.developedData.cardList.push(...res.records) // 使 ...
isLoading = true
} else {
this.$notify({
title: '温馨提示:',
message: '暂无更多数据信息!',
position: 'bottom-right'
})
isLoading = false //
}
}
)
}
const { scrollTop, clientHeight, scrollHeight } = e.target
console.log(scrollTop, clientHeight, scrollHeight)
let bottomOfWindow = scrollTop + clientHeight === scrollHeight
if (bottomOfWindow && isLoading == true) {
this.developedData.page = this.developedData.page + 1 //+1
let workStatus = 2
let pageNo = this.developedData.page
let pageSize = this.developedData.limit
let typeId = this.queryParam.typeId
let projectId = this.queryParam.projectId
let time = this.timeSearchData
// console.log(pageNo, pageSize)
await getMyTaskData({
workStatus,
pageNo,
pageSize,
typeId,
projectId,
time
}).then(({ result: res }) => {
//
if (res.records.length > 0) {
changeStyle(res.records)
this.developedData.cardList.push(...res.records) // 使 ...
isLoading = true
} else {
this.$notify({
title: '温馨提示:',
message: '暂无更多数据信息!',
position: 'bottom-right'
})
isLoading = false //
}
})
}
},
completedScroll(e) {
@ -880,8 +981,18 @@ export default {
let workStatus = 3
let pageNo = this.completedData.page
let pageSize = this.completedData.limit
let typeId = this.queryParam.typeId
let projectId = this.queryParam.projectId
let time = this.timeSearchData
// console.log(pageNo, pageSize)
await getMyTaskData({ workStatus, pageNo, pageSize })
await getMyTaskData({
workStatus,
pageNo,
pageSize,
typeId,
projectId,
time
})
.then(({ result: res }) => {
//
if (res.records.length > 0) {
@ -913,24 +1024,32 @@ export default {
let workStatus = 4
let pageNo = this.auditedData.page
let pageSize = this.auditedData.limit
let typeId = this.queryParam.typeId
let projectId = this.queryParam.projectId
let time = this.timeSearchData
// console.log(pageNo, pageSize)
await getMyTaskData({ workStatus, pageNo, pageSize }).then(
({ result: res }) => {
//
if (res.records.length > 0) {
changeStyle(res.records)
this.auditedData.cardList.push(...res.records) // 使 ...
isLoading = true
} else {
this.$notify({
title: '温馨提示:',
message: '暂无更多数据信息!',
position: 'bottom-right'
})
isLoading = false //
}
await getMyTaskData({
workStatus,
pageNo,
pageSize,
typeId,
projectId,
time
}).then(({ result: res }) => {
//
if (res.records.length > 0) {
changeStyle(res.records)
this.auditedData.cardList.push(...res.records) // 使 ...
isLoading = true
} else {
this.$notify({
title: '温馨提示:',
message: '暂无更多数据信息!',
position: 'bottom-right'
})
isLoading = false //
}
)
})
}
}
},
@ -1157,23 +1276,23 @@ export default {
justify-content: left;
margin: 10px 0 20px 0;
height: 100px;
position: relative;
width: 100%;
height: 100px;
.word_img {
width: 40%;
height: 35%;
height: 100%;
// background-color: pink;
margin-left: 20px;
position: absolute;
top: 25%;
left: 10%;
// position: absolute;
// top: 25%;
// left: 10%;
}
.operate {
// margin-top: 10px;
// margin-left: 190px;
margin-top: 30px;
margin-left: 20px;
display: flex;
flex-flow: column;
position: absolute;
top: 35%;
left: 60%;
}
}
.concept_map {
@ -1266,25 +1385,37 @@ header {
justify-content: space-between;
align-items: center;
.left {
flex: 4;
// flex: 5;
width: 600px;
display: flex;
flex-flow: left;
flex-flow: column;
margin-right: 50px;
i {
margin: 0 10px;
line-height: 1.5;
}
.btns {
margin-top: 10px;
/deep/ .el-button--primary.is-plain {
height: 32px;
line-height: 10px;
}
}
}
.right {
flex: 1;
// flex: 3;
width: 700px;
display: flex;
flex-flow: row nowrap;
justify-content: space-around;
align-items: center;
align-items: baseline;
.table-page-search-wrapper {
width: 800px;
}
}
}
.cards {
height: 700px;
height: 100dvh;
overflow-x: auto;
}
.content {
@ -1325,15 +1456,16 @@ header {
span {
display: block;
width: 35px;
height: 35px;
height: 24px;
text-align: center;
line-height: 32px;
border-radius: 17px;
border: 2px solid #999999;
font-size: 18px;
line-height: 24px;
border-radius: 1000px;
border: 1px solid #e2e8f0;
background-color: #ffffff;
font-size: 13px;
font-family: Microsoft YaHei-Regular, Microsoft YaHei;
font-weight: 400;
color: #999999;
color: #94a3b8;
margin-bottom: 10px;
}
}

Loading…
Cancel
Save