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. 35
      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
}
/**
* 获取当前域名
* http://www.baidu.com
* @returns {string}
*/
export function getCurrentDomain() {
return window.location.protocol + '//' + window.location.host
}
@ -270,3 +275,18 @@ export function openUrl(url) {
a.click()
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>
</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>
@ -823,6 +824,12 @@ export default {
text-align: left;
}
.share-preview-img {
width: 49px;
height: 46px;
margin-right: 5px;
}
.share-user-avatar {
width: 49px;
height: 49px;

35
src/views/form/statistics.vue

@ -20,6 +20,7 @@
</el-form-item>
<el-form-item>
<el-button type="primary" @click="queryProjectResult">查询</el-button>
<el-button type="success" @click="exportProjectResult">导出</el-button>
</el-form-item>
</el-form>
</div>
@ -70,8 +71,11 @@
<div>
<div v-for="item in projectItemList">
<h4>{{ item.label }}</h4>
<el-tag> {{activeResultRow?
activeResultRow['processData'][`field${item.formItemId}`]:'' }}</el-tag>
<el-tag> {{
activeResultRow ?
activeResultRow['processData'][`field${item.formItemId}`] : ''
}}
</el-tag>
</div>
</div>
</el-card>
@ -123,6 +127,8 @@
<script>
import _ from 'lodash'
import {jsonToParam} from '@/utils/index'
import {getCheckedColumn, saveCheckedColumn} from '@/utils/db'
const fixedDefaultFormColumn = ['serialNumber', 'submitAddress', 'createTime']
@ -138,7 +144,7 @@ export default {
this.queryConditions.projectKey = this.projectKey
this.queryProjectResult()
this.queryProjectItems()
this.queryProject()
},
data() {
return {
@ -153,6 +159,7 @@ export default {
otherCustomColumns: [],
projectResultList: [],
projectItemList: [],
projectData: null,
projectItemColumns: {},
total: 0,
detailDrawer: false,
@ -177,6 +184,11 @@ export default {
this.activeResultRow = row
this.detailDrawer = true
},
queryProject() {
this.$api.get(`/user/project/${this.projectKey}`).then(res => {
this.projectData = res.data
})
},
queryProjectResult() {
this.$api.get(`/user/project/result/page`, {params: this.queryConditions}).then(res => {
let {records, total, size} = res.data
@ -209,6 +221,23 @@ export default {
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() {
this.$api.get(`/user/project/item/list`, {params: {key: this.projectKey}}).then(res => {
if (res.data) {

Loading…
Cancel
Save