Commit 1c4ee0a0 authored by 周远喜's avatar 周远喜

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

parents 835f8f58 a8f50f01
<template>
<Cascader :data="data" v-model="name" @on-change="change" trigger="hover"></Cascader>
</template>
<script>
export default {
name: "roleSelectCode",
model: {
prop: "value",
event: "on-change"
},
data() {
return {
name: this.value,
data: [],
resources: [],
types: []
};
},
mounted() {
//
this.types = this.$store.getters.dictionaryByKey(
"aps.resource.type"
);
let url = `${systemUrl}/planresource/list`;
this.$api
.post(url, {
pageSize: 2000
})
.then(r => {
this.resources = r.result;
this.init();
});
},
props: {
value: [Array]
},
methods: {
init(data) {
var data = [];
this.types.map(u => {
let item = {
label: u.name,
value: parseInt(u.code)
};
var children = this.resources.filter(r => {
return r.type == u.code;
});
if (children && children.length > 0) {
var ul = [];
children.map(u => {
ul.push({
label: u.title,
value: u.code,
id: u.id
});
});
item.children = ul;
} else {
item.disabled = true
}
data.push(item);
});
this.data = data;
},
change(value, selected) {
// console.log(event)
this.$emit("on-change", value, selected);
},
//获取所有的选中项
getSelectItems() {
var items = [];
this.value.forEach(v => {
var item = this.dic.filter(u => u.value == v);
if (item && item[0]) {
items.push(item[0]);
}
});
return items;
},
//获取所有选中项的名称
getSelectNames() {
var names = [];
this.getSelectItems().forEach(v => {
names.push(v.label);
});
return names;
}
},
computed: {
dic() {
let result = [];
this.data.forEach(u => {
result.push({
value: u.id,
label: u.name
});
});
return result;
}
},
watch: {
value: {
handler(v, o) {
this.name = v;
},
deep: true
}
}
};
</script>
......@@ -86,7 +86,7 @@ export default {
},
//工时同步到原始工艺
apsupdate(params) {
return Api.post(`${designUrl}/routingdetail/apsupdate `, params);
return Api.post(`${technologyUrl}routingdetail/apsupdate `, params);
},
//排序模板相关start-----
//获取排序规则下拉列表
......
<template>
<Form ref="form" :model="entity" :rules="rules" :label-width="100">
<Form ref="form" :model="entity" :rules="rules" :label-width="100">
<Row>
<Col :span="12">
<FormItem :label="l('tASKSEQ')" prop="tASKSEQ">{{
this.entity.task_seq
}}</FormItem>
<FormItem :label="l('tASKSEQ')" prop="tASKSEQ">{{this.entity.task_seq}}</FormItem>
</Col>
<Col :span="12">
<FormItem :label="l('tASKNAME')" prop="tASKNAME">{{
this.entity.task_name
}}</FormItem>
<FormItem :label="l('tASKNAME')" prop="tASKNAME">{{this.entity.task_name}}</FormItem>
</Col>
<Col :span="12">
<Col :span="12" v-if="false">
<FormItem label="生产设备">
<EquipSelect v-model="entity.eQUIPID"></EquipSelect>
</FormItem>
</Col>
<Col :span="12">
<FormItem label="首选资源" prop="resourceType">
<ResourceSelectCode v-model="entity.resource" @on-change="resourceChange"></ResourceSelectCode>
</FormItem>
</Col>
<Col :span="12" v-model="entity.rUNTIME">
<FormItem :label="l('rUNTIME')" prop="rUNTIME">
<InputTime v-model="entity.run_time"></InputTime>
......@@ -32,20 +32,32 @@
<Button type="primary" @click="handleSubmit" v-noClick>保存</Button>
<Button @click="handleClose" class="ml20">取消</Button>
</FormItem>
</Form>
</Form>
</template>
<script>
import Api from "../api";
export default {
name: "Edit",
data() {
return {
entity: {},
orderCatList: [],
resources: [],
rules: {
name: [{ required: true, message: "必填", trigger: "blur" }],
name: [{
required: true,
message: "必填",
trigger: "blur"
}],
resourceType: [{
required: true,
message: "请选择首选资源",
trigger: "change",
}, ],
},
single: false,
single: false
};
},
props: {
......@@ -53,41 +65,25 @@ export default {
type: Object,
default: () => {
return null;
},
},
}
}
},
methods: {
resourceChange(v, items) {
// this.entity.resourceId = v[1];
// this.entity.resourceType = v[0];
// this.entity.resourceCode = items[1].__label;
// if (v != null) {
// this.rules.equipTypeId[0].required = false;
// this.rules.resourceType[0].required = true;
// } else {
// if (this.entity.equipTypeId != null && this.entity.equipTypeId > 0) {
// this.rules.equipTypeId[0].required = true;
// this.rules.resourceType[0].required = false;
// } else {
// this.rules.equipTypeId[0].required = true;
// this.rules.resourceType[0].required = true;
// }
// }
},
load(v) {
this.entity = v;
},
handleSubmit() {
this.$refs.form.validate((v) => {
this.$refs.form.validate(v => {
if (v) {
let parmsUp = {
run_time: this.entity.run_time,
first_equip: this.entity.eQUIPID,
id: this.entity.id,
first_equip: this.entity.resourceCode,
id: this.entity.id
};
Api.updatesetuptimeandfirstequip(parmsUp)
.then((res) => {
.then(res => {
if (res.success) {
if (!this.single) {
this.$Message.success("保存成功");
......@@ -97,12 +93,13 @@ export default {
id: this.entity.routing_detail_id, //工序ID
name: this.entity.task_name, //工序名
task_seq: this.entity.task_seq, //工序号
resource_id: this.entity.eQUIPID, //设备id
resource_id: this.entity.resourceId, //设备id
runtime: this.entity.run_time, //单件工时
department_id: 0, //班组ID
department_id: 0 //班组ID
};
Api.apsupdate(parms)
.then((r) => {
.then(r => {
if (r.success) {
this.$Message.success("保存成功");
this.$emit("on-option-ok");
......@@ -110,7 +107,8 @@ export default {
this.$Message.error("保存失败");
}
})
.catch((err) => {
.catch(err => {
this.$Message.error("保存失败");
console.warn(err);
});
......@@ -119,7 +117,8 @@ export default {
this.$Message.error("保存失败");
}
})
.catch((err) => {
.catch(err => {
this.$Message.error("保存失败");
console.warn(err);
});
......@@ -129,18 +128,52 @@ export default {
handleClose() {
this.$emit("on-close");
},
resourceChange(v, items) {
//alert(v.length)
//alert(JSON.stringify(v))
//alert(JSON.stringify(items))
this.entity.resourceCode = v[1];
this.entity.resourceId = items[1].id;
if (v != null && v.length > 0) {
this.rules.resourceType[0].required = false;
} else {
this.rules.resourceType[0].required = true;
}
},
l(key) {
key = "mes_op_task_execute" + "." + key;
return this.$t(key);
},
}
},
watch: {
row(v) {
if (v != {}) {
//alert(JSON.stringify(v))
let url = `${systemUrl}/planresource/list`;
this.$api
.post(url, {
pageSize: 2000
})
.then(r => {
this.resources = this.$u.clone(r.result);
//alert(JSON.stringify(this.resources))
this.entity = v;
this.entity.resourceCode = v.firsT_EQUIP_CODE;
let code = v.firsT_EQUIP_CODE;
this.entity.resource = []
//let code = 'PCZYBZBH_20200804_1'
if (code && code != '') {
this.resources.forEach(e => {
if (e.code == code) {
this.entity.resource.push(parseInt(e.type));
this.entity.resource.push(code)
this.entity.resourceId = e.id
}
})
}
});
}
}
}
},
},
};
</script>
......@@ -141,7 +141,7 @@ export default {
hide: true
},
{
key: "first_equip",
key: "firsT_EQUIP_CODE",
title: this.l("first_equip"),
align: "left",
easy: true,
......
......@@ -14,28 +14,31 @@
<div class="left-down">
<div
class="left-body"
v-for="(li,index) in list"
v-for="(li, index) in list"
:key="index"
:class="li.checked == true ? 'addclass' : '' "
:class="li.checked == true ? 'addclass' : ''"
>
<Row class="title-i">
<Col :span="20" class="order-code">
<Checkbox
v-model="li.checked"
@on-change="checkData(li)"
:disabled="li.status==0?false:true"
>订单号:{{li.mesCode}}</Checkbox>
:disabled="li.status == 0 ? false : true"
>订单号:{{ li.mesCode }}</Checkbox
>
</Col>
<Col :span="4" class="order-ringht">
<Icon type="md-close" @click="close(li.id)" />
</Col>
</Row>
<div class="fa">产品名称:{{li.productName}}</div>
<div class="time-s">产品数量:{{li.quantity}}</div>
<div class="time-s">
<div class="fa">产品名称:{{ li.productName }}</div>
<div class="time-s">产品数量:{{ li.quantity }}</div>
<!-- <div class="time-s">
<span>工序:{{li.drawnNumber}}</span>
</div> -->
<div class="time-s">
{{ li.demandFinishDate }} ~ {{ li.demandStartDate }}
</div>
<div class="time-s">{{li.demandFinishDate}} ~ {{li.demandStartDate}}</div>
</div>
</div>
</div>
......@@ -49,7 +52,7 @@
placeholder="请选择工时"
@on-change="changeFormat"
v-model="formItem.time"
style="width:300px"
style="width: 300px"
></DatePicker>
</FormItem>
<FormItem label="类型">
......@@ -58,26 +61,36 @@
<Radio label="1">班组</Radio>
</RadioGroup>
</FormItem>
<FormItem v-if="formItem.radio==0">
<FormItem v-if="formItem.radio == 0">
<UserSelect v-model="user" :multiple="true" />
</FormItem>
<FormItem label="班组" v-if="formItem.radio==1">
<Select v-model="formItem.shopId" placeholder="请选择" style="width:300px">
<FormItem label="班组" v-if="formItem.radio == 1">
<!-- <DepartmentSelect :type="3" v-model="formItem.shopId"/> -->
<Select
v-model="formItem.shopId"
placeholder="请选择"
style="width: 300px"
>
<Option
v-for="(item,index) in listClass"
v-for="(item, index) in listClass"
:key="index"
:value="item.value"
:label="item.label"
style="display:none"
style="display: none"
></Option>
<Tree key="mytree" :data="workShop" ref="mytree" :render="renderContent"></Tree>
<Tree
key="mytree"
:data="workShop"
ref="mytree"
:render="renderContent"
></Tree>
</Select>
</FormItem>
<FormItem label="备注">
<Input
v-model="formItem.remark "
v-model="formItem.remark"
type="textarea"
:autosize="{minRows: 2,maxRows: 5}"
:autosize="{ minRows: 2, maxRows: 5 }"
placeholder="请输入备注信息"
></Input>
</FormItem>
......@@ -110,9 +123,11 @@ export default {
remark: "",
departmentTitle: "",
shopId: "",
showSet: false
showSet: false,
// userName: ""
},
user:'',
showSet: false,
// listGroup: [
// {
// equip_name: "调试组",
......@@ -147,7 +162,7 @@ export default {
// ],
workShop: [],
listClass: [],
orderIds: []
orderIds: [],
};
},
created() {
......@@ -162,16 +177,18 @@ export default {
//排产池列表
orderlist(a) {
this.status = a;
Api.getpooltypeorderlist({ PoolType: 2, status: this.status }).then(r => {
Api.getpooltypeorderlist({ PoolType: 2, status: this.status }).then(
(r) => {
if (r.success) {
r.result.map(e => {
r.result.map((e) => {
e.checked = false;
e.demandFinishDate = e.demandFinishDate.substr(0, 10);
e.demandStartDate = e.demandStartDate.substr(0, 10);
});
this.list = r.result;
}
});
}
);
},
//获取订单集
checkData(li) {
......@@ -210,10 +227,10 @@ export default {
userIds: this.user,
beginTime: this.formItem.beginTime,
endTime: this.formItem.endTime,
remark: this.formItem.remark
remark: this.formItem.remark,
// userName: this.formItem.userName
};
Api.cmonestepschedule(params1).then(r => {
Api.cmonestepschedule(params1).then((r) => {
if (r.success) {
this.$Message.success("下发成功");
this.orderlist(this.status);
......@@ -232,9 +249,9 @@ export default {
shopId: this.formItem.shopId,
beginTime: this.formItem.beginTime,
endTime: this.formItem.endTime,
remark: this.formItem.remark
remark: this.formItem.remark,
};
Api.cmtwostepschedule(params2).then(r => {
Api.cmtwostepschedule(params2).then((r) => {
if (r.success) {
this.$Message.success("下发成功");
this.orderlist(this.status);
......@@ -250,7 +267,7 @@ export default {
//部门(班组)
getWorkshop() {
let url = `${systemUrl}/user/userdepartmentsofworkshop`;
this.$api.get(url).then(r => {
this.$api.get(url).then((r) => {
if (r.result) {
this.workShop = r.result;
}
......@@ -262,13 +279,13 @@ export default {
"span",
{
style: {
cursor: "pointer"
cursor: "pointer",
},
on: {
click: () => {
this.handleSelect(data); //手动选择树节点
}
}
},
},
},
data.title
);
......@@ -276,7 +293,7 @@ export default {
handleSelect(data) {
let obj = {
label: data.title,
value: data.value
value: data.value,
};
this.listClass = [];
this.listClass.push(obj);
......@@ -294,7 +311,7 @@ export default {
title: "删除",
content: "<p>您确定要移除此订单吗</p>",
onOk: () => {
Api.shiftoutofcmorflpool({ ids: ids }).then(r => {
Api.shiftoutofcmorflpool({ ids: ids }).then((r) => {
if (r.success) {
this.$Message.success("删除成功");
this.orderlist(this.status);
......@@ -305,9 +322,9 @@ export default {
},
onCancel: () => {
this.$Message.info("您已取消删除");
}
},
});
}
},
// closeTag() {}
},
watch: {
......@@ -315,8 +332,8 @@ export default {
if (v == 1) {
this.getWorkshop();
}
}
}
},
},
};
</script>
<style lang="less" scoped>
......@@ -370,8 +387,8 @@ export default {
}
.fa {
height: 32px;
line-height: 32px;
height: 35px;
line-height: 35px;
color: rgba(38, 128, 235, 1);
padding: 5px 8px 0 8px;
}
......@@ -379,7 +396,7 @@ export default {
padding: 0 8px;
height: 32px;
line-height: 32px;
color:@table-color;
color: @table-color;
}
}
}
......
......@@ -14,23 +14,25 @@
<div class="left-down">
<div
class="left-body"
v-for="(li,index) in list"
v-for="(li, index) in list"
:key="index"
@click="listData(li,index)"
:class="isactive == index ? 'addclass' : '' "
@click="listData(li, index)"
:class="isactive == index ? 'addclass' : ''"
>
<Row class="title-i">
<Col :span="20" class="order-code">订单号:{{li.mesCode}}</Col>
<Col :span="20" class="order-code">订单号:{{ li.mesCode }}</Col>
<Col :span="4" class="order-ringht">
<Icon type="md-close" @click="close(li.id)" />
</Col>
</Row>
<div class="fa">产品名称:{{li.productName}}</div>
<div class="fa">产品名称:{{ li.productName }}</div>
<div class="time-s">
<!-- <Icon type="ios-copy" /> -->
<span>工序:{{li.drawnNumber}}</span>
<span>工序:{{ li.drawnNumber }}</span>
</div>
<div class="time-s">
{{ li.demandFinishDate }}{{ li.demandStartDate }}
</div>
<div class="time-s">{{li.demandFinishDate}}{{li.demandStartDate}}</div>
</div>
</div>
</div>
......@@ -44,11 +46,22 @@
<span></span>
</Col>
<Col :span="6">
<RadioGroup v-model="mode" type="button" size="small" @on-change="changeMode">
<RadioGroup
v-model="mode"
type="button"
size="small"
@on-change="changeMode"
>
<Radio :label="1">一级排产</Radio>
<Radio :label="2">二级排产</Radio>
</RadioGroup>
<Button type="primary" @click="lowerHair" :disabled="!allow" v-if="showXia">下发</Button>
<Button
type="primary"
@click="lowerHair"
:disabled="!allow"
v-if="showXia"
>下发</Button
>
</Col>
</Row>
<Row class="right-body">
......@@ -58,50 +71,58 @@
<Badge :count="item.seq" slot="dot" :type="type(index)"></Badge>
<div class="set-name">
<span
@click="sets(item,index)"
@click="sets(item, index)"
class="mr20"
:class="active == index ? 'gongTitle' : '' "
>工序名称:{{item.name}}</span>
:class="active == index ? 'gongTitle' : ''"
>工序名称:{{ item.name }}</span
>
<op
title="拆分工序"
@click="split(item,index)"
@click="split(item, index)"
type="icon"
icon="ios-cut"
v-if="item.quantity>1&&!item.chai"
v-if="item.quantity > 1 && !item.chai"
></op>
<op
title="移除"
@click="remove(item,index)"
@click="remove(item, index)"
type="icon"
icon="ios-trash"
oprate="delete"
v-if="item.chai"
></op>
</div>
<div>数量:{{item.quantity}}</div>
<div v-if="item.userIds">
<div class="content">数量:{{ item.quantity }}</div>
<div v-show="item.userIds" class="content">
人员:
<span v-for="(u,j) in item.userIds" :key="j">
<span v-for="(u, j) in item.userIds" :key="j">
<User :value="u"></User>&nbsp;&nbsp;&nbsp;
</span>
</div>
<div v-if="item.shopName">
<div v-show="item.shopName" class="content">
班组:
{{item.shopName}}
{{ item.shopName }}
</div>
<div v-if="item.beginTime">
<div v-show="item.beginTime" class="content">
时间:
{{item.beginTime}} —— {{item.endTime}}
{{ item.beginTime }} —— {{ item.endTime }}
</div>
<div v-if="item.remark">
<div v-show="item.remark" class="content">
备注:
{{item.remark}}
{{ item.remark }}
</div>
<!-- <div>工序号:{{item.task_seq}}</div> -->
</TimelineItem>
</Timeline>
<div>
<Drawer title="排产设置盘" :closable="false" v-model="set" width="55%">
<Drawer
title="排产设置盘"
:closable="false"
v-model="set"
width="55%"
>
<Set
:mode="mode"
:detailId="detailId"
......@@ -127,7 +148,12 @@
>
拆分数量:
<InputNumber v-model="chaiNum" :min="1" :max="maxnum"></InputNumber>
<Slider v-if="maxnum>1" v-model="chaiNum" :min="1" :max="maxnum"></Slider>
<Slider
v-if="maxnum > 1"
v-model="chaiNum"
:min="1"
:max="maxnum"
></Slider>
</Modal>
</div>
</template>
......@@ -137,7 +163,7 @@ import Api from "./api";
export default {
name: "set",
components: {
Set
Set,
},
async fetch({ store, params }) {
await store.dispatch("loadDictionary"); // 加载数据字典
......@@ -148,6 +174,7 @@ export default {
disabled: false,
chaiLIst: [],
mode: 1,
curIndex: -1,
indexId: 0,
active: null,
......@@ -162,9 +189,8 @@ export default {
maxnum: 1,
chaiModal: false,
orderId: 0,
routingHeaderId: 0,
detailId: 0
detailId: 0,
};
},
created() {
......@@ -186,9 +212,10 @@ export default {
//排产池列表
orderlist() {
Api.getpooltypeorderlist({ PoolType: 3, status: this.status }).then(r => {
Api.getpooltypeorderlist({ PoolType: 3, status: this.status }).then(
(r) => {
if (r.result) {
r.result.map(u => {
r.result.map((u) => {
u.aps = 0;
u.demandFinishDate = u.demandFinishDate.substr(0, 10);
u.demandStartDate = u.demandStartDate.substr(0, 10);
......@@ -202,11 +229,12 @@ export default {
} else {
this.$Message.info("排产池数据请求失败");
}
});
}
);
},
//点击选中排产订单
listData(li, index) {
console.log(li);
// console.log(li);
this.isactive = index;
this.orderId = li.id;
this.routingHeaderId = li.routingHeaderId;
......@@ -218,9 +246,9 @@ export default {
},
//工序列表
tagTata(id) {
Api.getroutingdetails({ id: id }).then(r => {
Api.getroutingdetails({ id: id }).then((r) => {
if (r.success) {
r.result.map(u => {
r.result.map((u) => {
u.seq = u.task_seq;
u.chaiCount = 0;
u.chai = false;
......@@ -242,7 +270,7 @@ export default {
title: "删除",
content: "<p>您确定要移除此订单吗</p>",
onOk: () => {
Api.shiftoutofcmorflpool({ ids: ids }).then(r => {
Api.shiftoutofcmorflpool({ ids: ids }).then((r) => {
if (r.success) {
this.$Message.success("删除成功");
this.orderlist(this.status);
......@@ -253,11 +281,12 @@ export default {
},
onCancel: () => {
this.$Message.info("您已取消删除");
}
},
});
},
//工序列表序列设置
type(i) {
// console.log(i);
if (i < this.result.length) {
return "normal";
} else if (i === this.result.length) {
......@@ -288,7 +317,7 @@ export default {
let curItem = items[this.curIndex];
curItem.aps = this.mode;
console.log(curItem.aps);
// console.log(curItem.aps);
let addItem = this.$u.clone(curItem);
curItem.quantity -= this.chaiNum;
curItem.chaiCount += 1;
......@@ -331,16 +360,16 @@ export default {
quantity: this.result[i].quantity,
beginTime: this.result[i].beginTime,
endTime: this.result[i].endTime,
remark: this.result[i].remark
remark: this.result[i].remark,
};
items.push(obj);
}
let data = {
orderId: this.orderId,
routingHeaderId: this.routingHeaderId,
items: items
items: items,
};
Api.flonestepschedule(data).then(r => {
Api.flonestepschedule(data).then((r) => {
if (r.result) {
this.$Message.success("下发成功");
this.orderlist(this.status);
......@@ -357,16 +386,16 @@ export default {
quantity: this.result[i].quantity,
beginTime: this.result[i].beginTime,
endTime: this.result[i].endTime,
remark: this.result[i].remark
remark: this.result[i].remark,
};
items.push(obj);
}
let data = {
orderId: this.orderId,
routingHeaderId: this.routingHeaderId,
items: items
items: items,
};
Api.fltwostepschedule(data).then(r => {
Api.fltwostepschedule(data).then((r) => {
if (r.result) {
this.$Message.success("下发成功");
this.orderlist(this.status);
......@@ -388,18 +417,17 @@ export default {
item.aps = this.mode;
this.$set(this.result, index, item);
this.set = false;
// this.active = null;
}
},
},
computed: {
allow() {
let mode = this.mode;
let oks = this.result.filter(u => {
let oks = this.result.filter((u) => {
return u.aps == mode;
});
return oks.length == this.result.length;
}
}
},
},
};
</script>
<style lang="less">
......@@ -500,10 +528,10 @@ export default {
overflow: auto;
.list {
padding-left: 10px;
padding-top: 20px;
padding-top: 30px;
.set-name {
font-weight: bold;
height: 30px;
span {
cursor: pointer;
}
......@@ -520,7 +548,9 @@ export default {
text-align: center;
}
}
div {
.content {
padding-left: 5px;
height: 30px;
}
.gong-list {
......@@ -536,8 +566,18 @@ export default {
.right-body {
.list {
.s0 {
color:@table-color !important;
color: @table-color !important;
}
}
}
.ivu-timeline {
height: 100%;
}
.ivu-timeline-item {
// padding-bottom: 25px !important;
height: 100%;
}
.ivu-timeline-item-content {
height: 100%;
}
</style>
<template>
<div>项目管理</div>
</template>
\ No newline at end of file
<template>
<div>我的地盘</div>
</template>
\ No newline at end of file
<template>
<div>项目资源</div>
</template>
\ No newline at end of file
<template>
<div>项目管理</div>
</template>
\ No newline at end of file
<template>
<div>我的地盘</div>
</template>
\ No newline at end of file
<template>
<div>项目资源</div>
</template>
\ No newline at end of file
......@@ -37,6 +37,7 @@ import WorkShop from '@/components/page/workShop.vue'
import EquipSelect from '@/components/page/equipSelect.vue'
import EquipTypeSelect from '@/components/page/equipTypeSelect.vue'
import ResourceSelect from '@/components/page/resourceSelect.vue'
import ResourceSelectCode from '@/components/page/resourceSelectCode.vue'
import StoreTree from '@/components/page/storeTree.vue'
import StoreSelect from '@/components/page/storeSelect.vue'
import clipboard from 'clipboard';
......@@ -124,6 +125,7 @@ Vue.component("WorkShop", WorkShop)
Vue.component("EquipSelect", EquipSelect)
Vue.component("EquipTypeSelect", EquipTypeSelect)
Vue.component("ResourceSelect", ResourceSelect)
Vue.component("ResourceSelectCode", ResourceSelectCode)
Vue.component("User", User)
Vue.component("op", op) //DepartmentSelect
Vue.component("DepartmentSelect", DepartmentSelect)
......
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