2023甬江杯投票
This commit is contained in:
826
20220330_Vote/Ewide.Web.Entry/wwwroot/html/2023qyrczp/index.html
Normal file
826
20220330_Vote/Ewide.Web.Entry/wwwroot/html/2023qyrczp/index.html
Normal file
@@ -0,0 +1,826 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>
|
||||
宁波既有建筑外墙脱落问卷调查
|
||||
</title>
|
||||
<script src="../../lib/vue/vue.global.prod.min.js"></script>
|
||||
<link href="../../lib/element-plus/index.min.css" rel="stylesheet" />
|
||||
<script src="../../lib/element-plus/index.full.min.js"></script>
|
||||
<script src="../../lib/element-plus/locale/zh-cn.min.js"></script>
|
||||
<script src="../../lib/element-plus-icons-vue/global.iife.min.js"></script>
|
||||
<script src="../../lib/xe-utils/dist/xe-utils.umd.min.js"></script>
|
||||
<script src="../../lib/axios/axios.min.js"></script>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="app">
|
||||
<el-dialog v-model="pageData.dialogLoginVisible" title="请先登录" :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false" append-to-body width="60%">
|
||||
<el-form :model="pageData.loginForm" ref="loginFormRef" label-position="top">
|
||||
<el-form-item label="手机号码" label-width="80px" prop="phone" :rules="[{ required: true, trigger: 'blur', min: 11, max: 11, message: '请输入正确的手机号码' }]">
|
||||
<el-input v-model="pageData.loginForm.phone" autocomplete="off" />
|
||||
</el-form-item>
|
||||
<el-form-item label="验证码" label-width="80px" prop="code" :rules="[{ required: true, trigger: 'blur', min: 4, max: 4, message: '请输入验证码' }]">
|
||||
<el-input type="text" maxlength="4" placeholder="验证码" v-model="pageData.loginForm.code">
|
||||
<template slot="append" #append>
|
||||
<el-button :disabled="pageData.loginForm.disabled" @click="(v,v2)=>funHandles.getCode(v,pageData,loginFormRef)">{{ pageData.loginForm.valiBtn }}</el-button>
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<!--<el-button @click="dialogFormVisible = false">Cancel</el-button>-->
|
||||
<el-button type="primary" @click="(v,v2)=>funHandles.verifyKey(pageData,loginFormRef)">登录</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
<h3 style="text-align:center;">宁波既有建筑外墙脱落问卷调查</h3>
|
||||
<el-form ref="formRef" :model="pageData.form" label-position="left" require-asterisk-position="right" label-width="160px" style="margin-top:15px;">
|
||||
<el-form-item label="1.社区/小区名:" prop="communityId" :rules="[{ required: true, trigger: 'blur', message: '请选择社区/小区' }]">
|
||||
<el-select v-model="pageData.communityItem" filterable clearable remote reserve-keyword :remote-method="(v,v2)=>funHandles.getCommunitys(v,pageData)" placeholder="请输入关键字后进行选择" @change="(v,v2)=>funHandles.onChangeSelectCommunity(v,pageData)" style="width:100%" no-data-text="没有这个社区">
|
||||
<el-option v-for="item in pageData.communitys" :key="item.id" :label="item.name" :value="JSON.stringify(item)">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="2.小区交付年份:" prop="deliveryear" :rules="[{ required: false, trigger: 'blur', message: '请输入交付年份' }]">
|
||||
<el-date-picker v-model="pageData.form.deliveryear" type="date" value-format="YYYY-MM-DD" style="width:100%" />
|
||||
</el-form-item>
|
||||
<!--@*<el-form-item label="物业单位:" prop="hangye">
|
||||
<el-input v-model="form.hangye"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="开发商:" prop="hangye">
|
||||
<el-input v-model="form.hangye"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="施工单位:" prop="hangye">
|
||||
<el-input v-model="form.hangye"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="设计单位:" prop="hangye">
|
||||
<el-input v-model="form.hangye"></el-input>
|
||||
</el-form-item>*@-->
|
||||
<el-form-item label="3.外墙结构:" prop="outsidewallstructurefiles">
|
||||
<el-upload class="upload-demo" drag multiple
|
||||
:action="pageData.uploadaction"
|
||||
auto-upload
|
||||
list-type="picture-card"
|
||||
v-model:file-list="pageData.fileList"
|
||||
:on-preview="(file)=>funHandles.filePreview(file,pageData.fileList)"
|
||||
:on-remove="(file, fileList)=>{return funHandles.fileRemove(file, fileList)}"
|
||||
:on-success="(response, file, fileList)=>{return funHandles.fileChange(response, file, fileList)}">
|
||||
<!--<i class="el-icon-upload"></i>-->
|
||||
<div class="el-upload__text"><em>上传外墙照片</em></div>
|
||||
<div class="el-upload__tip" slot="tip">只能上传jpg/png文件,且不超过500kb</div>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
<el-form-item label="4.楼栋数:" prop="buildcount">
|
||||
<el-input-number v-model="pageData.form.buildcount"></el-input-number>
|
||||
</el-form-item>
|
||||
<el-form-item label="5.住户总数:" prop="householdcount" :rules="[{ required: false, trigger: 'blur', message: '请输入住户总数' }]">
|
||||
<el-input-number v-model="pageData.form.householdcount"></el-input-number>
|
||||
</el-form-item>
|
||||
<el-form-item label="6.总建筑面积:" prop="totalfloorage" :rules="[{ required: true, trigger: 'blur', message: '请输入总建筑面积' }]">
|
||||
<el-input-number v-model="pageData.form.totalfloorage" :precision="2" :step="1"></el-input-number>
|
||||
</el-form-item>
|
||||
<el-form-item label="7.是否存在外墙问题:" prop="isExistProblem" :rules="[{ required: true, trigger: 'blur', message: '请选择是否' }]">
|
||||
<el-radio-group v-model="pageData.form.isExistProblem">
|
||||
<el-radio-button label="1" border>是</el-radio-button>
|
||||
<el-radio-button label="0" border>否</el-radio-button>
|
||||
</el-radio-group>
|
||||
<span style="margin-left: 20px; color: #909399">例如:漏水、开裂、脱落</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="8.楼栋信息:" v-show="pageData?.form?.isExistProblem=='1'">
|
||||
<el-select v-model="pageData.buildingItemId" filterable clearable remote reserve-keyword :remote-method="(v,v2)=>funHandles.getBuildings(v,pageData)" no-data-text="没有这幢" placeholder="请输入关键字后进行选择" style="width:100%" @change="(v,v2)=>funHandles.onChangeSelectBuildings(v,pageData,formRef,childFormRef)">
|
||||
<el-option v-for="item in pageData.form.searchBuildings" :key="item.id" :label="item.buildingName" :value="item.id">
|
||||
<span style="float: left">{{ item.buildingName }}</span>
|
||||
<span style="float: right;color: var(--el-text-color-secondary);font-size: 11px;">{{ item.address }}</span>
|
||||
</el-option>
|
||||
</el-select>
|
||||
<div v-for="buildingItem in pageData.buildings" v-show="buildingItem?.id==pageData.buildingItemId">
|
||||
<el-space wrap alignment="start" style="margin:20px 0">
|
||||
<div style="width:350px"><label style="color: #606266; display:inline-block;width: 80px">地址:</label>{{ XEUtils.find(pageData.buildings, item => item.id === pageData.buildingItemId)?.address }}</div>
|
||||
<div style="width:350px"><label style="color: #606266; display:inline-block;width:80px">幢名称:</label>{{ XEUtils.find(pageData.buildings, item => item.id === pageData.buildingItemId)?.buildingName }}</div>
|
||||
<div style="width:350px"><label style="color: #606266; display:inline-block;width:80px">层数:</label>{{ XEUtils.find(pageData.buildings, item => item.id === pageData.buildingItemId)?.levelCount }}</div>
|
||||
<div style="width:350px"><label style="color: #606266; display:inline-block;width:80px">总户数:</label>{{ XEUtils.find(pageData.buildings, item => item.id === pageData.buildingItemId)?.houseHolds }}</div>
|
||||
<div style="width:350px"><label style="color: #606266; display:inline-block;width:80px">建设单位:</label>{{ XEUtils.find(pageData.buildings, item => item.id === pageData.buildingItemId)?.buildingUnit }}</div>
|
||||
<div style="width:350px"><label style="color: #606266; display:inline-block;width:80px">设计单位:</label>{{ XEUtils.find(pageData.buildings, item => item.id === pageData.buildingItemId)?.desingerUnit }}</div>
|
||||
<div style="width:350px"><label style="color: #606266; display:inline-block;width:80px">施工单位:</label>{{ XEUtils.find(pageData.buildings, item => item.id === pageData.buildingItemId)?.constructionUnit }}</div>
|
||||
<div style="width:350px"><label style="color: #606266; display:inline-block;width:80px">监理单位:</label>{{ XEUtils.find(pageData.buildings, item => item.id === pageData.buildingItemId)?.monitorUnit }}</div>
|
||||
<div style="width:350px"><label style="color: #606266; display:inline-block;width:80px">物业单位:</label>{{ XEUtils.find(pageData.buildings, item => item.id === pageData.buildingItemId)?.wuYeUnit }}</div>
|
||||
</el-space>
|
||||
<el-form ref="childFormRef" :model="buildingItem" label-position="top" inline-message>
|
||||
<!--<el-form-item prop="isproblem" label="是否存在问题" :rules="[{ required: true, trigger: ['change', 'blur'], message: '请选择是否存在问题' }]">
|
||||
<el-radio-group v-model="buildingItem.isproblem">
|
||||
<el-radio label="是"></el-radio>
|
||||
<el-radio label="否"></el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>-->
|
||||
<el-form-item prop="curwallproblems" label="8.1 墙体问题的类型是" :rules="[{ required: true, trigger: ['change', 'blur'], message: '请选择墙体问题' }]">
|
||||
<el-checkbox-group v-model="buildingItem.curwallproblems">
|
||||
<el-checkbox v-for="w in staticData.wallproblems" :label="w" :key="w">{{w}}</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
<el-input type="textarea" autosize placeholder="请输入其他问题" v-model="buildingItem.curwallproblemother" v-if="XEUtils.indexOf(buildingItem.curwallproblems, '其他问题')!=-1"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="8.2 哪个问题最先开始出现?" v-if="buildingItem?.curwallproblems?.length>1">
|
||||
<el-radio-group v-model="buildingItem.wallproblemsfirst">
|
||||
<el-radio v-for="w in staticData.wallproblems" :label="w">{{w}}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item prop="firstproblemdate" label="8.3 第一次出现墙体问题是建成后____年?" :rules="[{ required: true, trigger: ['change', 'blur'], message: '请选择第一次出现墙体问题时间' }]">
|
||||
<el-radio-group v-model="buildingItem.firstproblemdate">
|
||||
<el-radio label="建成后0-5年">建成后0-5年</el-radio>
|
||||
<el-radio label="建成后6-10年">建成后6-10年</el-radio>
|
||||
<el-radio label="建成后11-15年">建成后11-15年</el-radio>
|
||||
<el-radio label="建成后15年以上">建成后15年以上</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item prop="problemfrequency" label="8.4 墙体脱落发生频率如何?" :rules="[{ required: true, trigger: ['change', 'blur'], message: '请选择墙体脱落发生频率' }]">
|
||||
<el-radio-group v-model="buildingItem.problemfrequency">
|
||||
<el-radio label="1年1-2次">1年1-2次</el-radio>
|
||||
<el-radio label="1年3-5次">1年3-5次</el-radio>
|
||||
<el-radio label="1年5次以上">1年5次以上</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item prop="problemseason" label="8.5 问题多发生在哪个季节?" :rules="[{ required: true, trigger: ['change', 'blur'], message: '请选择问题发生季节' }]">
|
||||
<el-checkbox-group v-model="buildingItem.problemseason">
|
||||
<el-checkbox label="春" key="春">春</el-checkbox>
|
||||
<el-checkbox label="夏" key="夏">夏</el-checkbox>
|
||||
<el-checkbox label="秋" key="秋">秋</el-checkbox>
|
||||
<el-checkbox label="冬" key="冬">冬</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
<el-form-item prop="wallproblemtoward" label="8.6 墙体问题发生的朝向是哪面?" :rules="[{ required: true, trigger: ['change', 'blur'], message: '请选择问题发生朝向' }]">
|
||||
<el-checkbox-group v-model="buildingItem.wallproblemtoward">
|
||||
<el-checkbox label="东" key="东">东</el-checkbox>
|
||||
<el-checkbox label="西" key="西">西</el-checkbox>
|
||||
<el-checkbox label="南" key="南">南</el-checkbox>
|
||||
<el-checkbox label="北" key="北">北</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="8.7 问题照片:">
|
||||
<el-upload class="upload-demo" drag multiple
|
||||
:action="pageData.uploadaction"
|
||||
auto-upload
|
||||
list-type="picture-card"
|
||||
v-model:file-list="buildingItem.childFileList1"
|
||||
:on-preview="(file)=>funHandles.filePreview(file,buildingItem.childFileList1)"
|
||||
:on-remove="(file, fileList)=>funHandles.fileChildRemove(file, fileList,buildingItem)"
|
||||
:on-success="(response, file, fileList)=>funHandles.fileChildChange(response, file, fileList, buildingItem,'东')"
|
||||
style="width:100%">
|
||||
<!--<i class="el-icon-upload"></i>-->
|
||||
<div class="el-upload__text"><em>上传东面照片</em></div>
|
||||
<div class="el-upload__tip" slot="tip">只能上传jpg/png文件,且不超过500kb</div>
|
||||
</el-upload>
|
||||
|
||||
<el-upload class="upload-demo" drag multiple
|
||||
:action="pageData.uploadaction"
|
||||
auto-upload
|
||||
list-type="picture-card"
|
||||
v-model:file-list="buildingItem.childFileList2"
|
||||
:on-preview="(file)=> funHandles.filePreview(file,buildingItem.childFileList2)"
|
||||
:on-remove="(file, fileList)=>funHandles.fileChildRemove(file, fileList,buildingItem)"
|
||||
:on-success="(response, file, fileList)=>funHandles.fileChildChange(response, file, fileList, buildingItem,'西')"
|
||||
style="width:100%">
|
||||
<!--<i class="el-icon-upload"></i>-->
|
||||
<div class="el-upload__text"><em>上传西面照片</em></div>
|
||||
<div class="el-upload__tip" slot="tip">只能上传jpg/png文件,且不超过500kb</div>
|
||||
</el-upload>
|
||||
<el-upload class="upload-demo" drag multiple
|
||||
:action="pageData.uploadaction"
|
||||
auto-upload
|
||||
list-type="picture-card"
|
||||
v-model:file-list="buildingItem.childFileList3"
|
||||
:on-preview="(file)=> funHandles.filePreview(file,buildingItem.childFileList3)"
|
||||
:on-remove="(file, fileList)=>funHandles.fileChildRemove(file, fileList,buildingItem)"
|
||||
:on-success="(response, file, fileList)=>funHandles.fileChildChange(response, file, fileList, buildingItem,'南')"
|
||||
style="width:100%">
|
||||
<i class="el-icon-upload"></i>
|
||||
<div class="el-upload__text"><em>上传南面照片</em></div>
|
||||
<div class="el-upload__tip" slot="tip">只能上传jpg/png文件,且不超过500kb</div>
|
||||
</el-upload>
|
||||
<el-upload class="upload-demo" drag multiple
|
||||
:action="pageData.uploadaction"
|
||||
auto-upload
|
||||
list-type="picture-card"
|
||||
v-model:file-list="buildingItem.childFileList4"
|
||||
:on-preview="(file)=>funHandles.filePreview(file,buildingItem.childFileList4)"
|
||||
:on-remove="(file, fileList)=>funHandles.fileChildRemove(file, fileList,buildingItem)"
|
||||
:on-success="(response, file, fileList)=>funHandles.fileChildChange(response, file, fileList, buildingItem,'北')"
|
||||
style="width:100%">
|
||||
<i class="el-icon-upload"></i>
|
||||
<div class="el-upload__text"><em>上传北面照片</em></div>
|
||||
<div class="el-upload__tip" slot="tip">只能上传jpg/png文件,且不超过500kb</div>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
<el-form-item prop="problemfanwei" label="8.8 发生外墙问题的范围有多大?" :rules="[{ required: true, trigger: ['change', 'blur'], message: '请选择外墙问题的范围' }]">
|
||||
<el-radio-group v-model="buildingItem.problemfanwei">
|
||||
<el-radio label="<外墙面积的25%"></el-radio>
|
||||
<el-radio label="外墙面积的25-50%"></el-radio>
|
||||
<el-radio label="外墙面积的50-75%"></el-radio>
|
||||
<el-radio label="外墙面积的75-100%"></el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item prop="problemheight" label="8.9 外墙问题发生在哪个高度?" :rules="[{ required: true, trigger: ['change', 'blur'], message: '请选择外墙问题发生的高度' }]">
|
||||
<el-checkbox-group v-model="buildingItem.problemheight">
|
||||
<el-checkbox label="底层(楼高1/3以下)"></el-checkbox>
|
||||
<el-checkbox label="中层"></el-checkbox>
|
||||
<el-checkbox label="高层(屋顶往下1/3)"></el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
<el-form-item prop="diaoluowu" label="8.10 掉落物是什么?" :rules="[{ required: true, trigger: ['change', 'blur'], message: '请选择掉落物' }]">
|
||||
<el-checkbox-group v-model="buildingItem.diaoluowu">
|
||||
<el-checkbox label="墙皮材料"></el-checkbox>
|
||||
<el-checkbox label="保温材料"></el-checkbox>
|
||||
<el-checkbox label="混凝土块"></el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item prop="problemismodify" label="问题发生后是否请人修复了?" v-if="pageData?.form?.isExistProblem=='1'" :rules="[{ required: true, trigger: ['blur'], message: '请选择问题发生后是否请人修复' }]">
|
||||
<el-radio-group v-model="pageData.form.problemismodify">
|
||||
<el-radio label="1">是</el-radio>
|
||||
<el-radio label="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="请提供修复单位的名称:" v-if="pageData.form?.problemismodify=='1'">
|
||||
<el-input type="textarea" autosize placeholder="请提供修复单位的名称。" v-model="pageData.form.problemmodifyunitname">
|
||||
rm
|
||||
</el-form-item>
|
||||
<el-form-item label="修复后的部位是否再次发生问题?" v-if="pageData.form?.problemismodify=='1'">
|
||||
<el-radio-group v-model="pageData.form.problemmodifyisagain">
|
||||
<el-radio label="1">有再发生</el-radio>
|
||||
<el-radio label="0">没有</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
若您愿意接受我们的现场调查,请惠赐您的联系方式。谢谢!
|
||||
<el-input type="textarea" autosize placeholder="" v-model="pageData.form.contract">
|
||||
</el-form-item>
|
||||
<el-form-item v-if="!isshowmyinfo">
|
||||
<el-button type="primary" @click.prevent="funHandles.onSubmit(formRef,childFormRef,pageData)"> 提 交 </el-button>
|
||||
<!--<el-button @click.prevent="showinfo()">我的报名</el-button>-->
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-image-viewer v-if="pageData.dialogImageUrl"
|
||||
:zIndex="8000"
|
||||
@close="() => { pageData.dialogImageUrl='' }"
|
||||
:url-list="pageData.dialogImageUrls"
|
||||
:initial-index="XEUtils.indexOf(pageData.dialogImageUrls, pageData.dialogImageUrl)"></el-image-viewer>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
const { createApp, onMounted, watch, computed, ref } = Vue
|
||||
const { ElMessageBox, ElNotification, ElLoading, ElMessage } = ElementPlus;
|
||||
|
||||
const app = createApp({
|
||||
setup() {
|
||||
const formRef = ref();
|
||||
const childFormRef = ref();
|
||||
const loginFormRef = ref();
|
||||
|
||||
const pageData = ref({
|
||||
form: {},
|
||||
loginForm: {
|
||||
valiBtn: '获取验证码',
|
||||
disabled: false
|
||||
},
|
||||
//communitys: [],
|
||||
//buildings: [],
|
||||
//buildingItemId: '',
|
||||
dialogLoginVisible: false,
|
||||
uploadaction: "/gb/yjb/api/outsidewall/sysFileInfo/upload"
|
||||
});
|
||||
const checkPhone = (rule, value, callback) => {
|
||||
const regMobile = /^1(3[0-9]|4[01456879]|5[0-35-9]|6[2567]|7[0-8]|8[0-9]|9[0-35-9])\d{8}$/;
|
||||
if (regMobile.test(value)) {
|
||||
callback()
|
||||
}
|
||||
callback(new Error("请输入正确的手机号码"))
|
||||
};
|
||||
const rulesCheckData = {
|
||||
checkPhone: (rule, value, callback) => {
|
||||
const regMobile = /^1(3[0-9]|4[01456879]|5[0-35-9]|6[2567]|7[0-8]|8[0-9]|9[0-35-9])\d{8}$/;
|
||||
if (regMobile.test(value)) {
|
||||
callback()
|
||||
}
|
||||
callback(new Error("请输入正确的手机号码"))
|
||||
},
|
||||
checkCode: (rule, value, callback) => {
|
||||
if (value === "") {
|
||||
callback(new Error("请输入验证码"))
|
||||
} else if (!/^[0-9]+$/.test(value) || !/^\d{4}$/.test(value)) {
|
||||
callback(new Error("请输入4位数字的验证码"))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
},
|
||||
checkNumber: (rule, value, callback) => {
|
||||
if (value === "") {
|
||||
callback(new Error("不能为空"))
|
||||
} else if (!/^[0-9]+$/.test(value)) {
|
||||
callback(new Error("必需为数字"))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
},
|
||||
checkCardNo: (rule, value, callback) => {
|
||||
const regMobile = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
|
||||
if (regMobile.test(value)) {
|
||||
callback()
|
||||
}
|
||||
callback(new Error("请输入正确的身份证号码"))
|
||||
}
|
||||
};
|
||||
const staticData = { wallproblems: ['漏水', '开裂', '脱落', '空鼓', '其他问题'] };
|
||||
const funHandles = {
|
||||
init: async (data) => {
|
||||
try {
|
||||
const response = await axios({
|
||||
headers: { 'Content-Type': 'application/json;charset=UTF-8' },
|
||||
method: 'get',
|
||||
url: `/gb/yjb/api/outsidewall/VerifyIsLogin?access_token=${window.sessionStorage.getItem('__VerifyLogin')}`,
|
||||
responseType: "json",
|
||||
});
|
||||
window.loadingInstance?.close();
|
||||
if (response.data.data != true) {
|
||||
//if (!window.sessionStorage.getItem('__VerifyLogin'))
|
||||
data.dialogLoginVisible = true
|
||||
} else {
|
||||
data.uploadaction = `/gb/yjb/api/outsidewall/sysFileInfo/upload?access_token=${window.sessionStorage.getItem('__VerifyLogin')}`
|
||||
}
|
||||
//do {
|
||||
// data.key = await funHandles.verifyKey(data);
|
||||
//} while (data.key == false);
|
||||
|
||||
//await funHandles.getCommunitys("", data);
|
||||
} catch (error) {
|
||||
window.loadingInstance?.close();
|
||||
console.log(error)
|
||||
//await ElMessageBox.alert(error.message, '异常', { type: 'error' });
|
||||
//window.location.reload();//刷新当前页面
|
||||
data.dialogLoginVisible = true
|
||||
}
|
||||
},
|
||||
getCode(v, pageData, loginFormRef) {
|
||||
loginFormRef.validate(async (valid) => {
|
||||
if (valid) {
|
||||
console.log('已通过')
|
||||
console.log(pageData.loginForm.phone)
|
||||
axios({
|
||||
headers: { 'Content-Type': 'application/json;charset=UTF-8' },
|
||||
method: 'post',
|
||||
url: '/gb/yjb/api/ningbozhichun/sendcode',
|
||||
data: pageData.loginForm,
|
||||
responseType: "json",
|
||||
}).then(async response => {
|
||||
if (response.data.data != true) {
|
||||
await ElMessageBox.alert("发送失败:" + response.data.message, '错误', { type: 'error' });
|
||||
} else {
|
||||
funHandles.tackBtn(pageData); //验证码倒数60秒
|
||||
}
|
||||
//_this.loading = false;
|
||||
}).catch(async error => {
|
||||
console.log(error)
|
||||
await ElMessageBox.alert(error.message, '错误', { type: 'error' });
|
||||
})
|
||||
} else {
|
||||
console.log('未通过')
|
||||
return;
|
||||
}
|
||||
});
|
||||
},
|
||||
tackBtn(pageData) { //验证码倒数60秒
|
||||
let time = 60;
|
||||
let timer = setInterval(() => {
|
||||
if (time == 0) {
|
||||
clearInterval(timer);
|
||||
pageData.loginForm.valiBtn = '获取验证码';
|
||||
pageData.loginForm.disabled = false;
|
||||
} else {
|
||||
pageData.loginForm.disabled = true;
|
||||
pageData.loginForm.valiBtn = time + '秒后重试';
|
||||
time--;
|
||||
}
|
||||
}, 1000);
|
||||
},
|
||||
verifyKey: async (pageData) => {
|
||||
if (pageData.loginForm?.phone?.length != 11 || pageData.loginForm?.code?.length != 4) {
|
||||
//ElMessage.error('请将内容输入完整后再次点击登录!')
|
||||
ElMessage({
|
||||
message: '请将内容输入完整后再次点击登录!',
|
||||
type: 'warning',
|
||||
})
|
||||
return;
|
||||
}
|
||||
try {
|
||||
window.loadingInstance = ElLoading.service({ lock: true, text: '处理中' });
|
||||
const response = await axios({
|
||||
headers: { 'Content-Type': 'application/json;charset=UTF-8' },
|
||||
method: 'post',
|
||||
url: `/gb/yjb/api/outsidewall/VerifyLogin`,
|
||||
data: pageData.loginForm,
|
||||
responseType: "json",
|
||||
});
|
||||
window.loadingInstance?.close();
|
||||
if (response.data.data.passed == true) {
|
||||
window.sessionStorage.setItem('__VerifyLogin', response.data.data.token);
|
||||
await funHandles.getCommunitys("", pageData);
|
||||
pageData.dialogLoginVisible = false
|
||||
pageData.uploadaction = `/gb/yjb/api/outsidewall/sysFileInfo/upload?access_token=${window.sessionStorage.getItem('__VerifyLogin')}`
|
||||
//return response.data.data;
|
||||
}
|
||||
else {
|
||||
await ElMessageBox.alert("验证码错误或已失效,登录失败", '登录', { type: 'error' });
|
||||
}
|
||||
} catch (error) {
|
||||
window.loadingInstance?.close();
|
||||
console.log(error)
|
||||
await ElMessageBox.alert(error.message, '异常', { type: 'error' });
|
||||
//window.location.reload();//刷新当前页面
|
||||
}
|
||||
},
|
||||
getCommunitys: async (queryString, data) => {
|
||||
try {
|
||||
if (queryString == undefined || queryString == "")
|
||||
return;
|
||||
window.loadingInstance = ElLoading.service({ lock: true, text: '加载中' });
|
||||
|
||||
const response = await axios({
|
||||
headers: { 'Content-Type': 'application/json;charset=UTF-8' },
|
||||
method: 'get',
|
||||
url: `/gb/yjb/api/outsidewall/Communitys?access_token=${window.sessionStorage.getItem('__VerifyLogin')}&searchkey=${queryString ?? ''}`,
|
||||
responseType: "json",
|
||||
});
|
||||
window.loadingInstance?.close();
|
||||
data.communitys = response.data.data;
|
||||
return response.data.data;
|
||||
} catch (error) {
|
||||
window.loadingInstance?.close();
|
||||
console.log(error)
|
||||
if (error.response.status == 401)
|
||||
ElMessageBox.alert("请先登录", '异常', { type: 'error' });
|
||||
else
|
||||
ElMessageBox.alert(error.message, '异常', { type: 'error' });
|
||||
}
|
||||
},
|
||||
onChangeSelectCommunity: async (v, data) => {
|
||||
if (v) {
|
||||
const { name, id } = JSON.parse(v)
|
||||
try {
|
||||
window.loadingInstance = ElLoading.service({ lock: true, text: '加载中' });
|
||||
|
||||
const response = (window.cacheCommunitysData && window.cacheCommunitysData[id]) ?? await axios({
|
||||
headers: { 'Content-Type': 'application/json;charset=UTF-8' },
|
||||
method: 'get',
|
||||
url: '/gb/yjb/api/outsidewall/Communitys/' + id,
|
||||
responseType: "json",
|
||||
});
|
||||
window.loadingInstance?.close();
|
||||
|
||||
if (!window.cacheCommunitysData) window.cacheCommunitysData = [];
|
||||
if (!window.cacheCommunitysData[id]) window.cacheCommunitysData[id] = response;
|
||||
|
||||
data.buildings = response.data.data;
|
||||
if (!data.form) data.form = {};
|
||||
data.form.communityId = id;
|
||||
data.form.communityName = name;
|
||||
//data.form.buildings = response.data.data?.map(x => (
|
||||
// {
|
||||
// id: x.id,
|
||||
// address: x.address,
|
||||
// buildingName: x.buildingName,
|
||||
// levelCount: x.levelCount,
|
||||
// houseHolds: x.houseHolds,
|
||||
// buildingUnit: x.buildingUnit,
|
||||
// desingerUnit: x.desingerUnit,
|
||||
// constructionUnit: x.constructionUnit,
|
||||
// monitorUnit: x.monitorUnit,
|
||||
// wuYeUnit: x.wuYeUnit,
|
||||
// }
|
||||
//)) ?? [];
|
||||
data.form.buildcount = data.buildings.length;//楼栋数
|
||||
data.form.householdcount = data.buildings.reduce((a, key) => { return a + key.houseHolds }, 0);//住户总数
|
||||
data.form.totalfloorage = data.buildings.reduce((a, key) => { return a + key.areaCount }, 0);//总建筑面积
|
||||
} catch (error) {
|
||||
window.loadingInstance?.close();
|
||||
console.log(error)
|
||||
ElMessageBox.alert(error.message, '异常', { type: 'error' });
|
||||
}
|
||||
} else {
|
||||
data.buildings = [];
|
||||
data.form = {}
|
||||
}
|
||||
},
|
||||
getBuildings: async (v, data) => {
|
||||
if (v == undefined || v == "")
|
||||
return;
|
||||
const response = await axios({
|
||||
headers: { 'Content-Type': 'application/json;charset=UTF-8' },
|
||||
method: 'get',
|
||||
url: `/gb/yjb/api/outsidewall/Community/${data.form.communityId}?querystring=${v ?? ''}`,
|
||||
responseType: "json",
|
||||
});
|
||||
if (!window.cacheCommunitysData) window.cacheCommunitysData = [];
|
||||
if (!window.cacheCommunitysData[data.form.communityId]) window.cacheCommunitysData[data.form.communityId] = response;
|
||||
//data.buildings = response.data.data;
|
||||
data.form.searchBuildings = response.data.data?.map(x => (
|
||||
{
|
||||
id: x.id,
|
||||
address: x.address,
|
||||
buildingName: x.buildingName,
|
||||
levelCount: x.levelCount,
|
||||
houseHolds: x.houseHolds,
|
||||
buildingUnit: x.buildingUnit,
|
||||
desingerUnit: x.desingerUnit,
|
||||
constructionUnit: x.constructionUnit,
|
||||
monitorUnit: x.monitorUnit,
|
||||
wuYeUnit: x.wuYeUnit,
|
||||
}
|
||||
)) ?? [];
|
||||
},
|
||||
onChangeSelectBuildings: async (v, data, formEl, childFormEl) => {
|
||||
if (v) {
|
||||
try {
|
||||
let isAllChildValid = false;
|
||||
if (data?.form?.isExistProblem == '0') { isAllChildValid = true; }
|
||||
else {
|
||||
//验证
|
||||
var waitValid = data.form?.buildingsForm?.filter(a => a.building.curwallproblems.length > 0)
|
||||
if (waitValid?.length > 0) {
|
||||
for (let ii = 0; ii < waitValid.length; ii++) {
|
||||
let _fe = waitValid[ii]?.formEl;
|
||||
const isValid = await _fe?.validate(valid => {
|
||||
if (!valid) {
|
||||
data.buildingItemId = waitValid[ii].building.id;
|
||||
}
|
||||
});
|
||||
if (isValid == false) {
|
||||
ElMessageBox.alert('幢信息问卷未填写完整', '提示', { type: 'warning' });
|
||||
return;
|
||||
}
|
||||
}
|
||||
isAllChildValid = true;
|
||||
}
|
||||
else {
|
||||
//ElMessageBox.alert('存在问题请展开幢信息进行问卷填写', '提示', { type: 'warning' });
|
||||
}
|
||||
|
||||
|
||||
|
||||
const fromMerges = childFormEl.map((x, ii) => ({ formEl: x, building: data.buildings[ii] }));
|
||||
//let validateFroms = [].concat(data?.form.buildingsForm?.filter(x => x.building.curwallproblems?.length > 0));
|
||||
//if (validateFroms.length > 0) {
|
||||
// for (let ii = 0; ii < validateFroms.length; ii++) {
|
||||
// let _fe = validateFroms[ii]?.formEl;
|
||||
// const isValid = _fe ?? await _fe?.validate(valid => {
|
||||
// if (!valid) {
|
||||
// data.buildingItemId = validateFroms[ii].building.id;
|
||||
// }
|
||||
// });
|
||||
// if (isValid == false) {
|
||||
// ElMessageBox.alert('幢信息问卷未填写完整', '提示', { type: 'warning' });
|
||||
// return;
|
||||
// }
|
||||
// }
|
||||
// isAllChildValid = true;
|
||||
//}
|
||||
//else {
|
||||
// ElMessageBox.alert('存在问题请展开幢信息进行问卷填写', '提示', { type: 'warning' });
|
||||
//}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
window.loadingInstance = ElLoading.service({ lock: true, text: '加载中' });
|
||||
|
||||
if (!data.form.buildings) {
|
||||
data.form.buildings = []
|
||||
}
|
||||
if (!data.form.buildingsForm) {
|
||||
data.form.buildingsForm = []
|
||||
}
|
||||
|
||||
var c = window.cacheCommunitysData[data.form.communityId].data.data.filter(a => a.id == v)
|
||||
data.form.buildings.push(c[0])
|
||||
data.form.buildingsForm.push(fromMerges.filter(x => x.building.id == data.buildingItemId)[0])
|
||||
|
||||
window.loadingInstance?.close();
|
||||
}
|
||||
} catch (error) {
|
||||
window.loadingInstance?.close();
|
||||
console.log(error)
|
||||
ElMessageBox.alert(error.message, '异常', { type: 'error' });
|
||||
}
|
||||
} else {
|
||||
|
||||
}
|
||||
},
|
||||
onSubmit: (formEl, childFormEl, data) => {
|
||||
console.log('submit!');
|
||||
formEl.validate(async (valid) => {
|
||||
if (valid) {
|
||||
let isAllChildValid = false;
|
||||
if (data?.form?.isExistProblem == '0') { isAllChildValid = true; }
|
||||
else {
|
||||
var waitValid = data.form?.buildingsForm?.filter(a => a.building.curwallproblems.length > 0)
|
||||
if (waitValid?.length > 0) {
|
||||
for (let ii = 0; ii < waitValid.length; ii++) {
|
||||
let _fe = waitValid[ii]?.formEl;
|
||||
const isValid = await _fe?.validate(valid => {
|
||||
if (!valid) {
|
||||
data.buildingItemId = waitValid[ii].building.id;
|
||||
}
|
||||
});
|
||||
if (isValid == false) {
|
||||
ElMessageBox.alert('幢信息问卷未填写完整', '提示', { type: 'warning' });
|
||||
return;
|
||||
}
|
||||
}
|
||||
isAllChildValid = true;
|
||||
}
|
||||
else {
|
||||
ElMessageBox.alert('存在问题请展开幢信息进行问卷填写', '提示', { type: 'warning' });
|
||||
}
|
||||
|
||||
//const fromMerges = childFormEl.map((x, ii) => ({ formEl: x, building: data.form.buildings[ii] }));
|
||||
|
||||
////const validateFroms = [].concat(fromMerges.filter(x => x.building.id == data.buildingItemId), fromMerges.filter(x => x.building.curwallproblems?.length > 0));
|
||||
|
||||
//let validateFroms = [].concat(data?.form.buildings.filter(x => x.id == data.buildingItemId), data?.form.buildings.filter(x => x.curwallproblems?.length > 0));
|
||||
|
||||
//if (validateFroms.length > 0) {
|
||||
// for (let ii = 0; ii < validateFroms.length; ii++) {
|
||||
// const isValid = await validateFroms[ii].formEl.validate(valid => {
|
||||
// if (!valid) {
|
||||
// data.buildingItemId = validateFroms[ii].building.id;
|
||||
// }
|
||||
// });
|
||||
// if (!isValid) {
|
||||
// ElMessageBox.alert('幢信息问卷未填写完整', '提示', { type: 'warning' });
|
||||
// return;
|
||||
// }
|
||||
// }
|
||||
// isAllChildValid = true;
|
||||
//}
|
||||
//else {
|
||||
// ElMessageBox.alert('存在问题请展开幢信息进行问卷填写', '提示', { type: 'warning' });
|
||||
//}
|
||||
}
|
||||
|
||||
if (isAllChildValid) {
|
||||
ElMessageBox.confirm('确定提交吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(async () => {
|
||||
debugger
|
||||
window.loadingInstance = ElLoading.service({ lock: true, text: '提交中...请稍候' });
|
||||
try {
|
||||
data.form.buildings = data.form.buildings?.filter(a => a.curwallproblems?.length > 0)
|
||||
const response = await axios({
|
||||
headers: { 'Content-Type': 'multipart/form-data' },
|
||||
method: 'post',
|
||||
url: `/gb/yjb/api/outsidewall/submit?access_token=${window.sessionStorage.getItem('__VerifyLogin')}`,
|
||||
data: data.form,
|
||||
responseType: "json"
|
||||
});
|
||||
window.loadingInstance?.close();
|
||||
|
||||
//debugger;
|
||||
if (response.data?.success == true) {
|
||||
await ElMessageBox.alert('提交成功', '成功', { type: 'success' });
|
||||
window.location.reload();//刷新当前页面
|
||||
} else {
|
||||
ElMessageBox.alert(response.data.message, '异常', { type: 'error' });
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(error)
|
||||
window.loadingInstance?.close();
|
||||
ElMessageBox.alert(error.message, '异常', { type: 'error' });
|
||||
}
|
||||
}).catch(() => { });
|
||||
}
|
||||
}
|
||||
else {
|
||||
ElMessageBox.alert("社区信息问卷未填写完整", '提示', { type: 'warning' });
|
||||
}
|
||||
});
|
||||
},
|
||||
fileChange: (response, file, fileList) => {
|
||||
if (response.success == false) {
|
||||
ElMessageBox.alert('上传失败,请稍候重试', '异常', { type: 'error' });
|
||||
return;
|
||||
}
|
||||
if (file.response) {
|
||||
if (!pageData.value.form.fileList) pageData.value.form.fileList = [];
|
||||
pageData.value.form.fileList.push(file.response.data);
|
||||
}
|
||||
},
|
||||
fileRemove: async (file, fileList) => {
|
||||
console.log(file, fileList);
|
||||
window.loadingInstance = ElLoading.service({ lock: true, text: '处理中' });
|
||||
try {
|
||||
const response = await axios({
|
||||
headers: { 'Content-Type': 'application/json;charset=UTF-8' },
|
||||
method: 'get',
|
||||
url: '/gb/yjb/api/outsidewall/sysFileInfo/delete/' + file.response.data,
|
||||
responseType: "json",
|
||||
});
|
||||
|
||||
if (file.response && pageData.value.form.fileList) {
|
||||
pageData.value.form.fileList = pageData.value.form.fileList.filter((a) => { return a != file.response.data });
|
||||
}
|
||||
//}
|
||||
|
||||
window.loadingInstance?.close();
|
||||
} catch (error) {
|
||||
console.log(error)
|
||||
window.loadingInstance?.close();
|
||||
}
|
||||
},
|
||||
fileChildChange: (response, file, fileList, scope, toward) => {
|
||||
if (response.success == false) {
|
||||
ElMessageBox.alert('上传失败,请稍候重试', '异常', { type: 'error' });
|
||||
return;
|
||||
}
|
||||
|
||||
if (file.response) {
|
||||
var _pf = {
|
||||
file: file.response.data,
|
||||
toward: toward
|
||||
}
|
||||
if (!scope.problemfiles) scope.problemfiles = [];
|
||||
scope.problemfiles.push(_pf)
|
||||
}
|
||||
},
|
||||
fileChildRemove: async (file, fileList, scope) => {
|
||||
console.log(file, fileList);
|
||||
window.loadingInstance = ElLoading.service({ lock: true, text: '处理中' });
|
||||
try {
|
||||
const response = await axios({
|
||||
headers: { 'Content-Type': 'application/json;charset=UTF-8' },
|
||||
method: 'get',
|
||||
url: '/gb/yjb/api/outsidewall/sysFileInfo/delete/' + file.response.data,
|
||||
responseType: "json",
|
||||
});
|
||||
|
||||
if (file.response && scope.problemfiles) {
|
||||
scope.problemfiles = scope.problemfiles.filter((a) => { return a.file != file.response.data });
|
||||
}
|
||||
|
||||
window.loadingInstance?.close();
|
||||
} catch (error) {
|
||||
console.log(error)
|
||||
window.loadingInstance?.close();
|
||||
}
|
||||
},
|
||||
filePreview: (file, fileList) => {
|
||||
pageData.value.dialogImageUrl = window.location.protocol + "//" + window.location.host + "/gb/yjb/api/outsidewall/sysFileInfo/preview/" + file.response.data;
|
||||
pageData.value.dialogImageUrls = fileList.map(a => window.location.protocol + "//" + window.location.host + "/gb/yjb/api/outsidewall/sysFileInfo/preview/" + a.response.data);
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
onMounted(async () => {
|
||||
await funHandles.init(pageData.value);
|
||||
});
|
||||
|
||||
return {
|
||||
XEUtils,
|
||||
formRef,
|
||||
childFormRef,
|
||||
loginFormRef,
|
||||
rulesCheckData,
|
||||
checkPhone,
|
||||
pageData,
|
||||
staticData,
|
||||
funHandles
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
app.use(ElementPlus, { locale: ElementPlusLocaleZhCn });
|
||||
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
|
||||
app.component(key, component)
|
||||
}
|
||||
app.mount("#app");
|
||||
</script>
|
||||
<style>
|
||||
.upload-demo .el-upload-dragger {
|
||||
height: 100%;
|
||||
border-width: 0;
|
||||
padding: 20px var(--el-upload-dragger-padding-vertical);
|
||||
}
|
||||
</style>
|
||||
</body>
|
||||
</html>
|
||||
@@ -99,7 +99,8 @@
|
||||
window.sessionStorage.setItem('__TOKEN', response.data.data.token);
|
||||
//location = '/gb/yjb/manage/VoteResult'
|
||||
//location = '/gb/yjb/manage/nbczResult'
|
||||
location = '/202307/html/outsidewall/result.html'
|
||||
//location = '/202307/html/outsidewall/result.html'
|
||||
location = '../yjbvote/voteresult.html';
|
||||
}
|
||||
}
|
||||
_this.loading = false;
|
||||
|
||||
115
20220330_Vote/Ewide.Web.Entry/wwwroot/html/yjbvote/Expert.html
Normal file
115
20220330_Vote/Ewide.Web.Entry/wwwroot/html/yjbvote/Expert.html
Normal file
@@ -0,0 +1,115 @@
|
||||
|
||||
<!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;">2023年度宁波市“甬江建设杯”选票结果</h3>
|
||||
<el-table :data="tableData" style="width: 20%;margin:0 auto;">
|
||||
<el-table-column prop="login_code" label="专家"> </el-table-column>
|
||||
<el-table-column prop="is_vote" label="是否投票" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="info" v-if="scope.row.is_vote==true">已投</el-tag>
|
||||
<el-tag type="danger" v-else>未投</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<h3 style="text-align:center;">
|
||||
<el-button @click="load_vote">刷新数据</el-button>
|
||||
<el-button @click="show_expert_vote">查看项目投票情况</el-button>
|
||||
</h3>
|
||||
</div>
|
||||
</body>
|
||||
<style scoped>
|
||||
.buhuanhang {
|
||||
white-space: nowrap;
|
||||
width: 21%;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
new Vue({
|
||||
el: '#app',
|
||||
data: function () {
|
||||
return {
|
||||
tableData: [],
|
||||
loading: false,
|
||||
token: ''
|
||||
}
|
||||
},
|
||||
created: function () {
|
||||
this.check_login()
|
||||
this.loading = true;
|
||||
this.load_vote();
|
||||
|
||||
},
|
||||
methods: {
|
||||
show_expert_vote() {
|
||||
location = 'voteresult.html'
|
||||
},
|
||||
check_login() {
|
||||
this.token = window.sessionStorage.getItem('__TOKEN');
|
||||
if (!this.token)
|
||||
location = '../manage/login.html'
|
||||
},
|
||||
|
||||
load_vote() {
|
||||
this.loading = true;
|
||||
let _this = this;
|
||||
axios({
|
||||
headers: { 'Content-Type': 'application/json;charset=UTF-8' },
|
||||
method: 'post',
|
||||
url: '/gb/yjb/api/projects/expert-vote',
|
||||
data: {},
|
||||
responseType: "json",
|
||||
headers: {
|
||||
Authorization: 'Bearer ' + _this.token
|
||||
}
|
||||
}).then(function (response) {
|
||||
_this.tableData = response.data.data
|
||||
console.log(_this.tableData)
|
||||
_this.loading = false;
|
||||
}).catch(function (error) {
|
||||
console.log(error)
|
||||
_this.$message({
|
||||
type: 'error',
|
||||
message: error.message
|
||||
})
|
||||
_this.loading = false;
|
||||
})
|
||||
},
|
||||
loading_false() { this.loading = false },
|
||||
|
||||
dateFormat(fmt, date) {
|
||||
let ret;
|
||||
const opt = {
|
||||
"Y+": date.getFullYear().toString(), // 年
|
||||
"m+": (date.getMonth() + 1).toString(), // 月
|
||||
"d+": date.getDate().toString(), // 日
|
||||
"H+": date.getHours().toString(), // 时
|
||||
"M+": date.getMinutes().toString(), // 分
|
||||
"S+": date.getSeconds().toString() // 秒
|
||||
// 有其他格式化字符需求可以继续添加,必须转化成字符串
|
||||
};
|
||||
for (let k in opt) {
|
||||
ret = new RegExp("(" + k + ")").exec(fmt);
|
||||
if (ret) {
|
||||
fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
|
||||
};
|
||||
};
|
||||
return fmt;
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,283 @@
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="/lib/element-ui/theme-chalk/index.css">
|
||||
<script src="/lib/vue2/vue.min.js"></script>
|
||||
<script src="/lib/element-ui/theme-chalk/index.js"></script>
|
||||
<script src="/lib/axios/axios.min.js"></script>
|
||||
<script src="/lib/qs/qs.min.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="app" v-loading="loading">
|
||||
<h3 style="text-align:center;">2021年度宁波市“甬江建设杯”选票结果</h3>
|
||||
<el-collapse style="width: 80%;margin:0 auto;">
|
||||
<el-collapse-item v-for="(prolist,idx) in tableData" :title="prolist.name" :name="idx" v-show="prolist.data.length>0" :key="idx">
|
||||
<el-table :data="prolist.data" style="width:95%;margin:0 auto;">
|
||||
<el-table-column prop="serial_number" label="序号" width="120"> </el-table-column>
|
||||
<el-table-column prop="name" label="工程名称"> </el-table-column>
|
||||
<el-table-column prop="no_count" label="不同意票数" width="120"> </el-table-column>
|
||||
<el-table-column prop="yes_count" label="同意票数" width="120"> </el-table-column>
|
||||
<el-table-column prop="is_agree" label="是否通过" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="info" v-if="scope.row.is_agree==true">通过</el-tag>
|
||||
<el-tag type="danger" v-else>不通过</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-collapse-item>
|
||||
|
||||
|
||||
|
||||
<!--<el-collapse-item title="房建工程" name="1">
|
||||
<el-table :data="tableData0" style="width:95%;margin:0 auto;">
|
||||
<el-table-column prop="serial_number" label="序号" width="120"> </el-table-column>
|
||||
<el-table-column prop="name" label="工程名称"> </el-table-column>
|
||||
<el-table-column prop="no_count" label="不同意票数" width="120"> </el-table-column>
|
||||
<el-table-column prop="yes_count" label="同意票数" width="120"> </el-table-column>
|
||||
<el-table-column prop="is_agree" label="是否通过" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="info" v-if="scope.row.is_agree==true">通过</el-tag>
|
||||
<el-tag type="danger" v-else>不通过</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-collapse-item>
|
||||
<el-collapse-item title="市政工程" name="2">
|
||||
<el-table :data="tableData1" style="width: 95%; margin: 0 auto;">
|
||||
<el-table-column prop="serial_number" label="序号" width="120"> </el-table-column>
|
||||
<el-table-column prop="name" label="工程名称"> </el-table-column>
|
||||
<el-table-column prop="no_count" label="不同意票数" width="120"> </el-table-column>
|
||||
<el-table-column prop="yes_count" label="同意票数" width="120"> </el-table-column>
|
||||
<el-table-column prop="is_agree" label="是否通过" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="info" v-if="scope.row.is_agree==true">通过</el-tag>
|
||||
<el-tag type="danger" v-else>不通过</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-collapse-item>
|
||||
<el-collapse-item title="轨道工程" name="3">
|
||||
<el-table :data="tableData2" style="width: 95%; margin: 0 auto;">
|
||||
<el-table-column prop="serial_number" label="序号" width="120"> </el-table-column>
|
||||
<el-table-column prop="name" label="工程名称"> </el-table-column>
|
||||
<el-table-column prop="no_count" label="不同意票数" width="120"> </el-table-column>
|
||||
<el-table-column prop="yes_count" label="同意票数" width="120"> </el-table-column>
|
||||
<el-table-column prop="is_agree" label="是否通过" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="info" v-if="scope.row.is_agree==true">通过</el-tag>
|
||||
<el-tag type="danger" v-else>不通过</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-collapse-item>
|
||||
<el-collapse-item title="电力工程" name="4">
|
||||
<el-table :data="tableData3" style="width: 95%; margin: 0 auto;">
|
||||
<el-table-column prop="serial_number" label="序号" width="120"> </el-table-column>
|
||||
<el-table-column prop="name" label="工程名称"> </el-table-column>
|
||||
<el-table-column prop="no_count" label="不同意票数" width="120"> </el-table-column>
|
||||
<el-table-column prop="yes_count" label="同意票数" width="120"> </el-table-column>
|
||||
<el-table-column prop="is_agree" label="是否通过" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="info" v-if="scope.row.is_agree==true">通过</el-tag>
|
||||
<el-tag type="danger" v-else>不通过</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-collapse-item>
|
||||
<el-collapse-item title="交通工程" name="5">
|
||||
<el-table :data="tableData4" style="width: 95%; margin: 0 auto;">
|
||||
<el-table-column prop="serial_number" label="序号" width="120"> </el-table-column>
|
||||
<el-table-column prop="name" label="工程名称"> </el-table-column>
|
||||
<el-table-column prop="no_count" label="不同意票数" width="120"> </el-table-column>
|
||||
<el-table-column prop="yes_count" label="同意票数" width="120"> </el-table-column>
|
||||
<el-table-column prop="is_agree" label="是否通过" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="info" v-if="scope.row.is_agree==true">通过</el-tag>
|
||||
<el-tag type="danger" v-else>不通过</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-collapse-item>
|
||||
<el-collapse-item title="水利工程" name="6">
|
||||
<el-table :data="tableData5" style="width: 95%; margin: 0 auto;">
|
||||
<el-table-column prop="serial_number" label="序号" width="120"> </el-table-column>
|
||||
<el-table-column prop="name" label="工程名称"> </el-table-column>
|
||||
<el-table-column prop="no_count" label="不同意票数" width="120"> </el-table-column>
|
||||
<el-table-column prop="yes_count" label="同意票数" width="120"> </el-table-column>
|
||||
<el-table-column prop="is_agree" label="是否通过" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="info" v-if="scope.row.is_agree==true">通过</el-tag>
|
||||
<el-tag type="danger" v-else>不通过</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-collapse-item>-->
|
||||
<!--</el-collapsestyle="width:>-->
|
||||
|
||||
|
||||
<h3 style="text-align:center;">
|
||||
<el-button @click="load_projects">刷新数据</el-button>
|
||||
<el-button type="primary" @click="export_excel">导出Excel</el-button>
|
||||
<el-button @click="show_expert_vote">查看专家投票情况</el-button>
|
||||
</h3>
|
||||
</div>
|
||||
</body>
|
||||
<style scoped>
|
||||
.buhuanhang {
|
||||
white-space: nowrap;
|
||||
width: 21%;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
new Vue({
|
||||
el: '#app',
|
||||
data: function () {
|
||||
return {
|
||||
tableData: [],
|
||||
tableData0: [],
|
||||
tableData1: [],
|
||||
tableData2: [],
|
||||
tableData3: [],
|
||||
tableData4: [],
|
||||
tableData5: [],
|
||||
loading: false,
|
||||
token: ''
|
||||
}
|
||||
},
|
||||
created: function () {
|
||||
this.check_login()
|
||||
this.loading = true;
|
||||
this.load_projects();
|
||||
|
||||
},
|
||||
methods: {
|
||||
show_expert_vote() {
|
||||
//location = '/gb/yjb/manage/expert'
|
||||
location = 'Expert.html'
|
||||
},
|
||||
export_excel() {
|
||||
this.download('/gb/yjb/api/projects/download', this.dateFormat("YYYYmmddHHMMSS", new Date()) + "-2022年度甬江杯投票.xlsx", this.loading_false);
|
||||
},
|
||||
check_login() {
|
||||
this.token = window.sessionStorage.getItem('__TOKEN');
|
||||
if (!this.token)
|
||||
location = '../manage/login.html'
|
||||
},
|
||||
|
||||
load_projects() {
|
||||
this.loading = true;
|
||||
let _this = this;
|
||||
axios({
|
||||
headers: { 'Content-Type': 'application/json;charset=UTF-8' },
|
||||
method: 'post',
|
||||
url: '/gb/yjb/api/projects/list2',
|
||||
data: {},
|
||||
responseType: "json",
|
||||
headers: {
|
||||
Authorization: 'Bearer ' + _this.token
|
||||
}
|
||||
}).then(function (response) {
|
||||
_this.tableData = [];
|
||||
console.log(response)
|
||||
var _data = response.data.data.data
|
||||
var typeList = response.data.data.typeList
|
||||
for (var i = 0; i < typeList.length; i++) {
|
||||
var _p = _data.filter(a => { return a.type == i; });
|
||||
_this.tableData.push({ name: typeList[i], data: _p })
|
||||
}
|
||||
console.log(_this.tableData)
|
||||
//_this.tableData0 = response.data.data.data0
|
||||
//_this.tableData1 = response.data.data.data1
|
||||
//_this.tableData2 = response.data.data.data2
|
||||
//_this.tableData3 = response.data.data.data3
|
||||
//_this.tableData4 = response.data.data.data4
|
||||
//_this.tableData5 = response.data.data.data5
|
||||
//console.log(_this.tableData0)
|
||||
_this.loading = false;
|
||||
}).catch(function (error) {
|
||||
console.log(error)
|
||||
_this.$message({
|
||||
type: 'error',
|
||||
message: error.message
|
||||
})
|
||||
_this.loading = false;
|
||||
})
|
||||
},
|
||||
loading_false() { this.loading = false },
|
||||
|
||||
download(url, filename, callback) {
|
||||
let _this = this;
|
||||
axios({
|
||||
headers: { 'Content-Type': 'application/json;charset=UTF-8' },
|
||||
method: 'post',
|
||||
url: url,
|
||||
data: {},
|
||||
responseType: "blob",
|
||||
headers: {
|
||||
Authorization: 'Bearer ' + _this.token
|
||||
}
|
||||
}).then(function (response) {
|
||||
console.log(response);
|
||||
//解析文件充blod中解析
|
||||
const url = window.URL.createObjectURL(
|
||||
new Blob([response.data], { type: "application/vnd.ms-excel" })
|
||||
);
|
||||
const link = document.createElement("a");
|
||||
link.style.display = "none";
|
||||
link.href = url;
|
||||
link.setAttribute("download", filename);
|
||||
document.body.appendChild(link);
|
||||
link.click();
|
||||
document.body.removeChild(link);
|
||||
callback();
|
||||
}).catch(function (error) {
|
||||
callback();
|
||||
console.log(error)
|
||||
_this.$message({
|
||||
type: 'error',
|
||||
message: error.message
|
||||
})
|
||||
})
|
||||
},
|
||||
getMonthWeek(now) {
|
||||
var a = now.getYear();
|
||||
var b = now.getMonth() + 1;
|
||||
var c = now.getDate();
|
||||
/*
|
||||
a = d = 当前日期
|
||||
b = 6 - w = 当前周的还有几天过完(不算今天)
|
||||
a + b 的和在除以7 就是当天是当前月份的第几周
|
||||
*/
|
||||
var date = new Date(a, parseInt(b) - 1, c), w = date.getDay(), d = date.getDate();
|
||||
return Math.ceil(
|
||||
(d + 6 - w) / 7
|
||||
);
|
||||
},
|
||||
dateFormat(fmt, date) {
|
||||
let ret;
|
||||
const opt = {
|
||||
"Y+": date.getFullYear().toString(), // 年
|
||||
"m+": (date.getMonth() + 1).toString(), // 月
|
||||
"d+": date.getDate().toString(), // 日
|
||||
"H+": date.getHours().toString(), // 时
|
||||
"M+": date.getMinutes().toString(), // 分
|
||||
"S+": date.getSeconds().toString() // 秒
|
||||
// 有其他格式化字符需求可以继续添加,必须转化成字符串
|
||||
};
|
||||
for (let k in opt) {
|
||||
ret = new RegExp("(" + k + ")").exec(fmt);
|
||||
if (ret) {
|
||||
fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
|
||||
};
|
||||
};
|
||||
return fmt;
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
</html>
|
||||
409
20220330_Vote/Ewide.Web.Entry/wwwroot/html/yjbvote/index.html
Normal file
409
20220330_Vote/Ewide.Web.Entry/wwwroot/html/yjbvote/index.html
Normal file
@@ -0,0 +1,409 @@
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="/lib/element-ui/theme-chalk/index.css">
|
||||
<script src="/lib/vue2/vue.min.js"></script>
|
||||
<script src="/lib/element-ui/theme-chalk/index.js"></script>
|
||||
<script src="/lib/axios/axios.min.js"></script>
|
||||
<script src="/lib/qs/qs.min.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="app" v-loading="loading">
|
||||
<h3 style="text-align:center;">2023年度宁波市“甬江建设杯”选票</h3>
|
||||
<el-collapse>
|
||||
<el-collapse-item v-for="(prolist,idx) in projects" :title="prolist.name" :name="idx" v-show="prolist.data.length>0" :key="idx">
|
||||
<el-descriptions class="margin-top" title="" :column="1" border v-for="project in prolist.data" :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="1" v-show="projects0.length>0">
|
||||
<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" v-show="projects1.length>0">
|
||||
<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" v-show="projects2.length>0">
|
||||
<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" v-show="projects3.length>0">
|
||||
<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" v-show="projects4.length>0">
|
||||
<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" v-show="projects5.length>0">
|
||||
<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.projects.map(a => {
|
||||
a.data.map(b => { b.vote = "true"; return b; })
|
||||
});
|
||||
//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 msg1 = "";
|
||||
var msg2 = "";
|
||||
var all_no_select_num = 0;
|
||||
var select_false_list = [];
|
||||
var all_select_false_num = 0;
|
||||
var all_select_true_num = 0;
|
||||
var allselects = [];
|
||||
for (var i = 0; i < _this.projects.length; i++) {
|
||||
var _p = _this.projects[i];
|
||||
if (_p.data.length > 0) {
|
||||
var no_select = _p.data.filter(a => { return !a.vote }).length;
|
||||
all_no_select_num += no_select;
|
||||
if (no_select > 0) {
|
||||
msg1 += `<p>目前[` + _p.name + `]未选择的有` + no_select + `个</p>`;
|
||||
}
|
||||
var select_false = _p.data.filter(a => { return a.vote == "false" }).length;
|
||||
select_false_list.push(select_false)
|
||||
if (select_false < 1) {
|
||||
msg2 += `<p>目前[` + _p.name + `]淘汰的有` + select_false + `个</p>`;
|
||||
}
|
||||
all_select_false_num += select_false;
|
||||
all_select_true_num += _p.data.filter(a => { return a.vote == "true" }).length;
|
||||
allselects = allselects.concat(_p.data)
|
||||
}
|
||||
}
|
||||
if (all_no_select_num > 0) {
|
||||
this.$alert(`<div>请全部选择完毕后再次提交!</div>` + msg1, '错误', {
|
||||
confirmButtonText: '确定', dangerouslyUseHTMLString: true, center: true, closeOnClickModal: true
|
||||
}).then(a => { }).catch(err => { console.log(err) });
|
||||
return;
|
||||
}
|
||||
debugger
|
||||
//if (select_false_list.filter(a => a < 1).length > 0) {
|
||||
// this.$alert(`<div>每个专业必须有一个淘汰!</div>` + msg2, '错误', {
|
||||
// confirmButtonText: '确定', dangerouslyUseHTMLString: true, center: true, closeOnClickModal: true
|
||||
// }).then(a => { }).catch(err => { console.log(err) });
|
||||
// return;
|
||||
//}
|
||||
//房建不少于14个
|
||||
if (select_false_list[0] < 13) {
|
||||
this.$alert(`<div>房建工程不少于13个淘汰!</div>` + msg2, '错误', {
|
||||
confirmButtonText: '确定', dangerouslyUseHTMLString: true, center: true, closeOnClickModal: true
|
||||
}).then(a => { }).catch(err => { console.log(err) });
|
||||
return;
|
||||
}
|
||||
//市政不少于1个
|
||||
if (select_false_list[1] < 1) {
|
||||
this.$alert(`<div>房建工程不少于1个淘汰!</div>` + msg2, '错误', {
|
||||
confirmButtonText: '确定', dangerouslyUseHTMLString: true, center: true, closeOnClickModal: true
|
||||
}).then(a => { }).catch(err => { console.log(err) });
|
||||
return;
|
||||
}
|
||||
//if (all_select_false_num != 8) {
|
||||
// this.$alert(`<div>淘汰总数只能等于8个!</div>` + msg2, '错误', {
|
||||
// confirmButtonText: '确定', dangerouslyUseHTMLString: true, center: true, closeOnClickModal: true
|
||||
// }).then(a => { }).catch(err => { console.log(err) });
|
||||
// return;
|
||||
//}
|
||||
this.$confirm('您此次选择了同意' + all_select_true_num + '个,淘汰' + all_select_false_num + '个,是否继续提交?', '提示', {
|
||||
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(() => {
|
||||
|
||||
});
|
||||
//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 != 8) {
|
||||
// this.$alert(`<div>淘汰总数只能等于8个!</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) {
|
||||
//console.log(response)
|
||||
var _data = response.data.data.data
|
||||
var typeList = response.data.data.typeList
|
||||
_data.map(a => { a.vote = !a.vote ? '' : a.vote.toString(); return a; });
|
||||
for (var i = 0; i < typeList.length; i++) {
|
||||
var _p = _data.filter(a => { return a.type == i; });
|
||||
_this.projects.push({ name: typeList[i], data: _p })
|
||||
}
|
||||
//console.log(_this.projects)
|
||||
//_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.alltrue();
|
||||
_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>
|
||||
Reference in New Issue
Block a user