Commit 0685f966 authored by 仇晓婷's avatar 仇晓婷

Merge branch 'product' of http://git.mes123.com/zhouyx/mes-ui into product

parents ba35b1fc e166fc1a
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
<Modal <Modal
v-model="modal" v-model="modal"
title="生命周期" title="生命周期"
width="800" width="1200"
footer-hide footer-hide
:mask-closable="false" :mask-closable="false"
> >
......
...@@ -146,6 +146,9 @@ export default { ...@@ -146,6 +146,9 @@ export default {
align: "left", align: "left",
high: true, high: true,
code: "mes.project_plan.Type", code: "mes.project_plan.Type",
attr:{
type:'icon'
}
}, },
{ {
key: "title", key: "title",
...@@ -162,14 +165,21 @@ export default { ...@@ -162,14 +165,21 @@ export default {
high: true, high: true,
code: "mes.project_plan.Status", code: "mes.project_plan.Status",
}, },
{ // {
key: "startDate", // key: "startDate",
title: this.l("startDate"), // title: this.l("startDate"),
align: "left", // align: "left",
high: true // high: true
,type:"date" // ,type:"date"
}, // },
{ key: "endDate", title: this.l("endDate"), align: "left", high: true,type:"date" }, // { key: "endDate", title: this.l("endDate"), align: "left", high: true,type:"date" },
{ key: "endDate", title: "计划日期", align: "left",render(h,param) {
return h('DateRange',{
attrs:{
value:param.row
}
})
}, },
// { // {
// key: "attachment", // key: "attachment",
// title: this.l("attachment"), // title: this.l("attachment"),
...@@ -227,13 +237,6 @@ export default { ...@@ -227,13 +237,6 @@ export default {
}); });
}, },
// rowclick(row,li){
// return {
// test(){
// alert(1);
// }
// }
// },
add(row) { add(row) {
if(row){ if(row){
this.curId=row.id; this.curId=row.id;
...@@ -268,7 +271,10 @@ export default { ...@@ -268,7 +271,10 @@ export default {
console.warn(row) console.warn(row)
row.status=1; row.status=1;
Api.sendtask(row).then(r=>{ Api.sendtask({
id:row.id,
status:1,
}).then(r=>{
if(r.success){ if(r.success){
this.$Message.info("任务派发成功!"); this.$Message.info("任务派发成功!");
this.search(); this.search();
......
...@@ -56,9 +56,10 @@ ...@@ -56,9 +56,10 @@
</div> </div>
<div class="body-document"> <div class="body-document">
<h4 v-text="title"></h4> <h4 v-text="title"></h4>
<keep-alive>
<component v-bind:is="detail" :eid="eid" :data="entity"></component> <component v-bind:is="detail" :eid="eid" :data="entity"></component>
</keep-alive> <!-- <keep-alive>
</keep-alive> -->
</div> </div>
</div> </div>
</template> </template>
......
<template>
<div>
<div class="formBg">
<Form ref="formInline" :model="easySearch" inline>
<FormItem style="float:right">
<Button type="primary" @click="add" v-if="false">新增记录</Button>
</FormItem>
</Form>
</div>
<div>
<div class="group">
<Row>
<Col span="24">
<Timeline v-if="recordList&&recordList.length>0">
<TimelineItem v-for="(item,index) in recordList" :key="index" v-if="recordList&&recordList.length>0">
<p class="content">{{item.creationTime}}</p>
<p class="content">
操作员:<User :value="item.creatorUserId"></User>
</p>
<p class="content">
工时:{{item.workHour}}
</p>
<p class="content">
标题:{{item.title}}
</p>
<p class="pl10" v-if="item.note"><a @click="view(item.id)">查看详细</a></p>
<p class="pl10" v-if="item.attachment"><a @click="viewFiles(item.attachment)">查看附件</a></p>
</TimelineItem>
</Timeline>
<p class="content" v-else>暂无数据</p>
</Col>
</Row>
</div>
</div>
<Modal v-model="modal" :title="title" width="1200" footer-hide>
<component :is="detail" :eid="curId" @on-close="cancel" @on-ok="ok" />
</Modal>
<Modal v-model="modalFiles" title="查看附件" width="800" footer-hide :mask-closable="false">
<FilesView ref="refFile" :parms="parms" />
</Modal>
</div>
</template>
<script>
import Api from './api'
import Search from './search'
export default {
name: 'list',
components: {
Search
},
head: {
title: "项目的工作记录",
author: "henq",
description: "project_plan_record 10/20/2020 2:55:13 PM",
},
props: {
eid: String
},
data() {
return {
action: Api.index,
easySearch: {
keys: {
op: "title",
value: null
}
},
modalFiles: false,
modal: false,
title: "新增",
detail: null,
curId: '',
columns: [{
key: "id",
title: this.$t("id"),
hide: true,
align: "left",
high: true
},
{
key: "creationTime",
title: this.l("creationTime"),
align: "left",
high: true
},
{
key: "creatorUserId",
title: this.l("creatorUserId"),
align: "left",
high: true
},
{
key: "lastModificationTime",
title: this.l("lastModificationTime"),
align: "left",
high: true
},
{
key: "lastModifierUserId",
title: this.l("lastModifierUserId"),
align: "left",
high: true
},
{
key: "isDeleted",
title: this.l("isDeleted"),
align: "left",
high: true
},
{
key: "deletionTime",
title: this.l("deletionTime"),
align: "left",
high: true
},
{
key: "deleterUserId",
title: this.l("deleterUserId"),
align: "left",
high: true
},
{
key: "projectId",
title: this.l("projectId"),
align: "left",
high: true
},
{
key: "planId",
title: this.l("planId"),
align: "left",
high: true
},
{
key: "workHour",
title: this.l("workHour"),
align: "left",
high: true
},
{
key: "status",
title: this.l("status"),
align: "left",
high: true,
code: 'mes.project_plan_record.Status'
},
{
key: "title",
title: this.l("title"),
align: "left",
easy: true,
high: true
},
{
key: "note",
title: this.l("note"),
align: "left",
high: true
},
{
key: "attachment",
title: this.l("attachment"),
align: "left",
high: true
},
{
key: "taskId",
title: this.l("taskId"),
align: "left",
high: true
},
{
title: '操作',
key: 'action',
width: 140,
align: 'center',
render: (h, params) => {
return h('div', {
class: "action"
}, [
h('op', {
attrs: {
oprate: 'detail'
},
on: {
click: () => this.view(params.row.id)
}
}, '查看'),
//h('op', { attrs: { oprate: 'copy' }, on: { click: () => this.copy(params.row.id) } }, '克隆'),
h('op', {
attrs: {
oprate: 'edit'
},
on: {
click: () => this.edit(params.row.id)
}
}, '编辑'),
h('op', {
attrs: {
oprate: 'delete'
},
on: {
click: () => this.remove(params.row.id)
}
}, '删除')
])
}
},
],
recordList: [],
parms: {
app: "taskRecord",
eid: null,
name: "",
field: "",
},
listTitle: '所有',
listTime: '截止当前:' + this.$u.getToday()
}
},
mounted() {
if (this.eid != '' && this.eid != null) {
this.load(this.eid);
}
},
async fetch({
store,
params
}) {
await store.dispatch('loadDictionary') // 加载数据字典
},
methods: {
load(v) {
//alert("aaa____" + v)
let params = {
conditions: [{
fieldName: "taskId",
fieldValue: v,
conditionalType: "Equal",
}],
sortBy: "creationTime",
isDesc: false,
}
Api.list(params).then(r => {
if (r.success) {
this.recordList = r.result
}
})
},
ok() {
this.load(this.eid)
this.modal = false
this.curId = '';
},
search() {
this.$refs.grid.reload(this.easySearch)
},
add() {
this.curId = this.eid;
this.title = "新增记录";
this.detail = () => import('./add')
this.modal = true;
},
copy(id) {
this.curId = id;
this.title = "克隆";
this.detail = () => import('./add')
this.modal = true;
},
view(id) {
this.curId = id;
this.title = "详情";
this.detail = () => import('./detail')
this.modal = true;
},
edit(id) {
this.curId = id;
this.title = "编辑";
this.detail = () => import('./edit')
this.modal = true;
},
remove(id) {
Api.delete(id).then((r) => {
if (r.success) {
this.$refs.grid.load();
this.$Message.success('删除成功')
}
})
},
cancel() {
this.curId = 0;
this.modal = false
},
viewFiles(val) {
this.parms.eid = val;
this.modalFiles = true;
},
l(key) {
let vkey = "project_plan_record" + "." + key;
return this.$t(vkey) || key
}
},
watch: {
eid(v) {
if (v != '' && v != null) {
this.load(v);
}
}
}
}
</script>
<style lang="less">
.formBg {
padding-top: 10px;
background: #f5f5f5;
line-height: 30px;
}
.formBg .taskMenu .ivu-menu-horizontal {
background: #f5f5f5;
}
.group {
margin-top: 15px;
}
.group .ivu-row {
border: none
}
.time {
font-size: 14px;
font-weight: bold;
}
.content {
padding-left: 5px;
}
.boxBoder {
border: 2px solid #2db7f5;
border-radius: 5px;
padding: 10px 20px
}
.dividerpram {
background-color: #2db7f5;
height: 2px
}
</style>
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
</FormItem> </FormItem>
</Col> </Col>
<Col :span="12"> <Col :span="12">
<FormItem label="计划开始结束时间" prop="date"> <FormItem label="计划起止日期" prop="date">
<DatePicker type="datetimerange" format="yyyy-MM-dd" v-model="date" placeholder="请选择时间范围" @on-change="changeFormat" style="width: 300px"></DatePicker> <DatePicker type="datetimerange" format="yyyy-MM-dd" v-model="date" placeholder="请选择时间范围" @on-change="changeFormat" style="width: 300px"></DatePicker>
</FormItem> </FormItem>
</Col> </Col>
......
<template> <template>
<div class="detail" style="width:100%"> <div class="detail" style="width:100%;overflow:auto">
<div style="width:80%; border-right:1px solid #ccc;padding-right:30px;float:left">
<Row style="height:284px"> <Row style="height:284px">
<Filed :span="6" :name="l('title')">{{entity.title}}</Filed> <Filed :span="12" :name="l('title')">{{entity.title}}</Filed>
<Filed :span="6" :name="l('level')"> <Filed :span="12" :name="l('level')">
<state code="project.task.level" :value="entity.level" type="text"></state> <state code="project.task.level" :value="entity.level" type="text"></state>
</Filed> </Filed>
<Filed :span="6" :name="l('status')"> <Filed :span="12" :name="l('status')">
<state code="project.task.status" :value="entity.status" type="text"></state> <state code="project.task.status" :value="entity.status" type="text"></state>
</Filed> </Filed>
<Filed :span="6" :name="l('userId')"> <Filed :span="12" :name="l('userId')">
<User :value="parseInt(entity.userId)"></User> <User :value="parseInt(entity.userId)"></User>
</Filed> </Filed>
<Filed :span="12" name="计划起止日期"> <Filed :span="12" name="计划起止日期">
...@@ -21,17 +22,25 @@ ...@@ -21,17 +22,25 @@
<Filed :span="24" :name="l('note')"> <Filed :span="24" :name="l('note')">
<div style="height:200px" v-html="entity.note" class="tex_in10"></div> <div style="height:200px" v-html="entity.note" class="tex_in10"></div>
</Filed> </Filed>
<Filed :span="6" :name="l('creationTime')">{{entity.creationTime}}</Filed> <Filed :span="12" :name="l('creationTime')">{{entity.creationTime}}</Filed>
<Filed :span="6" :name="l('creatorUserId')"> <Filed :span="12" :name="l('creatorUserId')">
<User :value="entity.creatorUserId"></User> <User :value="entity.creatorUserId"></User>
</Filed> </Filed>
</Row> </Row>
<component :is="detail" :eid="curId" v-if="false" /> </div>
<div class="rightDiv" :style="{height:divHeight}">
<component :is="detail" :eid="curId" />
</div>
<FooterToolbar class="ftball">
<div class="tip"><Button type="primary" @click="updatepart(2)">完成</Button><Button type="primary" @click="updatepart(3)">冻结</Button><Button @click="handleClose">取消</Button></div>
</FooterToolbar>
</div> </div>
</template> </template>
<script> <script>
import Api from './api' import Api from './api'
import ApiTask from '../task/api'
export default { export default {
name: 'Add', name: 'Add',
data() { data() {
...@@ -45,6 +54,7 @@ export default { ...@@ -45,6 +54,7 @@ export default {
startDate: "", startDate: "",
endDate: "", endDate: "",
}, },
divHeight: '200px',
rules: { rules: {
name: [{ name: [{
required: true, required: true,
...@@ -64,10 +74,18 @@ export default { ...@@ -64,10 +74,18 @@ export default {
props: { props: {
eid: String eid: String
}, },
created() {
this.divHeight = window.innerHeight - 150 + 'px'
},
mounted() { mounted() {
if (this.eid != '' && this.eid != null) { if (this.eid != '' && this.eid != null) {
this.load(this.eid); this.load(this.eid);
} }
window.onresize = () => {
return (() => {
this.divHeight = window.innerHeight - 150 + 'px'
})()
}
}, },
methods: { methods: {
load(v) { load(v) {
...@@ -84,11 +102,35 @@ export default { ...@@ -84,11 +102,35 @@ export default {
endDate: r.result.plansToEndTime, endDate: r.result.plansToEndTime,
}, },
this.$emit('on-load') this.$emit('on-load')
// this.curId = v this.curId = v
//this.detail = () => import('../record/index1') this.detail = () => import('../record/recordTimeLine')
}) })
}, },
updatepart(valStatus) {
let params = {
id: this.eid,
status: valStatus
}
if (valStatus == 1) {
params.startDate = ''
}
if (valStatus == 2) {
params.endDate = ''
}
ApiTask.updatepart(params).then(r => {
if (r.success) {
this.$Message.success('操作成功')
this.$emit('on-ok')
} else {
this.$Message.error('操作失败')
}
}).catch(err => {
this.disabled = false;
this.$Message.error('操作失败')
console.warn(err)
})
},
handleClose() { handleClose() {
this.$emit('on-close') this.$emit('on-close')
}, },
...@@ -112,4 +154,11 @@ export default { ...@@ -112,4 +154,11 @@ export default {
text-indent: 12px; text-indent: 12px;
text-align: inherit !important; text-align: inherit !important;
} }
.rightDiv {
width: 18%;
float: left;
padding-left: 50px;
}
</style> </style>
...@@ -145,7 +145,7 @@ export default { ...@@ -145,7 +145,7 @@ export default {
oprate: 'detail' oprate: 'detail'
}, },
on: { on: {
click: () => this.viewRecord(params.row.id) click: () => this.viewRecord(params.row.id, params.row.status)
} }
}, params.row.title) }, params.row.title)
} }
...@@ -155,29 +155,15 @@ export default { ...@@ -155,29 +155,15 @@ export default {
title: this.l("level"), title: this.l("level"),
align: "center", align: "center",
high: true, high: true,
width: 80,
code: 'project.task.level' code: 'project.task.level'
}, },
{
key: "projectTitle",
title: this.l("projectTitle"),
align: "left",
easy: true,
high: true,
hide: true,
},
{
key: "planTitle",
title: this.l("planTitle"),
align: "left",
easy: true,
high: true,
hide: true,
},
{ {
key: "status", key: "status",
title: this.l("status"), title: this.l("status"),
align: "center", align: "center",
high: true, high: true,
width: 120,
code: 'project.task.status' code: 'project.task.status'
}, },
...@@ -193,7 +179,7 @@ export default { ...@@ -193,7 +179,7 @@ export default {
title: '计划起止日期', title: '计划起止日期',
align: "center", align: "center",
high: true, high: true,
width: 400, width: 200,
render: (h, params) => { render: (h, params) => {
return h('TimeDifference', { return h('TimeDifference', {
props: { props: {
...@@ -211,7 +197,7 @@ export default { ...@@ -211,7 +197,7 @@ export default {
title: '实际起止日期', title: '实际起止日期',
align: "center", align: "center",
high: true, high: true,
width: 400, width: 200,
render: (h, params) => { render: (h, params) => {
return h('TimeDifference', { return h('TimeDifference', {
props: { props: {
...@@ -227,8 +213,9 @@ export default { ...@@ -227,8 +213,9 @@ export default {
{ {
key: "workHour", key: "workHour",
title: this.l("workHour"), title: this.l("workHour"),
align: "center", align: "right",
high: true, high: true,
width: 80,
render: (h, params) => { render: (h, params) => {
return h('a', { return h('a', {
attrs: { attrs: {
...@@ -257,8 +244,9 @@ export default { ...@@ -257,8 +244,9 @@ export default {
{ {
key: "creationTime", key: "creationTime",
title: this.l("creationTime"), title: this.l("creationTime"),
align: "left", align: "center",
high: true, high: true,
width: 150,
}, },
{ {
title: '操作', title: '操作',
...@@ -472,8 +460,9 @@ export default { ...@@ -472,8 +460,9 @@ export default {
onSelect(val) { onSelect(val) {
this.$refs.grid.reload(this.easySearch) this.$refs.grid.reload(this.easySearch)
}, },
viewRecord(id) { viewRecord(id, status) {
this.curId = id; this.curId = id;
this.tastkStatus = status;
this.title = "查看记录"; this.title = "查看记录";
this.fullScreen = true; this.fullScreen = true;
this.detail = () => import('./detail') this.detail = () => import('./detail')
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment