first commit
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,10 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Title</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,449 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<style>
|
||||
.imgFileClass .el-upload {
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
<el-card class="mt20" shadow="never">
|
||||
<table-tool :app="this" label="住宅预申购调查">
|
||||
<template #func>
|
||||
<el-button @click="openAdd" size="small" type="primary">添加活动</el-button>
|
||||
</template>
|
||||
</table-tool>
|
||||
<el-table :data="tableData" :size="tableSize"
|
||||
@sort-change="pageOrder" header-align="center">
|
||||
<el-table-column align="center" header-align="center" label="序号" type="index" width="80">
|
||||
<template scope="scope">
|
||||
<span>{{ scope.$index + (pageForm.pageNumber - 1) * pageForm.pageSize + 1 }} </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
:sortable="column.sortable"
|
||||
:width="column.width"
|
||||
header-align="center"
|
||||
show-overflow-tooltip
|
||||
v-for="column in tableColumns"
|
||||
>
|
||||
<template scope="{row}" v-if="column.prop=='houseTypeList'">
|
||||
<el-link @click="openView(row)" type="primary">查看户型</el-link>
|
||||
</template>
|
||||
<template scope="{row}" v-else-if="column.prop=='buildingFiles'">
|
||||
<el-link @click="openViewBuildingFiles(row.buildingFiles)" type="primary">查看楼栋图</el-link>
|
||||
</template>
|
||||
|
||||
|
||||
</el-table-column>
|
||||
<el-table-column header-align="center" label="操作" width="400px">
|
||||
<template scope="scope">
|
||||
<el-button @click="generateQrCode(scope.row.id)" size="mini" type="primary">活动二维码</el-button>
|
||||
<el-button @click="openViewHasSelUsers(scope.row)" size="mini" type="primary">查看填写情况</el-button>
|
||||
<el-button @click="openEdit(scope.row)" size="mini" type="primary">编辑</el-button>
|
||||
<el-button @click="doDelete(scope.row.id)" size="mini" type="danger">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
|
||||
<template #edit>
|
||||
<el-form :model="formData" :rules="rules" label-width="120px" ref="form">
|
||||
<vi-title title="基本信息"></vi-title>
|
||||
<el-form-item label="活动名称" prop="actName">
|
||||
<el-input clearable maxlength="30" v-model="formData.actName"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-col :md="12" :xs="24">
|
||||
<el-form-item label="开始时间" prop="startTime">
|
||||
<el-date-picker clearable
|
||||
style="width: 100%"
|
||||
type="datetime"
|
||||
v-model="formData.startTime"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :md="12" :xs="24">
|
||||
<el-form-item label="结束时间" prop="endTime">
|
||||
<el-date-picker clearable
|
||||
style="width: 100%"
|
||||
type="datetime"
|
||||
v-model="formData.endTime"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-form-item label="楼栋分布图" prop="buildingFiles">
|
||||
<file-upload :files.sync="formData.buildingFiles" :max="5" :type="['jpg','png']"></file-upload>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
<vi-title2 title="房型信息">
|
||||
<template #func>
|
||||
<el-button @click="addHouseType" size="small" type="primary">添加房型</el-button>
|
||||
</template>
|
||||
</vi-title2>
|
||||
<el-table :data="formData.houseTypeList" header-align="center">
|
||||
<el-table-column label="序号" type="index"></el-table-column>
|
||||
<el-table-column header-align="center" label="面积(㎡)" prop="area">
|
||||
<template scope="scope">
|
||||
<el-form-item :prop="'houseTypeList.'+scope.$index+'.area'"
|
||||
:rules="rules.area"
|
||||
label-width="0">
|
||||
<el-input-number :max="1000" :min="1" :precision="0"
|
||||
:step="1"
|
||||
v-model="scope.row.area"></el-input-number>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column header-align="center" label="数量" prop="number">
|
||||
<template scope="scope">
|
||||
<el-form-item :prop="'houseTypeList.'+scope.$index+'.number'"
|
||||
:rules="rules.number"
|
||||
label-width="0">
|
||||
<el-input-number :max="1000" :min="1" :precision="0"
|
||||
:step="1"
|
||||
v-model="scope.row.number"></el-input-number>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column header-align="center" label="楼栋" prop="building">
|
||||
<template scope="scope">
|
||||
<el-form-item :prop="'houseTypeList.'+scope.$index+'.building'"
|
||||
:rules="rules.building"
|
||||
label-width="0">
|
||||
<el-input v-model="scope.row.building" maxLength="100"></el-input>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column header-align="center" label="价格区间" prop="priceRange">
|
||||
<template scope="scope">
|
||||
<el-form-item :prop="'houseTypeList.'+scope.$index+'.priceRange'"
|
||||
:rules="rules.priceRange"
|
||||
label-width="0">
|
||||
<el-input v-model="scope.row.priceRange" maxLength="20"></el-input>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column header-align="center" label="预览图" prop="number">
|
||||
<template scope="scope">
|
||||
<el-form-item :prop="'houseTypeList.'+scope.$index+'.imgFiles'"
|
||||
:rules="rules.imgFiles"
|
||||
label-width="0">
|
||||
<file-upload :files.sync="scope.row.imgFiles"
|
||||
:max="1"
|
||||
:type="['jpg', 'jpeg', 'png']"
|
||||
class="imgFileClass"></file-upload>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-form>
|
||||
|
||||
<el-row class="mt20" justify="end" type="flex">
|
||||
<el-button @click="$refs.guava.index()">取消</el-button>
|
||||
<el-button @click="doSubmit" type="primary">提交</el-button>
|
||||
</el-row>
|
||||
</template>
|
||||
|
||||
<template #view>
|
||||
<vi-title2 title="已选择人员">
|
||||
<template #func>
|
||||
<el-button @click="doExportHasSelUsers" size="small" type="primary">导出</el-button>
|
||||
</template>
|
||||
</vi-title2>
|
||||
<el-table :data="hasSelectedUser">
|
||||
<el-table-column label="序号" type="index"></el-table-column>
|
||||
<el-table-column label="姓名" prop="userName"></el-table-column>
|
||||
<el-table-column label="工号" prop="loginName" width="110px"></el-table-column>
|
||||
<el-table-column label="所在单位" prop="unitName"></el-table-column>
|
||||
<el-table-column label="出生年月" prop="birthday" width="100px"></el-table-column>
|
||||
<el-table-column label="参加工作时间" prop="joinWorkTime" width="110px"></el-table-column>
|
||||
<el-table-column label="进校时间" prop="schoolTime" width="100px"></el-table-column>
|
||||
<el-table-column label="职称职务" prop="titlePosition"></el-table-column>
|
||||
<el-table-column label="职称职务评定时间" prop="titleAsAssessmentTime" width="100px"></el-table-column>
|
||||
<el-table-column label="是否双职工" prop="isDoubleStaff" width="110px">
|
||||
<template scope="scope">
|
||||
{{scope.row.isDoubleStaff ? '√':''}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column label="是否服从调配" prop="whetherToAllocate">
|
||||
<template scope="scope">
|
||||
{{scope.row.whetherToAllocate ? '√':'×'}}
|
||||
</template>
|
||||
</el-table-column>-->
|
||||
<el-table-column label="选择的户型">
|
||||
<el-table-column :label="item.label" v-for="item in viewActHouseTypeList">
|
||||
<template scope="scope">
|
||||
<span v-if="scope.row.firstIntentionHouseId==item.prop">
|
||||
第一意向
|
||||
</span>
|
||||
<span v-else-if="scope.row.secondIntentionHouseId==item.prop">
|
||||
第二意向
|
||||
</span>
|
||||
<span v-else-if="scope.row.thirdIntentionHouseId==item.prop">
|
||||
第三意向
|
||||
</span>
|
||||
<span v-else-if="scope.row.fourthIntentionHouseId==item.prop">
|
||||
第四意向
|
||||
</span>
|
||||
<span v-else-if="scope.row.fifthIntentionHouseId==item.prop">
|
||||
第五意向
|
||||
</span>
|
||||
<span v-else-if="scope.row.sixthIntentionHouseId==item.prop">
|
||||
第六意向
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table-column>
|
||||
<el-table-column label="是否接受调剂其他户型" prop="isAcceptChangeHouse">
|
||||
<template scope="scope">
|
||||
<templte v-if="scope.row.isAcceptChangeHouse!=null">
|
||||
{{scope.row.isAcceptChangeHouse ? '√':'×'}}
|
||||
</templte>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="不参与选购" prop="noSelectIntention">
|
||||
<template scope="scope">
|
||||
{{scope.row.noSelectIntention ? '√':''}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="其它意向" prop="otherIntention" show-overflow-tooltip width="200px">
|
||||
<template scope="scope">
|
||||
{{scope.row.otherIntention}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</template>
|
||||
|
||||
<el-dialog :close-on-click-modal="false" :visible.sync="viewDialogVisible" title="查看" width="60%">
|
||||
<el-descriptions :column="2" border>
|
||||
<el-descriptions-item :span="2" label="名称">
|
||||
{{viewData.actName}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="开始时间">
|
||||
{{viewData.startTime}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="结束时间">
|
||||
{{viewData.endTime}}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
<el-carousel class="mt20" height="500px">
|
||||
<el-carousel-item :key="item" v-for="item in viewData.houseTypeList">
|
||||
<div style="position:relative;">
|
||||
<h4 style="color: #0e78c5">
|
||||
面积:{{item.area + 'm²'}}
|
||||
数量:{{item.number + '套'}}
|
||||
</h4>
|
||||
<el-image :src="APP_DOMAIN+'/file_server/fileStreamPreview?id='+item.imgFiles[0].id"
|
||||
@click="preview(item.imgFiles[0].filename,item.imgFiles[0].id)"></el-image>
|
||||
</div>
|
||||
</el-carousel-item>
|
||||
</el-carousel>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog :close-on-click-modal="false" :visible.sync="qrCodeDialog" title="查看" width="500px">
|
||||
<div style="text-align: center">
|
||||
<qrcode :value="qrCodeUrl" :options="{ width: 400 }"></qrcode>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
components: {
|
||||
'table-upload': httpVueLoader('/components/plugins/TableUpload.vue')
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
formData: {
|
||||
houseTypeList: [
|
||||
{
|
||||
area: null,
|
||||
number: 1,
|
||||
imgFiles: null
|
||||
}
|
||||
],
|
||||
startTime: null,
|
||||
endTime: null
|
||||
},
|
||||
rules: {
|
||||
actName: [{required: true, message: '请输入名称', trigger: ['change', 'blur']}],
|
||||
startTime: [{required: true, message: '请选择开始时间', trigger: ['change', 'blur']}],
|
||||
endTime: [{required: true, message: '请选择结束时间', trigger: ['change', 'blur']}],
|
||||
buildingFiles: [{required: true, message: '请上传户型图', trigger: ['change', 'blur']}],
|
||||
area: [{required: true, message: '请输入面积', trigger: ['change', 'blur']}],
|
||||
number: [{required: true, message: '请输入数量', trigger: ['change', 'blur']}],
|
||||
building: [{required: true, message: '请输入楼栋', trigger: ['change', 'blur']}],
|
||||
priceRange: [{required: true, message: '请输入价格区间', trigger: ['change', 'blur']}],
|
||||
imgFiles: [{required: true, message: '请上传户型图', trigger: ['change', 'blur']}],
|
||||
},
|
||||
tableColumns: [
|
||||
{prop: 'actName', label: '名称',},
|
||||
{prop: 'startTime', label: '开始时间'},
|
||||
{prop: 'endTime', label: '结束时间'},
|
||||
{prop: 'houseTypeList', label: '户型'},
|
||||
{prop: 'buildingFiles', label: '楼栋'},
|
||||
],
|
||||
viewData: {
|
||||
houseTypeList: []
|
||||
},
|
||||
viewDialogVisible: false,
|
||||
hasSelectedUser: [],
|
||||
|
||||
viewActHouseTypeList: [],
|
||||
tableSelectRowId: null,
|
||||
qrCodeDialog: false,
|
||||
qrCodeUrl: 'https://www.baidu.com'
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
'formData.buildingFiles'(val) {
|
||||
this.$refs.form.validateField('buildingFiles', (errMsg) => {
|
||||
console.log(errMsg)
|
||||
})
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
openAdd() {
|
||||
this.formData = {
|
||||
houseTypeList: [
|
||||
{
|
||||
area: null,
|
||||
number: 1,
|
||||
imgFiles: []
|
||||
}
|
||||
],
|
||||
startTime: null,
|
||||
endTime: null
|
||||
}
|
||||
this.$refs.guava.edit()
|
||||
},
|
||||
addHouseType() {
|
||||
this.formData.houseTypeList.push({
|
||||
area: null,
|
||||
number: 1,
|
||||
imgFiles: []
|
||||
})
|
||||
},
|
||||
async doSubmit() {
|
||||
const valid = await this.$refs['form'].validate()
|
||||
if (!valid) return
|
||||
const reqMethod = this.formData.id ? '/doEdit' : '/doAdd'
|
||||
const resp = await $.post('/platform/tempActivity/house/actSetUp' + reqMethod, {
|
||||
tempActHouse: JSON.stringify(this.formData)
|
||||
})
|
||||
if (resp.code === 0) {
|
||||
this.pageData()
|
||||
this.notifySuccess(resp.msg)
|
||||
this.$refs.guava.index()
|
||||
} else {
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
},
|
||||
async pageData() {
|
||||
sublime.showLoadingbar()
|
||||
const resp = await $.post('/platform/tempActivity/house/actSetUp/pageData', this.pageForm)
|
||||
sublime.closeLoadingbar()
|
||||
if (resp.code === 0) {
|
||||
this.pageForm.totalCount = resp.data.totalCount
|
||||
this.tableData = resp.data.list
|
||||
} else {
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
},
|
||||
openView(row) {
|
||||
this.viewData = clone(row)
|
||||
this.viewDialogVisible = true
|
||||
},
|
||||
async openViewHasSelUsers(row) {
|
||||
this.tableSelectRowId = row.id
|
||||
const resp = await $.post('/platform/tempActivity/house/queryHasSelUser/' + row.id)
|
||||
if (resp.code === 0) {
|
||||
this.$refs.guava.view()
|
||||
resp.data.forEach(v => {
|
||||
v.birthday = moment(v.birthday).format('YYYY-MM-DD')
|
||||
v.joinWorkTime = moment(v.joinWorkTime).format('YYYY-MM-DD')
|
||||
v.schoolTime = moment(v.schoolTime).format('YYYY-MM-DD')
|
||||
v.titleAsAssessmentTime = moment(v.titleAsAssessmentTime).format('YYYY-MM-DD')
|
||||
})
|
||||
this.hasSelectedUser = resp.data
|
||||
}
|
||||
|
||||
this.viewActHouseTypeList = row.houseTypeList.map(v => {
|
||||
return {
|
||||
prop: v.id,
|
||||
label: v.area + 'm²',
|
||||
area: v.area
|
||||
}
|
||||
})
|
||||
this.viewActHouseTypeList.sort((a, b) => {
|
||||
return a['area'] - b['area']
|
||||
})
|
||||
|
||||
},
|
||||
openEdit(row) {
|
||||
this.formData = row
|
||||
this.$refs.guava.edit()
|
||||
},
|
||||
async doDelete(id) {
|
||||
const confirm = await this.$confirm('确定要删除吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
if ('confirm' !== confirm) return
|
||||
const resp = await $.post('/platform/tempActivity/house/actSetUp/doDelete/' + id)
|
||||
if (resp.code === 0) {
|
||||
this.notifySuccess(resp.msg)
|
||||
this.doSearch()
|
||||
} else {
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
},
|
||||
doExportHasSelUsers() {
|
||||
window.open('/platform/tempActivity/house/tableSelectRowId/' + this.tableSelectRowId)
|
||||
},
|
||||
generateQrCode(id) {
|
||||
this.qrCodeDialog = true
|
||||
this.qrCodeUrl = APP_DOMAIN + '/platform/tempActivity/house/mobileForm?actId=' + id
|
||||
},
|
||||
openViewBuildingFiles(buildingFiles) {
|
||||
const ele = document.createElement("div")
|
||||
buildingFiles.forEach(v => {
|
||||
const image = new Image();
|
||||
image.src = FILE_STREAM_PREVIEW_ADDRESS + '?id=' + v.id
|
||||
image.alt = v.filename
|
||||
ele.appendChild(image);
|
||||
})
|
||||
const viewer = new Viewer(ele, {
|
||||
title: function (img, obj) {
|
||||
return img.getAttribute("alt");
|
||||
}
|
||||
});
|
||||
viewer.show()
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.pageData()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
Reference in New Issue
Block a user