Commit 5b032239 authored by 周远喜's avatar 周远喜

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

parents d9af43cc f2494204
<template>
<div class="files-view">
<Tag v-for="(item, index) in nameList" :key="index" :name="item.id">
<a @click="downFile(item)" target="_blank">{{ item.fileName }}</a>
</Tag>
<Modal
v-model="modal"
title="查看"
width="800"
footer-hide
:mask-closable="false"
>
<div class="img">
<img :src="avatorPath" width="100%" height="100%" />
</div>
</Modal>
</div>
</template>
<script>
export default {
name: "",
data() {
return {
downUrl: fileUrlDown,
avatorPath: "",
nameList: [],
modal: false,
};
},
props: {
parms: {
type: [String, Object],
default: "",
},
},
mounted() {
if (this.parms.eid) {
this.filesList();
}
},
methods: {
filesList() {
//查询上传到文件服务器上的文件
this.$http.sysUser.getFile(this.parms).then((res) => {
if (res.data != [] && res.data.length > 0) {
var items = [];
res.data.forEach((data) => {
let objImag = {};
objImag.fileName = data.fileName;
objImag.filePath = data.downloadPath;
objImag.id = data.id;
objImag.fileType = data.fileType;
items.push(objImag);
});
this.nameList = items;
}
});
},
downFile(item) {
console.log(item);
if (
item.fileType == "jpg" ||
item.fileType == "gif" ||
item.fileType == "png"
) {
this.avatorPath = this.downUrl + item.filePath;
this.modal = true;
} else {
window.open(this.downUrl + item.filePath, "_blank");
}
},
},
watch: {
"parms.eid"(v) {
if (v) {
this.filesList();
}
},
},
};
</script>
<style lang="less">
.files-view {
}
</style>
......@@ -39,7 +39,7 @@
</div>
</div>
<Select v-else :placeholder="placeholder" v-model="name" @on-change="change" :multiple="multiple" :departmentId="departmentId" clearable filterable>
<Select v-else :placeholder="placeholder" v-model="name" @on-change="change" :multiple="multiple" :departmentId="departmentId" clearable filterable transfer>
<Option v-for="item in datas ? datas : dic" :value="item.value" :key="item.value" :label="item.label">
<div>
{{ item.label }}
......
......@@ -1911,5 +1911,9 @@ export default {
status: '状态',
groupName: '项目组名称',
groupId: '项目组Id',
authority:'权限',
whour:'可用工日',
whourpd:'可用工时/天',
joindate:'加入日期'
}
}
......@@ -97,7 +97,7 @@ export default {
this.entity = this.$u.clone(this.v)
},
eid(v) {
if (v != '') {
if (v != '' && v != null) {
this.load(v);
}
}
......
<template>
<div class="full">
<div>
<DataGrid :columns="columns" ref="grid" :action="action"><template slot="easySearch">
<Form ref="formInline" :model="easySearch" inline>
<FormItem prop="keys"><Input placeholder="请输入关键字名称" v-model="easySearch.keys.value" /> </FormItem>
......@@ -125,7 +125,7 @@ export default {
}
},
mounted() {
console.log(this);
//.log(this);
},
async fetch({
store,
......
......@@ -8,30 +8,16 @@
</Col>
<Col :span="12">
<FormItem :label="l('role')" prop="role">
<Dictionary code="mes.project_group_user.Role" v-model="entity.role"></Dictionary>
</FormItem>
</Col>
<Col :span="12">
<FormItem :label="l('projectId')" prop="projectId">
<InputNumber v-model="entity.projectId"></InputNumber>
</FormItem>
</Col>
<Col :span="12">
<FormItem :label="l('planId')" prop="planId">
<InputNumber v-model="entity.planId"></InputNumber>
</FormItem>
</Col>
<Col :span="12">
<FormItem :label="l('note')" prop="note"> <Input v-model="entity.note"> </Input>
<Dictionary code="project.group.role" v-model="entity.role"></Dictionary>
</FormItem>
</Col>
<Col :span="12">
<FormItem :label="l('status')" prop="status">
<Dictionary code="mes.project_group_user.Status" v-model="entity.status"></Dictionary>
<Dictionary code="project.group.status" v-model="entity.status"></Dictionary>
</FormItem>
</Col>
<Col :span="12">
<FormItem :label="l('groupName')" prop="groupName"> <Input v-model="entity.groupName"> </Input>
<FormItem :label="l('note')" prop="note"> <Input v-model="entity.note"> </Input>
</FormItem>
</Col>
<Col :span="12">
......@@ -130,7 +116,7 @@ export default {
this.entity = this.$u.clone(this.v)
},
eid(v) {
if (v > 0) {
if (v != '' && v != null) {
this.load(v);
}
}
......
......@@ -3,7 +3,7 @@
<Row>
<Col :span="12">
<FormItem :label="l('userId')" prop="userId">
<InputNumber v-model="entity.userId"></InputNumber>
<UserSelect ref="userSelected" v-model="entity.userId" />
</FormItem>
</Col>
<Col :span="12">
......@@ -12,14 +12,14 @@
</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('status')" prop="status">
<Dictionary code="project.group.status" v-model="entity.status"></Dictionary>
</FormItem>
</Col>
<Col :span="24">
<FormItem :label="l('note')" prop="note"> <Input v-model="entity.note"> </Input>
</FormItem>
</Col>
</Row>
<FormItem>
<Button type="primary" @click="handleSubmit" :disabled="disabled">保存</Button>
......@@ -41,7 +41,19 @@ export default {
required: true,
message: '必填',
trigger: 'blur'
}]
}],
userId: [{
required: true,
message: "请选择人员",
trigger: "change",
type: "number"
}],
role: [{
required: true,
message: "请选择角色",
trigger: "change",
type: "number"
}],
}
}
},
......
......@@ -186,7 +186,7 @@ export default {
}
},
mounted() {
console.log(this);
//console.log(this);
},
async fetch({
store,
......
......@@ -2,15 +2,54 @@
<div>
<Table border :columns="columns" :data="list" ref="table" class="tableCommon" stripe>
<template slot-scope="{ row, index }" slot="userId">
<span v-if="edit != index" v-text="row.userId"></span>
<Input v-else type="text" v-model.trim="cur.userId" />
<User v-if="edit != index" :value="row.userId"></User>
<UserSelect v-else ref="userSelected" v-model="cur.userId" />
</template>
<template slot-scope="{ row, index }" slot="role">
<state v-if="edit != index" code="project.group.role" :value="row.role" type="text"></state>
<Dictionary v-else code="project.group.role" v-model="cur.role"></Dictionary>
</template>
<template slot-scope="{ row, index }" slot="status">
<state v-if="edit != index" code="project.group.status" :value="row.status" type="text"></state>
<Dictionary v-else code="project.group.status" v-model="cur.status"></Dictionary>
</template>
<template slot-scope="{ row, index }" slot="joindate">
<span v-if="edit != index" v-text="row.joindate"></span>
<DatePicker v-else v-model="cur.joindate" type="date" transfer placeholder="请选择加入日期" @on-change="getTime"></DatePicker>
</template>
<template slot-scope="{ row, index }" slot="whour">
<span v-if="edit != index" v-text="row.whour"></span>
<InputNumber v-else type="text" v-model.trim="cur.whour" />
</template>
<template slot-scope="{ row, index }" slot="whourpd">
<span v-if="edit != index" v-text="row.whourpd"></span>
<InputNumber v-else type="text" v-model.trim="cur.whourpd" />
</template>
<template slot-scope="{ row, index }" slot="authority">
<state v-if="edit != index" code="project.group.authority" :value="row.authority" type="text"></state>
<Dictionary v-else code="project.group.authority" v-model="cur.authority" @on-change="changeAuthority"></Dictionary>
</template>
<template slot-scope="{ row, index }" slot="note">
<span v-if="edit != index" v-text="row.note"></span>
<Input v-else type="text" v-model.trim="cur.note" />
</template>
<template slot-scope="{ row, index }" slot="action">
<div v-if="edit != index" class="action">
<op class="edit" @click="editRow(row,index)" :disabled="edit != -1" :style="{'color': edit != -1?'#ccc':'' }">编辑</op>
<op class="remove" @click="delRow(row.id)" :disabled="edit != -1" :style="{'color': edit != -1?'#ccc':'' }">删除</op>
</div>
<div class="action" v-else>
<op class="edit" @click="save">保存</op>
<op class="remove" @click="remove(row,index)">取消</op>
</div>
</template>
</Table>
<div class="footerWidth"><Button type="primary" long @click="addList">新增人员</Button></div>
<div class="footerWidth"><Button type="primary" long @click="addList" :disabled="edit != -1">新增人员</Button></div>
<!--
<Modal v-model="modal" :title="title" width="1200" footer-hide>
<component :is="detail" :eid="curId" @on-close="cancel" @on-ok="ok" />
</Modal>
-->
</div>
</template>
......@@ -31,70 +70,86 @@ export default {
detail: null,
curId: '',
edit: -1,
authorityCount: 0, //列表中权限里是否存在项目经理(列表中唯一)
authorityCur: 0, //当前行的权限 值
cur: {
id: '',
userId: null,
role: null,
status: null,
whour: 14,
whourpd: 7.0,
authority: null,
note: ''
},
columns: [{
type: "index",
title: '编号',
align: "right",
width: 80
}, {
key: "userId",
title: this.l("userId"),
align: "left",
high: true,
type: 'user',
width: 150,
slot: 'userId'
},
{
key: "role",
title: this.l("role"),
align: "left",
high: true,
code: 'project.group.role'
align: "center",
width: 180,
slot: 'role'
},
{
key: "status",
title: this.l("status"),
align: "left",
high: true,
code: 'project.group.status'
align: "center",
width: 150,
slot: 'status'
},
{
key: "joindate",
title: this.l("joindate"),
align: "center",
width: 180,
slot: 'joindate'
},
{
key: "whour",
title: this.l("whour"),
align: "right",
width: 150,
slot: 'whour'
},
{
key: "whourpd",
title: this.l("whourpd"),
align: "right",
width: 150,
slot: 'whourpd'
},
{
key: "authority",
title: this.l("authority"),
align: "center",
width: 200,
slot: 'authority'
},
{
key: "note",
title: this.l("note"),
align: "left",
high: true
slot: 'note'
},
{
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)
}
}, '删除')
])
}
slot: 'action',
},
],
list: []
......@@ -126,27 +181,175 @@ export default {
Api.list(params).then(r => {
if (r.success) {
this.list = r.result
this.getAuthority()
}
})
},
//获取是否权限里有项目经理选项
getAuthority() {
if (this.list.length > 0) {
this.list.forEach(el => {
if (el.authority == 1) {
this.authorityCount = 1
}
//截取加入日期
if (el.joindate && el.joindate.length >= 10) {
el.joindate = el.joindate.substr(0, 10)
}
})
}
},
//新增
addList() {
this.edit = this.list.length;
this.cur = {
userId: null,
role: null,
status: null,
joindate: '',
whour: 14,
whourpd: 7.0,
authority: null,
note: ''
};
this.authorityCur = 0
this.list.push(this.cur);
},
//编辑
editRow(row, index) {
// let lastListGroupId = this.list[this.list.length - 1].groupId
// if (lastListGroupId == undefined) {
// this.list.pop();
// }
this.cur.id = row.id
this.cur.userId = row.userId
this.cur.role = row.role
this.cur.status = row.status
this.cur.authority = row.authority
this.cur.joindate = row.joindate ? row.joindate : ''
this.cur.whour = row.whour ? row.whour : 14
this.cur.whourpd = row.whourpd ? row.whourpd : 7.0
this.cur.note = row.note
this.authorityCur = row.authority
this.edit = index
},
//选择权限
changeAuthority(val) {
if (this.authorityCur != 1 && this.authorityCount == 1 && val == 1) {
this.$Message.error("已存在权限:项目经理,请选择其他权限!")
this.cur.authority = null
}
},
//选择加入日期
getTime(value) {
if (value != '') {
this.cur.joindate = this.getFormatDateStart(
value
);
} else {
this.cur.joindate = ''
}
},
//删除
delRow(id) {
Api.delete(id).then((r) => {
if (r.success) {
this.load(this.eid)
this.$Message.success('删除成功')
this.edit = -1;
}
})
},
//新增时取消
remove(row, index) {
if (!row.id || !row.groupId) {
this.list.pop();
}
this.edit = -1;
},
//新增保存或修改保存
save() {
this.cur.groupId = this.eid
if (this.cur.userId == null || this.cur.userId == '') {
this.$Message.error("请选择人员");
return;
}
if (this.cur.role == null || this.cur.role == '') {
this.$Message.error("请选择人员角色");
return;
}
if (this.cur.joindate == null || this.cur.joindate == '') {
this.$Message.error("请选择人员加入日期");
return;
}
if (this.cur.authority == null || this.cur.authority == '') {
this.$Message.error("请选择人员权限");
return;
}
this.getTime(this.cur.joindate) //格式加入时间
if (this.cur.id && this.cur.id != '') { //人员修改
Api.update(this.cur).then((r) => {
this.disabled = false;
if (r.success) {
this.$Message.success('修改成功')
this.edit = -1
this.load(this.eid)
} else {
this.$Message.error('修改失败')
}
}).catch(err => {
this.disabled = false;
this.$Message.error('修改失败')
console.warn(err)
})
} else { //人员新增
Api.create(this.cur).then((r) => {
this.disabled = false;
if (r.success) {
this.$Message.success('保存成功')
this.edit = -1
this.load(this.eid)
} else {
this.$Message.error('保存失败')
}
}).catch(err => {
this.disabled = false;
this.$Message.error('保存失败')
console.warn(err)
})
}
},
getFormatDateStart(dates) {
const d = new Date(dates);
const resDate =
d.getFullYear() +
"-" +
this.p(d.getMonth() + 1) +
"-" +
this.p(d.getDate()) +
" 00:00:01";
return resDate;
},
p(s) {
return s < 10 ? "0" + s : s;
},
l(key) {
let vkey = "project_group_user" + "." + key;
return this.$t(vkey) || key
},
//old弹框模式方法start
ok() {
this.load(this.eid)
this.modal = false
this.curId = '';
},
add() {
this.curId = 0;
alert(this.eid)
this.curId = '';
this.title = "新增";
this.detail = () => import('./add')
this.modal = true;
},
addList() {
this.edit = this.list.length;
this.cur = {
userId: null,
};
this.list.push(this.cur);
},
copy(id) {
this.curId = id;
this.title = "克隆";
......@@ -159,28 +362,17 @@ export default {
this.detail = () => import('./detail')
this.modal = true;
},
edit(id) {
editRow1(id) {
this.curId = id;
this.title = "编辑";
this.detail = () => import('./edit')
this.modal = true;
},
remove(id) {
Api.delete(id).then((r) => {
if (r.success) {
this.load(this.eid)
this.$Message.success('删除成功')
}
})
},
cancel() {
this.curId = this.eid;
this.modal = false
},
l(key) {
let vkey = "project_group_user" + "." + key;
return this.$t(vkey) || key
}
//old弹框模式方法end
},
watch: {
eid(v) {
......
......@@ -53,7 +53,6 @@ export default {
detail: null,
curId: this.eid,
avatorPath: "",
downUrl: fileUrlDown,
entity: {},
rules: {
name: [{ required: true, message: "必填", trigger: "blur" }],
......
......@@ -47,7 +47,6 @@ export default {
data() {
return {
avatorPath: "",
downUrl: fileUrlDown,
entity: this.row,
parms: {
app: "material",
......
......@@ -123,6 +123,15 @@
>
<component :is="detail" :eid="curId" @on-close="cancel" @on-ok="ok" />
</Modal>
<Modal
v-model="modal1"
title="查看附件"
width="800"
footer-hide
:mask-closable="false"
>
<FilesView ref="refFile" :parms="parms" class="files-detail" />
</Modal>
</div>
</template>
<script>
......@@ -235,21 +244,21 @@ export default {
);
},
},
// {
// key: "attachment",
// title: this.l("attachment"),
// align: "center",
// high: true,
// render: (h, params) => {
// return h(
// "a",
// {
// on: { click: () => this.view(params.row.id) },
// },
// "查看附件"
// );
// },
// },
{
key: "attachment",
title: this.l("attachment"),
align: "center",
high: true,
render: (h, params) => {
return h(
"a",
{
on: { click: () => this.viewFiles(params.row) },
},
"查看附件"
);
},
},
// {
// key: "phase",
// title: this.l("phase"),
......@@ -285,12 +294,7 @@ export default {
);
},
},
// {
// key: "businessUnits",
// title: this.l("businessUnits"),
// align: "left",
// high: true,
// },
{
key: "creationTime",
title: this.l("creationTime"),
......@@ -304,6 +308,13 @@ export default {
high: true,
type: "user",
},
{
key: "note",
title: this.l("note"),
align: "left",
high: true,
tooltip: true,
},
{
title: "操作",
key: "action",
......@@ -343,10 +354,17 @@ export default {
typeInfo: "table",
iconInfo: "md-list",
titleInfo: "列表模式",
parms: {
app: "material",
eid: null,
name: "",
field: "",
},
modal1: false,
};
},
mounted() {
console.log(this);
this.parms.eid = this.$u.guid();
},
async fetch({ store, params }) {
await store.dispatch("loadDictionary"); // 加载数据字典
......@@ -388,6 +406,12 @@ export default {
console.log(row);
window.open(fileUrlDown + row.picture, "_blank");
},
viewFiles(row) {
console.log(row);
this.parms.eid = row.attachment;
this.modal1 = true;
},
ok() {
this.$refs.grid.load();
this.modal = false;
......@@ -538,4 +562,7 @@ export default {
}
}
}
.files-detail {
min-height: 300px;
}
</style>
\ No newline at end of file
......@@ -51,6 +51,8 @@ import NewInputFile from '@/components/page/newInputFile.vue'
import imgUploadFile from '@/components/page/imgUploadFile.vue'
import files from '@/components/page/files.vue'
import FilesList from '@/components/page/filesList.vue'
import FilesView from '@/components/page/filesView.vue'
import DataGrid from '@/components/page/dataGrid.vue'
import TreeGrid from '@/components/page/treeGrid/index.vue'
import EditGrid from '@/components/page/treeGrid/editGrid.vue'
......@@ -113,6 +115,7 @@ Vue.component("imgUploadFile", imgUploadFile)
Vue.component("InputIcon", InputIcon)
Vue.component("files", files)
Vue.component("FilesList", FilesList)
Vue.component("FilesView", FilesView)
Vue.component("DataGrid", DataGrid)
Vue.component("TreeGrid", TreeGrid)
Vue.component("EditGrid", EditGrid)
......
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