Browse Source

feat: 填写结果导出

old
wangqing 4 years ago
parent
commit
322a5fac20
  1. 20
      src/utils/index.js
  2. 9
      src/views/form/setting.vue
  3. 41
      src/views/form/statistics.vue

20
src/utils/index.js

@ -177,6 +177,11 @@ export function getQueryString(name) {
return context == null || context == '' || context == 'undefined' ? '' : context return context == null || context == '' || context == 'undefined' ? '' : context
} }
/**
* 获取当前域名
* http://www.baidu.com
* @returns {string}
*/
export function getCurrentDomain() { export function getCurrentDomain() {
return window.location.protocol + '//' + window.location.host return window.location.protocol + '//' + window.location.host
} }
@ -270,3 +275,18 @@ export function openUrl(url) {
a.click() a.click()
document.body.removeChild(document.getElementById('tduck-link-temp')) document.body.removeChild(document.getElementById('tduck-link-temp'))
} }
/**
* json对象转url参数
* @param json
* @returns {string|*}
*/
export function jsonToParam(json) {
if (!json) return ''
return Object.keys(json).map(key => {
if (json[key] === undefined)
return ''
return encodeURIComponent(key) +
'=' + encodeURIComponent(json[key])
}).join('&')
}

9
src/views/form/setting.vue

@ -487,7 +487,8 @@
</p> </p>
</div> </div>
<div> <div>
<img :src="userProjectSettingData.shareImg" v-if="userProjectSettingData.shareImg" style="width: 49px;height: 46px;"/> <img :src="userProjectSettingData.shareImg" v-if="userProjectSettingData.shareImg"
class="share-preview-img"/>
</div> </div>
</div> </div>
<div> <div>
@ -823,6 +824,12 @@ export default {
text-align: left; text-align: left;
} }
.share-preview-img {
width: 49px;
height: 46px;
margin-right: 5px;
}
.share-user-avatar { .share-user-avatar {
width: 49px; width: 49px;
height: 49px; height: 49px;

41
src/views/form/statistics.vue

@ -20,6 +20,7 @@
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="queryProjectResult">查询</el-button> <el-button type="primary" @click="queryProjectResult">查询</el-button>
<el-button type="success" @click="exportProjectResult">导出</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
@ -63,15 +64,18 @@
:with-header="false" :with-header="false"
:visible.sync="detailDrawer"> :visible.sync="detailDrawer">
<el-scrollbar style="height:100%"> <el-scrollbar style="height:100%">
<el-card class="box-card" > <el-card class="box-card">
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span>提交详情</span> <span>提交详情</span>
</div> </div>
<div> <div>
<div v-for="item in projectItemList"> <div v-for="item in projectItemList">
<h4>{{ item.label }}</h4> <h4>{{ item.label }}</h4>
<el-tag> {{activeResultRow? <el-tag> {{
activeResultRow['processData'][`field${item.formItemId}`]:'' }}</el-tag> activeResultRow ?
activeResultRow['processData'][`field${item.formItemId}`] : ''
}}
</el-tag>
</div> </div>
</div> </div>
</el-card> </el-card>
@ -123,6 +127,8 @@
<script> <script>
import _ from 'lodash' import _ from 'lodash'
import {jsonToParam} from '@/utils/index'
import {getCheckedColumn, saveCheckedColumn} from '@/utils/db' import {getCheckedColumn, saveCheckedColumn} from '@/utils/db'
const fixedDefaultFormColumn = ['serialNumber', 'submitAddress', 'createTime'] const fixedDefaultFormColumn = ['serialNumber', 'submitAddress', 'createTime']
@ -138,7 +144,7 @@ export default {
this.queryConditions.projectKey = this.projectKey this.queryConditions.projectKey = this.projectKey
this.queryProjectResult() this.queryProjectResult()
this.queryProjectItems() this.queryProjectItems()
this.queryProject()
}, },
data() { data() {
return { return {
@ -153,6 +159,7 @@ export default {
otherCustomColumns: [], otherCustomColumns: [],
projectResultList: [], projectResultList: [],
projectItemList: [], projectItemList: [],
projectData: null,
projectItemColumns: {}, projectItemColumns: {},
total: 0, total: 0,
detailDrawer: false, detailDrawer: false,
@ -175,7 +182,12 @@ export default {
}, },
openDetailDrawerHandle(row) { openDetailDrawerHandle(row) {
this.activeResultRow = row this.activeResultRow = row
this.detailDrawer=true this.detailDrawer = true
},
queryProject() {
this.$api.get(`/user/project/${this.projectKey}`).then(res => {
this.projectData = res.data
})
}, },
queryProjectResult() { queryProjectResult() {
this.$api.get(`/user/project/result/page`, {params: this.queryConditions}).then(res => { this.$api.get(`/user/project/result/page`, {params: this.queryConditions}).then(res => {
@ -209,6 +221,23 @@ export default {
this.checkOtherCustomColumns = otherCustomColumns this.checkOtherCustomColumns = otherCustomColumns
} }
}, },
exportProjectResult() {
this.$api.get('user/project/result/export', {
params: this.queryConditions,
responseType: 'blob'
}).then(res => {
console.log(res)
let blob = res
let downloadElement = document.createElement('a')
let href = window.URL.createObjectURL(blob) //
downloadElement.href = href
downloadElement.download = this.projectData.name + '.xls' //
document.body.appendChild(downloadElement)
downloadElement.click() //
document.body.removeChild(downloadElement) //
window.URL.revokeObjectURL(href) //blob
})
},
queryProjectItems() { queryProjectItems() {
this.$api.get(`/user/project/item/list`, {params: {key: this.projectKey}}).then(res => { this.$api.get(`/user/project/item/list`, {params: {key: this.projectKey}}).then(res => {
if (res.data) { if (res.data) {
@ -274,7 +303,7 @@ export default {
} }
/*2.隐藏滚动条,太丑了*/ /*2.隐藏滚动条,太丑了*/
/deep/ .el-drawer__container ::-webkit-scrollbar{ /deep/ .el-drawer__container ::-webkit-scrollbar {
display: none; display: none;
} }

Loading…
Cancel
Save