Files
number_zj/20220330_Vote/Ewide.Web.Entry/Views/Vote/Index.cshtml
2022-03-31 09:07:38 +08:00

294 lines
16 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@*
For more information on enabling MVC for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
*@
@{
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script src="http://lib.baomitu.com/qs/6.10.3/qs.min.js"></script>
</head>
<body>
<div id="app" v-loading="loading">
<h3 style="text-align:center;">2021年度宁波市“甬江建设杯”选票</h3>
<el-collapse>
<el-collapse-item title="房建工程" name="1">
<el-descriptions class="margin-top" title="" :column="1" border v-for="project in projects0" :key="project.id">
<el-descriptions-item label-class-name="buhuanhang" label="项目名称">{{project.serial_number}}:{{project.name}}</el-descriptions-item>
<el-descriptions-item label="请投票">
<template>
<el-radio-group v-model="project.vote">
<el-radio label="true">同意</el-radio>
<el-radio label="false">不同意</el-radio>
</el-radio-group>
</template>
</el-descriptions-item>
</el-descriptions>
</el-collapse-item>
<el-collapse-item title="市政工程" name="2">
<el-descriptions class="margin-top" title="" :column="1" border v-for="project in projects1" :key="project.id">
<el-descriptions-item label-class-name="buhuanhang" label="项目名称">{{project.serial_number}}:{{project.name}}</el-descriptions-item>
<el-descriptions-item label="请投票">
<template>
<el-radio-group v-model="project.vote">
<el-radio label="true">同意</el-radio>
<el-radio label="false">不同意</el-radio>
</el-radio-group>
</template>
</el-descriptions-item>
</el-descriptions>
</el-collapse-item>
<el-collapse-item title="轨道工程" name="3">
<el-descriptions class="margin-top" title="" :column="1" border v-for="project in projects2" :key="project.id">
<el-descriptions-item label-class-name="buhuanhang" label="项目名称">{{project.serial_number}}:{{project.name}}</el-descriptions-item>
<el-descriptions-item label="请投票">
<template>
<el-radio-group v-model="project.vote">
<el-radio label="true">同意</el-radio>
<el-radio label="false">不同意</el-radio>
</el-radio-group>
</template>
</el-descriptions-item>
</el-descriptions>
</el-collapse-item>
<el-collapse-item title="电力工程" name="4">
<el-descriptions class="margin-top" title="" :column="1" border v-for="project in projects3" :key="project.id">
<el-descriptions-item label-class-name="buhuanhang" label="项目名称">{{project.serial_number}}:{{project.name}}</el-descriptions-item>
<el-descriptions-item label="请投票">
<template>
<el-radio-group v-model="project.vote">
<el-radio label="true">同意</el-radio>
<el-radio label="false">不同意</el-radio>
</el-radio-group>
</template>
</el-descriptions-item>
</el-descriptions>
</el-collapse-item>
<el-collapse-item title="交通工程" name="5">
<el-descriptions class="margin-top" title="" :column="1" border v-for="project in projects4" :key="project.id">
<el-descriptions-item label-class-name="buhuanhang" label="项目名称">{{project.serial_number}}:{{project.name}}</el-descriptions-item>
<el-descriptions-item label="请投票">
<template>
<el-radio-group v-model="project.vote">
<el-radio label="true">同意</el-radio>
<el-radio label="false">不同意</el-radio>
</el-radio-group>
</template>
</el-descriptions-item>
</el-descriptions>
</el-collapse-item>
<el-collapse-item title="水利工程" name="6">
<el-descriptions class="margin-top" title="" :column="1" border v-for="project in projects5" :key="project.id">
<el-descriptions-item label-class-name="buhuanhang" label="项目名称">{{project.serial_number}}:{{project.name}}</el-descriptions-item>
<el-descriptions-item label="请投票">
<template>
<el-radio-group v-model="project.vote">
<el-radio label="true">同意</el-radio>
<el-radio label="false">不同意</el-radio>
</el-radio-group>
</template>
</el-descriptions-item>
</el-descriptions>
</el-collapse-item>
</el-collapse>
<h3 style="text-align:center;">
<el-input v-model="logincode" placeholder="请输入提交码"></el-input>
</h3>
<h3 style="text-align:center;">
<el-button @@click="alltrue">全部同意</el-button>
<el-button type="primary" @@click="submit">提交</el-button>
</h3>
</div>
</body>
<style scoped>
.buhuanhang {
white-space: nowrap;
width: 21%;
}
</style>
<script>
new Vue({
el: '#app',
data: function () {
return {
projects: [],
projects0: [],
projects1: [],
projects2: [],
projects3: [],
projects4: [],
projects5: [],
confirm_title: '',
loading: false,
logincode: ''
}
},
created: function () {
this.loading = true;
this.load_projects();
},
methods: {
alltrue() {
this.projects0 = this.projects0.map(a => { a.vote = "true"; return a; });
this.projects1 = this.projects1.map(a => { a.vote = "true"; return a; });
this.projects2 = this.projects2.map(a => { a.vote = "true"; return a; });
this.projects3 = this.projects3.map(a => { a.vote = "true"; return a; });
this.projects4 = this.projects4.map(a => { a.vote = "true"; return a; });
this.projects5 = this.projects5.map(a => { a.vote = "true"; return a; });
},
async checkcode() {
let _this = this;
//检验码
if (this.logincode.length < 6) {
this.$alert(`<div>提交码输入错误</div>`, '错误', {
confirmButtonText: '确定', dangerouslyUseHTMLString: true, center: true, closeOnClickModal: true
}).then(a => { }).catch(err => { console.log(err) });
return false;
}
return new Promise((resolve, reject) => {
axios({
headers: { 'Content-Type': 'application/json;charset=UTF-8' },
method: 'post',
url: '/gb/yjb/api/projects/check-submit-code',
data: { 'code': this.logincode },
responseType: "json",
}).then(async response => {
if (response.data.data != true) {
_this.$alert(`<div>提交码输入错误</div>`, '错误', {
confirmButtonText: '确定', dangerouslyUseHTMLString: true, center: true, closeOnClickModal: true
}).then(a => { }).catch(err => { console.log(err) });
reject();
} else {
resolve(true)
}
_this.loading = false;
}).catch(async error => {
console.log(error)
_this.$message({
type: 'error',
message: error.message
})
_this.loading = false;
})
})
},
async submit() {
let _this = this;
await this.checkcode().then(a => {
if (a == false)
return;
var no_select0 = this.projects0.filter(a => { return !a.vote }).length;
var no_select1 = this.projects1.filter(a => { return !a.vote }).length;
var no_select2 = this.projects2.filter(a => { return !a.vote }).length;
var no_select3 = this.projects3.filter(a => { return !a.vote }).length;
var no_select4 = this.projects4.filter(a => { return !a.vote }).length;
var no_select5 = this.projects5.filter(a => { return !a.vote }).length;
if (no_select0 > 0 || no_select1 > 0 || no_select2 > 0 || no_select3 > 0 || no_select4 > 0 || no_select5 > 0) {
this.$alert(`<div>请全部选择完毕后再次提交!</div><p>目前[房建工程]未选择的有` + no_select0 + `个</p><p>目前[市政工程]未选择的有` + no_select1 + `个</p><p>目前[轨道工程]未选择的有` + no_select2 + `个</p><p>目前[电力工程]未选择的有` + no_select3 + `个</p><p>目前[交通工程]未选择的有` + no_select4 + `个</p><p>目前[水利工程]未选择的有` + no_select5 + `个</p>`, '错误', {
confirmButtonText: '确定', dangerouslyUseHTMLString: true, center: true, closeOnClickModal: true
}).then(a => { }).catch(err => { console.log(err) });
return;
}
//每个专业必须有一个不同意
no_select0 = this.projects0.filter(a => { return a.vote == "false" }).length;
no_select1 = this.projects1.filter(a => { return a.vote == "false" }).length;
no_select2 = this.projects2.filter(a => { return a.vote == "false" }).length;
no_select3 = this.projects3.filter(a => { return a.vote == "false" }).length;
no_select4 = this.projects4.filter(a => { return a.vote == "false" }).length;
no_select5 = this.projects5.filter(a => { return a.vote == "false" }).length;
if (no_select0 < 1 || no_select1 < 1 || no_select2 < 1 || no_select3 < 1 || no_select4 < 1 || no_select5 < 1) {
this.$alert(`<div>每个专业必须有一个不同意!</div><p>目前[房建工程]不同意的有` + no_select0 + `个</p><p>目前[市政工程]不同意的有` + no_select1 + `个</p><p>目前[轨道工程]不同意的有` + no_select2 + `个</p><p>目前[电力工程]不同意的有` + no_select3 + `个</p><p>目前[交通工程]不同意的有` + no_select4 + `个</p><p>目前[水利工程]不同意的有` + no_select5 + `个</p>`, '错误', {
confirmButtonText: '确定', dangerouslyUseHTMLString: true, center: true, closeOnClickModal: true
}).then(a => { }).catch(err => { console.log(err) });
return;
}
var allselects = this.projects0.concat(this.projects1).concat(this.projects2).concat(this.projects3).concat(this.projects4).concat(this.projects5);
console.log('allselects:', allselects)
if (allselects.filter(a => { return a.vote == "false" }).length < 10) {
this.$alert(`<div>不同意总数不能少于10个</div>`, '错误', {
confirmButtonText: '确定', dangerouslyUseHTMLString: true, center: true, closeOnClickModal: true
}).then(a => { }).catch(err => { console.log(err) });
return;
}
var allselects = this.projects0.concat(this.projects1).concat(this.projects2).concat(this.projects3).concat(this.projects4).concat(this.projects5);
this.$confirm('您此次选择了同意' + allselects.filter(a => { return a.vote == "true" }).length + '个,不同意' + allselects.filter(a => { return a.vote == "false" }).length + '个,是否继续提交?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
_this.loading = true;
axios({
headers: { 'Content-Type': 'application/json;charset=UTF-8' },
method: 'post',
url: '/gb/yjb/api/projects/submit-vote',
data: { 'code': this.logincode, 'projects': allselects },
responseType: "json",
}).then(async response => {
if (response.data.data != true) {
_this.$alert(`<div>` + response.data.message + `</div>`, '错误', {
confirmButtonText: '确定', dangerouslyUseHTMLString: true, center: true, closeOnClickModal: true
}).then(a => { }).catch(err => { console.log(err) });
} else {
_this.$alert(`<div>提交成功</div>`, '成功', {
confirmButtonText: '确定', dangerouslyUseHTMLString: true, center: true, closeOnClickModal: true
}).then(a => { }).catch(err => { console.log(err) });
}
_this.loading = false;
}).catch(async error => {
console.log(error)
_this.$message({
type: 'error',
message: error.message
})
_this.loading = false;
})
}).catch(() => {
});
})
},
load_projects() {
let _this = this;
axios({
headers: { 'Content-Type': 'application/json;charset=UTF-8' },
method: 'post',
url: '/gb/yjb/api/projects/list',
data: {},
responseType: "json",
}).then(function (response) {
_this.projects = response.data.data
_this.projects.map(a => { a.vote = !a.vote ? '' : a.vote.toString(); return a; });
_this.projects0 = _this.projects.filter(a => { return a.type == 0; })
_this.projects1 = _this.projects.filter(a => { return a.type == 1; })
_this.projects2 = _this.projects.filter(a => { return a.type == 2; })
_this.projects3 = _this.projects.filter(a => { return a.type == 3; })
_this.projects4 = _this.projects.filter(a => { return a.type == 4; })
_this.projects5 = _this.projects.filter(a => { return a.type == 5; })
_this.loading = false;
}).catch(function (error) {
console.log(error)
_this.$message({
type: 'error',
message: error.message
})
_this.loading = false;
})
},
loading_false() { this.loading = false },
}
})
</script>
</html>