Commit 43cb5531 authored by 仇晓婷's avatar 仇晓婷

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

parents 23ed2387 ea1b0bdb
...@@ -81,7 +81,7 @@ export default { ...@@ -81,7 +81,7 @@ export default {
}, },
methods: { methods: {
handler() { handler() {
if (this.disable == 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,
...@@ -94,6 +94,7 @@ export default { ...@@ -94,6 +94,7 @@ export default {
this.$emit("click", event); this.$emit("click", event);
} }
} }
}
}, },
watch: { watch: {
v() {}, v() {},
......
...@@ -88,6 +88,19 @@ export default { ...@@ -88,6 +88,19 @@ export default {
); );
}, },
}, },
{
key: "creatorUserId",
title: this.l("creatorUserId"),
align: "left",
high: true,
type: 'user'
},
{
key: "creationTime",
title: this.l("creationTime"),
align: "left",
high: true,
},
{ {
title: '操作', title: '操作',
key: 'action', key: 'action',
......
...@@ -15,6 +15,11 @@ ...@@ -15,6 +15,11 @@
<UserSelect ref="userSelected" v-model="entity.userId" /> <UserSelect ref="userSelected" v-model="entity.userId" />
</FormItem> </FormItem>
</Col> </Col>
<Col :span="12">
<FormItem label="计划开始结束时间" prop="date">
<DatePicker type="datetimerange" format="yyyy-MM-dd" v-model="date" placeholder="请选择时间范围" @on-change="changeFormat" style="width: 300px"></DatePicker>
</FormItem>
</Col>
<Col :span="24"> <Col :span="24">
<FormItem :label="l('note')" prop="note"> <FormItem :label="l('note')" prop="note">
<i-quill v-model="entity.note" :height="300" v-paste="handleImg" /> <i-quill v-model="entity.note" :height="300" v-paste="handleImg" />
...@@ -40,29 +45,16 @@ export default { ...@@ -40,29 +45,16 @@ export default {
return { return {
disabled: false, disabled: false,
entity: { entity: {
creationTime: null,
creatorUserId: null,
lastModificationTime: null,
lastModifierUserId: null,
isDeleted: null,
deletionTime: null,
deleterUserId: null,
title: "", title: "",
planId: null, planId: '',
projectId: null, projectId: '',
level: null, level: null,
status: null, status: null,
projectTitle: "",
planTitle: "",
userIds: "", userIds: "",
userId: "", userId: "",
endDate: null,
note: "", note: "",
startDate: null, planstartdate: null,
plansToStartDate: null, planenddate: null,
plansToEndTime: null,
completePercentage: null,
upTaskId: null
}, },
rules: { rules: {
name: [{ name: [{
...@@ -124,6 +116,10 @@ export default { ...@@ -124,6 +116,10 @@ export default {
this.entity.id = 0; this.entity.id = 0;
}); });
}, },
changeFormat(val) {
this.entity.planstartdate = val[0];
this.entity.planenddate = val[1];
},
handleImg(e) { handleImg(e) {
console.warn(e) console.warn(e)
let file = null let file = null
......
<template> <template>
<div class="detail" style="width:100%"> <div class="detail" style="width:100%">
<Row style="height:284px"> <Row style="height:284px">
<Filed :span="6" :name="l('creationTime')">{{entity.creationTime}}</Filed>
<Filed :span="6" :name="l('creatorUserId')">
<User :value="entity.creatorUserId"></User>
</Filed>
<Filed :span="6" :name="l('title')">{{entity.title}}</Filed> <Filed :span="6" :name="l('title')">{{entity.title}}</Filed>
<Filed :span="6" :name="l('level')"> <Filed :span="6" :name="l('level')">
<state code="project.task.level" :value="entity.level" type="text"></state> <state code="project.task.level" :value="entity.level" type="text"></state>
...@@ -12,14 +8,25 @@ ...@@ -12,14 +8,25 @@
<Filed :span="6" :name="l('status')"> <Filed :span="6" :name="l('status')">
<state code="project.task.status" :value="entity.status" type="text"></state> <state code="project.task.status" :value="entity.status" type="text"></state>
</Filed> </Filed>
<Filed :span="6" :name="l('userId')">{{entity.userId}}</Filed> <Filed :span="6" :name="l('userId')">
<Filed :span="6" :name="l('endDate')">{{entity.endDate}}</Filed> <User :value="parseInt(entity.userId)"></User>
<Filed :span="6" :name="l('startDate')">{{entity.startDate}}</Filed> </Filed>
<Filed :span="12" name="计划起止日期">
<TimeDifference :timeValue="timeValuePlan" :work="1"></TimeDifference>
</Filed>
<Filed :span="12" name="实际起止日期">
<TimeDifference :timeValue="timeValue" :work="1"></TimeDifference>
</Filed>
<Filed :span="24" :name="l('note')"> <Filed :span="24" :name="l('note')">
<div style="height:200px" v-html="entity.note" class="tex_in10"></div> <div style="height:200px" v-html="entity.note" class="tex_in10"></div>
</Filed> </Filed>
<Filed :span="6" :name="l('creationTime')">{{entity.creationTime}}</Filed>
<Filed :span="6" :name="l('creatorUserId')">
<User :value="entity.creatorUserId"></User>
</Filed>
</Row> </Row>
<component :is="detail" :eid="curId" /> <component :is="detail" :eid="curId" v-if="false" />
</div> </div>
</template> </template>
...@@ -30,6 +37,14 @@ export default { ...@@ -30,6 +37,14 @@ export default {
data() { data() {
return { return {
entity: {}, entity: {},
timeValue: {
startDate: "",
endDate: "",
},
timeValuePlan: {
planStartDate: "",
planEndDate: "",
},
rules: { rules: {
name: [{ name: [{
required: true, required: true,
...@@ -60,9 +75,17 @@ export default { ...@@ -60,9 +75,17 @@ export default {
id: v id: v
}).then(r => { }).then(r => {
this.entity = r.result; this.entity = r.result;
this.timeValue = {
startDate: r.result.startDate,
endDate: r.result.endDate,
},
this.timeValuePlan = {
planStartDate: r.result.planStartDate,
planEndDate: r.result.planEndDate,
},
this.$emit('on-load') this.$emit('on-load')
this.curId = v // this.curId = v
this.detail = () => import('../record/index1') //this.detail = () => import('../record/index1')
}) })
}, },
......
<template> <template>
<Layout class="full"> <Layout class="full">
<Sider hide-trigger v-if="showMenu" class="menu_side" width="300"> <Sider hide-trigger v-if="showMenu" class="menu_side" width="300">
<ProjectTaskTree <ProjectTaskTree :curId="projectId" @on-hide="onHide" @on-select="productSearch" />
:curId="projectId"
@on-hide="onHide"
@on-select="productSearch"
/>
</Sider> </Sider>
<div v-if="!showMenu" class="show_menu"> <div v-if="!showMenu" class="show_menu">
<a class="menu_play fr" @click="showMenuFn" title="展开"> <a class="menu_play fr" @click="showMenuFn" title="展开">
<Icon type="ios-arrow-forward" size="24" /> <Icon type="ios-arrow-forward" size="24" />
</a> </a>
</div> </div>
<Content class="content" :class="!showMenu ? 'con_bord' : ''"> <Content class="content" :class="!showMenu?'con_bord':''">
<DataGrid <DataGrid :columns="columns" ref="grid" :action="action" :conditions="easySearch" :lazy="true">
:columns="columns"
ref="grid"
:action="action"
:conditions="easySearch"
:lazy="true"
:set="false"
>
<template slot="easySearch"> <template slot="easySearch">
<Form ref="formInline" inline> <Form ref="formInline" inline>
<FormItem> <FormItem>
<div class="taskMenu"> <div class="taskMenu">
<Menu mode="horizontal" active-name="2" @on-select="onSelect"> <Menu mode="horizontal" active-name="2" @on-select="onSelect">
<MenuItem name="1"> 所有 </MenuItem> <MenuItem name="1">
<MenuItem name="2"> 未关闭 </MenuItem> 所有
<MenuItem name="3"> 指派给我 </MenuItem> </MenuItem>
<MenuItem name="4"> 由我参与 </MenuItem> <MenuItem name="2">
<MenuItem name="5"> 已延期 </MenuItem> 未关闭
</MenuItem>
<MenuItem name="3">
指派给我
</MenuItem>
<MenuItem name="4">
由我参与
</MenuItem>
<MenuItem name="5">
已延期
</MenuItem>
<!-- <!--
<Submenu name="6"> <Submenu name="6">
<template slot="title"> <template slot="title">
...@@ -55,16 +54,8 @@ ...@@ -55,16 +54,8 @@
</Tabs> </Tabs>
</div> </div>
</FormItem> </FormItem>
<FormItem prop="keys" <FormItem prop="keys"><Input placeholder="请输入项目标题/计划名称/任务标题" v-model="easySearch.keys.value" v-width="240" /> </FormItem>
><Input <FormItem><Button type="primary" @click="search">查询</Button></FormItem>
placeholder="请输入项目标题/计划名称/任务标题"
v-model="easySearch.keys.value"
v-width="240"
/>
</FormItem>
<FormItem
><Button type="primary" @click="search">查询</Button></FormItem
>
<!-- <!--
<FormItem> <FormItem>
<Button @click="highSearch" type="text"> <Button @click="highSearch" type="text">
...@@ -83,30 +74,18 @@ ...@@ -83,30 +74,18 @@
<Button type="primary" class="mr10 ml10">继续</Button> <Button type="primary" class="mr10 ml10">继续</Button>
</template> </template>
</DataGrid> </DataGrid>
<Modal <Modal v-model="modal" :title="title" width="1200" :fullscreen="fullScreen" footer-hide>
v-model="modal" <component :is="detail" :eid="curId" :pid="planId" @on-close="cancel" @on-ok="ok" />
:title="title"
width="1200"
:fullscreen="fullScreen"
footer-hide
>
<component
:is="detail"
:eid="curId"
:pid="planId"
@on-close="cancel"
@on-ok="ok"
/>
</Modal> </Modal>
</Content> </Content>
</Layout> </Layout>
</template> </template>
<script> <script>
import Api from "./api"; import Api from './api'
import Search from "./search"; import Search from './search'
export default { export default {
name: "list", name: 'list',
components: { components: {
Search, Search,
}, },
...@@ -122,24 +101,24 @@ export default { ...@@ -122,24 +101,24 @@ export default {
easySearch: { easySearch: {
keys: { keys: {
op: "title", op: "title",
value: null, value: null
}, },
projectId: { projectId: {
op: "Equal", op: "Equal",
value: "", value: ''
}, },
planId: { planId: {
op: "In", op: "In",
value: [], value: []
}, }
}, },
theme1: "light", theme1: 'light',
modal: false, modal: false,
title: "新增", title: "新增",
detail: null, detail: null,
curId: "", curId: '',
fullScreen: false, fullScreen: false,
projectId: "", projectId: '',
columns: [ columns: [
// { // {
// key: "selection", // key: "selection",
...@@ -161,26 +140,22 @@ export default { ...@@ -161,26 +140,22 @@ export default {
easy: true, easy: true,
high: true, high: true,
render: (h, params) => { render: (h, params) => {
return h( return h('a', {
"a",
{
attrs: { attrs: {
oprate: "detail", oprate: 'detail'
}, },
on: { on: {
click: () => this.viewRecord(params.row.id), click: () => this.viewRecord(params.row.id)
}, }
}, }, params.row.title)
params.row.title }
);
},
}, },
{ {
key: "level", key: "level",
title: this.l("level"), title: this.l("level"),
align: "center", align: "center",
high: true, high: true,
code: "project.task.level", code: 'project.task.level'
}, },
{ {
key: "projectTitle", key: "projectTitle",
...@@ -203,7 +178,7 @@ export default { ...@@ -203,7 +178,7 @@ export default {
title: this.l("status"), title: this.l("status"),
align: "center", align: "center",
high: true, high: true,
code: "project.task.status", code: 'project.task.status'
}, },
{ {
...@@ -211,19 +186,43 @@ export default { ...@@ -211,19 +186,43 @@ export default {
title: this.l("userId"), title: this.l("userId"),
align: "left", align: "left",
high: true, high: true,
type: "user", type: 'user'
}, },
{ {
key: "startDate", key: "startDate",
title: this.l("startDate"), title: '计划起止日期',
align: "center", align: "center",
high: true, high: true,
width: 400,
render: (h, params) => {
return h('TimeDifference', {
props: {
timeValue: {
startDate: params.row.planstartdate,
endDate: params.row.planenddate,
},
work: 1
}
})
}
}, },
{ {
key: "endDate", key: "startDate",
title: this.l("endDate"), title: '实际起止日期',
align: "center", align: "center",
high: true, high: true,
width: 400,
render: (h, params) => {
return h('TimeDifference', {
props: {
timeValue: {
startDate: params.row.startDate,
endDate: params.row.endDate,
},
work: 1
}
})
}
}, },
{ {
key: "workHour", key: "workHour",
...@@ -231,70 +230,57 @@ export default { ...@@ -231,70 +230,57 @@ export default {
align: "center", align: "center",
high: true, high: true,
render: (h, params) => { render: (h, params) => {
return h( return h('a', {
"a",
{
attrs: { attrs: {
oprate: "detail", oprate: 'detail'
}, },
on: { on: {
click: () => this.viewWork(params.row.id), click: () => this.viewWork(params.row.id)
}, }
}, }, params.row.workHour)
params.row.workHour }
);
},
}, },
{ {
key: "note", key: "note",
title: this.l("note"), title: this.l("note"),
align: "left", align: "left",
high: true, high: true,
hide: true, hide: true
}, },
{ {
key: "creationTime", key: "creatorUserId",
title: this.l("creationTime"), title: this.l("creatorUserId"),
align: "left", align: "left",
high: true, high: true,
hide: true, type: 'user'
}, },
{ {
key: "creatorUserId", key: "creationTime",
title: this.l("creatorUserId"), title: this.l("creationTime"),
align: "left", align: "left",
high: true, high: true,
hide: true,
type: "user",
}, },
{ {
title: "操作", title: '操作',
key: "action", key: 'action',
width: 200, width: 200,
align: "center", align: 'center',
render: (h, params) => { render: (h, params) => {
return h( return h('div', {
"div", class: "action"
{ }, [
class: "action", h('op', {
},
[
h("op", {
attrs: { attrs: {
icon: "md-arrow-dropright-circle", icon: "md-arrow-dropright-circle",
type: "icon", type: "icon",
oprate: "edit", oprate: "edit",
title: title: params.row.status == 0 ? "开始" : params.row.status == 2 ? "继续" : '',
params.row.status == 0 disable: params.row.status
? "开始"
: params.row.status == 2
? "继续"
: "",
//disable: (params.row.status == 0 || params.row.status == 2) ? false : true //disable: (params.row.status == 0 || params.row.status == 2) ? false : true
}, },
on: { on: {
click: () => this.updatepart(params.row.id, 1), click: () => this.updatepart(params.row.id, 1)
}, }
}), }),
// h('op', { // h('op', {
// attrs: { // attrs: {
...@@ -307,7 +293,7 @@ export default { ...@@ -307,7 +293,7 @@ export default {
// click: () => this.updatepart(params.row.id, 2) // click: () => this.updatepart(params.row.id, 2)
// } // }
// }), // }),
h("op", { h('op', {
attrs: { attrs: {
icon: "ios-alarm", icon: "ios-alarm",
type: "icon", type: "icon",
...@@ -316,136 +302,140 @@ export default { ...@@ -316,136 +302,140 @@ export default {
//disable: (params.row.status != 0 && params.row.status != 3) ? false : true //disable: (params.row.status != 0 && params.row.status != 3) ? false : true
}, },
on: { on: {
click: () => this.updatepart(params.row.id, 3), click: () => this.updatepart(params.row.id, 2)
}, }
}), }),
h("op", { h('op', {
attrs: { attrs: {
icon: "md-add", icon: "md-add",
type: "icon", type: "icon",
oprate: "add", oprate: "add",
title: "新增记录", title: "新增记录",
disable: params.row.status == 1 ? 0 : 1
// disable: (params.row.status != 3 && params.row.status != 4) ? false : true // disable: (params.row.status != 3 && params.row.status != 4) ? false : true
}, },
on: { on: {
click: () => this.addRecord(params.row.id), click: () => this.addRecord(params.row.id)
}, }
}), }),
h("op", { h('op', {
attrs: { attrs: {
icon: "md-create", icon: "md-create",
type: "icon", type: "icon",
oprate: "edit", oprate: "edit",
title: "修改", title: "修改",
disable: params.row.status
//disable: (params.row.status == 0 || params.row.status == 2) ? false : true //disable: (params.row.status == 0 || params.row.status == 2) ? false : true
}, },
on: { on: {
click: () => this.edit(params.row.id), click: () => this.edit(params.row.id)
}, }
}), }),
h("op", { h('op', {
attrs: { attrs: {
icon: "md-trash", icon: "md-trash",
type: "icon", type: "icon",
title: "删除", title: "删除",
oprate: "delete", oprate: 'delete',
disable: params.row.status
// disable: (params.row.status == 0 || params.row.status == 3) ? false : true // disable: (params.row.status == 0 || params.row.status == 3) ? false : true
}, },
on: { on: {
click: () => this.remove(params.row.id), click: () => this.remove(params.row.id)
}, }
}), })
] ])
); }
},
}, },
], ],
data1: [ data1: [{
{
id: 1, id: 1,
title: "测试title", title: '测试title'
}, }],
],
data: [], data: [],
planId: "", //当前计划Id planId: '', //当前计划Id
planIdsCur: [], planIdsCur: []
}; }
}, },
props: { props: {
eid: String, eid: String
}, },
async fetch({ store, params }) { async fetch({
await store.dispatch("loadDictionary"); // 加载数据字典 store,
params
}) {
await store.dispatch('loadDictionary') // 加载数据字典
}, },
created() { created() {
if (this.eid != "") { if (this.eid != '') {
this.projectId = this.eid; this.projectId = this.eid
this.easySearch.projectId.value = this.eid; this.easySearch.projectId.value = this.eid
} }
this.treeHeight = window.innerHeight - 150; this.treeHeight = window.innerHeight - 150;
}, },
mounted() { mounted() {
if (this.eid != "") { if (this.eid != "") {
this.easySearch.projectId.value = this.eid; this.easySearch.projectId.value = this.eid
this.$refs.grid.reload(this.easySearch); this.$refs.grid.reload(this.easySearch);
} }
}, },
methods: { methods: {
ok() { ok() {
this.$refs.grid.load(); this.$refs.grid.load()
this.modal = false; this.modal = false
this.curId = 0; this.curId = 0;
}, },
search() { search() {
this.easySearch.planId.value = this.planIdsCur; this.easySearch.planId.value = this.planIdsCur
this.$refs.grid.reload(this.easySearch); this.$refs.grid.reload(this.easySearch)
}, },
add() { add() {
this.curId = this.projectId; this.curId = this.projectId;
this.title = "新增"; this.title = "新增";
this.fullScreen = false; this.fullScreen = false;
this.detail = () => import("./add"); this.detail = () => import('./add')
this.modal = true; this.modal = true;
}, },
highSearch() { highSearch() {
this.curId = 0; this.curId = 0;
this.title = "高级搜索"; this.title = "高级搜索";
this.fullScreen = false; this.fullScreen = false;
this.detail = () => import("./search"); this.detail = () => import('./search')
this.modal = true; this.modal = true;
}, },
copy(id) { copy(id) {
this.curId = id; this.curId = id;
this.title = "克隆"; this.title = "克隆";
this.fullScreen = false; this.fullScreen = false;
this.detail = () => import("./add"); this.detail = () => import('./add')
this.modal = true; this.modal = true;
}, },
view(id) { view(id) {
this.curId = id; this.curId = id;
this.title = "详情"; this.title = "详情";
this.fullScreen = false; this.fullScreen = false;
this.detail = () => import("./detail"); this.detail = () => import('./detail')
this.modal = true; this.modal = true;
}, },
edit(id) { edit(id) {
this.curId = id; this.curId = id;
this.title = "编辑"; this.title = "编辑";
this.fullScreen = false; this.fullScreen = false;
this.detail = () => import("./edit"); this.detail = () => import('./edit')
this.modal = true; this.modal = true;
}, },
remove(id) { remove(id) {
Api.delete(id).then((r) => { Api.delete(id).then((r) => {
if (r.success) { if (r.success) {
this.$refs.grid.load(); this.$refs.grid.load();
this.$Message.success("删除成功"); this.$Message.success('删除成功')
} }
}); })
}, },
cancel() { cancel() {
this.curId = 0; this.curId = 0;
this.modal = false; this.modal = false
}, },
onHide() { onHide() {
// this.$Message.info("收起左侧树") // this.$Message.info("收起左侧树")
...@@ -456,16 +446,16 @@ export default { ...@@ -456,16 +446,16 @@ export default {
this.showMenu = true; this.showMenu = true;
}, },
productSearch(id, item, planIds) { productSearch(id, item, planIds) {
this.planId = item.selected ? id : ""; this.planId = item.selected ? id : '';
this.planIdsCur = item.selected ? planIds : []; this.planIdsCur = item.selected ? planIds : []
let where = { let where = {
planId: { planId: {
op: "In", op: "In",
value: item.selected ? planIds : [], value: item.selected ? planIds : []
}, },
projectId: { projectId: {
op: "Equal", op: "Equal",
value: this.eid, value: this.eid
}, },
}; };
this.$refs.grid.reload(where); this.$refs.grid.reload(where);
...@@ -473,64 +463,67 @@ export default { ...@@ -473,64 +463,67 @@ export default {
updatepart(valId, valStatus) { updatepart(valId, valStatus) {
let params = { let params = {
id: valId, id: valId,
status: valStatus, status: valStatus
}; }
Api.updatepart(params) if (valStatus == 1) {
.then((r) => { params.startDate = ''
}
if (valStatus == 2) {
params.endDate = ''
}
Api.updatepart(params).then(r => {
if (r.success) { if (r.success) {
this.$refs.grid.load(); this.$refs.grid.load();
this.$Message.success("操作成功"); this.$Message.success('操作成功')
} else { } else {
this.$Message.error("操作失败"); this.$Message.error('操作失败')
} }
}) }).catch(err => {
.catch((err) => {
this.disabled = false; this.disabled = false;
this.$Message.error("操作失败"); this.$Message.error('操作失败')
console.warn(err); console.warn(err)
}); })
}, },
onSelect(val) { onSelect(val) {
this.$refs.grid.reload(this.easySearch); this.$refs.grid.reload(this.easySearch)
}, },
viewRecord(id) { viewRecord(id) {
this.curId = id; this.curId = id;
this.title = "查看记录"; this.title = "查看记录";
this.fullScreen = true; this.fullScreen = true;
this.detail = () => import("./detail"); this.detail = () => import('./detail')
this.modal = true; this.modal = true;
}, },
viewWork(id) { viewWork(id) {
this.curId = id; this.curId = id;
this.title = "查看工时"; this.title = "查看工时";
this.fullScreen = false; this.fullScreen = false;
this.detail = () => import("../record"); this.detail = () => import('../record')
this.modal = true; this.modal = true;
}, },
addRecord(id) { addRecord(id) {
this.curId = id; this.curId = id;
this.title = "新增记录"; this.title = "新增记录";
this.fullScreen = false; this.fullScreen = false;
this.detail = () => import("../record/add"); this.detail = () => import('../record/add')
this.modal = true; this.modal = true;
}, },
l(key) { l(key) {
let vkey = "project_task" + "." + key; let vkey = "project_task" + "." + key;
return this.$t(vkey) || key; return this.$t(vkey) || key
}, }
}, },
watch: { watch: {
eid(v) { eid(v) {
if (v != "") { if (v != "") {
this.eid = v; this.eid = v
} }
}, }
}, }
}; }
</script> </script>
<style lang="less"> <style lang="less">
@import "../../../assets/css/custom.less";
.full { .full {
margin-top: 0; margin-top: 0;
...@@ -545,21 +538,6 @@ export default { ...@@ -545,21 +538,6 @@ export default {
content: "\f33d"; content: "\f33d";
} }
} }
.ivu-layout-sider {
background: @layout-content-bg-color;
margin-right: 10px;
box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.15);
// height: 89vh;
overflow: auto;
}
.ivu-layout-content {
margin-left: 5px;
background: @right-bg;
box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.15);
overflow: auto;
padding: 10px;
// height: 89vh;
}
} }
.taskTab .ivu-tabs-bar { .taskTab .ivu-tabs-bar {
......
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