Browse Source

恢复统计

old
13176889840 4 years ago
parent
commit
bd05f97801
  1. 1
      src/router/index.js
  2. 6
      src/views/form/editor/RightPanel.vue
  3. 57
      src/views/form/index.vue
  4. 178
      src/views/form/publish/index.vue
  5. 48
      src/views/form/statistics/public.vue

1
src/router/index.js

@ -52,6 +52,7 @@ router.beforeEach((to, from, next) => {
console.log('ro.query', to.query) console.log('ro.query', to.query)
localStorage.setItem('loginSource', 'epmet') localStorage.setItem('loginSource', 'epmet')
localStorage.setItem('customerId', to.query.customerId)
store.dispatch('user/getUserInfo', to.query.token) store.dispatch('user/getUserInfo', to.query.token)
store.dispatch('user/setTokens', to.query.token) store.dispatch('user/setTokens', to.query.token)
next() next()

6
src/views/form/editor/RightPanel.vue

@ -971,6 +971,7 @@ export default {
loading: null, loading: null,
currentTab: "field", currentTab: "field",
currentNode: null, currentNode: null,
currentPID: Number,
dialogVisible: false, dialogVisible: false,
iconsVisible: false, iconsVisible: false,
currentIconModel: null, currentIconModel: null,
@ -1215,6 +1216,7 @@ export default {
}, },
addTreeItem () { addTreeItem () {
++this.idGlobal; ++this.idGlobal;
this.currentPID = 0
this.dialogVisible = true; this.dialogVisible = true;
this.currentNode = this.activeData.options; this.currentNode = this.activeData.options;
}, },
@ -1238,10 +1240,12 @@ export default {
); );
}, },
append (data) { append (data) {
if (!data.children) { if (!data.children) {
this.$set(data, "children", []); this.$set(data, "children", []);
} }
this.dialogVisible = true; this.dialogVisible = true;
this.currentPID = data.id
this.currentNode = data.children; this.currentNode = data.children;
}, },
remove (node, data) { remove (node, data) {
@ -1252,6 +1256,8 @@ export default {
children.splice(index, 1); children.splice(index, 1);
}, },
addNode (data) { addNode (data) {
debugger
data.pid = this.currentPID
this.currentNode.push(data); this.currentNode.push(data);
}, },
setOptionValue (item, val) { setOptionValue (item, val) {

57
src/views/form/index.vue

@ -17,25 +17,23 @@
<div class="left-menu-container"> <div class="left-menu-container">
<el-menu :collapse="isCollapse" <el-menu :collapse="isCollapse"
:default-active="defaultActiveMenu" :default-active="defaultActiveMenu"
class="el-menu-vertical" class="el-menu-vertical">
> <el-menu-item v-for="menuItem in (publishStatus? menuItemList2:menuItemList)"
<el-menu-item v-for="menuItem in menuItemList"
:key="menuItem.key" :key="menuItem.key"
:index="menuItem.route" :index="menuItem.route"
@click="menuSelectHandle(menuItem.route,menuItem.key)" @click="menuSelectHandle(menuItem.route,menuItem.key)">
>
<i :class="menuItem.icon" /> <i :class="menuItem.icon" />
<span slot="title">{{ menuItem.title }}</span> <span slot="title">{{ menuItem.title }}</span>
</el-menu-item> </el-menu-item>
</el-menu> </el-menu>
<i v-if="!isCollapse" <i v-if="!isCollapse"
class="el-icon-d-arrow-left" class="el-icon-d-arrow-left"
@click="collapseHandle" @click="collapseHandle" />
/>
<i v-else <i v-else
class="el-icon-d-arrow-right" class="el-icon-d-arrow-right"
@click="collapseHandle" @click="collapseHandle" />
/>
</div> </div>
<div class="right-content-container"> <div class="right-content-container">
<router-view /> <router-view />
@ -43,11 +41,9 @@
</div> </div>
<el-dialog :visible.sync="previewDialogVisible" <el-dialog :visible.sync="previewDialogVisible"
destroy-on-close destroy-on-close
fullscreen fullscreen>
>
<pre-view :key="previewKey" <pre-view :key="previewKey"
:preview-qrcode="true" :preview-qrcode="true" />
/>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
@ -61,7 +57,7 @@ export default {
components: { PreView }, components: { PreView },
data () { data () {
return { return {
publishStatus: false,
previewKey: +new Date(), previewKey: +new Date(),
previewDialogVisible: false, previewDialogVisible: false,
defaultActiveMenu: '', defaultActiveMenu: '',
@ -117,17 +113,50 @@ export default {
title: '返回', title: '返回',
icon: 'el-icon-edit' icon: 'el-icon-edit'
} }
],
menuItemList2: [
{
key: 'static',
title: '统计',
icon: 'el-icon-data-line',
route: '/project/form/statistics'
},
{
key: 'preview',
title: '预览',
icon: 'el-icon-view'
},
{
key: 'back',
title: '返回',
icon: 'el-icon-edit'
}
] ]
} }
}, },
async created () { async created () {
this.projectKey = this.$route.query.key this.projectKey = this.$route.query.key
this.defaultActiveMenu = this.$route.path this.defaultActiveMenu = this.$route.path
this.isCollapse = this.$store.state.form.isCollapse this.isCollapse = this.$store.state.form.isCollapse
this.getProjectStatus()
}, },
methods: { methods: {
getProjectStatus () {
this.$api.get(`${process.env.VUE_APP_API_ROOT_TDUCK}/user/project/${this.projectKey}`).then(res => {
if (res.data.status == 1) {
this.publishStatus = false
} else {
this.publishStatus = true
}
})
},
menuSelectHandle (route, key) { menuSelectHandle (route, key) {
if (key === 'preview') { if (key === 'preview') {

178
src/views/form/publish/index.vue

@ -4,34 +4,40 @@
<div v-if="!publishStatus" <div v-if="!publishStatus"
class="publish-btn-view"> class="publish-btn-view">
<div> <div>
<el-form label-width="90px"> <el-form label-width="150px">
<el-form-item label="小程序端"> <el-form-item label="小程序端">
<el-radio-group v-model="clientType"> <el-radio-group class="form_item"
<el-radio-button label="resi">居民端</el-radio-button> @change="clientChange"
<el-radio-button label="work">工作端</el-radio-button> v-model="clientType">
<el-radio label="resi">居民端</el-radio>
<el-radio label="gov">工作端</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="发布范围"> <el-form-item label="发布范围">
<el-tree ref="tree" <el-tree class="form_item"
ref="tree"
style="background-color:#f7f7f7" style="background-color:#f7f7f7"
:props="props" :props="props"
:data="data" :data="data"
show-checkbox show-checkbox
:default-expand-all="true" :default-expand-all="true" />
@node-click="nodeClick"
@check="check"
@check-change="handleCheckChange" />
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
<div style="text-align:center"> <div style="text-align:left;margin-left:200px;margin-top:50px">
<el-button class="publish-btn" <el-button class="publish-btn"
size="medium" size="medium"
type="primary" type="primary"
@click="publishProject"> @click="publishProject">
<i class="el-icon-document-checked el-icon--right">开始发布</i> <i class="el-icon-document-checked el-icon--right">开始发布</i>
</el-button> </el-button>
<!-- <el-button class="publish-btn"
size="medium"
type="primary"
@click="resolveAgency">
<i class="el-icon-document-checked el-icon--right">获取组织</i>
</el-button> -->
</div> </div>
</div> </div>
<div v-if="publishStatus" <div v-if="publishStatus"
@ -64,19 +70,19 @@
<div> <div>
<p class="success-title">恭喜您发布成功</p> <p class="success-title">恭喜您发布成功</p>
</div> </div>
<!-- <div> <div>
<p class="link-text"> {{ writeLink }}</p> <p class="link-text"> {{ writeLink }}</p>
</div> --> </div>
<el-row> <el-row>
<!-- <el-col :offset="2" <el-col :offset="2"
:span="6"> :span="6">
<el-button v-clipboard:copy="writeLink" <!-- <el-button v-clipboard:copy="writeLink"
v-clipboard:error="()=>{this.msgError('复制失败')}" v-clipboard:error="()=>{this.msgError('复制失败')}"
v-clipboard:success="()=>{this.msgSuccess('复制成功')}" type="primary" v-clipboard:success="()=>{this.msgSuccess('复制成功')}"
> type="primary">
复制链接 复制链接
</el-button> </el-button> -->
</el-col> --> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-button type="danger" <el-button type="danger"
@click="stopPublishProject"> @click="stopPublishProject">
@ -115,71 +121,112 @@ export default {
clientType: 'resi', clientType: 'resi',
props: { props: {
// label: 'name', label: 'orgName',
// children: 'zones' children: 'subOrgList'
}, },
count: 1, count: 1,
data: [{ data: [{
id: 1, orgId: 1,
label: '一级 1', orgName: '一级 1',
children: [{ subOrgList: [{
id: 4, orgId: 4,
label: '二级 1-1', orgName: '二级 1-1',
children: [{ subOrgList: [{
id: 9, orgId: 9,
label: '三级 1-1-1' orgName: '三级 1-1-1'
}, { }, {
id: 10, orgId: 10,
label: '三级 1-1-2' orgName: '三级 1-1-2'
}] }]
}] }]
}, { }, {
id: 2, orgId: 2,
label: '一级 2', orgName: '一级 2',
children: [{ subOrgList: [{
id: 5, orgId: 5,
label: '二级 2-1' orgName: '二级 2-1'
}, { }, {
id: 6, orgId: 6,
label: '二级 2-2' orgName: '二级 2-2'
}] }]
}, { }, {
id: 3, orgId: 3,
label: '一级 3', orgName: '一级 3',
children: [{ subOrgList: [{
id: 7, orgId: 7,
label: '二级 3-1' orgName: '二级 3-1'
}, { }, {
id: 8, orgId: 8,
label: '二级 3-2' orgName: '二级 3-2'
}]
}] }]
}],
selAgencyList: [],
agencyArrayCopy: []
} }
}, },
mounted () { mounted () {
this.projectKey = this.$route.query.key this.projectKey = this.$route.query.key
let url = window.location.protocol + '//' + window.location.host let url = window.location.protocol + '//' + window.location.host
this.writeLink = `${url}/s/${this.projectKey}` this.writeLink = `${url}/s/${this.projectKey}`
this.getProjectStatus() this.getProjectStatus()
}, },
methods: { methods: {
currentChange (data, node) {
console.log(data, node)
},
check () {
clientChange (label) {
this.clientType = label
this.loadAgencyList()
}, },
handleCheckChange (data, checked, indeterminate) {
data.select = true loadAgencyList () {
console.log(data, checked, indeterminate) const customerId = localStorage.getItem('customerId')
// console.log(''); let params = {
// console.log(this.data) client: this.clientType,
agencyId: customerId
}
this.$api.post(`/data/aggregator/org/agencytree`, params).then((res) => {
debugger
})
}, },
nodeClick (a, b, c) {
console.log(a, b, c) //
resolveAgency () {
let selAll = this.$refs.tree.getCheckedNodes(false, false)
// console.log(selAll)
this.selAgencyList = []
this.agencyArrayCopy = JSON.parse(JSON.stringify(this.data))
selAll.forEach(element => {
// debugger
let orgId = element.orgId
this.resursionTree(this.agencyArrayCopy, orgId)
});
console.log(this.selAgencyList)
}, },
handleNodeClick (data) {
// console.log(data); //
resursionTree (orgArray, orgId) {
for (let i = 0; i < orgArray.length; i++) {
let item = orgArray[i]
// debugger
if (item && item.orgId === orgId) {
// debugger
this.selAgencyList.push(orgArray[i])
orgArray[i] = {}
break
} else if (item.subOrgList && item.subOrgList.length > 0) {
// debugger
this.resursionTree(item.subOrgList, orgId)
}
}
// console.log(this.agencyArrayCopy)
}, },
getProjectStatus () { getProjectStatus () {
@ -188,16 +235,16 @@ export default {
this.publishStatus = true this.publishStatus = true
} else { } else {
this.publishStatus = false this.publishStatus = false
this.loadAgencyList()
} }
}) })
}, },
publishProject () { publishProject () {
const aaa = this.$refs.tree.getCheckedNodes(false, false)
console.log(aaa) this.$api.post(`${process.env.VUE_APP_API_ROOT_TDUCK}/user/project/publish`, { key: this.projectKey }).then(() => {
// this.$api.post(`${process.env.VUE_APP_API_ROOT_TDUCK}/user/project/publish`, { key: this.projectKey }).then(() => { this.publishStatus = true
// this.publishStatus = true this.msgSuccess('发布成功')
// this.msgSuccess('') })
// })
}, },
stopPublishProject () { stopPublishProject () {
this.$api.post(`${process.env.VUE_APP_API_ROOT_TDUCK}/user/project/stop`, { 'key': this.projectKey }).then(res => { this.$api.post(`${process.env.VUE_APP_API_ROOT_TDUCK}/user/project/stop`, { 'key': this.projectKey }).then(res => {
@ -284,4 +331,7 @@ export default {
font-size: 14px; font-size: 14px;
} }
} }
.form_item {
padding-left: 20px;
}
</style> </style>

48
src/views/form/statistics/public.vue

@ -2,36 +2,32 @@
<el-container> <el-container>
<el-header class="el-page-header"> <el-header class="el-page-header">
<h5 v-if="projectData">{{ projectData.name }}</h5> <h5 v-if="projectData">{{ projectData.name }}</h5>
<el-button type="primary" @click="openFormHandle">访问表单</el-button> <el-button type="primary"
@click="openFormHandle">访问表单</el-button>
</el-header> </el-header>
<el-main> <el-main>
<el-table <el-table :data="projectResultList"
:data="projectResultList" class="public-result-table">
class="public-result-table"
>
<el-table-column type="expand"> <el-table-column type="expand">
<template slot-scope="props"> <template slot-scope="props">
<el-form class="public-table-expand" label-position="left"> <el-form class="public-table-expand"
<el-form-item v-for="item in projectItemList" :key="item.id" :label="item.label"> label-position="left">
<result-item :field-item-id="item.formItemId" :project-item-data="item" <el-form-item v-for="item in projectItemList"
:result-data="props.row" :key="item.id"
/> :label="item.label">
<result-item :field-item-id="item.formItemId"
:project-item-data="item"
:result-data="props.row" />
</el-form-item> </el-form-item>
</el-form> </el-form>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column label="提交序号"
label="提交序号" prop="serialNumber" />
prop="serialNumber" <el-table-column label="提交地址"
/> prop="submitAddress" />
<el-table-column <el-table-column label="提交时间"
label="提交地址" prop="createdTime" />
prop="submitAddress"
/>
<el-table-column
label="提交时间"
prop="createdTime"
/>
</el-table> </el-table>
</el-main> </el-main>
</el-container> </el-container>
@ -117,12 +113,12 @@ export default {
this.$router.replace({ path: `/s/${this.projectKey}` }) this.$router.replace({ path: `/s/${this.projectKey}` })
}, },
queryProject () { queryProject () {
this.$api.get(`/user/project/${this.projectKey}`).then(res => { this.$api.get(`${process.env.VUE_APP_API_ROOT_TDUCK}/user/project/${this.projectKey}`).then(res => {
this.projectData = res.data this.projectData = res.data
}) })
}, },
queryProjectResult () { queryProjectResult () {
this.$api.get('/user/project/result/public/page', {params: this.queryConditions}).then(res => { this.$api.get(`${process.env.VUE_APP_API_ROOT_TDUCK}/user/project/result/public/page`, { params: this.queryConditions }).then(res => {
let { records, total, size } = res.data let { records, total, size } = res.data
this.projectResultList = records this.projectResultList = records
this.total = total this.total = total
@ -130,7 +126,7 @@ export default {
}) })
}, },
queryProjectItems () { queryProjectItems () {
this.$api.get('/user/project/item/list', {params: {key: this.projectKey, displayType: true}}).then(res => { this.$api.get(`${process.env.VUE_APP_API_ROOT_TDUCK}/user/project/item/list`, { params: { key: this.projectKey, displayType: true } }).then(res => {
if (res.data) { if (res.data) {
res.data.map(item => { res.data.map(item => {
_.set(this.projectItemColumns, `field${item.formItemId}`, item.label) _.set(this.projectItemColumns, `field${item.formItemId}`, item.label)
@ -143,7 +139,6 @@ export default {
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.el-header { .el-header {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
@ -181,5 +176,4 @@ export default {
width: 50%; width: 50%;
} }
} }
</style> </style>

Loading…
Cancel
Save