Commit f9ed7a6b authored by 康振飞's avatar 康振飞

ProcessCase

parent b71ebaf7
......@@ -1455,5 +1455,23 @@ export default {
upId:'上级id',
creatorUserId:0,
id:0,
},
process_case:{
creationTime:'创建时间',
creatorUserId:'创建人',
lastModificationTime:'更新时间',
lastModifierUserId:'更新人',
isDeleted:'删除人',
deletionTime:'删除时间',
deleterUserId:'删除人',
title:'名称',
creator:'创建人',
content:'内容',
filePath:'文件路径',
filePaths:'多个文件路径',
dispatchId:'工单id',
routingDetailId:'工序id',
routingHeaderId:'工艺规程id',
type:'类型(工艺案例还是工艺提醒)',
}
}
......@@ -24,8 +24,8 @@
<div class="log_code" @click="handlTrance">
<img src="@/assets/images/login/erwei.jpg" alt="logoCode" />
<transition name="animation">
<!-- <img v-if="imgFlag" src="@/assets/images/login/sanjiao.png" alt="" class="sanjiao" /> -->
<div v-if="imgFlag" class="sanjiao"></div>
<!-- <img v-if="imgFlag" src="@/assets/images/login/sanjiao.png" alt="" class="sanjiao" /> -->
</transition>
</div>
</div>
......
<template>
<Form ref="form" :model="entity" :rules="rules" :label-width="90">
<Row>
<Col :span="12"><FormItem :label="l('creationTime')" prop="creationTime"> <DatePicker type="date" v-model="entity.creationTime"></DatePicker>
</FormItem></Col>
<Col :span="12"><FormItem :label="l('creatorUserId')" prop="creatorUserId"> <InputNumber v-model="entity.creatorUserId"></InputNumber>
</FormItem></Col>
<Col :span="12"><FormItem :label="l('lastModificationTime')" prop="lastModificationTime"> <DatePicker type="date" v-model="entity.lastModificationTime"></DatePicker>
</FormItem></Col>
<Col :span="12"><FormItem :label="l('lastModifierUserId')" prop="lastModifierUserId"> <InputNumber v-model="entity.lastModifierUserId"></InputNumber>
</FormItem></Col>
<Col :span="12"><FormItem :label="l('isDeleted')" prop="isDeleted"> <InputNumber v-model="entity.isDeleted"></InputNumber>
</FormItem></Col>
<Col :span="12"><FormItem :label="l('deletionTime')" prop="deletionTime"> <DatePicker type="date" v-model="entity.deletionTime"></DatePicker>
</FormItem></Col>
<Col :span="12"><FormItem :label="l('deleterUserId')" prop="deleterUserId"> <InputNumber v-model="entity.deleterUserId"></InputNumber>
</FormItem></Col>
<Col :span="12"><FormItem :label="l('title')" prop="title"> <Input v-model="entity.title"> </Input>
</FormItem></Col>
<Col :span="12"><FormItem :label="l('creator')" prop="creator"> <Input v-model="entity.creator"> </Input>
</FormItem></Col>
<Col :span="12"><FormItem :label="l('content')" prop="content"> <Input v-model="entity.content"> </Input>
</FormItem></Col>
<Col :span="12"><FormItem :label="l('filePath')" prop="filePath"> <InputFile v-model="entity.filePath"></InputFile>
</FormItem></Col>
<Col :span="12"><FormItem :label="l('filePaths')" prop="filePaths"> <Input v-model="entity.filePaths"> </Input>
</FormItem></Col>
<Col :span="12"><FormItem :label="l('dispatchId')" prop="dispatchId"> <InputNumber v-model="entity.dispatchId"></InputNumber>
</FormItem></Col>
<Col :span="12"><FormItem :label="l('routingDetailId')" prop="routingDetailId"> <InputNumber v-model="entity.routingDetailId"></InputNumber>
</FormItem></Col>
<Col :span="12"><FormItem :label="l('routingHeaderId')" prop="routingHeaderId"> <InputNumber v-model="entity.routingHeaderId"></InputNumber>
</FormItem></Col>
<Col :span="12"><FormItem :label="l('type')" prop="type"> <InputNumber v-model="entity.type"></InputNumber>
</FormItem></Col>
</Row>
<FormItem>
<Button type="primary" @click="handleSubmit" :disabled="disabled">保存</Button>
<Button @click="handleClose" class="ml20">取消</Button>
</FormItem>
</Form>
</template>
<script>
import Api from './api'
export default {
name: 'Add',
data() {
return {
disabled: false,
entity: {creationTime: null,
creatorUserId: null,
lastModificationTime: null,
lastModifierUserId: null,
isDeleted: null,
deletionTime: null,
deleterUserId: null,
title: "",
creator: "",
content: "",
filePath: "",
filePaths: "",
dispatchId: null,
routingDetailId: null,
routingHeaderId: null,
type: null},
rules: {
name: [{ required: true, message: '必填', trigger: 'blur' }]
}
}
},
props: {
v: Object,
eid: Number
},
mounted() {
if (this.eid > 0) {
this.load(this.eid);
}
},
methods: {
handleSubmit() {
this.$refs.form.validate((v) => {
if (v) {
this.disabled = true;
Api.create(this.entity).then((r) => {
this.disabled = false;
if (r.success) {
this.$Message.success('保存成功')
this.$emit('on-ok')
} else {
this.$Message.error('保存失败')
}
}).catch(err => {
this.disabled = false;
this.$Message.error('保存失败')
console.warn(err)
})
}
})
},
handleClose() {
this.$emit('on-close')
},
load(v) {
Api.get({ id: v }).then(r => {
this.entity = r.result;
this.entity.id = 0;
});
},
l(key) {
key = "process_case" + "." + key;
return this.$t(key)
}
},
watch: {
v() {
this.entity = this.$u.clone(this.v)
},
eid(v) {
if (v > 0) {
this.load(v);
}
}
}
}
</script>
\ No newline at end of file
import Api from '@/plugins/request'
export default {
index:`${technologyUrl}processcase/paged`,
paged(params){
return Api.post(`${technologyUrl}processcase/paged`,params);
},
get(params){
return Api.get(`${technologyUrl}processcase/get`,params);
},
create(params){
return Api.post(`${technologyUrl}processcase/create`,params);
},
update(params){
return Api.post(`${technologyUrl}processcase/update`,params);
},
delete(id) {
return Api.delete(`${technologyUrl}processcase/delete`,{params:{id:id}});
},
deletes(params) {
return Api.post(`${technologyUrl}processcase/batchdelete`,params);
}
}
\ No newline at end of file
<template>
<div class="detail">
<Row>
<Filed :span="12" :name="l('creationTime')">{{entity.creationTime}}</Filed>
<Filed :span="12" :name="l('creatorUserId')">{{entity.creatorUserId}}</Filed>
<Filed :span="12" :name="l('lastModificationTime')">{{entity.lastModificationTime}}</Filed>
<Filed :span="12" :name="l('lastModifierUserId')">{{entity.lastModifierUserId}}</Filed>
<Filed :span="12" :name="l('isDeleted')">{{entity.isDeleted}}</Filed>
<Filed :span="12" :name="l('deletionTime')">{{entity.deletionTime}}</Filed>
<Filed :span="12" :name="l('deleterUserId')">{{entity.deleterUserId}}</Filed>
<Filed :span="12" :name="l('title')">{{entity.title}}</Filed>
<Filed :span="12" :name="l('creator')">{{entity.creator}}</Filed>
<Filed :span="12" :name="l('content')">{{entity.content}}</Filed>
<Filed :span="12" :name="l('filePath')">{{entity.filePath}}</Filed>
<Filed :span="12" :name="l('filePaths')">{{entity.filePaths}}</Filed>
<Filed :span="12" :name="l('dispatchId')">{{entity.dispatchId}}</Filed>
<Filed :span="12" :name="l('routingDetailId')">{{entity.routingDetailId}}</Filed>
<Filed :span="12" :name="l('routingHeaderId')">{{entity.routingHeaderId}}</Filed>
<Filed :span="12" :name="l('type')">{{entity.type}}</Filed>
</Row>
</div>
</template>
<script>
import Api from './api'
export default {
name: 'Add',
data() {
return {
entity: {},
rules: {
name: [{ required: true, message: '必填', trigger: 'blur' }],
code: [{ required: true, message: '必填', trigger: 'blur' }]
}
}
},
props: {
eid: Number
},
mounted() {
if (this.eid > 0) {
this.load(this.eid);
}
},
methods: {
load(v) {
Api.get({ id: v }).then(r => {
this.entity = r.result;
this.$emit('on-load')
})
},
handleClose() {
this.$emit('on-close')
},
l(key) {
key = "process_case" + "." + key;
return this.$t(key)
}
},
watch: {
eid(v) {
if (v > 0) {
this.load(v);
}
}
}
}
</script>
\ No newline at end of file
<template>
<Form ref="form" :model="entity" :rules="rules" :label-width="90">
<Row>
<Col :span="12"><FormItem :label="l('creationTime')" prop="creationTime"> <DatePicker type="date" v-model="entity.creationTime"></DatePicker>
</FormItem></Col>
<Col :span="12"><FormItem :label="l('creatorUserId')" prop="creatorUserId"> <InputNumber v-model="entity.creatorUserId"></InputNumber>
</FormItem></Col>
<Col :span="12"><FormItem :label="l('lastModificationTime')" prop="lastModificationTime"> <DatePicker type="date" v-model="entity.lastModificationTime"></DatePicker>
</FormItem></Col>
<Col :span="12"><FormItem :label="l('lastModifierUserId')" prop="lastModifierUserId"> <InputNumber v-model="entity.lastModifierUserId"></InputNumber>
</FormItem></Col>
<Col :span="12"><FormItem :label="l('isDeleted')" prop="isDeleted"> <InputNumber v-model="entity.isDeleted"></InputNumber>
</FormItem></Col>
<Col :span="12"><FormItem :label="l('deletionTime')" prop="deletionTime"> <DatePicker type="date" v-model="entity.deletionTime"></DatePicker>
</FormItem></Col>
<Col :span="12"><FormItem :label="l('deleterUserId')" prop="deleterUserId"> <InputNumber v-model="entity.deleterUserId"></InputNumber>
</FormItem></Col>
<Col :span="12"><FormItem :label="l('title')" prop="title"> <Input v-model="entity.title"> </Input>
</FormItem></Col>
<Col :span="12"><FormItem :label="l('creator')" prop="creator"> <Input v-model="entity.creator"> </Input>
</FormItem></Col>
<Col :span="12"><FormItem :label="l('content')" prop="content"> <Input v-model="entity.content"> </Input>
</FormItem></Col>
<Col :span="12"><FormItem :label="l('filePath')" prop="filePath"> <InputFile v-model="entity.filePath"></InputFile>
</FormItem></Col>
<Col :span="12"><FormItem :label="l('filePaths')" prop="filePaths"> <Input v-model="entity.filePaths"> </Input>
</FormItem></Col>
<Col :span="12"><FormItem :label="l('dispatchId')" prop="dispatchId"> <InputNumber v-model="entity.dispatchId"></InputNumber>
</FormItem></Col>
<Col :span="12"><FormItem :label="l('routingDetailId')" prop="routingDetailId"> <InputNumber v-model="entity.routingDetailId"></InputNumber>
</FormItem></Col>
<Col :span="12"><FormItem :label="l('routingHeaderId')" prop="routingHeaderId"> <InputNumber v-model="entity.routingHeaderId"></InputNumber>
</FormItem></Col>
<Col :span="12"><FormItem :label="l('type')" prop="type"> <InputNumber v-model="entity.type"></InputNumber>
</FormItem></Col>
</Row>
<FormItem>
<Button type="primary" @click="handleSubmit" :disabled="disabled">保存</Button>
<Button @click="handleClose" class="ml20">取消</Button>
</FormItem>
</Form>
</template>
<script>
import Api from './api'
export default {
name: 'Edit',
data() {
return {
disabled: false,
entity: {
},
rules: {
name: [{ required: true, message: '必填', trigger: 'blur' }]
}
}
},
props: {
eid: Number
},
mounted() {
if (this.eid > 0) {
this.load(this.eid);
}
},
methods: {
load(v) {
Api.get({ id: v }).then(r => {
this.entity = r.result;
})
},
handleSubmit() {
this.$refs.form.validate((v) => {
if (v) {
this.disabled = true;
Api.update(this.entity).then((r) => {
this.disabled = false;
if (r.success) {
this.$Message.success('保存成功')
this.$emit('on-ok')
} else {
this.$Message.error('保存失败')
}
}).catch(err => {
this.disabled = false;
this.$Message.error('保存失败')
console.warn(err)
})
}
})
},
handleClose() {
this.$emit('on-close')
},
l(key) {
key = "process_case" + "." + key;
return this.$t(key)
}
},
watch: {
eid(v) {
if (v != 0) {
this.load(v);
}
}
}
}
</script>
\ No newline at end of file
This diff is collapsed.
<template>
<div class="wu_bg">
<div class="case_top">
<div class="sear_btn">
<Input search class="search_box mr10" enter-button placeholder="请输入文件名" />
<a @click="allChecked" ><Icon type="md-checkbox-outline" />全选</a>
<!-- <a @click="copyCard" ><Icon type="ios-browsers-outline" />复制</a> -->
<!-- <a @click="importCard" ><Icon type="ios-log-in" />导入</a> -->
<a @click="addCard" ><Icon type="ios-add-circle-outline" />新建</a>
<span>{{cardlist.length}} 个案例;</span>
</div>
<a class="slip fr" @click="starFun" ><Icon type="md-swap" /></a>
</div>
<div class="case_box">
<!-- <Row>
<Col span="6" v-for="i of 10" :key="i"> -->
<!-- <Card class="file_card" @click="checkCard">
<div class="file">
<Icon type="ios-paper" v-if="i%2==0"/>
<Icon type="ios-film" v-else/>
</div>
<div class="list">
<ul>
<li>工艺文档名称</li>
<li>张三</li>
<li>2020-02-12</li>
</ul>
</div>
</Card> -->
<!-- </Col>
</Row> -->
<CheckboxGroup v-model="caseLise" @on-change="changeCards">
<Checkbox class="file_card" border @on-change="changeCard"
v-for="(item,index) in cardlist" :label="item.id" :key="index">
<div class="file">
<Icon type="ios-paper" v-if="item.id%3==0"/>
<!-- <Icon type="ios-film" v-else/> -->
<Icon type="md-film" v-else/>
</div>
<div class="list">
<ul>
<li>{{item.name}}</li>
<li>{{item.userName}}</li>
<li>{{item.time}}</li>
</ul>
</div>
</Checkbox>
</CheckboxGroup>
</div>
<div class="footer" v-if="checkCards!=0">
<span>已选: {{checkCards}} 个案例</span>
<Button class="span ml20 mr15" type="primary" @click="deliteCard"><Icon type="ios-trash-outline" />删除</Button>
<!-- <Button class="span ml20" type="primary" @click="exportCard"><Icon type="ios-log-out" />导出</Button> -->
<Button type="default" @click="cancel">取消</Button>
</div>
</div>
</template>
<script>
export default {
name:'starOrder',
data(){
return{
caseLise:[],
checkCards:0,
footerToolbar:false,
cardlist:[
{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:1,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:2,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:3,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:4,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:5,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:6,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:7,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:8,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:9,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:10,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:11,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:12,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:13,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:14,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:15,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:16,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:17,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:18,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:19,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:20,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:21,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:22,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:23,
checked:false
},
],
}
},
created() {
//
},
async fetch({ store, params }) {
await store.dispatch("loadDictionary"); // 加载数据字典
},
mounted() { },
methods: {
starFun(){
this.$Message.success("排序...")
},
allChecked(){
let items = this.cardlist;
let item = [];
items.map(u=>{ item.push(u.id) } )
if(this.caseLise.length==0){
this.caseLise = item
this.checkCards = item.length
}else{
this.caseLise = []
this.checkCards = 0
}
},
copyCard(){
this.$Message.success("复制工艺案例")
},
deliteCard(){
if(this.checkCards==0){
this.$Message.warning("请选择工艺案例 !")
return
}else{
this.$Modal.confirm({
title: "删除确认",
content: "<p>确认要删除这 " + this.checkCards +" 个工艺案例吗?</p>",
onOk: () => {
this.$Message.success("删除工艺案例...")
}
});
}
},
importCard(){
this.$Message.success("导入工艺案例")
},
exportCard(){
this.$Message.success("导出工艺案例")
},
addCard(){
this.$Message.success("新建工艺案例")
},
changeCards(list){//多选方法
this.checkCards = list.length
},
changeCard(value){
console.log(111)
},
cancel(){//底部取消
this.checkCards = 0;
}
},
}
</script>
<template>
<Form ref="form" :model="condition" :label-width="90">
<Row>
<Col :span="12" :v-if="condition.id.show"><FormItem :label="$t('id')" prop="id"> <Input v-model="condition.id.value"> </Input>
</FormItem></Col>
<Col :span="12" :v-if="condition.creationTime.show"><FormItem :label="l('creationTime')" prop="creationTime"> <DatePicker type="daterange" v-model="condition.creationTime.value"></DatePicker>
</FormItem></Col>
<Col :span="12" :v-if="condition.creatorUserId.show"><FormItem :label="l('creatorUserId')" prop="creatorUserId"> <Input v-model="condition.creatorUserId.value"> </Input>
</FormItem></Col>
<Col :span="12" :v-if="condition.lastModificationTime.show"><FormItem :label="l('lastModificationTime')" prop="lastModificationTime"> <DatePicker type="daterange" v-model="condition.lastModificationTime.value"></DatePicker>
</FormItem></Col>
<Col :span="12" :v-if="condition.lastModifierUserId.show"><FormItem :label="l('lastModifierUserId')" prop="lastModifierUserId"> <Input v-model="condition.lastModifierUserId.value"> </Input>
</FormItem></Col>
<Col :span="12" :v-if="condition.deletionTime.show"><FormItem :label="l('deletionTime')" prop="deletionTime"> <DatePicker type="daterange" v-model="condition.deletionTime.value"></DatePicker>
</FormItem></Col>
<Col :span="12" :v-if="condition.title.show"><FormItem :label="l('title')" prop="title"> <Input v-model="condition.title.value"> </Input>
</FormItem></Col>
<Col :span="12" :v-if="condition.creator.show"><FormItem :label="l('creator')" prop="creator"> <Input v-model="condition.creator.value"> </Input>
</FormItem></Col>
<Col :span="12" :v-if="condition.filePath.show"><FormItem :label="l('filePath')" prop="filePath"> <Input v-model="condition.filePath.value"> </Input>
</FormItem></Col>
<Col :span="12" :v-if="condition.filePaths.show"><FormItem :label="l('filePaths')" prop="filePaths"> <Input v-model="condition.filePaths.value"> </Input>
</FormItem></Col>
<Col :span="12" :v-if="condition.dispatchId.show"><FormItem :label="l('dispatchId')" prop="dispatchId"> <Input v-model="condition.dispatchId.value"> </Input>
</FormItem></Col>
<Col :span="12" :v-if="condition.routingDetailId.show"><FormItem :label="l('routingDetailId')" prop="routingDetailId"> <Input v-model="condition.routingDetailId.value"> </Input>
</FormItem></Col>
<Col :span="12" :v-if="condition.routingHeaderId.show"><FormItem :label="l('routingHeaderId')" prop="routingHeaderId"> <Input v-model="condition.routingHeaderId.value"> </Input>
</FormItem></Col>
<Col :span="12" :v-if="condition.type.show"><FormItem :label="l('type')" prop="type"> <Input v-model="condition.type.value"> </Input>
</FormItem></Col>
</Row>
</Form>
</template>
<script>
import Api from './api'
export default {
name: 'Add',
data() {
return {
condition: {
id:{op:"Equal",value:null,show:true},
creationTime:{op:"Range",value:null,show:true},
creatorUserId:{op:"Equal",value:null,show:true},
lastModificationTime:{op:"Range",value:null,show:true},
lastModifierUserId:{op:"Equal",value:null,show:true},
deletionTime:{op:"Range",value:null,show:true},
title:{op:"Equal",value:null,show:true},
creator:{op:"Equal",value:null,show:true},
filePath:{op:"Equal",value:null,show:true},
filePaths:{op:"Equal",value:null,show:true},
dispatchId:{op:"Equal",value:null,show:true},
routingDetailId:{op:"Equal",value:null,show:true},
routingHeaderId:{op:"Equal",value:null,show:true},
type:{op:"Equal",value:null,show:true},
},
}
},
methods: {
handleClose() {
this.$emit('on-close')
},
l(key) {
key = "process_case" + "." + key;
return this.$t(key)
}
}
}
</script>
\ No newline at end of file
......@@ -2,14 +2,14 @@
.execute_box{
position: relative;
margin: 0px -10px;
.top_title{
height: 50px;
line-height: 49px;
text-align: center;
font-weight: 600;
padding: 0 15px;
border-bottom: 1px solid #CACBD0;
}
// .top_title{
// height: 50px;
// line-height: 49px;
// text-align: center;
// font-weight: 600;
// padding: 0 15px;
// border-bottom: 1px solid #CACBD0;
// }
.star{
height: 33vh;
padding: 6vh 0;
......@@ -75,7 +75,7 @@
border-bottom-left-radius: 5px;
}
.footer_box{
height: calc( 66vh - 142px);
height: calc( 66vh - 92px);
padding: 40px 40px 40px 40px;
.ul_box{
padding: 35px 60px;
......@@ -97,6 +97,12 @@
margin: 10px 0 0 170px;
}
}
.pross_case{
padding: 5px 50px 0;
.table_box{
height: calc(100vh - 105px);
}
}
}
.gd_box{
......
......@@ -3,10 +3,10 @@
</style>
<template>
<div class="execute_box">
<div class="top_title">
<!-- <div class="top_title">
<span class="fl">{{orderTitle}}</span>
<div>工单编号: 12001011</div>
</div>
</div> -->
<component :is="detail" :gdid="gdId"/>
<a class="gd_list" @click="orderlistMode = true">工单列表</a>
<a class="gn_area" @click="functionalMode = true">功能区</a>
......@@ -16,7 +16,7 @@
<div slot="header">
<div class="header">
<a class="gd_tt" @click="goToOrder"><Icon type="ios-undo-outline" />工单列表</a>
<!-- <Dictionary code="taskList.status" class="select_star fr" v-model="odermodel" @on-change="searchOrder"></Dictionary> -->
<Dictionary code="taskList.status" class="select_star fr" v-model="odermodel" @on-change="searchOrder"></Dictionary>
<!-- <Select v-model="odermodel" style="width:100px" @on-change="searchOrder">
<Option v-for="item in oderList" :value="item.value" :key="item.index">{{ item.label }} -->
<!-- <state
......
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