0ac7b897 by lttnew

调动记录

1 parent e0c6e843
......@@ -17,12 +17,12 @@
</view>
<view class="info-row">
<text class="label">审核状态</text>
<text :class="getStatusClass(form.auditStatus)" class="value">
{{ getStatusText(userType == 1 ? form.auditStatus : form.shenAuditStatus) }}
<text :class="getStatusClass(getCurrentAuditStatus())" class="value">
{{ getStatusText(getCurrentAuditStatus()) }}
</text>
</view>
<view class="info-row">
<text class="label">是否需要</text>
<text class="label">是否需要省级协会指派</text>
<text class="value">{{ form.selfSelect == 1 ? '否' : '是' }}</text>
</view>
<view class="info-row">
......@@ -35,7 +35,7 @@
</view>
<view class="info-row">
<text class="label">审核日期</text>
<text class="value">{{ formatDate(form.auditTime) }}</text>
<text class="value">{{ formatDate(getCurrentAuditTime()) }}</text>
</view>
<view class="info-row">
<text class="label">考官</text>
......@@ -145,6 +145,14 @@ function getStatusClass(status) {
return classMap[status] || ''
}
function getCurrentAuditStatus() {
return userType.value == 1 ? form.value.auditStatus : form.value.shenAuditStatus
}
function getCurrentAuditTime() {
return userType.value == 1 ? form.value.auditTime : form.value.shenAuditTime
}
function formatDate(dateStr) {
if (!dateStr) return '-'
return dateStr.substring(0, 10)
......
......@@ -81,7 +81,7 @@
<button :class="{ disabled: isRefundDisabled(item) }" :disabled="isRefundDisabled(item)" class="btn btn-pay" @click.stop="handleRefund(item)">退款</button>
</template>
<template v-else>
<button :class="{ disabled: isPayDisabled(item) }" :disabled="isPayDisabled(item)" class="btn btn-pay" @click.stop="handlePay(item)">支付</button>
<button :class="{ disabled: isPayDisabled(item) }" :disabled="isPayDisabled(item)" class="btn btn-pay" @click.stop="handlePay(item)">支付</button>
<button v-if="canShowCancel(item)" :class="{ disabled: isCancelDisabled(item) }" :disabled="isCancelDisabled(item)" class="btn btn-cancel" @click.stop="handleCancel(item)">取消订单</button>
<template v-if="canShowInvoiceApply(item)">
<button :class="{ disabled: isInvoiceDisabled(item) }" :disabled="isInvoiceDisabled(item)" class="btn btn-view-invoice" @click.stop="makeInvoiceFN(item)">申请开票</button>
......@@ -160,26 +160,14 @@
</view>
</view>
<!-- 自定义删除确认弹窗 -->
<view v-if="showDelPopup" class="popup-mask" @touchmove.stop.prevent @click.stop="closeDelPopup">
<!-- 自定义确认弹窗 -->
<view v-if="showConfirmPopup" class="popup-mask" @touchmove.stop.prevent @click.stop="closeConfirmPopup">
<view class="custom-modal" @click.stop>
<view class="modal-title">提示</view>
<view class="modal-content">{{ delModalContent }}</view>
<view class="modal-content">{{ confirmModalContent }}</view>
<view class="modal-btns">
<button class="modal-btn-cancel" @click="closeDelPopup">取消</button>
<button class="modal-btn-confirm" @click="confirmDel">确定</button>
</view>
</view>
</view>
<!-- 自定义取消订单确认弹窗 -->
<view v-if="showCancelPopup" class="popup-mask" @touchmove.stop.prevent @click.stop="closeCancelPopup">
<view class="custom-modal" @click.stop>
<view class="modal-title">提示</view>
<view class="modal-content">{{ cancelModalContent }}</view>
<view class="modal-btns">
<button class="modal-btn-cancel" @click="closeCancelPopup">取消</button>
<button class="modal-btn-confirm" @click="confirmCancel">确定</button>
<button class="modal-btn-cancel" @click="closeConfirmPopup">取消</button>
<button class="modal-btn-confirm" @click="confirmPopup">确定</button>
</view>
</view>
</view>
......@@ -222,8 +210,7 @@ const queryParams = reactive({
});
// 弹窗控制
const showDelPopup = ref(false);
const showCancelPopup = ref(false);
const showConfirmPopup = ref(false);
const isPopupOpen = ref(false);
const showInvoicePopup = ref(false);
const showInvoiceWebview = ref(false);
......@@ -231,8 +218,8 @@ const invoiceWebviewUrl = ref('');
const invoiceData = ref({});
// 弹窗内容
const delModalContent = ref('');
const cancelModalContent = ref('');
const confirmModalContent = ref('');
const confirmModalAction = ref(null);
// 当前操作的订单
const currentOrder = ref(null);
......@@ -418,12 +405,34 @@ const handelSearch = () => {
initData()
}
const openConfirmPopup = ({ content, action, order = null }) => {
currentOrder.value = order
confirmModalContent.value = content
confirmModalAction.value = action
showConfirmPopup.value = true
isPopupOpen.value = true
}
const closeConfirmPopup = () => {
showConfirmPopup.value = false
isPopupOpen.value = false
currentOrder.value = null
confirmModalContent.value = ''
confirmModalAction.value = null
}
const confirmPopup = async () => {
if (typeof confirmModalAction.value !== 'function') return
await confirmModalAction.value(currentOrder.value)
}
// 删除订单
const handleDelete = (item) => {
currentOrder.value = item;
delModalContent.value = `是否确认删除订单编号为"${item.tradeNo}"的订单?`;
showDelPopup.value = true;
isPopupOpen.value = true;
openConfirmPopup({
order: item,
content: `是否确认删除订单编号为"${item.tradeNo}"的订单?`,
action: confirmDel
})
};
// 确认删除
......@@ -435,7 +444,7 @@ const confirmDel = async () => {
pageNum.value = 1;
list.value = [];
await initData();
closeDelPopup();
closeConfirmPopup();
} catch (e) {
uni.showToast({title: '删除失败', icon: 'error'});
}
......@@ -455,13 +464,6 @@ const goToDetail = (item) => {
}
}
// 关闭删除弹窗
const closeDelPopup = () => {
showDelPopup.value = false;
isPopupOpen.value = false;
currentOrder.value = null;
};
// 去缴费
const handlePay = async (item) => {
if (isPayDisabled(item)) return;
......@@ -493,16 +495,20 @@ const makeInvoiceFN = (item) => {
const handleReIssue = async (item) => {
if (isReIssueDisabled(item)) return
const { confirm } = await uni.showModal({
title: '提示',
content: '开票后30天内仅可重开一次,是否确认重新开票?原发票将作废且无法恢复。'
openConfirmPopup({
order: item,
content: '开票后30天内仅可重开一次,是否确认重新开票?原发票将作废且无法恢复。',
action: confirmReIssue
})
if (!confirm) return
}
const confirmReIssue = async (item) => {
if (!item) return
try {
uni.showLoading({ title: '处理中...' })
await api.invoiceFastRed(item.id)
uni.hideLoading()
closeConfirmPopup()
await initData()
makeInvoiceFN({ ...item, invoiceStatus: '0' })
} catch (e) {
......@@ -553,10 +559,11 @@ const closeInvoiceWebview = () => {
// 取消订单
const handleCancel = (item) => {
if (isCancelDisabled(item)) return
currentOrder.value = item;
cancelModalContent.value = `是否确认取消缴费编号为"${item.wfCode}"的订单?`;
showCancelPopup.value = true;
isPopupOpen.value = true;
openConfirmPopup({
order: item,
content: `是否确认取消缴费编号为"${item.wfCode}"的订单?`,
action: confirmCancel
})
};
// 确认取消订单
......@@ -568,30 +575,27 @@ const confirmCancel = async () => {
pageNum.value = 1;
list.value = [];
await initData();
closeCancelPopup();
closeConfirmPopup();
} catch (e) {
uni.showToast({title: '取消失败', icon: 'error'});
}
};
// 关闭取消订单弹窗
const closeCancelPopup = () => {
showCancelPopup.value = false;
isPopupOpen.value = false;
currentOrder.value = null;
};
const handleRefund = async (item) => {
if (isRefundDisabled(item)) return
const { confirm } = await uni.showModal({
title: '提示',
content: `缴费编号为"${item.wfCode}"的订单是否确认退款?`
openConfirmPopup({
order: item,
content: `缴费编号为"${item.wfCode}"的订单是否确认退款?`,
action: confirmRefund
})
if (!confirm) return
}
const confirmRefund = async (item) => {
if (!item) return
try {
uni.showLoading({ title: '处理中...' })
await api.refundOrder(item.id)
closeConfirmPopup()
uni.showToast({ title: '操作成功', icon: 'success' })
pageNum.value = 1
list.value = []
......
......@@ -453,6 +453,13 @@
}
},
{
"path": "mobilizeRecord",
"style": {
"navigationBarTitleText": "调动记录",
"enablePullDownRefresh": false
}
},
{
"path": "order",
"style": {
"navigationBarTitleText": "订单列表",
......@@ -1141,4 +1148,4 @@
]
}
}
}
\ No newline at end of file
}
......
......@@ -113,7 +113,7 @@
<button :class="{ disabled: isRefundDisabled(item) }" :disabled="isRefundDisabled(item)" class="btn btn-danger" @click.stop="handleRefund(item)">退款</button>
</template>
<template v-else>
<button :class="{ disabled: isPayDisabled(item) }" :disabled="isPayDisabled(item)" class="btn btn-pay" @click.stop="handlePay(item)">支付</button>
<button :class="{ disabled: isPayDisabled(item) }" :disabled="isPayDisabled(item)" class="btn btn-pay" @click.stop="handlePay(item)">支付</button>
<button v-if="canShowCancel(item)" :class="{ disabled: isCancelDisabled(item) }" :disabled="isCancelDisabled(item)" class="btn btn-cancel" @click.stop="handleCancel(item)">取消订单</button>
<template v-if="canShowInvoiceApply(item)">
<button :class="{ disabled: isInvoiceDisabled(item) }" :disabled="isInvoiceDisabled(item)" class="btn btn-view-invoice" @click.stop="makeInvoiceFN(item)">申请开票</button>
......@@ -192,26 +192,14 @@
</view>
</view>
<!-- 自定义删除确认弹窗 -->
<view v-if="showDelPopup" class="popup-mask" @touchmove.stop.prevent @click.stop="closeDelPopup">
<!-- 自定义确认弹窗 -->
<view v-if="showConfirmPopup" class="popup-mask" @touchmove.stop.prevent @click.stop="closeConfirmPopup">
<view class="custom-modal" @click.stop>
<view class="modal-title">提示</view>
<view class="modal-content">{{ delModalContent }}</view>
<view class="modal-content">{{ confirmModalContent }}</view>
<view class="modal-btns">
<button class="modal-btn-cancel" @click="closeDelPopup">取消</button>
<button class="modal-btn-confirm" @click="confirmDel">确定</button>
</view>
</view>
</view>
<!-- 自定义取消订单确认弹窗 -->
<view v-if="showCancelPopup" class="popup-mask" @touchmove.stop.prevent @click.stop="closeCancelPopup">
<view class="custom-modal" @click.stop>
<view class="modal-title">提示</view>
<view class="modal-content">{{ cancelModalContent }}</view>
<view class="modal-btns">
<button class="modal-btn-cancel" @click="closeCancelPopup">取消</button>
<button class="modal-btn-confirm" @click="confirmCancel">确定</button>
<button class="modal-btn-cancel" @click="closeConfirmPopup">取消</button>
<button class="modal-btn-confirm" @click="confirmPopup">确定</button>
</view>
</view>
</view>
......@@ -267,8 +255,7 @@ const queryParams = reactive({
});
// 弹窗控制
const showDelPopup = ref(false);
const showCancelPopup = ref(false);
const showConfirmPopup = ref(false);
const isPopupOpen = ref(false);
const showInvoicePopup = ref(false);
const showInvoiceWebview = ref(false);
......@@ -276,8 +263,8 @@ const invoiceWebviewUrl = ref('');
const invoiceData = ref({});
// 弹窗内容
const delModalContent = ref('');
const cancelModalContent = ref('');
const confirmModalContent = ref('');
const confirmModalAction = ref(null);
// 当前操作的订单
const currentOrder = ref(null);
......@@ -504,12 +491,34 @@ const handelSearch = () => {
initData()
}
const openConfirmPopup = ({ content, action, order = null }) => {
currentOrder.value = order
confirmModalContent.value = content
confirmModalAction.value = action
showConfirmPopup.value = true
isPopupOpen.value = true
}
const closeConfirmPopup = () => {
showConfirmPopup.value = false
isPopupOpen.value = false
currentOrder.value = null
confirmModalContent.value = ''
confirmModalAction.value = null
}
const confirmPopup = async () => {
if (typeof confirmModalAction.value !== 'function') return
await confirmModalAction.value(currentOrder.value)
}
// 删除订单
const handleDelete = (item) => {
currentOrder.value = item;
delModalContent.value = `是否确认删除订单编号为"${item.tradeNo}"的订单?`;
showDelPopup.value = true;
isPopupOpen.value = true;
openConfirmPopup({
order: item,
content: `是否确认删除订单编号为"${item.tradeNo}"的订单?`,
action: confirmDel
})
};
// 确认删除
......@@ -521,7 +530,7 @@ const confirmDel = async () => {
pageNum.value = 1;
list.value = [];
await initData();
closeDelPopup();
closeConfirmPopup();
} catch (e) {
uni.showToast({title: '删除失败', icon: 'error'});
}
......@@ -546,13 +555,6 @@ const goToDetail = (item) => {
// uni.navigateTo({url: `/pages/rank/applyDetail?examId=${item.sourceId || item.id}&type=${queryParams.type}`});
}
// 关闭删除弹窗
const closeDelPopup = () => {
showDelPopup.value = false;
isPopupOpen.value = false;
currentOrder.value = null;
};
// 去支付:个人会员订单走 payOrder,再次支付携带 common/order 的 id;单位会员订单走 goPay;级位/段位/越段考试走 paymentDetail。
const handlePay = async (item) => {
if (isPayDisabled(item)) return;
......@@ -605,16 +607,20 @@ const makeInvoiceFN = (item) => {
const handleReIssue = async (item) => {
if (isReIssueDisabled(item)) return
const { confirm } = await uni.showModal({
title: '提示',
content: '开票后30天内仅可重开一次,是否确认重新开票?原发票将作废且无法恢复。'
openConfirmPopup({
order: item,
content: '开票后30天内仅可重开一次,是否确认重新开票?原发票将作废且无法恢复。',
action: confirmReIssue
})
if (!confirm) return
}
const confirmReIssue = async (item) => {
if (!item) return
try {
uni.showLoading({ title: '处理中...' })
await api.invoiceFastRed(item.id)
uni.hideLoading()
closeConfirmPopup()
await initData()
makeInvoiceFN({ ...item, invoiceStatus: '0' })
} catch (e) {
......@@ -665,10 +671,11 @@ const closeInvoiceWebview = () => {
// 取消订单
const handleCancel = (item) => {
if (isCancelDisabled(item)) return
currentOrder.value = item;
cancelModalContent.value = `是否确认取消缴费编号为"${item.wfCode}"的订单?`;
showCancelPopup.value = true;
isPopupOpen.value = true;
openConfirmPopup({
order: item,
content: `是否确认取消缴费编号为"${item.wfCode}"的订单?`,
action: confirmCancel
})
};
// 确认取消订单
......@@ -680,30 +687,27 @@ const confirmCancel = async () => {
pageNum.value = 1;
list.value = [];
await initData();
closeCancelPopup();
closeConfirmPopup();
} catch (e) {
uni.showToast({title: '取消失败', icon: 'error'});
}
};
// 关闭取消订单弹窗
const closeCancelPopup = () => {
showCancelPopup.value = false;
isPopupOpen.value = false;
currentOrder.value = null;
};
const handleRefund = async (item) => {
if (isRefundDisabled(item)) return
const { confirm } = await uni.showModal({
title: '提示',
content: `缴费编号为"${item.wfCode}"的订单是否确认退款?`
openConfirmPopup({
order: item,
content: `缴费编号为"${item.wfCode}"的订单是否确认退款?`,
action: confirmRefund
})
if (!confirm) return
}
const confirmRefund = async (item) => {
if (!item) return
try {
uni.showLoading({ title: '处理中...' })
await api.refundOrder(item.id)
closeConfirmPopup()
uni.showToast({ title: '操作成功', icon: 'success' })
pageNum.value = 1
list.value = []
......
......@@ -199,6 +199,7 @@
<image :src="config.baseUrl_api+'/fs/static/icon/28.png'"/>
订单列表
</view>
</view>
<view class="ttt">单位会员</view>
<view class="girdBox">
......@@ -398,6 +399,10 @@
<image :src="config.baseUrl_api+'/fs/static/icon/6.png'"/>
订单列表
</view>
<view @click="goPath('/personalVip/mobilizeRecord')">
<image :src="config.baseUrl_api+'/fs/static/icon/1.png'"/>
调动记录
</view>
</view>
<view class="ttt">单位会员</view>
......
......@@ -223,8 +223,8 @@ console.log(333, perInfo.value)
// 是否已绑定学员(根据会员卡号判断)
const isBound = computed(() => {
const perCode = perInfo.value?.perCode
return perCode !== undefined && perCode !== null && perCode !== ''
const perName = perInfo.value?.perName
return perName !== undefined && perName !== null && perName !== ''
})
const bindPopup = ref(null)
......
......@@ -58,8 +58,9 @@
<view class="data-header">
<text class="value">
<text class="tradeNo">订单编号:</text>
{{ item.tradeNo || '——' }}
</text>
<text> {{ item.tradeNo || '——' }}</text>
</view>
</view>
</view>
......@@ -124,22 +125,15 @@
<button class="btn btn-pay" @click.stop="goPay(item)">去缴费</button>
</template> -->
<button class="btn btn-info" @click.stop="goToDetail(item)">查看明细</button>
<button v-if="item.auditStatus == 9" class="btn btn-info" @click.stop="handleCancel(item)">取消</button>
<template v-if="item.auditStatus == 9">
<button class="btn btn-pay" @click.stop="goPay(item)">支付</button>
</template>
<!-- <button class="btn btn-info" @click.stop="goToDetail(item)">查看明细</button> -->
<button :class="{ disabled: isPayDisabled(item) }" :disabled="isPayDisabled(item)" class="btn btn-pay" @click.stop="goPay(item)">去支付</button>
<button v-if="canShowCancel(item)" :class="{ disabled: isCancelDisabled(item) }" :disabled="isCancelDisabled(item)" class="btn btn-info" @click.stop="handleCancel(item)">取消订单</button>
<!-- 已缴费:申请开票/已开票(需要审核通过才能开票) -->
<template v-if="item.payStatus == 1 && item.invoiceStatus != 1 && item.auditStatus == 2 && item.price > 0">
<button :disabled="item.invoiceStatus === 1" class="btn btn-view-invoice"
@click.stop="makeInvoiceFN(item)">
开票
<template v-if="canShowInvoiceApply(item)">
<button :class="{ disabled: isInvoiceDisabled(item) }" :disabled="isInvoiceDisabled(item)" class="btn btn-view-invoice" @click.stop="makeInvoiceFN(item)">
申请开票
</button>
</template>
<!-- 已开票:查看发票 -->
<template v-if="item.invoiceStatus == 1">
<button class="btn btn-invoice" @click.stop="viewInvoice(item)">查看发票</button>
</template>
</view>
</view>
</view>
......@@ -278,6 +272,28 @@ const getAuditStatusText = (status) => {
};
return map[status] || '';
};
const hasInvoice = (item) => String(item?.invoiceStatus) === '1';
const isPayDisabled = (item) => {
return String(item?.auditStatus) !== '9';
};
const canShowCancel = (item) => {
return String(item?.auditStatus) === '9';
};
const isCancelDisabled = (item) => {
return String(item?.auditStatus) !== '9';
};
const canShowInvoiceApply = (item) => !hasInvoice(item);
const isInvoiceDisabled = (item) => {
if (hasInvoice(item)) return true;
return String(item?.auditStatus) !== '2' || String(item?.payStatus) === '4';
};
onLoad((options) => {
// queryParams.perId = options.perId || userInfo.value.perId
initData();
......@@ -382,6 +398,7 @@ const goToDetail = (item) => {
// 去缴费
const goPay = (item) => {
if (isPayDisabled(item)) return;
const baseFormData = {
rangeId: item.sourceId || item.id,
payYear: item.content?.yearCount || 1,
......@@ -440,6 +457,7 @@ const handlePay = async (item) => {
// 申请开票
const makeInvoiceFN = (item) => {
if (isInvoiceDisabled(item)) return;
needRefresh.value = true;
uni.navigateTo({
url: `/pages/invoice/applyFeisui?orderId=${item.id}&amount=${item.price}&type=1`
......@@ -466,6 +484,7 @@ const closeInvoicePopup = () => {
// 取消订单
const handleCancel = (item) => {
if (isCancelDisabled(item)) return;
currentOrder.value = item;
cancelModalContent.value = `是否确认取消缴费编号为"${item.wfCode}"的订单?`;
showCancelPopup.value = true;
......@@ -781,9 +800,12 @@ const closeCancelPopup = () => {
border: 1rpx solid #c30d23;
}
&:disabled {
&:disabled,
&.disabled {
opacity: 0.6;
pointer-events: none;
color: #999;
border-color: #ddd;
background: #f5f5f5;
}
}
}
......
<template>
<view>
<view class="appList">
<view class="appItem" v-for="(item,index) in list" :key="index" @click="goDetail(item)">
<view class="status">
<text :class="statusClass(item)">{{ statusText(item) }}</text>
</view>
<view class="name mt0">
{{ item.name || '调动记录' }}
</view>
<view class="flexbox" v-if="deptType == 1 || deptType == 2 || deptType == 3">
<view class="w50">
申请调入单位
<view><text>{{ item.targetDeptName || '-' }}</text></view>
</view>
<view class="w50">
会员合计
<view>{{ item.personCount || 0 }}</view>
</view>
</view>
<view v-else class="pp">
会员合计:
<text class="text-primary">{{ item.personCount || 0 }}</text>
</view>
</view>
</view>
<view class="nodata" v-if="list.length==0 && !loading">
<image mode="aspectFit" :src="config.baseUrl_api + '/fs/static/nodata.png'"></image>
<text>暂无数据</text>
</view>
</view>
</template>
<script setup>
import * as api from '@/common/api.js'
import config from '@/config.js'
import { ref } from 'vue'
import { onLoad, onShow } from '@dcloudio/uni-app'
const app = getApp()
const queryParams = ref({})
const list = ref([])
const total = ref(0)
const deptType = ref('')
const loading = ref(false)
const hasInited = ref(false)
onLoad(() => {
if (app.globalData.isLogin) {
init()
} else {
app.firstLoadCallback = () => {
init()
}
}
})
onShow(() => {
if (hasInited.value) {
getList()
}
})
function init() {
deptType.value = app.globalData.deptType
queryParams.value = {}
if (deptType.value == 2 || deptType.value == 3) {
queryParams.value.dgId = -1
}
if (deptType.value == 1) {
queryParams.value.dgId = -2
}
if (deptType.value == 6) {
queryParams.value.dgId = 1
}
hasInited.value = true
getList()
}
function getList() {
loading.value = true
uni.showLoading({
title: '加载中',
mask: true
})
api.getMobilizelist(queryParams.value).then(res => {
list.value = res.rows || []
total.value = res.total || 0
}).finally(() => {
loading.value = false
uni.hideLoading()
})
}
function statusText(item) {
if (deptType.value == 1) {
const map = {
0: '审核中',
1: '审核通过',
2: '审核拒绝',
3: '撤销申请'
}
return map[item.ztxRes] || '-'
}
if (deptType.value == 2 || deptType.value == 3) {
const map = {
0: '审核中',
1: '审核通过',
2: '审核拒绝',
3: '撤销申请'
}
return map[item.shenRes] || '-'
}
const map = {
0: '待提交',
1: '审核中',
2: '审核拒绝',
3: '审核通过',
4: '已撤回'
}
return map[item.status] || '-'
}
function statusClass(item) {
const value = deptType.value == 1 ? item.ztxRes : (deptType.value == 2 || deptType.value == 3 ? item.shenRes : item.status)
if (value == 1 || value == 3) return 'text-success'
if (value == 2 || value == 4) return 'text-danger'
return 'text-primary'
}
function goDetail(item) {
const auditLog = encodeURIComponent(JSON.stringify(item.auditLog))
const form = encodeURIComponent(JSON.stringify(item))
uni.navigateTo({
url: `/personalVip/mobilizeDetail?rangeId=${item.id}&auditLog=${auditLog}&form=${form}`
})
}
</script>
<style scoped lang="scss">
.mt0 {
margin-top: 0 !important;
}
.appList .appItem .name {
width: 80%;
word-break: break-all;
}
</style>
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!