diff --git a/src/common/js/util.js b/src/common/js/util.js
index ea607759..cdff579f 100644
--- a/src/common/js/util.js
+++ b/src/common/js/util.js
@@ -1,26 +1,110 @@
var SIGN_REGEXP = /([yMdhsmH])(\1*)/g
var DEFAULT_PATTERN = 'yyyy-MM-dd'
+
function padding(s, len) {
var len = len - (s + '').length
- for (var i = 0; i < len; i++) { s = '0' + s }
+ for (var i = 0; i < len; i++) {
+ s = '0' + s
+ }
return s
}
+
+
export default {
+
+ getPositionTop(node) {
+ var top = node.offsetTop;
+ var parent = node.offsetParent;
+ while(parent != null) {
+ top += parent.offsetTop;
+ parent = parent.offsetParent;
+ }
+ return top;
+ },
+ /**
+ * 获取时间的前后几分钟
+ * @param {starTime,endTime} string yyyy-MM-dd HH:ss string yyyy-MM-dd HH:ss
+ * @return {formatdate} string
+ */
+ timeDifference(starTime, endTime) {
+ //转成时间戳
+ if (starTime) {
+ let starDate = new Date(starTime),
+ endDate = new Date(endTime)
+ let starStamps = starDate.getTime(),
+ endStamps = endDate.getTime(),
+ betweenStamps = ''
+ betweenStamps = Math.abs((parseInt(endStamps - starStamps)))
+
+ let minute = parseInt(betweenStamps / 60000) //取分钟
+ return minute
+ } else {
+ console.log('时间空')
+ }
+
+ },
+ /**
+ * 获取时间的前后几分钟
+ * @param {dateTime,type,minuteNum} string yyyy-MM-dd HH:mm:ss string number
+ * @return {formatdate} string
+ */
+ getAboutTime(dateTime, minuteNum) {
+ let string = dateTime.replace(/-/g, "/"),
+ date = new Date(string),
+ timeStamps = '',
+ dateObj = '',
+ hour = '',
+ minute = '',
+ formatdate = ''
+ timeStamps = date.setTime(date.getTime() - parseInt(minuteNum) * 60000)
+ dateObj = new Date(timeStamps)
+
+ hour = dateObj.getHours()
+ if (hour < 10) {
+ hour = '0' + hour
+ }
+ minute = dateObj.getMinutes()
+ if (minute < 10) {
+ minute = '0' + minute
+ }
+
+ formatdate = hour + ":" + minute //设置时间格式
+ return formatdate
+ },
+ //时间2020-09-30
+ getDate() {
+ var date = new Date()
+ var myyear = date.getFullYear();
+ var mymonth = date.getMonth() + 1;
+ var myweekday = date.getDate();
+ if (mymonth < 10) {
+ mymonth = "0" + mymonth;
+ }
+ if (myweekday < 10) {
+ myweekday = "0" + myweekday;
+ }
+
+ return (myyear + "-" + mymonth + "-" + myweekday);
+ },
+
getQueryStringByName: function(name) {
var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i')
var r = window.location.search.substr(1).match(reg)
var context = ''
- if (r != null) { context = r[2] }
+ if (r != null) {
+ context = r[2]
+ }
reg = null
r = null
return context == null || context == '' || context == 'undefined' ? '' : context
},
- fmoney(s,n) {
+ fmoney(s, n) {
n = n > 0 && n <= 20 ? n : 2;
s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + "";
- var l = s.split(".")[0].split("").reverse(), r = s.split(".")[1];
+ var l = s.split(".")[0].split("").reverse(),
+ r = s.split(".")[1];
var t = "";
for (let i = 0; i < l.length; i++) {
t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");
@@ -29,26 +113,26 @@ export default {
},
isNull(obj) {
- if(obj === null || obj === '' || obj === undefined) {
- return true;
+ if (obj === null || obj === '' || obj === undefined) {
+ return true;
}
return false;
},
/**
* 字段转成驼峰命名
- * @param {*} name
+ * @param {*} name
*/
toCamel(name) {
- return name.replace(/\_(\w)/g, function(all, letter){
- return letter.toUpperCase();
+ return name.replace(/\_(\w)/g, function(all, letter) {
+ return letter.toUpperCase();
});
},
/**
* 驼峰转下横线
- * @param {*} name
+ * @param {*} name
*/
toLine(name) {
- return name.replace(/([A-Z])/g,"_$1").toLowerCase();
+ return name.replace(/([A-Z])/g, "_$1").toLowerCase();
},
formatDate: {
@@ -56,14 +140,22 @@ export default {
pattern = pattern || DEFAULT_PATTERN
return pattern.replace(SIGN_REGEXP, function($0) {
switch ($0.charAt(0)) {
- case 'y': return padding(date.getFullYear(), $0.length)
- case 'M': return padding(date.getMonth() + 1, $0.length)
- case 'd': return padding(date.getDate(), $0.length)
- case 'w': return date.getDay() + 1
- case 'h': return padding(date.getHours(), $0.length)
- case 'H': return padding(date.getHours(), $0.length)
- case 'm': return padding(date.getMinutes(), $0.length)
- case 's': return padding(date.getSeconds(), $0.length)
+ case 'y':
+ return padding(date.getFullYear(), $0.length)
+ case 'M':
+ return padding(date.getMonth() + 1, $0.length)
+ case 'd':
+ return padding(date.getDate(), $0.length)
+ case 'w':
+ return date.getDay() + 1
+ case 'h':
+ return padding(date.getHours(), $0.length)
+ case 'H':
+ return padding(date.getHours(), $0.length)
+ case 'm':
+ return padding(date.getMinutes(), $0.length)
+ case 's':
+ return padding(date.getSeconds(), $0.length)
}
})
},
@@ -76,12 +168,24 @@ export default {
var _int = parseInt(matchs2[i])
var sign = matchs1[i]
switch (sign.charAt(0)) {
- case 'y': _date.setFullYear(_int); break
- case 'M': _date.setMonth(_int - 1); break
- case 'd': _date.setDate(_int); break
- case 'h': _date.setHours(_int); break
- case 'm': _date.setMinutes(_int); break
- case 's': _date.setSeconds(_int); break
+ case 'y':
+ _date.setFullYear(_int);
+ break
+ case 'M':
+ _date.setMonth(_int - 1);
+ break
+ case 'd':
+ _date.setDate(_int);
+ break
+ case 'h':
+ _date.setHours(_int);
+ break
+ case 'm':
+ _date.setMinutes(_int);
+ break
+ case 's':
+ _date.setSeconds(_int);
+ break
}
}
return _date
@@ -90,176 +194,179 @@ export default {
},
},
-
+
//type date/daterange
- pickerOptions: function(type){
- if(type!='datarange'){
- var shortcuts= [{
+ pickerOptions: function(type) {
+ if (type != 'datarange') {
+ var shortcuts = [{
text: '今天',
onClick(picker) {
- picker.$emit('pick', new Date());
+ picker.$emit('pick', new Date());
}
}, {
text: '昨天',
onClick(picker) {
- const date = new Date();
- date.setTime(date.getTime() - 3600 * 1000 * 24);
- picker.$emit('pick', date);
+ const date = new Date();
+ date.setTime(date.getTime() - 3600 * 1000 * 24);
+ picker.$emit('pick', date);
}
}, {
text: '前一周',
onClick(picker) {
- const date = new Date();
- date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
- picker.$emit('pick', date);
+ const date = new Date();
+ date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
+ picker.$emit('pick', date);
}
}, {
text: '前两周',
onClick(picker) {
- const date = new Date();
- date.setTime(date.getTime() - 3600 * 1000 * 24 * 7 * 2);
- picker.$emit('pick', date);
+ const date = new Date();
+ date.setTime(date.getTime() - 3600 * 1000 * 24 * 7 * 2);
+ picker.$emit('pick', date);
}
}, {
text: '前四周',
onClick(picker) {
- const date = new Date();
- date.setTime(date.getTime() - 3600 * 1000 * 24 * 7 * 4);
- picker.$emit('pick', date);
+ const date = new Date();
+ date.setTime(date.getTime() - 3600 * 1000 * 24 * 7 * 4);
+ picker.$emit('pick', date);
}
}, {
text: '后一周',
onClick(picker) {
- const date = new Date();
- date.setTime(date.getTime() + 3600 * 1000 * 24 * 7);
- picker.$emit('pick', date);
+ const date = new Date();
+ date.setTime(date.getTime() + 3600 * 1000 * 24 * 7);
+ picker.$emit('pick', date);
}
}, {
text: '后两周',
onClick(picker) {
- const date = new Date();
- date.setTime(date.getTime() + 3600 * 1000 * 24 * 7 *2);
- picker.$emit('pick', date);
+ const date = new Date();
+ date.setTime(date.getTime() + 3600 * 1000 * 24 * 7 * 2);
+ picker.$emit('pick', date);
}
}, {
text: '后一月',
onClick(picker) {
- const date = new Date();
- date.setTime(date.getTime() + 3600 * 1000 * 24 * 7 * 4);
- picker.$emit('pick', date);
+ const date = new Date();
+ date.setTime(date.getTime() + 3600 * 1000 * 24 * 7 * 4);
+ picker.$emit('pick', date);
}
}, {
text: '后两月',
onClick(picker) {
- const date = new Date();
- date.setTime(date.getTime() + 3600 * 1000 * 24 * 7 * 8);
- picker.$emit('pick', date);
+ const date = new Date();
+ date.setTime(date.getTime() + 3600 * 1000 * 24 * 7 * 8);
+ picker.$emit('pick', date);
}
}, {
text: '后四月',
onClick(picker) {
- const date = new Date();
- date.setTime(date.getTime() + 3600 * 1000 * 24 * 7 * 16);
- picker.$emit('pick', date);
+ const date = new Date();
+ date.setTime(date.getTime() + 3600 * 1000 * 24 * 7 * 16);
+ picker.$emit('pick', date);
}
}]
- return {shortcuts:shortcuts};
- }else{
- var shortcuts= [
- {
+ return {
+ shortcuts: shortcuts
+ };
+ } else {
+ var shortcuts = [{
text: "前一周",
onClick(picker) {
- const end = new Date();
- const start = new Date();
- start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
- picker.$emit("pick", [start, end]);
+ const end = new Date();
+ const start = new Date();
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
+ picker.$emit("pick", [start, end]);
}
},
{
text: "前两周",
onClick(picker) {
- const end = new Date();
- const start = new Date();
- start.setTime(start.getTime() - 3600 * 1000 * 24 * 7 * 2);
- picker.$emit("pick", [start, end]);
+ const end = new Date();
+ const start = new Date();
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 7 * 2);
+ picker.$emit("pick", [start, end]);
}
},
{
- text: "前一个月",
+ text: "前三周",
onClick(picker) {
- const end = new Date();
- const start = new Date();
- start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
- picker.$emit("pick", [start, end]);
+ const end = new Date();
+ const start = new Date();
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 7 * 3);
+ picker.$emit("pick", [start, end]);
}
},
{
- text: "前三个月",
+ text: "前一个月",
onClick(picker) {
- const end = new Date();
- const start = new Date();
- start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
- picker.$emit("pick", [start, end]);
+ const end = new Date();
+ const start = new Date();
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
+ picker.$emit("pick", [start, end]);
}
},
{
- text: "前一年",
+ text: "前三个月",
onClick(picker) {
- const end = new Date();
- const start = new Date();
- start.setTime(start.getTime() - 3600 * 1000 * 24 * 360);
- picker.$emit("pick", [start, end]);
+ const end = new Date();
+ const start = new Date();
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
+ picker.$emit("pick", [start, end]);
}
},
{
text: "后一周",
onClick(picker) {
- const end = new Date();
- const start = new Date();
- end.setTime(start.getTime() + 3600 * 1000 * 24 * 7);
- picker.$emit("pick", [start, end]);
+ const end = new Date();
+ const start = new Date();
+ end.setTime(start.getTime() + 3600 * 1000 * 24 * 7);
+ picker.$emit("pick", [start, end]);
}
},
{
text: "后两周",
onClick(picker) {
- const end = new Date();
- const start = new Date();
- end.setTime(start.getTime() + 3600 * 1000 * 24 * 7 * 2);
- picker.$emit("pick", [start, end]);
+ const end = new Date();
+ const start = new Date();
+ end.setTime(start.getTime() + 3600 * 1000 * 24 * 7 * 2);
+ picker.$emit("pick", [start, end]);
}
},
{
- text: "后一个月",
+ text: "后三周",
onClick(picker) {
- const end = new Date();
- const start = new Date();
- end.setTime(start.getTime() + 3600 * 1000 * 24 * 30);
- picker.$emit("pick", [start, end]);
+ const end = new Date();
+ const start = new Date();
+ end.setTime(start.getTime() + 3600 * 1000 * 24 * 7 * 3);
+ picker.$emit("pick", [start, end]);
}
},
{
- text: "后三个月",
+ text: "后一个月",
onClick(picker) {
- const end = new Date();
- const start = new Date();
- end.setTime(start.getTime() + 3600 * 1000 * 24 * 90);
- picker.$emit("pick", [start, end]);
+ const end = new Date();
+ const start = new Date();
+ end.setTime(start.getTime() + 3600 * 1000 * 24 * 30);
+ picker.$emit("pick", [start, end]);
}
},
{
- text: "后一年",
+ text: "后三个月",
onClick(picker) {
- const end = new Date();
- const start = new Date();
- end.setTime(start.getTime() + 3600 * 1000 * 24 * 360);
- picker.$emit("pick", [start, end]);
+ const end = new Date();
+ const start = new Date();
+ end.setTime(start.getTime() + 3600 * 1000 * 24 * 90);
+ picker.$emit("pick", [start, end]);
}
}
- ]
- return {shortcuts:shortcuts};;
- }
-
+ ]
+ return {
+ shortcuts: shortcuts
+ };;
+ }
+
},
}
diff --git a/src/views/xm/core/xmProjectGroup/XmProjectGroupMng.vue b/src/views/xm/core/xmProjectGroup/XmProjectGroupMng.vue
index 9f800456..c3431ea5 100644
--- a/src/views/xm/core/xmProjectGroup/XmProjectGroupMng.vue
+++ b/src/views/xm/core/xmProjectGroup/XmProjectGroupMng.vue
@@ -41,10 +41,11 @@
新增下级小组
-
+ 查看小组进度
新增下级小组
修改小组信息
新增组员
+ 查看组员
删除小组
@@ -141,8 +142,12 @@
-
-
+
+
+
+
+
+
@@ -166,11 +171,12 @@
import UsersSelect from "@/views/mdp/sys/user/UsersSelect";
import XmProjectGroupStateMng from '../xmProjectGroupState/XmProjectGroupStateMng';//修改界面
+ import XmProjectGroupUserMng from '../xmProjectGroupUser/XmProjectGroupUserMng';//修改界面
export default {
name:'xmProjectGroupMng',
components: {
- XmProjectGroupEdit,VueOkrTree,UsersSelect,XmProjectGroupStateMng,
+ XmProjectGroupEdit,VueOkrTree,UsersSelect,XmProjectGroupStateMng,XmProjectGroupUserMng,
},
props:["visible","selProject" ,"isSelectSingleUser","isSelectMultiUser",'xmProduct','xmIteration'],
computed: {
@@ -298,6 +304,7 @@
groupRoleDescVisible:false,
groupOperSelectVisible:false,
currNodeType:'',//project/product/iteration/group/groupUser
+ groupUserVisible:false,
}
},//end data
methods: {
diff --git a/src/views/xm/core/xmProjectGroupUser/XmProjectGroupUserEdit.vue b/src/views/xm/core/xmProjectGroupUser/XmProjectGroupUserEdit.vue
index 585046b4..8afb0c72 100644
--- a/src/views/xm/core/xmProjectGroupUser/XmProjectGroupUserEdit.vue
+++ b/src/views/xm/core/xmProjectGroupUser/XmProjectGroupUserEdit.vue
@@ -5,44 +5,31 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+ {{editForm.projectId?editForm.projectId:''}}{{editForm.productId?editForm.productId:''}}
-
-
+
+
+
+
+
-
+
+ 是否已加入
+ 是否私人加入
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
@@ -92,7 +79,7 @@
dicts:{},//下拉选择框的所有静态数据 params={categoryId:'all',itemCodes:['sex']} 返回结果 {sex: [{id:'1',name:'男'},{id:'2',name:'女'}]}
editFormRules: {
groupId: [
- //{ required: true, message: '团队编号不能为空', trigger: 'blur' }
+ //{ required: true, message: '小组编号不能为空', trigger: 'blur' }
]
},
editForm: {
diff --git a/src/views/xm/core/xmProjectGroupUser/XmProjectGroupUserMng.vue b/src/views/xm/core/xmProjectGroupUser/XmProjectGroupUserMng.vue
index 1f4acc1b..5539cf5f 100644
--- a/src/views/xm/core/xmProjectGroupUser/XmProjectGroupUserMng.vue
+++ b/src/views/xm/core/xmProjectGroupUser/XmProjectGroupUserMng.vue
@@ -3,31 +3,34 @@
查询
-
-
+
-
-
+
+
+
+
+ {{scope.row.pgClass=='1'?'产品':'项目'}}
+ {{scope.row.pgClass=='1'?scope.row.productId:scope.row.projectId}}
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+ {{scope.row.status=='1'?'已加入':'已退出'}}
+
+
+
+ {{scope.row.isPri=='1'?'是':'否'}}
+
+
+
-
-
-
-
+
@@ -38,12 +41,12 @@
-
+
-
+
@@ -63,7 +66,7 @@
components: {
XmProjectGroupUserEdit,
},
- props:['visible'],
+ props:['visible','xmProjectGroup'],
computed: {
...mapGetters(['userInfo']),
@@ -157,6 +160,10 @@
params.key=this.filters.key
}
+ if(this.xmProjectGroup){
+ params.groupId=this.xmProjectGroup.id
+ }
+
this.load.list = true;
listXmProjectGroupUser(params).then((res) => {
var tips=res.data.tips;
@@ -199,7 +206,7 @@
type: 'warning'
}).then(() => {
this.load.del=true;
- let params = { groupId: row.groupId };
+ let params = { userid:row.userid,groupId: row.groupId };
delXmProjectGroupUser(params).then((res) => {
this.load.del=false;
var tips=res.data.tips;