提交 78f9d5bc 编写于 作者: guangjun.yang's avatar guangjun.yang

Merge branch 'test-learning-1205' into release

* test-learning-1205: (114 commits)
  业务方需求的文案修改
  数据总览文案修改
  导出PDF细节
  UI回测问题
  PDF导出样式的问题
  PDF导出样式的问题
  多次loading问题
  多次loading问题
  PDF导出时间问题 loading问题
  PDF导出问题更新
  PDF生成情况下文案修改
  PDF导出样式问题
  html2Canvas 插件静态导入
  JDF静态导入
  JDF导出的问题
  去掉图片导出
  m导出图片 和 pdf
  导出png
  导出参数设置
  饼图文案修改
  ...
...@@ -2371,9 +2371,9 @@ ...@@ -2371,9 +2371,9 @@
"dev": true "dev": true
}, },
"element-ui": { "element-ui": {
"version": "2.10.0", "version": "2.11.1",
"resolved": "http://192.168.110.93:4873/element-ui/-/element-ui-2.10.0.tgz", "resolved": "http://192.168.110.93:4873/element-ui/-/element-ui-2.11.1.tgz",
"integrity": "sha1-5hKfa21v/g260SWkqNF9RHpfY5w=", "integrity": "sha512-PACNMHPWqm+/Wc2f/q93pLNzbNyVbpMCXCrYe81czengSWj7IBku7F3zccybkxtWn5qdCmMDBCpG5BzGJL4rKA==",
"requires": { "requires": {
"async-validator": "~1.8.1", "async-validator": "~1.8.1",
"babel-helper-vue-jsx-merge-props": "^2.0.0", "babel-helper-vue-jsx-merge-props": "^2.0.0",
......
...@@ -254,3 +254,15 @@ html,body{ ...@@ -254,3 +254,15 @@ html,body{
color: #FF9A4B; color: #FF9A4B;
} }
} }
.empty-img {
position: relative;
height: 100px;
width: 100%;
display: flex;
img {
position: relative;
margin: 38px auto;
height: 24px;
width: 106px;
}
}
\ No newline at end of file
...@@ -10,9 +10,9 @@ export const envConfig = { ...@@ -10,9 +10,9 @@ export const envConfig = {
// baseUrl: 'https://uat-sc.yunqueyi.com/', // baseUrl: 'https://uat-sc.yunqueyi.com/',
// baseUrl: 'http://10.177.15.150:10401/', // baseUrl: 'http://10.177.15.150:10401/',
// baseUrl: 'http://10.177.15.150:11905/', // baseUrl: 'http://10.177.15.150:11905/',
baseUrl: 'https://dev-sc.yunqueyi.com/', // baseUrl: 'https://dev-sc.yunqueyi.com/',
// baseUrl: 'https://test1-sc.yunqueyi.com/', // baseUrl: 'https://test1-sc.yunqueyi.com/',
// baseUrl: 'https://uat-sc.yunqueyi.com/', baseUrl: 'https://uat-sc.yunqueyi.com/',
apiUrl: 'https://uat-api.yunqueyi.com/', apiUrl: 'https://uat-api.yunqueyi.com/',
qiniuFileUrl: "https://uat-sc.yunqueyi.com/contents/admin/qiniu/token1", qiniuFileUrl: "https://uat-sc.yunqueyi.com/contents/admin/qiniu/token1",
qiniuResourceUrl: "https://test1-videos.yunqueyi.com", qiniuResourceUrl: "https://test1-videos.yunqueyi.com",
......
...@@ -56,7 +56,7 @@ service.interceptors.request.use(config => { ...@@ -56,7 +56,7 @@ service.interceptors.request.use(config => {
// console.log('环境变量>>>> ', process.env.BUILD_ENV); // console.log('环境变量>>>> ', process.env.BUILD_ENV);
// config.headers['token'] = 'BFD804F3A3194FBBBE113962222839F6'; // config.headers['token'] = 'BFD804F3A3194FBBBE113962222839F6';
// config.headers['token'] = 'F8209898391C40A0B8DBC1ED9E157291'; // config.headers['token'] = 'F8209898391C40A0B8DBC1ED9E157291';
config.headers['token'] = '299F66567E7C48C78ADE418B364C5A35' || 'F24CD42F1CFA46829639228E9CFE1E3D' || '2E46B77D801C479DBA1C550CE70D348F'; config.headers['token'] = '29D71EAAB92E4580AFB16A8011BE7206';
}else{ }else{
config.headers['token'] = localStorage.getItem('storageToken') config.headers['token'] = localStorage.getItem('storageToken')
} }
......
...@@ -207,11 +207,11 @@ const vueFilter = { ...@@ -207,11 +207,11 @@ const vueFilter = {
}, },
exportStatus: (value) => { exportStatus: (value) => {
if(value == 0) { if(value == 0) {
return '数据生成中,请稍后---'; return '生成中';
}else if(value == 1) { }else if(value == 1) {
return '数据生成完成'; return '成功';
} else { } else {
return '文件生成失败 请重新操作导出'; return '失败';
} }
}, },
getAvgTime: (value) => { getAvgTime: (value) => {
...@@ -232,6 +232,37 @@ const vueFilter = { ...@@ -232,6 +232,37 @@ const vueFilter = {
} }
return avgTime; return avgTime;
}, },
learnTimeValue: (value) => {
if(value === null || value === '') {
return '-';
}
if(value === 0) {
return '0秒';
}
let s = parseInt(value),m = 0, h = 0;//秒,分,小时
if(s==NaN){//错误error
return '';
}
if(s > 60) {
m = parseInt(s/60);
s = parseInt(s%60);
if(m > 60) {
h = parseInt(m/60);
m = parseInt(m%60);
}
}
let result = "";
if(s > 0) {
result = ""+parseInt(s)+"秒";
}
if(m > 0) {
result = ""+parseInt(m)+"分"+result;
}
if(h > 0) {
result = ""+parseInt(h)+"小时"+result;
}
return result;
},
getTotalTime: (value) => { getTotalTime: (value) => {
let time = value +'分钟'; let time = value +'分钟';
return time; return time;
...@@ -280,6 +311,86 @@ const vueFilter = { ...@@ -280,6 +311,86 @@ const vueFilter = {
} else if(value == 4) { } else if(value == 4) {
return '已下架'; return '已下架';
} }
},
examRate: (value) => {
let num = (value*100).toFixed(1);
let rate = num + '%';
return rate;
},
sexValue: (value) => {
if(value == 1) {
return '男';
} else if(value == 2) {
return '女';
} else if(value == 0) {
return '-';
}
},
joinFlagValue: (value) => {
if(value === 1) {
return '已参与';
} else if(value === 2 || value === 0) {
return '未参与';
} else {
return '-';
}
},
finishFlagValue: (value) => {
if(value === 1) {
return '已完成';
} else if(value === 2 || value === 0) {
return '未完成';
} else {
return '-';
}
},
departmentNameValue: (value) => {
if(value === '') {
return '-';
} }
return value;
},
nullOfValue: (value) => {
if(value === null || value === '') {
return '-';
}
return value;
},
certGradeValue: (value) => {
if(value == 1) {
return '优秀';
} else if(value == 2) {
return '良好';
} else if(value == 3) {
return '及格';
} else if(value == 4) {
return '不及格';
} else {
return '-';
}
},
finishFlagType: (value) => {
if(value[0] === null || value[0] === '') {
return '-';
}
if(value[1] === null) {
if(value[0] == 0) {
return '未参与';
} else if(value[0] == 1) {
return '未完成';
} else if(value[0] == 2) {
return '已完成';
}
} else {
if(value[0] == 0) {
return '未参与';
} else if(value[0] == 1) {
return '已参与';
}
}
},
toThousands:(value) => {
return (value || 0).toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,');
},
} }
export default vueFilter export default vueFilter
\ No newline at end of file
此差异已折叠。
...@@ -220,24 +220,25 @@ module.exports = { ...@@ -220,24 +220,25 @@ module.exports = {
}, },
// 通用GET请求 // 通用GET请求
GET(api, para, callback,str) { GET(api, para, callback, str, noLoading) {
// para.token = para.token || this.token || "343BCABC890349ACAF357FA79122F9FE" // para.token = para.token || this.token || "343BCABC890349ACAF357FA79122F9FE"
let url = api + this.getUrlPara(para) let url = api + this.getUrlPara(para)
url = encodeURI(url); url = encodeURI(url);
return fetch({ return fetch({
url: getBaseUrl(url), url: getBaseUrl(url),
method: 'get', method: 'get',
data: para data: para,
noLoading
}) })
}, },
reportGET(api, para, callback,str) { reportGET(api, para, callback, str) {
// para.token = para.token || this.token || "343BCABC890349ACAF357FA79122F9FE" // para.token = para.token || this.token || "343BCABC890349ACAF357FA79122F9FE"
let url = api + this.getUrlPara(para) let url = api + this.getUrlPara(para)
url = encodeURI(url); url = encodeURI(url);
return fetch({ return fetch({
url: getReportUrl(url), url: getReportUrl(url),
method: 'get', method: 'get',
data: para data: para,
}) })
}, },
// saas-GET请求 // saas-GET请求
...@@ -273,12 +274,13 @@ module.exports = { ...@@ -273,12 +274,13 @@ module.exports = {
}) })
}, },
// 通用POST请求 // 通用POST请求
POST(api, para, callback) { POST(api, para, callback, str, noLoading) {
// para.token = para.token || this.token || "343BCABC890349ACAF357FA79122F9FE" // para.token = para.token || this.token || "343BCABC890349ACAF357FA79122F9FE"
return fetch({ return fetch({
url: getBaseUrl(api), url: getBaseUrl(api),
method: 'post', method: 'post',
data: para data: para,
noLoading
}) })
}, },
reportPOST(api, para, callback) { reportPOST(api, para, callback) {
......
...@@ -305,6 +305,20 @@ export function setRegionOption2(data) { ...@@ -305,6 +305,20 @@ export function setRegionOption2(data) {
} }
return option; return option;
} }
export function setRegionOptionNew(data) {
let option = [];
for (let i = 0; i < data.length; i++) {
let obj = data[i];
obj.label = data[i].label;
obj.value = data[i].id;
if(obj.degree == 4 || obj.degree == 0 || obj.label == "全部") {
// if(obj.degree == 4 ) {
obj.leaf = true;
}
option.push(obj);
}
return option;
}
export function setAdministrativeId(value) { export function setAdministrativeId(value) {
let areaId = '000'; let areaId = '000';
for (let i = 0; i < value.length; i++) { for (let i = 0; i < value.length; i++) {
...@@ -335,16 +349,17 @@ export function getLearnOrganization(data) { ...@@ -335,16 +349,17 @@ export function getLearnOrganization(data) {
let arr = []; let arr = [];
return arr; return arr;
} }
let organization = [ // let organization = [
{ // {
label: "全部", // label: "全部",
value: 0 // value: 0
}, // },
]; // ];
let organization = [];
for (let i = 0; i < data.length; i++) { for (let i = 0; i < data.length; i++) {
let obj = { let obj = {
label: data[i].hospital_name, label: data[i].hospitalName,
value: data[i].hospital_id, value: data[i].hospitalId,
index: i, index: i,
}; };
organization.push(obj); organization.push(obj);
...@@ -355,17 +370,25 @@ export function getPicOption(title, legendData, colorData, seriesData) { ...@@ -355,17 +370,25 @@ export function getPicOption(title, legendData, colorData, seriesData) {
let option = { let option = {
title: { title: {
text: title, text: title,
x: "center", x: "left",
top: "3%", left: '20px',
top: "20px",
}, },
tooltip: { tooltip: {
trigger: 'item', trigger: 'item',
formatter: "{a} <br/>{b} : {c} ({d}%)" // formatter: "{a} <br/>{b} : {c} ({d}%)"
formatter:function(data){
let value = data.name + ':' + data.percent.toFixed(1)+"%"
return value;
}
},
label: {
formatter:function(data){ return data.percent.toFixed(1)+"%";}
}, },
legend: { legend: {
orient: "vertical", orient: "vertical",
top: "3%", top: "center",
left: "left", right: "26",
data: legendData data: legendData
}, },
grid: { grid: {
...@@ -375,13 +398,13 @@ export function getPicOption(title, legendData, colorData, seriesData) { ...@@ -375,13 +398,13 @@ export function getPicOption(title, legendData, colorData, seriesData) {
containLabel: true containLabel: true
}, },
color: colorData, color: colorData,
backgroundColor: '#F3F3F3', backgroundColor: '#FFFFFF',
series: [ series: [
{ {
name: "", name: "",
type: "pie", type: "pie",
radius: "55%", radius: [0, '55%'],
center: ["60%", "65%"], center: ["50%", "57.2%"],
data: seriesData, data: seriesData,
} }
] ]
...@@ -391,16 +414,22 @@ export function getPicOption(title, legendData, colorData, seriesData) { ...@@ -391,16 +414,22 @@ export function getPicOption(title, legendData, colorData, seriesData) {
export function getBarOption(xAxisData, seriesData) { export function getBarOption(xAxisData, seriesData) {
let option = { let option = {
title: { title: {
text: "用户年龄发布", text: "人员年龄分布",
x: "center", x: "left",
top: "3%", left: '20px',
top: "20px",
},
color: ['rgba(91, 143, 249, 0.85)'],
backgroundColor: '#FFFFFF',
tooltip: {
trigger: 'item',
formatter: "{b} : {c} "
}, },
color: ['#3398DB'],
backgroundColor: '#F3F3F3',
grid: { grid: {
left: '3%', top: '84',
right: '4%', bottom: '36',
bottom: '3%', left: '20',
right: '20',
containLabel: true containLabel: true
}, },
xAxis: [ xAxis: [
...@@ -409,22 +438,32 @@ export function getBarOption(xAxisData, seriesData) { ...@@ -409,22 +438,32 @@ export function getBarOption(xAxisData, seriesData) {
data: xAxisData, data: xAxisData,
axisLabel: { axisLabel: {
interval: 0 interval: 0
} },
// axisTick: { axisTick: { // 隐藏刻度
// alignWithLabel: true show: false
// } },
axisLine: { //隐藏轴线
show: false
},
} }
], ],
yAxis: [ yAxis: [
{ {
type: 'value' type: 'value',
minInterval: 1,
axisLine: { //隐藏轴线
show: false
},
axisTick: { // 隐藏刻度
show: false
},
} }
], ],
series: [ series: [
{ {
name: '', name: '',
type: 'bar', type: 'bar',
barWidth: 30, barWidth: 18,
data: seriesData, data: seriesData,
} }
] ]
...@@ -592,13 +631,23 @@ export function initRank(data) { ...@@ -592,13 +631,23 @@ export function initRank(data) {
} }
return list; return list;
} }
export function getAvgTime(data) { export function getAvgTime(value) {
let list = [0, 0]; let list = [0,0];
if (data != null && data != '') { let avgTime = '';
list[0] = Math.floor(data / 60); if(value != null && value !='') {
list[1] = data % 60; list[0] = Math.floor(value / 60);
list[1] = value % 60;
} }
return list; if(list[0] == 0 && list[1] == 0) {
avgTime = list[1] + '秒';
} else if(list[0] == 0 && list[1] != 0) {
avgTime = list[1] + '秒';
} else if(list[0] != 0 && list[1] == 0) {
avgTime = list[0] + '分钟';
} else if(list[0] != 0 && list[1] != 0) {
avgTime = list[0] + '分钟' + list[1] + '秒';
}
return avgTime;
} }
export function getComponent(data) { export function getComponent(data) {
let list = []; let list = [];
...@@ -642,3 +691,65 @@ export function setSelectedKeys(checkedKeys, halfCheckedKeys) { ...@@ -642,3 +691,65 @@ export function setSelectedKeys(checkedKeys, halfCheckedKeys) {
} }
return selected; return selected;
} }
export function setDuringTime(time , type) {
let value = time;
if(time == '' || time == null) {
return '';
}
if(type == 'begin') {
value = time[0];
} else if(type == 'end') {
value = time[1];
}
return value;
}
export function setHospitalIdList(data) {
let listStr = '';
if(data == null || data.length == 0) {
return listStr
}
for(let i = 0 ; i<data.length ; i++) {
listStr += data[i]+'_';
}
listStr = listStr.substring(0, listStr.length - 1);
return listStr;
}
export function getHospitalIdList(data) {
let listArr = [];
if(data == null || data == '') {
return listArr
}
listArr = data.split("_")
return listArr;
}
export function learnTimeValue(value) {
if(value === null || value === '') {
return '-';
}
if(value === 0) {
return '0秒';
}
let s = parseInt(value),m = 0, h = 0;//秒,分,小时
if(s==NaN){//错误error
return '';
}
if(s > 60) {
m = parseInt(s/60);
s = parseInt(s%60);
if(m > 60) {
h = parseInt(m/60);
m = parseInt(m%60);
}
}
let result = "";
if(s > 0) {
result = ""+parseInt(s)+"秒";
}
if(m > 0) {
result = ""+parseInt(m)+"分"+result;
}
if(h > 0) {
result = ""+parseInt(h)+"小时"+result;
}
return result;
}
\ No newline at end of file
...@@ -139,7 +139,7 @@ ...@@ -139,7 +139,7 @@
index: 'report-list' index: 'report-list'
}, },
{ {
title: '导出下载', title: '任务列表',
icon: 'el-icon-document', icon: 'el-icon-document',
index: 'export-download' index: 'export-download'
} }
......
...@@ -90,8 +90,7 @@ ...@@ -90,8 +90,7 @@
<el-table-column prop="townName" label="乡镇/街道" show-overflow-tooltip></el-table-column> <el-table-column prop="townName" label="乡镇/街道" show-overflow-tooltip></el-table-column>
<div slot="empty"> <div slot="empty">
<div class="table-empty"> <div class="table-empty">
<img src="../../assets/image/no-content1.png" /> <img src="../../assets/image/noData.png" />
<p>没有相关数据,请重新选择查询范围</p>
</div> </div>
</div> </div>
</el-table> </el-table>
...@@ -102,14 +101,14 @@ ...@@ -102,14 +101,14 @@
@size-change="handleSizeChange" @size-change="handleSizeChange"
@current-change="handleCurrentChange" @current-change="handleCurrentChange"
:current-page="formData.pageNo" :current-page="formData.pageNo"
:page-sizes="[20, 50 ,100]" :page-sizes="[20, 50 ,100, 200]"
:page-size="formData.pageSize" :page-size="formData.pageSize"
layout="total, sizes, prev, pager, next, jumper" layout="total, sizes, prev, pager, next, jumper"
:total="totalRows" :total="totalRows"
></el-pagination> ></el-pagination>
</div> </div>
<el-dialog title="发布学情报告" :visible.sync="dialogVisible" width="30%" append-to-body> <el-dialog title="发布学情报告" :visible.sync="dialogVisible" width="30%" append-to-body>
<p style="color:red">项目【{{ projectName }}】的数据修改</p> <p style="color:red">项目【{{ projectName }}】的数据修改将于次日生效</p>
<p>确认需要更新学情报告吗?</p> <p>确认需要更新学情报告吗?</p>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">取消</el-button> <el-button @click="dialogVisible = false">取消</el-button>
...@@ -239,6 +238,7 @@ export default { ...@@ -239,6 +238,7 @@ export default {
handleSizeChange(val) { handleSizeChange(val) {
console.log(`每页 ${val} 条`); console.log(`每页 ${val} 条`);
vm.formData.pageSize = val; vm.formData.pageSize = val;
vm.formData.pageNo = 1;
vm.search(); vm.search();
}, },
// 换页 // 换页
...@@ -258,18 +258,23 @@ export default { ...@@ -258,18 +258,23 @@ export default {
setTimeout(function(){ setTimeout(function(){
openLoading(vm); openLoading(vm);
},20); },20);
let checkAll = operationData.hasAll(vm.formInline.organization); // let checkAll = operationData.hasAll(vm.formInline.organization);
let req = { let req = {
projectId: vm.projectId, projectId: vm.projectId,
hospitalIdList: vm.formInline.organization,
originalFlag: vm.formInline.checked == false ? 2 : 1,
regionId: vm.formInline.region[vm.formInline.region.length - 1],
timeFlag: vm.formInline.timeFlag,
beginDate: operationData.setDuringTime(vm.formInline.during,'begin'),
endDate: operationData.setDuringTime(vm.formInline.during,'end'),
achievementStatus: vm.formData.achievementStatus, achievementStatus: vm.formData.achievementStatus,
status: vm.formData.status, status: vm.formData.status,
ids: operationData.getIds(vm.formInline,vm.organizationList,checkAll),
type: operationData.getSearchType(vm.formInline,checkAll),
doctorName: vm.formData.doctorName, doctorName: vm.formData.doctorName,
pageNo: vm.formData.pageNo, pageNo: vm.formData.pageNo,
pageSize: vm.formData.pageSize, pageSize: vm.formData.pageSize,
}; };
vm.reportGET("report/portal/getProjectData", req).then(res => { vm.POST("stats/report/getProjectData", req).then(res => {
// closeLoading(vm); // closeLoading(vm);
if (res.code == "000000") { if (res.code == "000000") {
vm.tableData = res.data.projectData; vm.tableData = res.data.projectData;
...@@ -339,7 +344,7 @@ export default { ...@@ -339,7 +344,7 @@ export default {
joinDoctorIdList: operationData.getAjustmentList(vm.changedDoctor), joinDoctorIdList: operationData.getAjustmentList(vm.changedDoctor),
}; };
openLoading(vm); openLoading(vm);
vm.reportPOST("report/portal/peopleAdjustment", req).then(res => { vm.POST("stats/report/peopleAdjustment", req).then(res => {
closeLoading(vm); closeLoading(vm);
vm.$message(res.message); vm.$message(res.message);
if (res.code == "000000") { if (res.code == "000000") {
...@@ -396,5 +401,11 @@ export default { ...@@ -396,5 +401,11 @@ export default {
.pagination { .pagination {
margin-right: 10px; margin-right: 10px;
} }
.table-empty {
img {
height: 24px;
width: 106px;
}
}
} }
</style> </style>
此差异已折叠。
...@@ -121,7 +121,7 @@ export default { ...@@ -121,7 +121,7 @@ export default {
projectId: vm.projectId, projectId: vm.projectId,
ids: operationData.getIds(vm.formInline,vm.organizationList,checkAll), ids: operationData.getIds(vm.formInline,vm.organizationList,checkAll),
type: operationData.getSearchType(vm.formInline,checkAll), type: operationData.getSearchType(vm.formInline,checkAll),
originalFlag: vm.formInline.checked == false ? 0 : 1 originalFlag: vm.formInline.checked == false ? 2 : 1
}; };
console.log("1 req", req); console.log("1 req", req);
openLoading(vm); openLoading(vm);
......
此差异已折叠。
...@@ -54,8 +54,7 @@ ...@@ -54,8 +54,7 @@
</el-table-column> </el-table-column>
<div slot="empty"> <div slot="empty">
<div class="table-empty"> <div class="table-empty">
<img src="../../assets/image/no-content1.png" /> <img src="../../assets/image/noData.png" />
<p>没有找到符合的结果</p>
</div> </div>
</div> </div>
</el-table> </el-table>
...@@ -65,7 +64,7 @@ ...@@ -65,7 +64,7 @@
@size-change="handleSizeChange" @size-change="handleSizeChange"
@current-change="handleCurrentChange" @current-change="handleCurrentChange"
:current-page="formData.pageNo" :current-page="formData.pageNo"
:page-sizes="[20, 50 ,100]" :page-sizes="[20, 50 ,100, 200]"
:page-size="formData.pageSize" :page-size="formData.pageSize"
layout="total, sizes, prev, pager, next, jumper" layout="total, sizes, prev, pager, next, jumper"
:total="totalRows" :total="totalRows"
...@@ -134,9 +133,9 @@ export default { ...@@ -134,9 +133,9 @@ export default {
search() { search() {
let req = {}; let req = {};
req = this.formData; req = this.formData;
openLoading(vm);
vm.GET("portal/portalInfo/getPortalReportProject", req).then(res => { vm.GET("portal/portalInfo/getPortalReportProject", req).then(res => {
closeLoading(vm);
if (res.code == "000000") { if (res.code == "000000") {
if(res.data.totalRows == 0) { if(res.data.totalRows == 0) {
vm.$message("没有找到符合的结果"); vm.$message("没有找到符合的结果");
...@@ -186,6 +185,12 @@ export default { ...@@ -186,6 +185,12 @@ export default {
.itemlist-content { .itemlist-content {
padding: 10px; padding: 10px;
background: #fff; background: #fff;
.table-empty {
img {
height: 24px;
width: 106px;
}
}
} }
} }
</style> </style>
\ No newline at end of file
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册