Commit e7c84fbe authored by 周远喜's avatar 周远喜

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

parents 073a6da5 4f89e496
<template> <template>
<div class="time-view">{{ date }}</div> <div class="time-view" v-if="timeValue.startDate && timeValue.endDate">
<span>{{ timeValue.startDate }}</span
>&nbsp; <span class="line">————</span>&nbsp;
<!-- {{ date }} -->
<span>{{ timeValue.endDate }}</span>
<div class="jian-tou"></div>
<div class="day-time">{{ date }}</div>
</div>
</template> </template>
<script> <script>
export default { export default {
...@@ -8,14 +15,18 @@ export default { ...@@ -8,14 +15,18 @@ export default {
return {}; return {};
}, },
props: { props: {
// model: {
// prop: "value",
// event: "on-change",
// },
timeValue: { timeValue: {
type: [String, Object], type: [String, Object],
default: "", default: "",
}, },
// mode: { work: {
// type: [String, Object], type: [String, Number], //传入的work为0,转换为小时,1为天,2为周,3为月
// default: "", default: 0,
// }, },
}, },
computed: { computed: {
date() { date() {
...@@ -24,33 +35,42 @@ export default { ...@@ -24,33 +35,42 @@ export default {
var date3 = 0; var date3 = 0;
date3 = date2 - date1; date3 = date2 - date1;
var timeSpanStr; // var timeSpanStr;
if (date3 <= 1000 * 60 * 1) { // if (date3 <= 1000 * 60 * 1) {
timeSpanStr = "刚刚"; // timeSpanStr = "刚刚";
} else if (1000 * 60 * 1 < date3 && date3 <= 1000 * 60 * 60) { // } else if (1000 * 60 * 1 < date3 && date3 <= 1000 * 60 * 60) {
timeSpanStr = Math.round(date3 / (1000 * 60)) + "分钟"; // timeSpanStr = Math.round(date3 / (1000 * 60)) + "分钟";
} else if (1000 * 60 * 60 * 1 < date3 && date3 <= 1000 * 60 * 60 * 24) { // } else if (1000 * 60 * 60 * 1 < date3 && date3 <= 1000 * 60 * 60 * 24) {
timeSpanStr = Math.round(date3 / (1000 * 60 * 60)) + "小时"; // timeSpanStr = Math.round(date3 / (1000 * 60 * 60)) + "小时";
} else if ( // } else if (
1000 * 60 * 60 * 24 < // 1000 * 60 * 60 * 24 <
date3 // date3
// && date3 <= 1000 * 60 * 60 * 24 * 30 // // && date3 <= 1000 * 60 * 60 * 24 * 30
) { // ) {
timeSpanStr = Math.round(date3 / (1000 * 60 * 60 * 24)) + "天"; // timeSpanStr = Math.round(date3 / (1000 * 60 * 60 * 24)) + "天";
} // }
return timeSpanStr; // return timeSpanStr;
// var result = ""; var result = "";
// var minute = 1000 * 60; var minute = 1000 * 60;
// var hour = minute * 60; var hour = minute * 60;
// var day = hour * 24; var day = hour * 24;
// var month = day * 30; var month = day * 30;
// if (date3 < 0) return; if (date3 < 0) return;
// var monthC = date3 / month; var monthC = date3 / month;
// var weekC = date3 / (7 * day); var weekC = date3 / (7 * day);
// var dayC = date3 / day; var dayC = date3 / day;
// var hourC = date3 / hour; var hourC = date3 / hour;
// var minC = date3 / minute; var minC = date3 / minute;
if (this.work == 3) {
result = "" + parseInt(monthC) + "月";
} else if (this.work == 2) {
result = "" + parseInt(weekC) + "周";
} else if (this.work == 1) {
result = "" + parseInt(dayC) + "天";
} else if (this.work == 0) {
result = "" + parseInt(hourC) + "小时";
}
// if (monthC >= 1) { // if (monthC >= 1) {
// result = "" + parseInt(monthC) + "月"; // result = "" + parseInt(monthC) + "月";
// } else if (weekC >= 1) { // } else if (weekC >= 1) {
...@@ -59,12 +79,14 @@ export default { ...@@ -59,12 +79,14 @@ export default {
// result = "" + parseInt(dayC) + "天"; // result = "" + parseInt(dayC) + "天";
// } else if (hourC >= 1) { // } else if (hourC >= 1) {
// result = "" + parseInt(hourC) + "小时"; // result = "" + parseInt(hourC) + "小时";
// } else if (minC >= 1) { // }
// else if (minC >= 1) {
// result = "" + parseInt(minC) + "分钟"; // result = "" + parseInt(minC) + "分钟";
// } else {
// result = "刚刚";
// } // }
// return result; else {
result = "0";
}
return result;
}, },
}, },
mounted() {}, mounted() {},
...@@ -73,4 +95,26 @@ export default { ...@@ -73,4 +95,26 @@ export default {
}; };
</script> </script>
<style lang="less"> <style lang="less">
.time-view {
width: 300px;
position: relative;
.day-time {
position: absolute;
bottom: 11px;
left: 83px;
}
.line {
font-size: 18px;
}
.jian-tou {
position: absolute;
bottom: 9px;
left: 144px;
width: 7px;
height: 7px;
border-top: 2px solid #666;
border-right: 2px solid #666;
transform: rotate(45deg);
}
}
</style> </style>
...@@ -1244,7 +1244,7 @@ export default { ...@@ -1244,7 +1244,7 @@ export default {
remark: '备注', remark: '备注',
extend: '扩展字段', extend: '扩展字段',
outsideTime: '外协工期', outsideTime: '外协工期',
performanceHours: '绩效工时', performanceHours: '绩效单件工时',
isImportantResources: '关重资源', isImportantResources: '关重资源',
schedulingWorkingHours: '*排产准结工时', //准备工时? schedulingWorkingHours: '*排产准结工时', //准备工时?
realWorkingHours: '实作准结工时', realWorkingHours: '实作准结工时',
......
This diff is collapsed.
...@@ -23,7 +23,10 @@ ...@@ -23,7 +23,10 @@
</Col> </Col>
<Col :span="24"> <Col :span="24">
<FormItem :label="l('relatedPerson')" prop="relatedPerson"> <FormItem :label="l('relatedPerson')" prop="relatedPerson">
<UserSelect v-model="entity.relatedPerson" placeholder="请选择相关人员"></UserSelect> <UserSelect
v-model="entity.relatedPerson"
placeholder="请选择相关人员"
></UserSelect>
</FormItem> </FormItem>
</Col> </Col>
</Row> </Row>
...@@ -53,7 +56,12 @@ export default { ...@@ -53,7 +56,12 @@ export default {
remark: "", remark: "",
}, },
rules: { rules: {
name: [{ required: true, message: "必填", trigger: "blur" }], pauseCause: [
{ required: true, message: "必填", trigger: "blur", type: "number" },
],
relatedPerson: [
{ required: true, message: "必填", trigger: "blur", type: "number" },
],
}, },
}; };
}, },
...@@ -127,10 +135,11 @@ export default { ...@@ -127,10 +135,11 @@ export default {
return this.$t(key); return this.$t(key);
}, },
}, },
// watch: { watch: {
// v() { "entity.relatedPerson"(v) {
// this.entity = this.$u.clone(this.v) alert(typeof v);
// } // this.entity = this.$u.clone(this.v)
// } },
},
}; };
</script> </script>
\ No newline at end of file
<template> <template>
<Form ref="form" :model="entity" :rules="rules" :label-width="90"> <Form ref="form" :model="entity" :rules="rules" :label-width="100">
<Row> <Row>
<Col span="8" class="projct-img"> <Col span="8" class="projct-img">
<FormItem :label="l('picture')" prop="picture"> <FormItem :label="l('picture')" prop="picture">
...@@ -72,29 +72,28 @@ ...@@ -72,29 +72,28 @@
><FormItem :label="l('state')" prop="state"> ><FormItem :label="l('state')" prop="state">
<Dictionary <Dictionary
code="project.main.state" code="project.main.state"
type="radio"
v-model="entity.state" v-model="entity.state"
></Dictionary> </FormItem ></Dictionary> </FormItem
></Col> ></Col>
<Col :span="12" <Col :span="12">
><FormItem :label="l('startDate')" prop="startDate"> <FormItem label="开始结束时间" prop="date">
<DatePicker <DatePicker
type="date" type="datetimerange"
v-model="entity.startDate" format="yyyy-MM-dd"
v-model="date"
placeholder="请选择时间范围"
@on-change="changeFormat"
style="width: 300px"
></DatePicker> </FormItem ></DatePicker> </FormItem
></Col> ></Col>
<Col :span="12" <!-- <TimeDifference :timeValue="timeValue" :wrok="1"></TimeDifference> -->
><FormItem :label="l('endDate')" prop="endDate">
<DatePicker
type="date"
v-model="entity.endDate"
></DatePicker> </FormItem
></Col>
<TimeDifference :timeValue="timeValue"></TimeDifference>
<Col :span="12" <Col :span="12"
><FormItem :label="l('type')" prop="type"> ><FormItem :label="l('type')" prop="type">
<Dictionary <Dictionary
code="project.main.type" code="project.main.type"
v-model="entity.type" v-model="entity.type"
type="radio"
></Dictionary> </FormItem ></Dictionary> </FormItem
></Col> ></Col>
<!-- <!--
...@@ -144,6 +143,7 @@ export default { ...@@ -144,6 +143,7 @@ export default {
}, },
imgName: "", imgName: "",
avatorPath: "", avatorPath: "",
date: [],
entity: { entity: {
// creationTime: null, // creationTime: null,
creatorUserId: this.$store.state.userInfo.userId, creatorUserId: this.$store.state.userInfo.userId,
...@@ -154,11 +154,12 @@ export default { ...@@ -154,11 +154,12 @@ export default {
// deleterUserId: null, // deleterUserId: null,
title: "", title: "",
note: "", note: "",
state: null, state: 1,
type: null, type: 0,
picture: "", picture: "",
attachment: "", attachment: "",
phase: null, phase: null,
startDate: "", startDate: "",
endDate: "", endDate: "",
businessUnits: "", businessUnits: "",
...@@ -187,6 +188,10 @@ export default { ...@@ -187,6 +188,10 @@ export default {
this.parms.eid = this.$u.guid(); this.parms.eid = this.$u.guid();
}, },
methods: { methods: {
changeFormat(val) {
this.entity.startDate = val[0];
this.entity.endDate = val[1];
},
imgUrl() { imgUrl() {
window.open(this.avatorPath, "_blank"); window.open(this.avatorPath, "_blank");
}, },
......
<template> <template>
<Form ref="form" :model="entity" :rules="rules" :label-width="90"> <Form ref="form" :model="entity" :rules="rules" :label-width="100">
<Row> <Row>
<Col span="8" class="projct-img"> <Col span="8" class="projct-img">
<FormItem :label="l('picture')" prop="picture"> <FormItem :label="l('picture')" prop="picture">
...@@ -30,10 +30,21 @@ ...@@ -30,10 +30,21 @@
<Dictionary <Dictionary
code="project.main.state" code="project.main.state"
v-model="entity.state" v-model="entity.state"
type="radio"
></Dictionary> </FormItem ></Dictionary> </FormItem
></Col> ></Col>
<Col :span="12">
<Col :span="12" <FormItem label="开始结束时间" prop="date">
<DatePicker
type="datetimerange"
format="yyyy-MM-dd"
v-model="date"
placeholder="请选择时间范围"
@on-change="changeFormat"
style="width: 300px"
></DatePicker> </FormItem
></Col>
<!-- <Col :span="12"
><FormItem :label="l('startDate')" prop="startDate"> ><FormItem :label="l('startDate')" prop="startDate">
<DatePicker <DatePicker
type="date" type="date"
...@@ -46,12 +57,13 @@ ...@@ -46,12 +57,13 @@
type="date" type="date"
v-model="entity.endDate" v-model="entity.endDate"
></DatePicker> </FormItem ></DatePicker> </FormItem
></Col> ></Col> -->
<Col :span="12" <Col :span="12"
><FormItem :label="l('type')" prop="type"> ><FormItem :label="l('type')" prop="type">
<Dictionary <Dictionary
code="project.main.type" code="project.main.type"
v-model="entity.type" v-model="entity.type"
type="radio"
></Dictionary> </FormItem ></Dictionary> </FormItem
></Col> ></Col>
<Col :span="24"> <Col :span="24">
...@@ -96,7 +108,11 @@ export default { ...@@ -96,7 +108,11 @@ export default {
return { return {
imgName: "", imgName: "",
avatorPath: "", avatorPath: "",
entity: {}, entity: {
state: 1,
type: 0,
},
date: [],
rules: { rules: {
title: [{ required: true, message: "必填", trigger: "blur" }], title: [{ required: true, message: "必填", trigger: "blur" }],
}, },
...@@ -116,6 +132,11 @@ export default { ...@@ -116,6 +132,11 @@ export default {
this.$refs.refmovieFile1.inputShow = false; this.$refs.refmovieFile1.inputShow = false;
}, },
methods: { methods: {
changeFormat(val) {
// console.log(val)
this.entity.startDate = val[0];
this.entity.endDate = val[1];
},
imgUrl() { imgUrl() {
window.open(this.avatorPath, "_blank"); window.open(this.avatorPath, "_blank");
}, },
...@@ -123,14 +144,21 @@ export default { ...@@ -123,14 +144,21 @@ export default {
Api.get({ id: v }).then((r) => { Api.get({ id: v }).then((r) => {
this.entity = r.result; this.entity = r.result;
this.avatorPath = fileUrlDown + r.result.picture; this.avatorPath = fileUrlDown + r.result.picture;
this.imgName = r.result.picture; if (r.result.picture) {
this.imgName = r.result.picture;
}
if (r.result.attachment && r.result.attachment != "") { if (r.result.attachment && r.result.attachment != "") {
this.parms.eid = r.result.attachment; this.parms.eid = r.result.attachment;
} else { } else {
this.parms.eid = this.$u.guid(); this.parms.eid = this.$u.guid();
} }
this.entity.attachment = this.parms.eid; this.entity.attachment = this.parms.eid;
// this.entity.creatorUserId = r.result.creatorUserId; // let data0 = r.result.startDate.slice(0, 10);
// let data1 = r.result.endDate.slice(0, 10);
// this.date[0] = JSON.parse(data0);
// this.date[1] = JSON.parse(data1);
// console.log(this.date);
// console.log(typeof this.date[1]);
}); });
}, },
handleSubmit() { handleSubmit() {
......
...@@ -214,6 +214,16 @@ export default { ...@@ -214,6 +214,16 @@ export default {
align: "left", align: "left",
easy: true, easy: true,
high: true, high: true,
render: (h, params) => {
return h(
"op",
{
attrs: { oprate: "detail" },
on: { click: () => this.view(params.row.id) },
},
params.row.title
);
},
}, },
{ {
key: "state", key: "state",
...@@ -322,14 +332,14 @@ export default { ...@@ -322,14 +332,14 @@ export default {
align: "center", align: "center",
render: (h, params) => { render: (h, params) => {
return h("div", { class: "action" }, [ return h("div", { class: "action" }, [
h( // h(
"op", // "op",
{ // {
attrs: { oprate: "detail" }, // attrs: { oprate: "detail" },
on: { click: () => this.view(params.row.id) }, // on: { click: () => this.view(params.row.id) },
}, // },
"查看" // "查看"
), // ),
//h('op', { attrs: { oprate: 'copy' }, on: { click: () => this.copy(params.row.id) } }, '克隆'), //h('op', { attrs: { oprate: 'copy' }, on: { click: () => this.copy(params.row.id) } }, '克隆'),
h( h(
"op", "op",
...@@ -424,10 +434,13 @@ export default { ...@@ -424,10 +434,13 @@ export default {
} }
}, },
viewFiles(row) { viewFiles(row) {
console.log(row); // console.log(row.attachment);
this.parms.eid = row.attachment; if (row.attachment) {
this.parms.eid = row.attachment;
this.modal1 = true; this.modal1 = true;
} else {
this.$Message.error("暂没上传附件");
}
}, },
ok() { ok() {
this.$refs.grid.load(); this.$refs.grid.load();
......
...@@ -8,20 +8,18 @@ ...@@ -8,20 +8,18 @@
</FormItem> </FormItem>
</Col> </Col>
<Col :span="12"> <Col :span="12">
<FormItem :label="l('status')" prop="status">
<Dictionary code="mes.project_plan_record.Status" v-model="entity.status"></Dictionary>
</FormItem>
</Col>
<Col :span="12">
<FormItem :label="l('title')" prop="title"> <Input v-model="entity.title"> </Input> <FormItem :label="l('title')" prop="title"> <Input v-model="entity.title"> </Input>
</FormItem> </FormItem>
</Col> </Col>
<Col :span="12"> <Col :span="24">
<FormItem :label="l('note')" prop="note"> <Input v-model="entity.note"> </Input> <FormItem :label="l('note')" prop="note">
<i-quill v-model="entity.note" :height="300" v-paste="handleImg" /></Input>
</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>
...@@ -34,8 +32,12 @@ ...@@ -34,8 +32,12 @@
<script> <script>
import Api from './api' import Api from './api'
import iQuill from '@/components/quill'
export default { export default {
name: 'Add', name: 'Add',
components: {
iQuill
},
data() { data() {
return { return {
disabled: false, disabled: false,
...@@ -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) => {
...@@ -107,6 +121,27 @@ export default { ...@@ -107,6 +121,27 @@ export default {
this.entity.id = 0; this.entity.id = 0;
}); });
}, },
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_plan_record" + "." + key; key = "project_plan_record" + "." + key;
return this.$t(key) return this.$t(key)
......
...@@ -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>
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
</div> </div>
</FormItem> </FormItem>
<FormItem style="float:right"> <FormItem style="float:right">
<Button type="primary" @click="add">新增</Button> <Button type="primary" @click="add">新增记录</Button>
</FormItem> </FormItem>
</Form> </Form>
</div> </div>
...@@ -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
......
...@@ -5,71 +5,19 @@ ...@@ -5,71 +5,19 @@
<FormItem :label="l('title')" prop="title"> <Input v-model="entity.title"> </Input> <FormItem :label="l('title')" prop="title"> <Input v-model="entity.title"> </Input>
</FormItem> </FormItem>
</Col> </Col>
<Col :span="12"> <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('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="12" v-if="false">
<FormItem :label="l('planId')" prop="planId">
<Input v-model="entity.planId"></Input>
</FormItem>
</Col>
<Col :span="12" v-if="false">
<FormItem :label="l('projectId')" prop="projectId">
<Input v-model="entity.projectId"></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" />
</FormItem> </FormItem>
</Col> </Col>
<Col :span="24"> <Col :span="24">
<FormItem :label="l('userIds')" prop="userIds"> <Input v-model="entity.userIds" type="textarea" :rows="5"></Input> <FormItem :label="l('note')" prop="note">
</FormItem> <i-quill v-model="entity.note" :height="300" v-paste="handleImg" />
</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="12">
<FormItem :label="l('note')" prop="note"> <Input v-model="entity.note"> </Input>
</FormItem>
</Col>
<Col :span="12">
<FormItem :label="l('upTaskId')" prop="upTaskId">
<InputNumber v-model="entity.upTaskId"></InputNumber>
</FormItem> </FormItem>
</Col> </Col>
</Row> </Row>
...@@ -82,8 +30,12 @@ ...@@ -82,8 +30,12 @@
<script> <script>
import Api from './api' import Api from './api'
import iQuill from '@/components/quill'
export default { export default {
name: 'Add', name: 'Add',
components: {
iQuill
},
data() { data() {
return { return {
disabled: false, disabled: false,
...@@ -169,6 +121,27 @@ export default { ...@@ -169,6 +121,27 @@ export default {
this.entity.id = 0; this.entity.id = 0;
}); });
}, },
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)
......
<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')">
<Filed :span="6" :name="l('userIds')">{{entity.userIds}}</Filed> <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('endDate')">{{entity.endDate}}</Filed> <Filed :span="6" :name="l('endDate')">{{entity.endDate}}</Filed>
<Filed :span="6" :name="l('note')">{{entity.note}}</Filed>
<Filed :span="6" :name="l('startDate')">{{entity.startDate}}</Filed> <Filed :span="6" :name="l('startDate')">{{entity.startDate}}</Filed>
<Filed :span="6" :name="l('plansToStartDate')">{{entity.plansToStartDate}}</Filed> <Filed :span="24" :name="l('note')">
<Filed :span="6" :name="l('plansToEndTime')">{{entity.plansToEndTime}}</Filed> <div style="height:200px" v-html="entity.note" class="tex_in10"></div>
<Filed :span="6" :name="l('completePercentage')">{{entity.completePercentage}}</Filed> </Filed>
<Filed :span="6" :name="l('upTaskId')">{{entity.upTaskId}}</Filed>
</Row> </Row>
<component :is="detail" :eid="curId" /> <component :is="detail" :eid="curId" />
</div> </div>
...@@ -84,3 +83,10 @@ export default { ...@@ -84,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>
...@@ -85,9 +30,16 @@ ...@@ -85,9 +30,16 @@
</template> </template>
<script> <script>
import {
replace
} 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,
...@@ -121,6 +73,7 @@ export default { ...@@ -121,6 +73,7 @@ export default {
id: v id: v
}).then(r => { }).then(r => {
this.entity = r.result; this.entity = r.result;
this.entity.userId = parseInt(r.result.userId)
}) })
}, },
handleSubmit() { handleSubmit() {
...@@ -146,6 +99,27 @@ export default { ...@@ -146,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",
...@@ -131,7 +133,7 @@ export default { ...@@ -131,7 +133,7 @@ export default {
oprate: 'detail' oprate: 'detail'
}, },
on: { on: {
click: () => this.addRecord(params.row.id) click: () => this.viewRecord(params.row.id)
} }
}, params.row.title) }, params.row.title)
} }
...@@ -179,34 +181,12 @@ export default { ...@@ -179,34 +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: "plansToStartDate",
title: this.l("plansToStartDate"),
align: "center",
high: true,
type: 'date'
},
{
key: "plansToEndTime",
title: this.l("plansToEndTime"),
align: "center",
high: true,
type: 'date'
},
{
key: "completePercentage",
title: this.l("completePercentage"),
align: "left",
high: true
}, },
{ {
key: "note", key: "note",
...@@ -272,6 +252,17 @@ export default { ...@@ -272,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.addRecord(params.row.id) : null
}
}),
h('op', { h('op', {
attrs: { attrs: {
icon: "ios-create-outline", icon: "ios-create-outline",
...@@ -408,11 +399,18 @@ export default { ...@@ -408,11 +399,18 @@ export default {
onSelect(val) { onSelect(val) {
this.$refs.grid.reload(this.easySearch) this.$refs.grid.reload(this.easySearch)
}, },
viewRecord(id) {
this.curId = id;
this.title = "查看记录";
this.fullScreen = true;
this.detail = () => import('./detail')
this.modal = true;
},
addRecord(id) { addRecord(id) {
this.curId = id; this.curId = id;
this.title = "新增记录"; this.title = "新增记录";
this.fullScreen = true; this.fullScreen = true;
this.detail = () => import('./detail') this.detail = () => import('../record/add')
this.modal = true; this.modal = true;
}, },
l(key) { l(key) {
......
...@@ -85,22 +85,39 @@ ...@@ -85,22 +85,39 @@
</Col> </Col>
<Col :span="6"> <Col :span="6">
<FormItem :label="l('equipType')" prop="equipTypeId"> <FormItem :label="l('equipType')" prop="equipTypeId">
<EquipTypeSelect v-model="entity.equipTypeId" @on-change="equipChange"></EquipTypeSelect> <EquipTypeSelect
v-model="entity.equipTypeId"
@on-change="equipChange"
></EquipTypeSelect>
</FormItem> </FormItem>
</Col> </Col>
<Col :span="6"> <Col :span="6">
<FormItem :label="l('resourceType')" prop="resourceType"> <FormItem :label="l('resourceType')" prop="resourceType">
<ResourceSelect v-model="entity.resource" @on-change="resourceChange"></ResourceSelect> <ResourceSelect
v-model="entity.resource"
@on-change="resourceChange"
></ResourceSelect>
</FormItem> </FormItem>
</Col> </Col>
<Col :span="6"> <Col :span="6">
<FormItem :label="l('isImportant')" prop="isImportant"> <FormItem :label="l('isImportant')" prop="isImportant">
<Dictionary code="Process.state" v-model="entity.isImportant" type="radio"></Dictionary> <Dictionary
code="Process.state"
v-model="entity.isImportant"
type="radio"
></Dictionary>
</FormItem> </FormItem>
</Col> </Col>
<Col :span="6"> <Col :span="6">
<FormItem :label="l('isParticipateIntime')" prop="isParticipateIntime"> <FormItem
<Dictionary code="Process.state" v-model="entity.isParticipateIntime" type="radio"></Dictionary> :label="l('isParticipateIntime')"
prop="isParticipateIntime"
>
<Dictionary
code="Process.state"
v-model="entity.isParticipateIntime"
type="radio"
></Dictionary>
</FormItem> </FormItem>
</Col> </Col>
<!-- <Col :span="8"> <!-- <Col :span="8">
...@@ -128,6 +145,19 @@ ...@@ -128,6 +145,19 @@
<InputTime v-model="entity.realWorkingHours" /> <InputTime v-model="entity.realWorkingHours" />
</FormItem> </FormItem>
</Col>--> </Col>-->
<Col :span="12">
<FormItem
:label="l('performanceWorkingHours')"
prop="performanceWorkingHours"
>
<InputTime v-model="entity.performanceWorkingHours" />
</FormItem>
</Col>
<Col :span="12">
<FormItem :label="l('performanceHours')" prop="performanceHours">
<InputTime v-model="entity.performanceHours" />
</FormItem>
</Col>
<Col :span="4"> <Col :span="4">
<FormItem :label="l('efficiencyValue')" prop="efficiencyValue"> <FormItem :label="l('efficiencyValue')" prop="efficiencyValue">
<InputNumber v-model="entity.efficiencyValue"></InputNumber> <InputNumber v-model="entity.efficiencyValue"></InputNumber>
...@@ -144,11 +174,14 @@ ...@@ -144,11 +174,14 @@
code="Process.state" code="Process.state"
v-model="entity.isOutside" v-model="entity.isOutside"
type="radio" type="radio"
style="height:20px" style="height: 20px"
></Dictionary> ></Dictionary>
</FormItem> </FormItem>
</Col> </Col>
<Col :span="12" :style="{visibility:entity.isOutside==1?'visible':'hidden'}"> <Col
:span="12"
:style="{ visibility: entity.isOutside == 1 ? 'visible' : 'hidden' }"
>
<FormItem :label="l('outsideTime')" prop="outsideTime"> <FormItem :label="l('outsideTime')" prop="outsideTime">
<InputTime v-model="entity.outsideTime" /> <InputTime v-model="entity.outsideTime" />
</FormItem> </FormItem>
...@@ -156,7 +189,12 @@ ...@@ -156,7 +189,12 @@
<Divider /> <Divider />
<Col :span="24"> <Col :span="24">
<FormItem :label="l('taskContent')" prop="taskContent"> <FormItem :label="l('taskContent')" prop="taskContent">
<i-quill v-model="entity.taskContent" :height="260" v-paste="handleImg" border /> <i-quill
v-model="entity.taskContent"
:height="260"
v-paste="handleImg"
border
/>
</FormItem> </FormItem>
</Col> </Col>
</Row> </Row>
...@@ -196,6 +234,8 @@ export default { ...@@ -196,6 +234,8 @@ export default {
realRuntime: 0, realRuntime: 0,
isParticipateIntime: 0, isParticipateIntime: 0,
equipType: "", equipType: "",
performanceWorkingHours: 0,
performanceHours: 0,
}, },
rules: { rules: {
name: [{ required: true, message: "必填", trigger: "blur" }], name: [{ required: true, message: "必填", trigger: "blur" }],
......
...@@ -85,22 +85,39 @@ ...@@ -85,22 +85,39 @@
</Col> </Col>
<Col :span="6"> <Col :span="6">
<FormItem :label="l('equipType')" prop="equipTypeId"> <FormItem :label="l('equipType')" prop="equipTypeId">
<EquipTypeSelect v-model="entity.equipTypeId" @on-change="equipChange"></EquipTypeSelect> <EquipTypeSelect
v-model="entity.equipTypeId"
@on-change="equipChange"
></EquipTypeSelect>
</FormItem> </FormItem>
</Col> </Col>
<Col :span="6"> <Col :span="6">
<FormItem :label="l('resourceType')" prop="resourceType"> <FormItem :label="l('resourceType')" prop="resourceType">
<ResourceSelect v-model="entity.resource" @on-change="resourceChange"></ResourceSelect> <ResourceSelect
v-model="entity.resource"
@on-change="resourceChange"
></ResourceSelect>
</FormItem> </FormItem>
</Col> </Col>
<Col :span="6"> <Col :span="6">
<FormItem :label="l('isImportant')" prop="isImportant"> <FormItem :label="l('isImportant')" prop="isImportant">
<Dictionary code="Process.state" v-model="entity.isImportant" type="radio"></Dictionary> <Dictionary
code="Process.state"
v-model="entity.isImportant"
type="radio"
></Dictionary>
</FormItem> </FormItem>
</Col> </Col>
<Col :span="6"> <Col :span="6">
<FormItem :label="l('isParticipateIntime')" prop="isParticipateIntime"> <FormItem
<Dictionary code="Process.state" v-model="entity.isParticipateIntime" type="radio"></Dictionary> :label="l('isParticipateIntime')"
prop="isParticipateIntime"
>
<Dictionary
code="Process.state"
v-model="entity.isParticipateIntime"
type="radio"
></Dictionary>
</FormItem> </FormItem>
</Col> </Col>
<!-- <Col :span="8"> <!-- <Col :span="8">
...@@ -128,6 +145,19 @@ ...@@ -128,6 +145,19 @@
<InputTime v-model="entity.realWorkingHours" /> <InputTime v-model="entity.realWorkingHours" />
</FormItem> </FormItem>
</Col>--> </Col>-->
<Col :span="12">
<FormItem
:label="l('performanceWorkingHours')"
prop="performanceWorkingHours"
>
<InputTime v-model="entity.performanceWorkingHours" />
</FormItem>
</Col>
<Col :span="12">
<FormItem :label="l('performanceHours')" prop="performanceHours">
<InputTime v-model="entity.performanceHours" />
</FormItem>
</Col>
<Col :span="4"> <Col :span="4">
<FormItem :label="l('efficiencyValue')" prop="efficiencyValue"> <FormItem :label="l('efficiencyValue')" prop="efficiencyValue">
<InputNumber v-model="entity.efficiencyValue"></InputNumber> <InputNumber v-model="entity.efficiencyValue"></InputNumber>
...@@ -144,11 +174,14 @@ ...@@ -144,11 +174,14 @@
code="Process.state" code="Process.state"
v-model="entity.isOutside" v-model="entity.isOutside"
type="radio" type="radio"
style="height:20px" style="height: 20px"
></Dictionary> ></Dictionary>
</FormItem> </FormItem>
</Col> </Col>
<Col :span="12" :style="{visibility:entity.isOutside==1?'visible':'hidden'}"> <Col
:span="12"
:style="{ visibility: entity.isOutside == 1 ? 'visible' : 'hidden' }"
>
<FormItem :label="l('outsideTime')" prop="outsideTime"> <FormItem :label="l('outsideTime')" prop="outsideTime">
<InputTime v-model="entity.outsideTime" /> <InputTime v-model="entity.outsideTime" />
</FormItem> </FormItem>
...@@ -156,7 +189,12 @@ ...@@ -156,7 +189,12 @@
<Divider /> <Divider />
<Col :span="24"> <Col :span="24">
<FormItem :label="l('taskContent')" prop="taskContent"> <FormItem :label="l('taskContent')" prop="taskContent">
<i-quill v-model="entity.taskContent" :height="260" v-paste="handleImg" border /> <i-quill
v-model="entity.taskContent"
:height="260"
v-paste="handleImg"
border
/>
</FormItem> </FormItem>
</Col> </Col>
</Row> </Row>
......
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