Commit 3ac2c634 authored by renjintao's avatar renjintao

项目任务......

parent b642e412
...@@ -17,7 +17,9 @@ ...@@ -17,7 +17,9 @@
</FormItem> </FormItem>
</Col> </Col>
<Col :span="12"> <Col :span="12">
<FormItem :label="l('attachment')" prop="attachment"> <Input v-model="entity.attachment"> </Input> <FormItem :label="l('attachment')" prop="attachment">
<files ref="refFile" :parms="parms" files />
</Input>
</FormItem> </FormItem>
</Col> </Col>
</Row> </Row>
...@@ -56,6 +58,12 @@ export default { ...@@ -56,6 +58,12 @@ export default {
attachment: "", attachment: "",
taskId: "" taskId: ""
}, },
parms: {
app: "taskRecord",
eid: null,
name: "",
field: "",
},
rules: { rules: {
name: [{ name: [{
required: true, required: true,
...@@ -72,12 +80,18 @@ export default { ...@@ -72,12 +80,18 @@ export default {
mounted() { mounted() {
if (this.eid != "") { if (this.eid != "") {
this.load(this.eid); this.load(this.eid);
this.parms.eid = this.$u.guid();
} }
}, },
methods: { methods: {
handleSubmit() { handleSubmit() {
this.$refs.form.validate((v) => { this.$refs.form.validate((v) => {
if (v) { if (v) {
if (this.$refs.refFile.nameList.length > 0) {
this.entity.attachment = this.parms.eid;
} else {
this.entity.attachment = "";
}
this.disabled = true; this.disabled = true;
this.entity.taskId = this.eid this.entity.taskId = this.eid
Api.create(this.entity).then((r) => { Api.create(this.entity).then((r) => {
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<Form ref="formInline" :model="easySearch" inline> <Form ref="formInline" :model="easySearch" inline>
<FormItem> <FormItem>
<div class="taskMenu"> <div class="taskMenu">
<Menu mode="horizontal" active-name="2" @on-select="onSelect"> <Menu mode="horizontal" active-name="2">
<MenuItem name="1"> <MenuItem name="1">
所有 所有
</MenuItem> </MenuItem>
...@@ -73,14 +73,28 @@ ...@@ -73,14 +73,28 @@
</Col> </Col>
<Col span="19"> <Col span="19">
<div class="boxBoder"> <div class="boxBoder">
<Timeline> <Timeline v-if="recordList&&recordList.length>0">
<TimelineItem v-for="(item,index) in recordList" :key="index"> <TimelineItem v-for="(item,index) in recordList" :key="index" v-if="recordList&&recordList.length>0">
<p class="content">{{item.creationTime}}</p> <p class="content">{{item.creationTime}}</p>
<p class="content"> <p class="content">
<User :value="item.creatorUserId"></User> 关闭了 任务 1089 测试任务 <User :value="item.creatorUserId"></User>&nbsp;&nbsp;新增:{{item.title}}&nbsp;&nbsp;
<!--
<Tooltip max-width="400" v-if="item.note">
<a>详细信息</a>
<div slot="content">
<div v-html=" item.note"></div>
</div>
</Tooltip>
&nbsp;&nbsp;
-->
</p> </p>
<p v-if="item.note">
<div class="pl10" v-html="item.note"></div>
</p>
<p class="pl10" v-if="item.attachment"><a @click="viewFiles(item.attachment)">查看附件</a></p>
</TimelineItem> </TimelineItem>
</Timeline> </Timeline>
<p class="content" v-else>暂无数据</p>
</div> </div>
</Col> </Col>
</Row> </Row>
...@@ -89,6 +103,9 @@ ...@@ -89,6 +103,9 @@
<Modal v-model="modal" :title="title" width="1200" footer-hide> <Modal v-model="modal" :title="title" width="1200" footer-hide>
<component :is="detail" :eid="curId" @on-close="cancel" @on-ok="ok" /> <component :is="detail" :eid="curId" @on-close="cancel" @on-ok="ok" />
</Modal> </Modal>
<Modal v-model="modalFiles" title="查看附件" width="800" footer-hide :mask-closable="false">
<FilesView ref="refFile" :parms="parms" />
</Modal>
</div> </div>
</template> </template>
...@@ -117,6 +134,7 @@ export default { ...@@ -117,6 +134,7 @@ export default {
value: null value: null
} }
}, },
modalFiles: false,
modal: false, modal: false,
title: "新增", title: "新增",
detail: null, detail: null,
...@@ -258,7 +276,13 @@ export default { ...@@ -258,7 +276,13 @@ export default {
} }
}, },
], ],
recordList: [] recordList: [],
parms: {
app: "taskRecord",
eid: null,
name: "",
field: "",
},
} }
}, },
mounted() { mounted() {
...@@ -335,6 +359,10 @@ export default { ...@@ -335,6 +359,10 @@ export default {
this.curId = 0; this.curId = 0;
this.modal = false this.modal = false
}, },
viewFiles(val) {
this.parms.eid = val;
this.modalFiles = true;
},
l(key) { l(key) {
let vkey = "project_plan_record" + "." + key; let vkey = "project_plan_record" + "." + key;
return this.$t(vkey) || key return this.$t(vkey) || key
......
<template> <template>
<div class="detail"> <div class="detail" style="width:100%">
<Row style="height:180px"> <Row style="height:284px">
<Filed :span="6" :name="l('creationTime')">{{entity.creationTime}}</Filed> <Filed :span="6" :name="l('creationTime')">{{entity.creationTime}}</Filed>
<Filed :span="6" :name="l('creatorUserId')"> <Filed :span="6" :name="l('creatorUserId')">
<User :value="entity.creatorUserId"></User> <User :value="entity.creatorUserId"></User>
</Filed> </Filed>
<Filed :span="6" :name="l('title')">{{entity.title}}</Filed> <Filed :span="6" :name="l('title')">{{entity.title}}</Filed>
<Filed :span="6" :name="l('level')">{{entity.level}}</Filed> <Filed :span="6" :name="l('level')">
<Filed :span="6" :name="l('status')">{{entity.status}}</Filed> <state code="project.task.level" :value="entity.level" type="text"></state>
<Filed :span="6" :name="l('projectTitle')">{{entity.projectTitle}}</Filed> </Filed>
<Filed :span="6" :name="l('planTitle')">{{entity.planTitle}}</Filed> <Filed :span="6" :name="l('status')">
<state code="project.task.status" :value="entity.status" type="text"></state>
</Filed>
<Filed :span="6" :name="l('userId')">{{entity.userId}}</Filed> <Filed :span="6" :name="l('userId')">{{entity.userId}}</Filed>
<Filed :span="6" :name="l('startDate')">{{entity.startDate}}</Filed>
<Filed :span="6" :name="l('endDate')">{{entity.endDate}}</Filed> <Filed :span="6" :name="l('endDate')">{{entity.endDate}}</Filed>
<Filed :span="12">&nbsp;</Filed> <Filed :span="6" :name="l('startDate')">{{entity.startDate}}</Filed>
<Filed :span="24" :name="l('note')">{{entity.note}}</Filed> <Filed :span="24" :name="l('note')">
<div style="height:200px" v-html="entity.note" class="tex_in10"></div>
</Filed>
</Row> </Row>
<component :is="detail" :eid="curId" /> <component :is="detail" :eid="curId" />
</div> </div>
...@@ -81,3 +83,10 @@ export default { ...@@ -81,3 +83,10 @@ export default {
} }
} }
</script> </script>
<style scoped>
.tex_in10 {
text-indent: 12px;
text-align: inherit !important;
}
</style>
...@@ -6,74 +6,19 @@ ...@@ -6,74 +6,19 @@
</FormItem> </FormItem>
</Col> </Col>
<Col :span="12"> <Col :span="12">
<FormItem :label="l('planId')" prop="planId">
<Input v-model="entity.planId"></Input>
</FormItem>
</Col>
<Col :span="12">
<FormItem :label="l('projectId')" prop="projectId">
<Input v-model="entity.projectId"></Input>
</FormItem>
</Col>
<Col :span="12">
<FormItem :label="l('level')" prop="level"> <FormItem :label="l('level')" prop="level">
<Dictionary code="project.task.level" v-model="entity.level"></Dictionary> <Dictionary code="project.task.level" v-model="entity.level"></Dictionary>
</FormItem> </FormItem>
</Col> </Col>
<Col :span="12"> <Col :span="12">
<FormItem :label="l('status')" prop="status">
<Dictionary code="project.task.status" v-model="entity.status"></Dictionary>
</FormItem>
</Col>
<Col :span="12">
<FormItem :label="l('projectTitle')" prop="projectTitle"> <Input v-model="entity.projectTitle"> </Input>
</FormItem>
</Col>
<Col :span="12">
<FormItem :label="l('planTitle')" prop="planTitle"> <Input v-model="entity.planTitle"> </Input>
</FormItem>
</Col>
<Col :span="24">
<FormItem :label="l('userIds')" prop="userIds"> <Input v-model="entity.userIds" type="textarea" :rows="5"></Input>
</FormItem>
</Col>
<Col :span="12">
<FormItem :label="l('userId')" prop="userId"> <FormItem :label="l('userId')" prop="userId">
<UserSelect ref="userSelected" v-model="entity.userId" /></Input> <UserSelect ref="userSelected" v-model="entity.userId" /></Input>
</FormItem> </FormItem>
</Col> </Col>
<Col :span="12">
<FormItem :label="l('startDate')" prop="startDate">
<DatePicker type="date" v-model="entity.startDate"></DatePicker>
</FormItem>
</Col>
<Col :span="12">
<FormItem :label="l('endDate')" prop="endDate">
<DatePicker type="date" v-model="entity.endDate"></DatePicker>
</FormItem>
</Col>
<Col :span="12">
<FormItem :label="l('plansToStartDate')" prop="plansToStartDate">
<DatePicker type="date" v-model="entity.plansToStartDate"></DatePicker>
</FormItem>
</Col>
<Col :span="12">
<FormItem :label="l('plansToEndTime')" prop="plansToEndTime">
<DatePicker type="date" v-model="entity.plansToEndTime"></DatePicker>
</FormItem>
</Col>
<Col :span="12">
<FormItem :label="l('completePercentage')" prop="completePercentage">
<InputNumber v-model="entity.completePercentage"></InputNumber>
</FormItem>
</Col>
<Col :span="24"> <Col :span="24">
<FormItem :label="l('note')" prop="note"> <Input v-model="entity.note"> </Input> <FormItem :label="l('note')" prop="note">
</FormItem> <i-quill v-model="entity.note" :height="300" v-paste="handleImg" /></Input>
</Col>
<Col :span="12">
<FormItem :label="l('upTaskId')" prop="upTaskId">
<Input v-model="entity.upTaskId"></Input>
</FormItem> </FormItem>
</Col> </Col>
</Row> </Row>
...@@ -89,8 +34,12 @@ import { ...@@ -89,8 +34,12 @@ import {
replace replace
} from 'lodash'; } from 'lodash';
import Api from './api' import Api from './api'
import iQuill from '@/components/quill'
export default { export default {
name: 'Edit', name: 'Edit',
components: {
iQuill
},
data() { data() {
return { return {
disabled: false, disabled: false,
...@@ -150,6 +99,27 @@ export default { ...@@ -150,6 +99,27 @@ export default {
handleClose() { handleClose() {
this.$emit('on-close') this.$emit('on-close')
}, },
handleImg(e) {
console.warn(e)
let file = null
if (
e.clipboardData &&
e.clipboardData.items[0] &&
e.clipboardData.items[0].type &&
e.clipboardData.items[0].type.indexOf('image') > -1
) {
//这里就是判断是否有粘贴进来的文件且文件为图片格式
file = e.clipboardData.items[0].getAsFile()
let reader = new FileReader()
reader.readAsDataURL(file)
setTimeout(() => {
var img = '<img src="' + reader.result + '" alt=""/>'
this.entity.note += img
}, 1000)
// new R
}
},
l(key) { l(key) {
key = "project_task" + "." + key; key = "project_task" + "." + key;
return this.$t(key) return this.$t(key)
......
...@@ -108,12 +108,14 @@ export default { ...@@ -108,12 +108,14 @@ export default {
detail: null, detail: null,
curId: '', curId: '',
fullScreen: false, fullScreen: false,
columns: [{ columns: [
key: "selection", // {
type: "selection", // key: "selection",
width: 50, // type: "selection",
align: "center" // width: 50,
}, { // align: "center"
// },
{
key: "id", key: "id",
title: this.$t("id"), title: this.$t("id"),
align: "left", align: "left",
...@@ -179,14 +181,12 @@ export default { ...@@ -179,14 +181,12 @@ export default {
title: this.l("startDate"), title: this.l("startDate"),
align: "center", align: "center",
high: true, high: true,
type: 'date'
}, },
{ {
key: "endDate", key: "endDate",
title: this.l("endDate"), title: this.l("endDate"),
align: "center", align: "center",
high: true, high: true,
type: 'date'
}, },
{ {
key: "note", key: "note",
...@@ -252,6 +252,17 @@ export default { ...@@ -252,6 +252,17 @@ export default {
click: () => params.row.status != 0 ? this.updatestatus(params.row.id, 3) : null click: () => params.row.status != 0 ? this.updatestatus(params.row.id, 3) : null
} }
}), }),
h('op', {
attrs: {
icon: "md-add",
type: "icon",
title: params.row.status != 3 ? "新增备注" : "无法操作",
color: params.row.status != 3 ? "#19be6b" : "#ccc",
},
on: {
click: () => params.row.status != 0 ? this.updatestatus(params.row.id, 3) : null
}
}),
h('op', { h('op', {
attrs: { attrs: {
icon: "ios-create-outline", icon: "ios-create-outline",
......
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