Commit 0fee44df authored by 周远喜's avatar 周远喜

团队管理

parent a4d2c6db
...@@ -1085,7 +1085,6 @@ html [type=button] { ...@@ -1085,7 +1085,6 @@ html [type=button] {
} }
i { i {
font-size: 16px;
padding: 4px; padding: 4px;
border-radius: 3px; border-radius: 3px;
} }
...@@ -1094,7 +1093,6 @@ html [type=button] { ...@@ -1094,7 +1093,6 @@ html [type=button] {
background: #1890FF; background: #1890FF;
color: #fff; color: #fff;
} }
background: transparent; background: transparent;
} }
...@@ -1105,66 +1103,45 @@ html [type=button] { ...@@ -1105,66 +1103,45 @@ html [type=button] {
a.add { a.add {
color: #249E91; color: #249E91;
} }
// a.add:hover {
// // color: #27AB9D;
// }
a.edit { a.edit {
// color: #32B187;
color: rgb(6, 147, 212) color: rgb(6, 147, 212)
} }
// a.edit:hover {
// color: #35BD90
// }
a.remove, a.remove,
a.delete { a.delete {
color: #FF7A8B;
i:hover { i:hover {
background: #FF7A8B; background: orange;
color: #fff; color: #fff;
} }
} }
a.delete {
color: #FF7A8B;
}
a.empower { a.empower {
color: #FFBD59; color: #FFBD59;
} }
a.disable {
color: #CAD1D9;
}
a.icon { a.icon {
display: inline-block; display: inline-block;
width: 28px; width: 22px;
height: 28px; height: 22px;
line-height: 28px; line-height: 22px;
margin: 0px 0 0 0; margin: 0px 0 0 0;
border-radius: 50%; border-radius: 50%;
color: #515A6E; color: #515A6E;
background: #F5F6FA; background: #F5F6FA;
.ivu-icon { .ivu-icon {
font-weight: bold; font-weight: bold;
font-size: 18px; font-size: 20px;
}
}
a.disable {
color: #CAD1D9;
cursor: help;
i:hover {
background:#CAD1D9;
} }
} }
// a.icon:hover {
// background: #27AB9D;
// color: #fff;
// }
// a.icon:active {
// background: #229185;
// color: #fff;
// }
} }
......
...@@ -11,7 +11,7 @@ export default { ...@@ -11,7 +11,7 @@ export default {
name: 'dtSpan', name: 'dtSpan',
data() { data() {
return { return {
date:"33333" date:""
} }
}, },
props: { props: {
......
...@@ -39,7 +39,7 @@ export default { ...@@ -39,7 +39,7 @@ export default {
color: { color: {
type: String, type: String,
}, },
disalbed: { disalbe: {
// 0 启用 1 禁用 2权限不足 // 0 启用 1 禁用 2权限不足
type: Number, type: Number,
default: 0, default: 0,
...@@ -66,12 +66,15 @@ export default { ...@@ -66,12 +66,15 @@ export default {
} else if (this.oprate) { } else if (this.oprate) {
this.css = this.oprate; this.css = this.oprate;
} else if (this.type == "icon") { } else if (this.type == "icon") {
this.css = "icon"; this.css = "icon";
}
if(this.disalbe){
this.css="disable"
} }
}, },
methods: { methods: {
handler() { handler() {
if (this.disalbed == 0) { if (this.disalbe == 0) {
if (this.oprate == "delete" || this.oprate == "remove") { if (this.oprate == "delete" || this.oprate == "remove") {
this.$Modal.confirm({ this.$Modal.confirm({
title: this.title, title: this.title,
...@@ -83,10 +86,10 @@ export default { ...@@ -83,10 +86,10 @@ export default {
} else { } else {
this.$emit("click", event); this.$emit("click", event);
} }
}else if(this.disabled==1){ }else if(this.disalbe==1){
this.$Message.info("不能操作") this.$Message.warning("不能操作")
}else{ }else{
this.$Message.info("没有权限") this.$Message.warning("没有权限")
} }
}, },
}, },
......
<template>
<div>
<Select
:placeholder="placeholder"
v-model="name"
@on-change="change"
:multiple="multiple"
clearable
filterable
transfer
>
<Option
v-for="item in users"
:value="item.userId"
:key="item.userId"
:disabled="item.status==1"
>
<div class="user">
<State v-show="item.authority" code="project.group.authority" :value="item.authority" class="mr10"/> {{item.note}} <User :value="item.userId"/></span><Tag>{{item.role}}</Tag>
</div>
</Option>
</Select>
</div>
</template>
<script>
export default {
model: {
prop: "value",
event: "on-change",
},
data() {
return {
name: this.value,
users: this.data,
};
},
created() {
this.load();
},
props: {
value: [String, Number, Array],
placeholder: {
type: String,
default: "请选择人员",
},
multiple:{
type:Boolean,
default:false,
},
projectId:{
type:String
}
},
methods: {
load() {
var params={
// codition:[{fieldName: "groupId", fieldValue: "b9d6fa9e-e033-4a3e-9925-c1f4437d970c", conditionalType: "Equal"}]
codition:[{fieldName: "projectId", fieldValue: this.projectId, conditionalType: "Equal"}]
}
this.$api.post(`${material}/projectplan/list`, params).then(r=>{
this.users=r.result;
})
},
change(event) {
let name = "";
this.data.forEach((e) => {
if (e.id == event) {
name = e.label;
}
});
this.$emit("on-change", event, name);
},
// 加载人员
},
};
</script>
<style lang="less">
@import "../../assets/css/custom.less";
.userGroup {
}
</style>
...@@ -93,7 +93,6 @@ export default { ...@@ -93,7 +93,6 @@ export default {
click: () => this.view(params.row.id) click: () => this.view(params.row.id)
} }
}, '查看'), }, '查看'),
//h('op', { attrs: { oprate: 'copy' }, on: { click: () => this.copy(params.row.id) } }, '克隆'),
h('op', { h('op', {
attrs: { attrs: {
oprate: 'edit' oprate: 'edit'
...@@ -111,13 +110,10 @@ export default { ...@@ -111,13 +110,10 @@ export default {
} }
}, '删除'), }, '删除'),
h('op', { h('op', {
attrs: {
oprate: 'edit'
},
on: { on: {
click: () => this.openGroupUser(params.row) click: () => this.openGroupUser(params.row)
} }
}, '项目团队'), }, '成员'),
]) ])
} }
}, },
......
<template> <template>
<div class="detail"> <div class="detail">
<Row> <Row>
<Filed :span="12" :name="l('userId')"> <Filed :span="12" :name="l('userId')">
<User :value="entity.userId"></User> <User :value="entity.userId"></User>
</Filed> </Filed>
<Filed :span="12" :name="l('role')">{{entity.role}}</Filed> <Filed :span="12" :name="l('role')">
<Filed :span="12" :name="l('note')">{{entity.note}}</Filed> <State code="project.group.role" :value="entity.role" />
<Filed :span="12" :name="l('status')">{{entity.status}}</Filed> </Filed>
<Filed :span="12" :name="l('creationTime')">{{entity.creationTime}}</Filed> <Filed :span="12" :name="l('authority')">
<Filed :span="12" :name="l('creatorUserId')"> <State code="project.group.authority" :value="entity.authority" />
<User :value="entity.creatorUserId"></User> </Filed>
</Filed> <!-- <Filed :span="12" name="姓名">{{ entity.note }}</Filed> -->
<Filed :span="12" :name="l('status')">
<State code="project.group.status" :value="entity.status"
/></Filed>
<Filed :span="12" :name="l('creationTime')">{{
entity.creationTime
}}</Filed>
<Filed :span="12" :name="l('creatorUserId')">
<User :value="entity.creatorUserId"></User>
</Filed>
</Row> </Row>
</div>
</div>
</template> </template>
<script> <script>
import Api from './api' import Api from "./api";
export default { export default {
name: 'Add', name: "Add",
data() { data() {
return { return {
entity: {}, entity: {},
rules: { rules: {
name: [{ name: [
required: true, {
message: '必填', required: true,
trigger: 'blur' message: "必填",
}], trigger: "blur",
code: [{ },
required: true, ],
message: '必填', code: [
trigger: 'blur' {
}] required: true,
} message: "必填",
} trigger: "blur",
},
],
},
};
},
props: {
eid: String,
},
mounted() {
if (this.eid != "" && this.eid != null) {
this.load(this.eid);
}
},
methods: {
load(v) {
Api.get({
id: v,
}).then((r) => {
this.entity = r.result;
this.$emit("on-load");
});
}, },
props: { handleClose() {
eid: String this.$emit("on-close");
}, },
mounted() { l(key) {
if (this.eid != '' && this.eid != null) { key = "project_group_user" + "." + key;
this.load(this.eid); return this.$t(key);
}
}, },
methods: { },
load(v) { watch: {
Api.get({ eid(v) {
id: v if (v != "" && v != null) {
}).then(r => { this.load(v);
this.entity = r.result; }
this.$emit('on-load')
})
},
handleClose() {
this.$emit('on-close')
},
l(key) {
key = "project_group_user" + "." + key;
return this.$t(key)
}
}, },
watch: { },
eid(v) { };
if (v != '' && v != null) {
this.load(v);
}
}
}
}
</script> </script>
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
<div> <div>
<Table border :columns="columns" :data="list" ref="table" class="tableCommon" stripe> <Table border :columns="columns" :data="list" ref="table" class="tableCommon" stripe>
<template slot-scope="{ row, index }" slot="userId"> <template slot-scope="{ row, index }" slot="userId">
<User v-if="edit != index" :value="row.userId"></User> <a class="op detail" v-if="edit != index" @click="view(row.id)"><User :value="row.userId"></User></a>
<UserSelect v-else ref="userSelected" v-model="cur.userId" /> <UserSelect v-else ref="userSelected" v-model="cur.userId" @on-change="setRow"/>
</template> </template>
<template slot-scope="{ row, index }" slot="role"> <template slot-scope="{ row, index }" slot="role">
<state v-if="edit != index" code="project.group.role" :value="row.role" type="text"></state> <state v-if="edit != index" code="project.group.role" :value="row.role" type="text"></state>
...@@ -13,10 +13,6 @@ ...@@ -13,10 +13,6 @@
<state v-if="edit != index" code="project.group.status" :value="row.status" type="text"></state> <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> <Dictionary v-else code="project.group.status" v-model="cur.status"></Dictionary>
</template> </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"> <template slot-scope="{ row, index }" slot="whour">
<span v-if="edit != index" v-text="row.whour"></span> <span v-if="edit != index" v-text="row.whour"></span>
<InputNumber v-else type="text" v-model.trim="cur.whour" /> <InputNumber v-else type="text" v-model.trim="cur.whour" />
...@@ -45,11 +41,11 @@ ...@@ -45,11 +41,11 @@
</template> </template>
</Table> </Table>
<div class="footerWidth"><Button type="primary" long @click="addList" :disabled="edit != -1">新增人员</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> <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" />
</Modal> </Modal>
-->
</div> </div>
</template> </template>
...@@ -58,7 +54,7 @@ import Api from './api' ...@@ -58,7 +54,7 @@ import Api from './api'
export default { export default {
name: 'list', name: 'list',
head: { head: {
title: "项目成员", title: "项目成员",
author: "henq", author: "henq",
description: "project_group_user 10/21/2020 11:46:56 AM", description: "project_group_user 10/21/2020 11:46:56 AM",
}, },
...@@ -75,11 +71,11 @@ export default { ...@@ -75,11 +71,11 @@ export default {
cur: { cur: {
id: '', id: '',
userId: null, userId: null,
role: null, role: 1,
status: null, status: 1,
whour: 14, whour: 14,
whourpd: 7.0, whourpd: 7.0,
authority: null, authority: 2,
note: '' note: ''
}, },
columns: [{ columns: [{
...@@ -91,7 +87,6 @@ export default { ...@@ -91,7 +87,6 @@ export default {
key: "userId", key: "userId",
title: this.l("userId"), title: this.l("userId"),
align: "left", align: "left",
width: 150,
slot: 'userId' slot: 'userId'
}, },
{ {
...@@ -108,13 +103,13 @@ export default { ...@@ -108,13 +103,13 @@ export default {
width: 150, width: 150,
slot: 'status' slot: 'status'
}, },
{ // {
key: "joindate", // key: "joindate",
title: this.l("joindate"), // title: this.l("joindate"),
align: "center", // align: "center",
width: 180, // width: 180,
slot: 'joindate' // slot: 'joindate'
}, // },
{ {
key: "whour", key: "whour",
title: this.l("whour"), title: this.l("whour"),
...@@ -137,12 +132,12 @@ export default { ...@@ -137,12 +132,12 @@ export default {
slot: 'authority' slot: 'authority'
}, },
{ // {
key: "note", // key: "note",
title: this.l("note"), // title: this.l("note"),
align: "left", // align: "left",
slot: 'note' // slot: 'note'
}, // },
{ {
title: '操作', title: '操作',
key: 'action', key: 'action',
...@@ -156,11 +151,12 @@ export default { ...@@ -156,11 +151,12 @@ export default {
} }
}, },
props: { props: {
eid: String eid: String,
projectId:String
}, },
mounted() { mounted() {
if (this.eid != '' && this.eid != null) { if (this.eid||this.projectId ) {
this.load(this.eid) this.load()
} }
}, },
async fetch({ async fetch({
...@@ -170,46 +166,44 @@ export default { ...@@ -170,46 +166,44 @@ export default {
await store.dispatch('loadDictionary') // 加载数据字典 await store.dispatch('loadDictionary') // 加载数据字典
}, },
methods: { methods: {
load(v) { load() {
let params = { let params = {
conditions: [{ conditions: [{
fieldName: "groupId", fieldName: "groupId",
fieldValue: v, fieldValue: this.eid,
conditionalType: "Equal", conditionalType: "Equal",
}], }],
} }
if(this.projectId){
params = {
conditions: [{
fieldName: "projectId",
fieldValue: this.projectId,
conditionalType: "Equal",
}],
}
}
Api.list(params).then(r => { Api.list(params).then(r => {
if (r.success) { if (r.success) {
this.list = r.result this.list = r.result
this.getAuthority()
} }
}) })
}, },
//获取是否权限里有项目经理选项 setRow(e,name){
getAuthority() { this.cur.note=name;
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() { addList() {
this.edit = this.list.length; this.edit = this.list.length;
this.cur = { this.cur = {
userId: null, userId: null,
role: null, role: 0,
status: null, status: 1,
joindate: '', joindate: '',
whour: 14, whour: 14,
whourpd: 7.0, whourpd: 7.0,
authority: null, authority: 0,
projectId:this.projectId,
note: '' note: ''
}; };
this.authorityCur = 0 this.authorityCur = 0
...@@ -217,20 +211,7 @@ export default { ...@@ -217,20 +211,7 @@ export default {
}, },
//编辑 //编辑
editRow(row, index) { editRow(row, index) {
// let lastListGroupId = this.list[this.list.length - 1].groupId this.cur=this.$u.clone(row);
// 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 this.edit = index
}, },
//选择权限 //选择权限
...@@ -240,21 +221,11 @@ export default { ...@@ -240,21 +221,11 @@ export default {
this.cur.authority = null this.cur.authority = null
} }
}, },
//选择加入日期
getTime(value) {
if (value != '') {
this.cur.joindate = this.getFormatDateStart(
value
);
} else {
this.cur.joindate = ''
}
},
//删除 //删除
delRow(id) { delRow(id) {
Api.delete(id).then((r) => { Api.delete(id).then((r) => {
if (r.success) { if (r.success) {
this.load(this.eid) this.load()
this.$Message.success('删除成功') this.$Message.success('删除成功')
this.edit = -1; this.edit = -1;
} }
...@@ -270,37 +241,35 @@ export default { ...@@ -270,37 +241,35 @@ export default {
//新增保存或修改保存 //新增保存或修改保存
save() { save() {
this.cur.groupId = this.eid this.cur.groupId = this.eid
if (this.cur.userId == null || this.cur.userId == '') { if (!this.cur.userId) {
this.$Message.error("请选择人员"); this.$Message.error("请选择人员");
return; return;
} }
if (this.cur.role == null || this.cur.role == '') { var cnt=this.list.filter(u=>{
this.$Message.error("请选择人员角色"); return u.userId==this.cur.userId
}).length;
if(cnt>1){
this.$Message.error("此人已经选择");
return; return;
} }
if (this.cur.joindate == null || this.cur.joindate == '') { if (!this.cur.role ) {
this.$Message.error("请选择人员加入日期"); this.$Message.error("请选择人员角色");
return; return;
} }
if (this.cur.authority == null || this.cur.authority == '') { if (this.cur.authority == null || this.cur.authority == '') {
this.$Message.error("请选择人员权限"); this.$Message.error("请选择人员权限");
return; return;
} }
this.getTime(this.cur.joindate) //格式加入时间
if (this.cur.id && this.cur.id != '') { //人员修改 if (this.cur.id && this.cur.id != '') { //人员修改
Api.update(this.cur).then((r) => { Api.update(this.cur).then((r) => {
this.disabled = false; this.disabled = false;
if (r.success) { if (r.success) {
this.$Message.success('修改成功') this.$Message.success('修改成功')
this.edit = -1 this.edit = -1
this.load(this.eid) this.load()
} else { } else {
this.$Message.error('修改失败') this.$Message.error('修改失败')
} }
}).catch(err => {
this.disabled = false;
this.$Message.error('修改失败')
console.warn(err)
}) })
} else { //人员新增 } else { //人员新增
Api.create(this.cur).then((r) => { Api.create(this.cur).then((r) => {
...@@ -308,14 +277,10 @@ export default { ...@@ -308,14 +277,10 @@ export default {
if (r.success) { if (r.success) {
this.$Message.success('保存成功') this.$Message.success('保存成功')
this.edit = -1 this.edit = -1
this.load(this.eid) this.load()
} else { } else {
this.$Message.error('保存失败') this.$Message.error('保存失败')
} }
}).catch(err => {
this.disabled = false;
this.$Message.error('保存失败')
console.warn(err)
}) })
} }
}, },
...@@ -337,25 +302,6 @@ export default { ...@@ -337,25 +302,6 @@ export default {
let vkey = "project_group_user" + "." + key; let vkey = "project_group_user" + "." + key;
return this.$t(vkey) || key return this.$t(vkey) || key
}, },
//old弹框模式方法start
ok() {
this.load(this.eid)
this.modal = false
this.curId = '';
},
add() {
alert(this.eid)
this.curId = '';
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) { view(id) {
this.curId = id; this.curId = id;
this.title = "详情"; this.title = "详情";
...@@ -376,8 +322,13 @@ export default { ...@@ -376,8 +322,13 @@ export default {
}, },
watch: { watch: {
eid(v) { eid(v) {
if (v != '' && v != null) { if (v) {
this.load(v); this.load();
}
},
projectId(v) {
if (v) {
this.load();
} }
} }
} }
......
...@@ -95,7 +95,7 @@ ...@@ -95,7 +95,7 @@
></Col> ></Col>
<Col :span="12" <Col :span="12"
><FormItem :label="l('executor')" prop="executor"> ><FormItem :label="l('executor')" prop="executor">
<UserSelect v-model="entity.executor" multiple></UserSelect> <UserGroup v-model="entity.executor" multiple :projectId="v.projectId"></UserGroup>
</FormItem> </FormItem>
</Col </Col
> >
......
...@@ -95,7 +95,7 @@ ...@@ -95,7 +95,7 @@
></Col> ></Col>
<Col :span="12" <Col :span="12"
><FormItem :label="l('executor')" prop="executor"> ><FormItem :label="l('executor')" prop="executor">
<UserSelect v-model="entity.executor" multiple></UserSelect> <UserGroup v-model="entity.executor" multiple :projectId="entity.projectId"></UserGroup>
</FormItem> </FormItem>
</Col </Col
> >
......
...@@ -100,6 +100,7 @@ export default { ...@@ -100,6 +100,7 @@ export default {
type: "icon", type: "icon",
title: "派发", title: "派发",
oprate: "edit", oprate: "edit",
disalbe:1,
}, },
on: { click: () => this.copy(params.row.id) }, on: { click: () => this.copy(params.row.id) },
}, },
...@@ -117,7 +118,7 @@ export default { ...@@ -117,7 +118,7 @@ export default {
h( h(
"op", "op",
{ {
attrs: { icon: "md-eye", attrs: { icon: "md-create",
type: "icon", type: "icon",
title: "编辑", title: "编辑",
oprate: "edit", }, oprate: "edit", },
......
...@@ -33,13 +33,11 @@ ...@@ -33,13 +33,11 @@
<span>|</span> <span>|</span>
</li> </li>
<li> <li>
<a @click="task"> <Icon type="md-create" />成员 </a> <a @click="group"> <Icon type="md-create" />成员 </a>
&nbsp;
<span>|</span> <span>|</span>
</li> </li>
<li> <li>
<a @click="task"> <Icon type="md-create" />动态 </a> <a @click="task"> <Icon type="md-create" />动态 </a>
&nbsp;
<span>|</span> <span>|</span>
</li> </li>
</ul> </ul>
...@@ -105,6 +103,11 @@ export default { ...@@ -105,6 +103,11 @@ export default {
// this.curId = this.eid; // this.curId = this.eid;
this.title = "项目任务"; this.title = "项目任务";
// this.detail = () => import("./add"); // this.detail = () => import("./add");
},
group() {
// this.curId = this.eid;
this.title = "成员管理";
this.detail = () => import("../groupUser/index1");
}, },
l(key) { l(key) {
key = "project_main" + "." + key; key = "project_main" + "." + key;
......
...@@ -26,6 +26,7 @@ import Tools from '@/components/page/tool.vue' ...@@ -26,6 +26,7 @@ import Tools from '@/components/page/tool.vue'
import State from '@/components/page/state.vue' import State from '@/components/page/state.vue'
import Dictionary from '@/components/page/dictionary.vue' import Dictionary from '@/components/page/dictionary.vue'
import UserSelect from '@/components/page/userSelect.vue' import UserSelect from '@/components/page/userSelect.vue'
import UserGroup from '@/components/page/userGroup.vue'
import Materiel from '@/components/page/materiel.vue' import Materiel from '@/components/page/materiel.vue'
import RoleSelect from '@/components/page/roleSelect.vue' import RoleSelect from '@/components/page/roleSelect.vue'
import UserExamSelect from '@/components/page/userExamSelect.vue' import UserExamSelect from '@/components/page/userExamSelect.vue'
...@@ -129,6 +130,7 @@ Vue.component("WorkShopSelect", WorkShopSelect) ...@@ -129,6 +130,7 @@ Vue.component("WorkShopSelect", WorkShopSelect)
Vue.component("WorkShopName",WorkShopName) Vue.component("WorkShopName",WorkShopName)
Vue.component("workShopDefault", workShopDefault) Vue.component("workShopDefault", workShopDefault)
Vue.component("WorkShop", WorkShop) Vue.component("WorkShop", WorkShop)
Vue.component("UserGroup", UserGroup)
Vue.component("EquipSelect", EquipSelect) Vue.component("EquipSelect", EquipSelect)
Vue.component("EquipTypeSelect", EquipTypeSelect) Vue.component("EquipTypeSelect", EquipTypeSelect)
Vue.component("ResourceSelect", ResourceSelect) Vue.component("ResourceSelect", ResourceSelect)
......
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