Merge remote-tracking branch 'origin/build' into build
This commit is contained in:
@@ -9,7 +9,6 @@
|
|||||||
<script>
|
<script>
|
||||||
import Add from './components/Add'
|
import Add from './components/Add'
|
||||||
import List from './components/List'
|
import List from './components/List'
|
||||||
import Detail from './components/Detail'
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'AppScoringTemplate',
|
name: 'AppScoringTemplate',
|
||||||
@@ -29,18 +28,12 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
components: {
|
components: {
|
||||||
Detail,
|
|
||||||
List,
|
List,
|
||||||
Add
|
Add
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
onChange (data) {
|
onChange (data) {
|
||||||
if (data.type === 'Detail') {
|
|
||||||
this.component = 'Detail'
|
|
||||||
this.params = data.params
|
|
||||||
}
|
|
||||||
|
|
||||||
if (data.type === 'Add') {
|
if (data.type === 'Add') {
|
||||||
this.component = 'Add'
|
this.component = 'Add'
|
||||||
this.params = data.params
|
this.params = data.params
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<ai-detail class="form-add">
|
<ai-detail class="form-add">
|
||||||
<ai-title :title="pageTitle" slot="title" isShowBack @onBackClick="cancel(false)">
|
<ai-title title="问卷表单" slot="title" isShowBack @onBackClick="cancel(false)">
|
||||||
<template #rightBtn>
|
<template #rightBtn>
|
||||||
<el-button type="primary" icon="iconfont iconRepulsebeifen" @click="toPublish">保存模板</el-button>
|
<el-button type="primary" icon="iconfont iconRepulsebeifen" @click="toPublish">保存模板</el-button>
|
||||||
</template>
|
</template>
|
||||||
@@ -70,6 +70,7 @@
|
|||||||
<span>{{ i + 1 }}. </span>
|
<span>{{ i + 1 }}. </span>
|
||||||
<h2>{{ item.label }}</h2>
|
<h2>{{ item.label }}</h2>
|
||||||
</div>
|
</div>
|
||||||
|
<p>{{ item.describe }}</p>
|
||||||
<div class="left-item__item--wrapper">
|
<div class="left-item__item--wrapper">
|
||||||
<template v-if="(item.type === 'radio')" >
|
<template v-if="(item.type === 'radio')" >
|
||||||
<div class="radio-item" v-for="(field, index) in item.options" :key="index" >
|
<div class="radio-item" v-for="(field, index) in item.options" :key="index" >
|
||||||
@@ -199,6 +200,14 @@
|
|||||||
<el-input placeholder="标题名称" :maxlength="200" show-word-limit v-model="currTarget.label"></el-input>
|
<el-input placeholder="标题名称" :maxlength="200" show-word-limit v-model="currTarget.label"></el-input>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="right-item" v-if="activeIndex > -1">
|
||||||
|
<div class="right-item__title no-solid">
|
||||||
|
<h2>说明文字</h2>
|
||||||
|
</div>
|
||||||
|
<div class="right-item__content">
|
||||||
|
<el-input placeholder="说明文字" :maxlength="200" show-word-limit v-model="currTarget.describe"></el-input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="right-item right-item__select" v-if="currTarget.type === 'radio' || currTarget.type === 'select' || currTarget.type === 'checkbox'">
|
<div class="right-item right-item__select" v-if="currTarget.type === 'radio' || currTarget.type === 'select' || currTarget.type === 'checkbox'">
|
||||||
<div class="right-item__title no-solid">
|
<div class="right-item__title no-solid">
|
||||||
<h2>选项设置</h2>
|
<h2>选项设置</h2>
|
||||||
@@ -347,70 +356,6 @@
|
|||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</el-scrollbar>
|
</el-scrollbar>
|
||||||
<ai-dialog
|
|
||||||
:visible.sync="isShowAdd"
|
|
||||||
width="800px"
|
|
||||||
customFooter
|
|
||||||
title="发布">
|
|
||||||
<el-form label-position="top" class="publish" ref="form" label-width="120px" :model="form">
|
|
||||||
<div class="form-item__wrapper">
|
|
||||||
<div class="form-title">
|
|
||||||
<h2>基本信息</h2>
|
|
||||||
</div>
|
|
||||||
<div class="form-field">
|
|
||||||
<i>*</i>
|
|
||||||
<h2>截止时间</h2>
|
|
||||||
<span>(表单截止后,用户打开表单会提示此表单已结束)</span>
|
|
||||||
</div>
|
|
||||||
<div class="form-item__container">
|
|
||||||
<el-radio-group v-model="form.periodValidityType">
|
|
||||||
<el-radio label="0">永久有效</el-radio>
|
|
||||||
<el-radio label="1">自定义时间</el-radio>
|
|
||||||
</el-radio-group>
|
|
||||||
</div>
|
|
||||||
<div class="form-item__container" v-if="form.periodValidityType === '1'">
|
|
||||||
<el-date-picker
|
|
||||||
v-model="form.periodValidityEndTime"
|
|
||||||
value-format="yyyy-MM-dd HH:mm:ss"
|
|
||||||
type="datetime"
|
|
||||||
size="small"
|
|
||||||
:picker-options="pickerOptions"
|
|
||||||
placeholder="截止时间">
|
|
||||||
</el-date-picker>
|
|
||||||
</div>
|
|
||||||
<div class="form-field">
|
|
||||||
<i>*</i>
|
|
||||||
<h2>匹配客户方式</h2>
|
|
||||||
<span>(将参与活动的微信客户和企业微信客户匹配)</span>
|
|
||||||
</div>
|
|
||||||
<div class="form-item__container">
|
|
||||||
<el-radio-group v-model="form.wechatId">
|
|
||||||
<el-radio label="0">客户微信ID匹配</el-radio>
|
|
||||||
</el-radio-group>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-item__wrapper">
|
|
||||||
<div class="form-title">
|
|
||||||
<h2>提交次数限制</h2>
|
|
||||||
<span>此功能发布后不可修改</span>
|
|
||||||
</div>
|
|
||||||
<div class="form-field">
|
|
||||||
<i>*</i>
|
|
||||||
<h2>提交次数</h2>
|
|
||||||
</div>
|
|
||||||
<div class="form-item__container">
|
|
||||||
<el-radio-group v-model="form.commitType">
|
|
||||||
<el-radio label="0">不限次数</el-radio>
|
|
||||||
<el-radio label="1">限提交一次</el-radio>
|
|
||||||
</el-radio-group>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</el-form>
|
|
||||||
<template #footer>
|
|
||||||
<el-button @click="isShowAdd = false">返回</el-button>
|
|
||||||
<el-button type="primary" @click="onConfirm(1)">完成并发布</el-button>
|
|
||||||
</template>
|
|
||||||
</ai-dialog>
|
|
||||||
</template>
|
</template>
|
||||||
</ai-detail>
|
</ai-detail>
|
||||||
</template>
|
</template>
|
||||||
@@ -436,7 +381,6 @@
|
|||||||
|
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
isShowAdd: false,
|
|
||||||
components: components,
|
components: components,
|
||||||
targetList: [],
|
targetList: [],
|
||||||
form: {
|
form: {
|
||||||
@@ -446,12 +390,6 @@
|
|||||||
isShowTableExplain: true,
|
isShowTableExplain: true,
|
||||||
isShowBtn: true,
|
isShowBtn: true,
|
||||||
headPicture: [],
|
headPicture: [],
|
||||||
commitType: '1',
|
|
||||||
periodValidityType: '0',
|
|
||||||
actionNotice: '1',
|
|
||||||
dynamicNotice: '1',
|
|
||||||
periodValidityEndTime: '',
|
|
||||||
shareStatus: '0',
|
|
||||||
count: 0,
|
count: 0,
|
||||||
wechatId: '0',
|
wechatId: '0',
|
||||||
type: 0,
|
type: 0,
|
||||||
@@ -479,37 +417,6 @@
|
|||||||
return {}
|
return {}
|
||||||
},
|
},
|
||||||
|
|
||||||
pageTitle () {
|
|
||||||
let typeName = '新增'
|
|
||||||
let itemName = '问卷调查'
|
|
||||||
|
|
||||||
if (this.params.id) {
|
|
||||||
typeName = '编辑'
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.params.type == 0) {
|
|
||||||
itemName = '问卷调查'
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.params.type == 1) {
|
|
||||||
itemName = '考试测评'
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.params.type == 2) {
|
|
||||||
itemName = '报名登记'
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.params.type == 3) {
|
|
||||||
itemName = '满意调查'
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.params.type == 4) {
|
|
||||||
itemName = '投票评选'
|
|
||||||
}
|
|
||||||
|
|
||||||
return `${typeName}${itemName}`
|
|
||||||
},
|
|
||||||
|
|
||||||
currComponentTitle () {
|
currComponentTitle () {
|
||||||
if (this.activeIndex >= 0) {
|
if (this.activeIndex >= 0) {
|
||||||
return this.targetList[this.activeIndex].fixedLabel + '设置'
|
return this.targetList[this.activeIndex].fixedLabel + '设置'
|
||||||
@@ -545,54 +452,9 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
init () {
|
init () {
|
||||||
if (this.params.type == 0) {
|
|
||||||
this.form.headPicture = [{
|
this.form.headPicture = [{
|
||||||
url: 'https://cdn.cunwuyun.cn/dvcp/h5/form/interview.png'
|
url: 'https://cdn.cunwuyun.cn/dvcp/h5/form/interview.png'
|
||||||
}]
|
}]
|
||||||
}
|
|
||||||
if (this.params.type == 1) {
|
|
||||||
this.form.title = '考试测评'
|
|
||||||
this.form.headPicture = [{
|
|
||||||
url: 'https://cdn.cunwuyun.cn/dvcp/h5/form/exam.png'
|
|
||||||
}]
|
|
||||||
}
|
|
||||||
if (this.params.type == 2) {
|
|
||||||
this.form.title = '报名登记'
|
|
||||||
this.form.headPicture = [{
|
|
||||||
url: 'https://cdn.cunwuyun.cn/dvcp/h5/form/apply.png'
|
|
||||||
}]
|
|
||||||
}
|
|
||||||
if (this.params.type == 3) {
|
|
||||||
this.form.title = '满意调查'
|
|
||||||
this.form.headPicture = [{
|
|
||||||
url: 'https://cdn.cunwuyun.cn/dvcp/h5/form/satisfaction.png'
|
|
||||||
}]
|
|
||||||
}
|
|
||||||
if (this.params.type == 4) {
|
|
||||||
this.form.title = '投票评选'
|
|
||||||
this.form.headPicture = [{
|
|
||||||
url: 'https://cdn.cunwuyun.cn/dvcp/h5/form/vote.png'
|
|
||||||
}]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
downloadImg (url) {
|
|
||||||
let image = new Image()
|
|
||||||
image.setAttribute('crossOrigin', 'anonymous')
|
|
||||||
image.onload = function() {
|
|
||||||
let canvas = document.createElement('canvas')
|
|
||||||
canvas.width = image.width
|
|
||||||
canvas.height = image.height
|
|
||||||
let context = canvas.getContext('2d')
|
|
||||||
context.drawImage(image, 0, 0, image.width, image.height)
|
|
||||||
let url = canvas.toDataURL("image/png")
|
|
||||||
let a = document.createElement("a")
|
|
||||||
let event = new MouseEvent("click")
|
|
||||||
a.download = name || 'photo'
|
|
||||||
a.href = url
|
|
||||||
a.dispatchEvent(event)
|
|
||||||
}
|
|
||||||
image.src = url
|
|
||||||
},
|
},
|
||||||
|
|
||||||
onKeyup (e) {
|
onKeyup (e) {
|
||||||
@@ -600,7 +462,6 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
onSelcetKeyup (e, index) {
|
onSelcetKeyup (e, index) {
|
||||||
console.log(e, index)
|
|
||||||
this.$set(this.currTarget.options[index], 'point', e.replace(/[^\d]/g, ''))
|
this.$set(this.currTarget.options[index], 'point', e.replace(/[^\d]/g, ''))
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -638,9 +499,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (this.params.templateType != 1) {
|
|
||||||
this.isShowAdd = true
|
|
||||||
} else {
|
|
||||||
const fields = this.targetList.map(item => {
|
const fields = this.targetList.map(item => {
|
||||||
return {
|
return {
|
||||||
fieldType: item.type,
|
fieldType: item.type,
|
||||||
@@ -649,25 +508,21 @@
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
this.instance.post(`/app/appquestionnairetemplate/addOrUpdate`, {
|
this.instance.post(`/app/appassessmentscoretemplate/addOrUpdate`, {
|
||||||
...this.form,
|
...this.form,
|
||||||
fields,
|
fields,
|
||||||
status: 0,
|
|
||||||
areaId: this.params.templateType == 0 ? this.areaId : '',
|
|
||||||
id: this.params.id,
|
id: this.params.id,
|
||||||
headPicture: this.form.headPicture.length ? this.form.headPicture[0].url : '',
|
status: 1,
|
||||||
type: this.params.type,
|
headPicture: this.form.headPicture.length ? this.form.headPicture[0].url : ''
|
||||||
templateType: this.params.templateType
|
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
if (res.code == 0) {
|
if (res.code == 0) {
|
||||||
this.$message.success('提交成功')
|
this.$message.success('提交成功')
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
this.cancel()
|
this.cancel(true)
|
||||||
}, 600)
|
}, 600)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
bindEvent (e) {
|
bindEvent (e) {
|
||||||
@@ -686,7 +541,7 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
getInfo (id) {
|
getInfo (id) {
|
||||||
this.instance.post(`/app/appquestionnairetemplate/queryDetailById?id=${id}`).then(res => {
|
this.instance.post(`/app/appassessmentscoretemplate/queryDetailById?id=${id}`).then(res => {
|
||||||
if (res.code == 0) {
|
if (res.code == 0) {
|
||||||
this.form = {
|
this.form = {
|
||||||
...res.data,
|
...res.data,
|
||||||
@@ -705,59 +560,6 @@
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
onConfirm (status) {
|
|
||||||
if (this.params.templateType == 1) {
|
|
||||||
// this.submitTemp()
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.form.periodValidityType === '1') {
|
|
||||||
if (!this.form.periodValidityEndTime) {
|
|
||||||
return this.$message.error('请选择截止时间')
|
|
||||||
}
|
|
||||||
|
|
||||||
if (new Date(this.form.periodValidityEndTime).getTime() < Date.now()) {
|
|
||||||
return this.$message.error('截止时间不能晚于当前时间')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const fields = this.targetList.map(item => {
|
|
||||||
return {
|
|
||||||
fieldType: item.type,
|
|
||||||
fieldName: item.label,
|
|
||||||
fieldInfo: JSON.stringify(item)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
this.instance.post(`/app/appquestionnairetemplate/addOrUpdate`, {
|
|
||||||
...this.form,
|
|
||||||
fields,
|
|
||||||
areaId: this.areaId,
|
|
||||||
status: status,
|
|
||||||
id: this.params.isQuote ? '' : this.params.id,
|
|
||||||
headPicture: this.form.headPicture.length ? this.form.headPicture[0].url : '',
|
|
||||||
type: this.params.type,
|
|
||||||
templateType: this.params.templateType,
|
|
||||||
periodValidityEndTime: this.form.periodValidityType === '1' ? this.form.periodValidityEndTime : ''
|
|
||||||
}).then(res => {
|
|
||||||
if (res.code == 0) {
|
|
||||||
if (this.params.isQuote) {
|
|
||||||
this.instance.post(`/app/appquestionnairetemplate/quoteCount?id=${this.params.id}`)
|
|
||||||
}
|
|
||||||
this.$message.success('提交成功')
|
|
||||||
|
|
||||||
if (status === 0) {
|
|
||||||
return this.cancel()
|
|
||||||
}
|
|
||||||
|
|
||||||
this.successInfo = res.data
|
|
||||||
|
|
||||||
this.$nextTick(() => {
|
|
||||||
this.cancel(true)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
cancel (isRefresh) {
|
cancel (isRefresh) {
|
||||||
this.$emit('change', {
|
this.$emit('change', {
|
||||||
type: 'List',
|
type: 'List',
|
||||||
@@ -943,6 +745,12 @@
|
|||||||
content: ' ';
|
content: ' ';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
& > p {
|
||||||
|
margin: 0 0 12px 12px;
|
||||||
|
color: #888;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
.left-item__item--remove {
|
.left-item__item--remove {
|
||||||
display: flex;
|
display: flex;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
|
|||||||
@@ -1,188 +0,0 @@
|
|||||||
<template>
|
|
||||||
<ai-detail isHasSidebar v-loading="isLoading">
|
|
||||||
<template slot="title">
|
|
||||||
<ai-title title="返乡报备详情" isShowBack isShowBottomBorder @onBackClick="cancel(false)">
|
|
||||||
</ai-title>
|
|
||||||
</template>
|
|
||||||
<template slot="content">
|
|
||||||
<AiSidebar :tabTitle="tabList" v-model="currIndex"></AiSidebar>
|
|
||||||
<div v-show="currIndex === 0">
|
|
||||||
<ai-card title="基本信息" v-show="currIndex === 0">
|
|
||||||
<template #content>
|
|
||||||
<ai-wrapper
|
|
||||||
label-width="120px">
|
|
||||||
<ai-info-item label="姓名" :value="info.name"></ai-info-item>
|
|
||||||
<ai-info-item label="填报时间" :value="info.createTime"></ai-info-item>
|
|
||||||
<ai-info-item label="身份证号" :value="info.idNumber"></ai-info-item>
|
|
||||||
<ai-info-item label="手机号码" :value="info.phone"></ai-info-item>
|
|
||||||
<ai-info-item label="人员类别" :value="dict.getLabel('EP_registerPersonType', info.type)"></ai-info-item>
|
|
||||||
<ai-info-item label="是否从事高危行业" :value="dict.getLabel('EP_highRiskIndustries', info.highRiskIndustries)"></ai-info-item>
|
|
||||||
</ai-wrapper>
|
|
||||||
</template>
|
|
||||||
</ai-card>
|
|
||||||
<ai-card title="行程信息">
|
|
||||||
<template #content>
|
|
||||||
<ai-wrapper
|
|
||||||
label-width="120px">
|
|
||||||
<ai-info-item label="出发时间" :value="info.startTime"></ai-info-item>
|
|
||||||
<ai-info-item label="出发地" >
|
|
||||||
<span :style="{color: info.denger == 1 ? '#FF4466' : '#333'}">{{info.startAreaName}} </span>
|
|
||||||
</ai-info-item>
|
|
||||||
<ai-info-item label="出发地详址" isLine :value="info.startAddress"></ai-info-item>
|
|
||||||
<ai-info-item label="出行方式" :value="info.travelTypeNames"></ai-info-item>
|
|
||||||
<ai-info-item label="车次/航班" isLine :value="info.trainNo"></ai-info-item>
|
|
||||||
<ai-info-item label="行程描述" :value="info.description"></ai-info-item>
|
|
||||||
<ai-info-item label="抵平卡口" :value="info.gatewayName"></ai-info-item>
|
|
||||||
<ai-info-item label="抵平时间" :value="info.arriveTime"></ai-info-item>
|
|
||||||
<ai-info-item label="目的地" :value="info.arriveAreaName"></ai-info-item>
|
|
||||||
<ai-info-item label="目的地详址" isLine :value="info.arriveAddress"></ai-info-item>
|
|
||||||
</ai-wrapper>
|
|
||||||
</template>
|
|
||||||
</ai-card>
|
|
||||||
<ai-card title="健康状况">
|
|
||||||
<template #content>
|
|
||||||
<ai-wrapper
|
|
||||||
label-width="120px">
|
|
||||||
<ai-info-item label="是否有风险旅居史" v-if="info.fromHighRiskArea === '1'">
|
|
||||||
<span style="color: red">{{ info.highRiskAreaName }}</span>
|
|
||||||
</ai-info-item>
|
|
||||||
<ai-info-item label="是否有风险旅居史" v-else value="否"></ai-info-item>
|
|
||||||
<ai-info-item label="7天内是否接触新冠确诊或疑似患者">
|
|
||||||
<span :style="{color: info.contactPatients === '1' ? 'red' : ''}">{{ dict.getLabel('yesOrNo', info.contactPatients) }}</span>
|
|
||||||
</ai-info-item>
|
|
||||||
<ai-info-item label="当前健康状况" v-if="info.abnormalHealth === '1'">
|
|
||||||
<span style="color: red">{{ dict.getLabel('EP_abnormalType', info.abnormalType) }}</span>
|
|
||||||
</ai-info-item>
|
|
||||||
<ai-info-item label="当前健康状况" v-else value="否"></ai-info-item>
|
|
||||||
</ai-wrapper>
|
|
||||||
</template>
|
|
||||||
</ai-card>
|
|
||||||
</div>
|
|
||||||
<div v-show="currIndex === 1">
|
|
||||||
<ai-card title="风险处置">
|
|
||||||
<template #right>
|
|
||||||
<el-button type="primary" v-if="info.status === '0'" @click="release">解除异常</el-button>
|
|
||||||
</template>
|
|
||||||
<template #content>
|
|
||||||
<ai-wrapper
|
|
||||||
label-width="120px">
|
|
||||||
<ai-info-item label="姓名" :value="info.name"></ai-info-item>
|
|
||||||
<ai-info-item label="填报时间" :value="info.createTime"></ai-info-item>
|
|
||||||
<ai-info-item label="身份证号" :value="info.idNumber"></ai-info-item>
|
|
||||||
<ai-info-item label="手机号码" :value="info.phone"></ai-info-item>
|
|
||||||
<ai-info-item label="人员类别" :value="dict.getLabel('EP_registerPersonType', info.type)"></ai-info-item>
|
|
||||||
<ai-info-item label="是否从事高危行业" :value="dict.getLabel('EP_highRiskIndustries', info.highRiskIndustries)"></ai-info-item>
|
|
||||||
</ai-wrapper>
|
|
||||||
</template>
|
|
||||||
</ai-card>
|
|
||||||
<ai-card title="风险处理意见">
|
|
||||||
<template #content>
|
|
||||||
<ai-table
|
|
||||||
:isShowPagination="false"
|
|
||||||
tableSize="small"
|
|
||||||
border
|
|
||||||
:tableData="info.riskDisposalList"
|
|
||||||
:col-configs="colConfigs"
|
|
||||||
@getList="() => {}">
|
|
||||||
</ai-table>
|
|
||||||
</template>
|
|
||||||
</ai-card>
|
|
||||||
<ai-card title="社区初排" v-if="info.cmAdvanceDisposal">
|
|
||||||
<template #content>
|
|
||||||
<ai-wrapper
|
|
||||||
style="margin-bottom: 20px;"
|
|
||||||
label-width="120px">
|
|
||||||
<ai-info-item label="处置意见" :value="dict.getLabel('EP_communityHandleType', info.cmAdvanceDisposal.communityHandleType)"></ai-info-item>
|
|
||||||
<ai-info-item v-if="info.cmAdvanceDisposal.communityHandleType === '1'" label="居家状态" :value="dict.getLabel('EP_homeStatus2', info.cmAdvanceDisposal.homeStatus)"></ai-info-item>
|
|
||||||
<ai-info-item v-if="info.cmAdvanceDisposal.communityHandleType === '1'" label="隔离时间" :value="info.cmAdvanceDisposal.quarantineBeginTime + ' - ' + info.cmAdvanceDisposal.quarantineEndTime"></ai-info-item>
|
|
||||||
<ai-info-item v-if="info.cmAdvanceDisposal.communityHandleType === '1'" label="隔离策略" :value="dict.getLabel('EP_quarantineStrategy', info.cmAdvanceDisposal.quarantineStrategy)"></ai-info-item>
|
|
||||||
<ai-info-item v-if="info.cmAdvanceDisposal.communityHandleType === '1'" label="管控方式" :value="dict.getLabel('EP_controlMethod', info.cmAdvanceDisposal.controlMethod)"></ai-info-item>
|
|
||||||
<ai-info-item v-if="info.cmAdvanceDisposal.communityHandleType === '1'" label="图片" isLine>
|
|
||||||
<ai-uploader
|
|
||||||
:instance="instance"
|
|
||||||
:value="info.cmAdvanceDisposal.fileList"
|
|
||||||
disabled
|
|
||||||
:limit="9">
|
|
||||||
</ai-uploader>
|
|
||||||
</ai-info-item>
|
|
||||||
<ai-info-item v-if="info.cmAdvanceDisposal.communityHandleType === '2'" label="风险解除证明文件" isLine>
|
|
||||||
<ai-uploader
|
|
||||||
:instance="instance"
|
|
||||||
:value="info.cmAdvanceDisposal.proveFileList"
|
|
||||||
disabled
|
|
||||||
:limit="9">
|
|
||||||
</ai-uploader>
|
|
||||||
</ai-info-item>
|
|
||||||
</ai-wrapper>
|
|
||||||
<ai-empty style="margin-bottom: 60px;" v-if="!info.cmAdvanceDisposal"></ai-empty>
|
|
||||||
</template>
|
|
||||||
</ai-card>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</ai-detail>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
name: 'Detail',
|
|
||||||
|
|
||||||
props: {
|
|
||||||
instance: Function,
|
|
||||||
dict: Object,
|
|
||||||
params: Object
|
|
||||||
},
|
|
||||||
|
|
||||||
data () {
|
|
||||||
return {
|
|
||||||
info: {},
|
|
||||||
isShow: false,
|
|
||||||
currIndex: 0,
|
|
||||||
isLoading: false,
|
|
||||||
tableData: [],
|
|
||||||
colConfigs: [
|
|
||||||
{prop: 'remarks', label: '异常记录', align: 'center' },
|
|
||||||
{prop: 'createTime', label: '创建时间', align: 'center'},
|
|
||||||
{prop: 'createUserName', label: '记录人', align: 'center' }
|
|
||||||
],
|
|
||||||
tabList: ['基本信息', '风险处置']
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
created () {
|
|
||||||
this.isLoading = true
|
|
||||||
if (this.params && this.params.id) {
|
|
||||||
this.id = this.params.id
|
|
||||||
this.$dict.load(['EP_registerPersonType', 'EP_communityHandleType', 'EP_highRiskIndustries', 'EP_travelType', 'yesOrNo', 'EP_homeStatus2', 'EP_quarantineStrategy', 'EP_controlMethod', 'EP_abnormalType']).then(() => {
|
|
||||||
this.getInfo(this.params.id)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
methods: {
|
|
||||||
getInfo (id) {
|
|
||||||
this.instance.post(`/app/appepidemicpreventionregisterinfo/queryDetailById?id=${id}`).then(res => {
|
|
||||||
if (res.code === 0) {
|
|
||||||
this.info = res.data
|
|
||||||
this.info.travelTypeNames = res.data.travelType.split(',').map(v => {
|
|
||||||
return this.dict.getLabel('EP_travelType', v)
|
|
||||||
}).join(',')
|
|
||||||
}
|
|
||||||
|
|
||||||
this.isLoading = false
|
|
||||||
}).catch(() => {
|
|
||||||
this.isLoading = false
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
cancel () {
|
|
||||||
this.$emit('change', {
|
|
||||||
type: 'List',
|
|
||||||
isRefresh: true
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
</style>
|
|
||||||
@@ -5,16 +5,16 @@
|
|||||||
<div class="content">
|
<div class="content">
|
||||||
<ai-search-bar bottomBorder>
|
<ai-search-bar bottomBorder>
|
||||||
<template #left>
|
<template #left>
|
||||||
<el-button type="primary" @click="toAdd">新建模板</el-button>
|
<el-button type="primary" @click="toAdd('')">新建模板</el-button>
|
||||||
</template>
|
</template>
|
||||||
<template #right>
|
<template #right>
|
||||||
<el-input
|
<el-input
|
||||||
v-model="search.name"
|
v-model="search.title"
|
||||||
size="small"
|
size="small"
|
||||||
placeholder="请输入姓名、手机号"
|
placeholder="请输入姓名、手机号"
|
||||||
clearable
|
clearable
|
||||||
v-throttle="() => {search.current = 1, getList()}"
|
v-throttle="() => {search.current = 1, getList()}"
|
||||||
@clear="search.current = 1, search.name = '', getList()"
|
@clear="search.current = 1, search.title = '', getList()"
|
||||||
suffix-icon="iconfont iconSearch">
|
suffix-icon="iconfont iconSearch">
|
||||||
</el-input>
|
</el-input>
|
||||||
</template>
|
</template>
|
||||||
@@ -31,7 +31,8 @@
|
|||||||
<el-table-column slot="options" width="140px" fixed="right" label="操作" align="center">
|
<el-table-column slot="options" width="140px" fixed="right" label="操作" align="center">
|
||||||
<template slot-scope="{ row }">
|
<template slot-scope="{ row }">
|
||||||
<div class="table-options">
|
<div class="table-options">
|
||||||
<el-button type="text" @click="toDetail(row.id)">详情</el-button>
|
<el-button type="text" @click="toAdd(row.id)">编辑</el-button>
|
||||||
|
<el-button type="text" @click="changeStatus(row.id, row.status)">{{ row.status === '0' ? '启用' : '停用' }}</el-button>
|
||||||
<el-button type="text" @click="remove(row.id)">删除</el-button>
|
<el-button type="text" @click="remove(row.id)">删除</el-button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -56,12 +57,12 @@
|
|||||||
search: {
|
search: {
|
||||||
current: 1,
|
current: 1,
|
||||||
size: 10,
|
size: 10,
|
||||||
name: ''
|
title: ''
|
||||||
},
|
},
|
||||||
colConfigs: [
|
colConfigs: [
|
||||||
{ prop: 'name', label: '模板名称' },
|
{ prop: 'title', label: '模板名称' },
|
||||||
{ prop: 'phone', align: 'center', label: '创建人' },
|
{ prop: 'createUserName', align: 'center', label: '创建人' },
|
||||||
{ prop: 'startTime', align: 'center', label: '更新时间' }
|
{ prop: 'createTime', align: 'center', label: '更新时间' }
|
||||||
],
|
],
|
||||||
ids: [],
|
ids: [],
|
||||||
tableData: [],
|
tableData: [],
|
||||||
@@ -80,7 +81,7 @@
|
|||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
getList () {
|
getList () {
|
||||||
this.instance.post(`/app/appepidemicpreventionregisterinfo/list`, null, {
|
this.instance.post(`/app/appassessmentscoretemplate/list`, null, {
|
||||||
params: {
|
params: {
|
||||||
...this.search
|
...this.search
|
||||||
}
|
}
|
||||||
@@ -115,9 +116,20 @@
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
changeStatus (id, status) {
|
||||||
|
this.$confirm(`确定${status === '0' ? '启用' : '停用'}该数据?`).then(() => {
|
||||||
|
this.instance.post(`/app/appassessmentscoretemplate/stopRelease?id=${id}`).then(res => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
this.$message.success(`${status === '0' ? '启用' : '停用'}成功!`)
|
||||||
|
this.getList()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
remove(id) {
|
remove(id) {
|
||||||
this.$confirm('确定删除该数据?').then(() => {
|
this.$confirm('确定删除该数据?').then(() => {
|
||||||
this.instance.post(`/app/appepidemicpreventionregisterinfo/delete?id=${id}`).then(res => {
|
this.instance.post(`/app/appassessmentscoretemplate/delete?id=${id}`).then(res => {
|
||||||
if (res.code == 0) {
|
if (res.code == 0) {
|
||||||
this.$message.success('删除成功!')
|
this.$message.success('删除成功!')
|
||||||
this.getList()
|
this.getList()
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ export const components = [
|
|||||||
fixedLabel: '单选',
|
fixedLabel: '单选',
|
||||||
value: '',
|
value: '',
|
||||||
points: '',
|
points: '',
|
||||||
|
describe: '',
|
||||||
icon: 'iconradio',
|
icon: 'iconradio',
|
||||||
isShowPoints: false,
|
isShowPoints: false,
|
||||||
required: true,
|
required: true,
|
||||||
@@ -46,6 +47,7 @@ export const components = [
|
|||||||
type: 'checkbox',
|
type: 'checkbox',
|
||||||
label: '多选',
|
label: '多选',
|
||||||
fixedLabel: '多选',
|
fixedLabel: '多选',
|
||||||
|
describe: '',
|
||||||
points: '',
|
points: '',
|
||||||
icon: 'iconcheck_box',
|
icon: 'iconcheck_box',
|
||||||
isShowPoints: false,
|
isShowPoints: false,
|
||||||
@@ -90,6 +92,7 @@ export const components = [
|
|||||||
fixedLabel: '单下拉框',
|
fixedLabel: '单下拉框',
|
||||||
value: '',
|
value: '',
|
||||||
points: '',
|
points: '',
|
||||||
|
describe: '',
|
||||||
icon: 'iconSelect',
|
icon: 'iconSelect',
|
||||||
isShowPoints: false,
|
isShowPoints: false,
|
||||||
required: true,
|
required: true,
|
||||||
@@ -132,6 +135,7 @@ export const components = [
|
|||||||
{
|
{
|
||||||
type: 'input',
|
type: 'input',
|
||||||
label: '单行填空',
|
label: '单行填空',
|
||||||
|
describe: '',
|
||||||
fixedLabel: '单行填空',
|
fixedLabel: '单行填空',
|
||||||
value: '',
|
value: '',
|
||||||
pointType: '0',
|
pointType: '0',
|
||||||
@@ -146,6 +150,7 @@ export const components = [
|
|||||||
{
|
{
|
||||||
type: 'textarea',
|
type: 'textarea',
|
||||||
label: '多行填空',
|
label: '多行填空',
|
||||||
|
describe: '',
|
||||||
fixedLabel: '多行填空',
|
fixedLabel: '多行填空',
|
||||||
pointType: '0',
|
pointType: '0',
|
||||||
icon: 'icontext_area',
|
icon: 'icontext_area',
|
||||||
@@ -168,6 +173,7 @@ export const components = [
|
|||||||
type: 'upload',
|
type: 'upload',
|
||||||
label: '上传图片',
|
label: '上传图片',
|
||||||
fixedLabel: '上传图片',
|
fixedLabel: '上传图片',
|
||||||
|
describe: '',
|
||||||
value: '',
|
value: '',
|
||||||
icon: 'iconpic',
|
icon: 'iconpic',
|
||||||
isShowPoints: false,
|
isShowPoints: false,
|
||||||
|
|||||||
@@ -58,7 +58,7 @@
|
|||||||
</ai-table>
|
</ai-table>
|
||||||
</template>
|
</template>
|
||||||
</ai-card>
|
</ai-card>
|
||||||
<ai-dialog :visible.sync="showDialog" title="查看活动日志" @closed="showDialog=false">
|
<ai-dialog customFooter :visible.sync="showDialog" title="查看活动日志" @closed="showDialog=false">
|
||||||
<ai-wrapper label-width="120px">
|
<ai-wrapper label-width="120px">
|
||||||
<ai-info-item label="提交人">{{ userInfo.userName }}</ai-info-item>
|
<ai-info-item label="提交人">{{ userInfo.userName }}</ai-info-item>
|
||||||
<ai-info-item label="提交时间">{{ userInfo.submitTime }}</ai-info-item>
|
<ai-info-item label="提交时间">{{ userInfo.submitTime }}</ai-info-item>
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ export default {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: '弃票',
|
name: '弃票',
|
||||||
data: yData2,
|
data: yData3,
|
||||||
type: 'bar',
|
type: 'bar',
|
||||||
|
|
||||||
showBackground: true,
|
showBackground: true,
|
||||||
|
|||||||
75
project/pingchang/apps/AppNewEconomics/AppNewEconomics.vue
Normal file
75
project/pingchang/apps/AppNewEconomics/AppNewEconomics.vue
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
<template>
|
||||||
|
<div class="AppNewEconomics">
|
||||||
|
<keep-alive :include="['List']">
|
||||||
|
<component
|
||||||
|
ref="component"
|
||||||
|
:is="component"
|
||||||
|
@change="onChange"
|
||||||
|
:params="params"
|
||||||
|
:instance="instance"
|
||||||
|
:dict="dict"
|
||||||
|
></component>
|
||||||
|
</keep-alive>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import List from "./components/List";
|
||||||
|
import Add from "./components/Add";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
label: "新经济组织管理",
|
||||||
|
name: "AppNewEconomics",
|
||||||
|
// 组件
|
||||||
|
components: { Add, List },
|
||||||
|
props: {
|
||||||
|
instance: Function,
|
||||||
|
dict: Object,
|
||||||
|
permissions: Function
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
component: "List",
|
||||||
|
params: {},
|
||||||
|
include: []
|
||||||
|
};
|
||||||
|
},
|
||||||
|
// 计算
|
||||||
|
computed: {},
|
||||||
|
// 监听
|
||||||
|
watch: {},
|
||||||
|
// 实例创建后
|
||||||
|
created() {},
|
||||||
|
// 实例创建后
|
||||||
|
onShow() {},
|
||||||
|
// 实例渲染后
|
||||||
|
mounted() {},
|
||||||
|
// 方法
|
||||||
|
methods: {
|
||||||
|
onChange(data) {
|
||||||
|
if (data.type === "Add") {
|
||||||
|
this.component = "Add";
|
||||||
|
this.params = data.params;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data.type === "list") {
|
||||||
|
this.component = "List";
|
||||||
|
this.params = data.params;
|
||||||
|
|
||||||
|
this.$nextTick(() => {
|
||||||
|
if (data.isRefresh) {
|
||||||
|
this.$refs.component.getList();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.AppNewEconomics {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
649
project/pingchang/apps/AppNewEconomics/components/Add.vue
Normal file
649
project/pingchang/apps/AppNewEconomics/components/Add.vue
Normal file
@@ -0,0 +1,649 @@
|
|||||||
|
<template>
|
||||||
|
<ai-detail class="Add">
|
||||||
|
<!-- 标题 -->
|
||||||
|
<ai-title slot="title" title="新增新经济组织" isShowBottomBorder isShowBack @onBackClick="cancel(false)"/>
|
||||||
|
|
||||||
|
<!-- 内容 -->
|
||||||
|
<template slot="content">
|
||||||
|
<el-form
|
||||||
|
:model="formData"
|
||||||
|
ref="ruleForm"
|
||||||
|
:rules="formRules"
|
||||||
|
label-width="150px"
|
||||||
|
label-position="right"
|
||||||
|
>
|
||||||
|
<ai-card title="企业基本信息">
|
||||||
|
<div class="ai-form" slot="content">
|
||||||
|
<!-- 企业名称 -->
|
||||||
|
<el-form-item label="企业名称" prop="name">
|
||||||
|
<el-input
|
||||||
|
v-model="formData.name"
|
||||||
|
show-word-limit
|
||||||
|
:maxlength="30"
|
||||||
|
size="small"
|
||||||
|
clearable
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 企业类别 -->
|
||||||
|
<el-form-item label="企业类别" prop="companyCategory">
|
||||||
|
<ai-select
|
||||||
|
v-model="formData.companyCategory"
|
||||||
|
placeholder="请选择"
|
||||||
|
:selectList="$dict.getDict('twoNewOrgCompanyCategory')"
|
||||||
|
></ai-select>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 统一社会信用代码 -->
|
||||||
|
<el-form-item label="统一社会信用代码" prop="unifiedCode">
|
||||||
|
<el-input
|
||||||
|
size="small"
|
||||||
|
v-model="formData.unifiedCode"
|
||||||
|
clearable
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 是否化危企业 -->
|
||||||
|
<el-form-item
|
||||||
|
label="是否化危企业"
|
||||||
|
prop="isDangerousCompany"
|
||||||
|
class="dangerous"
|
||||||
|
>
|
||||||
|
<el-radio-group v-model="formData.isDangerousCompany">
|
||||||
|
<el-radio
|
||||||
|
:label="item.label"
|
||||||
|
v-for="(item, i) in isNofityList"
|
||||||
|
:key="i"
|
||||||
|
>{{ item.name }}</el-radio
|
||||||
|
>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 法人姓名 -->
|
||||||
|
<el-form-item label="法人姓名" prop="administratorName">
|
||||||
|
<el-input
|
||||||
|
v-model="formData.administratorName"
|
||||||
|
size="small"
|
||||||
|
clearable
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 安全隐患类型 -->
|
||||||
|
<el-form-item label="安全隐患类型" prop="dangerousType">
|
||||||
|
<ai-select
|
||||||
|
v-model="formData.dangerousType"
|
||||||
|
placeholder="请选择"
|
||||||
|
:selectList="$dict.getDict('twoNewOrgDangerousType')"
|
||||||
|
></ai-select>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 法人身份证 -->
|
||||||
|
<el-form-item label="法人身份证" prop="administratorIdNumber">
|
||||||
|
<el-input
|
||||||
|
v-model="formData.administratorIdNumber"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 企业员工数 -->
|
||||||
|
<el-form-item label="企业员工数" prop="employeeNumber">
|
||||||
|
<el-input
|
||||||
|
v-model.number="formData.employeeNumber"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 法人联系方式 -->
|
||||||
|
<el-form-item label="法人联系方式" prop="administratorPhone">
|
||||||
|
<el-input
|
||||||
|
v-model.number="formData.administratorPhone"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 企业联系方式 -->
|
||||||
|
<el-form-item label="企业联系方式" prop="companyPhone">
|
||||||
|
<el-input
|
||||||
|
v-model.number="formData.companyPhone"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 所属区域 -->
|
||||||
|
<el-form-item label="所属区域" prop="areaId" style="width:100%;">
|
||||||
|
<ai-area-select
|
||||||
|
always-show
|
||||||
|
clearable
|
||||||
|
:instance="instance"
|
||||||
|
v-model="formData.areaId"
|
||||||
|
:areaLevel="5"
|
||||||
|
@fullname="v => (formData.areaName = v)"
|
||||||
|
></ai-area-select>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 详细地址 -->
|
||||||
|
<el-form-item label="详细地址" prop="address" style="width:100%;">
|
||||||
|
<el-input
|
||||||
|
v-model="formData.address"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 网格归属 -->
|
||||||
|
<el-form-item label="网格归属" prop="girdId" class="girdId">
|
||||||
|
<el-cascader
|
||||||
|
v-model="formData.girdId"
|
||||||
|
:options="gridTree"
|
||||||
|
:props="gridTreeOps"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</ai-card>
|
||||||
|
<ai-card title="治保负责人信息" style="width:100%;">
|
||||||
|
<div class="ai-form" slot="content">
|
||||||
|
<!-- 治保负责人姓名 -->
|
||||||
|
<el-form-item label="治保负责人姓名" prop="securityPersonName">
|
||||||
|
<el-input
|
||||||
|
v-model="formData.securityPersonName"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- 治保负责人联系方式 -->
|
||||||
|
<el-form-item label="治保负责人联系方式" prop="securityPersonPhone">
|
||||||
|
<el-input
|
||||||
|
v-model.number="formData.securityPersonPhone"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</div>
|
||||||
|
</ai-card>
|
||||||
|
<ai-card title="组织信息">
|
||||||
|
<div class="ai-form" slot="content">
|
||||||
|
<!--是否具备建立中共党组织条件 -->
|
||||||
|
<el-form-item label="是否具备建立中共党组织条件" prop="isBuildParty">
|
||||||
|
<el-radio-group v-model="formData.isBuildParty">
|
||||||
|
<el-radio
|
||||||
|
:label="item.label"
|
||||||
|
v-for="(item, i) in isBuildParty"
|
||||||
|
:key="i"
|
||||||
|
>{{ item.name }}</el-radio
|
||||||
|
>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 关注程度 -->
|
||||||
|
<el-form-item label="关注程度" prop="concernDegree">
|
||||||
|
<ai-select
|
||||||
|
v-model="formData.concernDegree"
|
||||||
|
placeholder="请选择"
|
||||||
|
:selectList="$dict.getDict('twoNewOrgConcernDegree')"
|
||||||
|
></ai-select>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!--是否有中共党组织 -->
|
||||||
|
<el-form-item label="是否有中共党组织" prop="isHaveParty">
|
||||||
|
<el-radio-group v-model="formData.isHaveParty">
|
||||||
|
<el-radio
|
||||||
|
:label="item.label"
|
||||||
|
v-for="(item, i) in isHaveParty"
|
||||||
|
:key="i"
|
||||||
|
>{{ item.name }}</el-radio
|
||||||
|
>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 中共党员人数 -->
|
||||||
|
<el-form-item label="中共党员人数" prop="partyNumber">
|
||||||
|
<el-input
|
||||||
|
v-model.number="formData.partyNumber"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!--是否有公会 -->
|
||||||
|
<el-form-item label="是否有公会" prop="isHaveUnion">
|
||||||
|
<el-radio-group v-model="formData.isHaveUnion">
|
||||||
|
<el-radio
|
||||||
|
:label="item.label"
|
||||||
|
v-for="(item, i) in isHaveUnion"
|
||||||
|
:key="i"
|
||||||
|
>{{ item.name }}</el-radio
|
||||||
|
>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 公会会员人数-->
|
||||||
|
<el-form-item label="公会会员人数" prop="unionNumber">
|
||||||
|
<el-input
|
||||||
|
v-model.number="formData.unionNumber"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!--是否有共青团组织 -->
|
||||||
|
<el-form-item label="是否有共青团组织" prop="isHaveYoung">
|
||||||
|
<el-radio-group v-model="formData.isHaveYoung">
|
||||||
|
<el-radio
|
||||||
|
:label="item.label"
|
||||||
|
v-for="(item, i) in isHaveYoung"
|
||||||
|
:key="i"
|
||||||
|
>{{ item.name }}</el-radio
|
||||||
|
>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!--共青团组织人数-->
|
||||||
|
<el-form-item label="共青团组织人数" prop="youngNumber">
|
||||||
|
<el-input
|
||||||
|
v-model.number="formData.youngNumber"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!--是否有妇联组织 -->
|
||||||
|
<el-form-item label="是否有妇联组织" prop="isHaveWoman">
|
||||||
|
<el-radio-group v-model="formData.isHaveWoman">
|
||||||
|
<el-radio
|
||||||
|
:label="item.label"
|
||||||
|
v-for="(item, i) in isHaveWoman"
|
||||||
|
:key="i"
|
||||||
|
>{{ item.name }}</el-radio
|
||||||
|
>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!--妇女人数-->
|
||||||
|
<el-form-item label="妇女人数" prop="womanNumber">
|
||||||
|
<el-input
|
||||||
|
v-model.number="formData.womanNumber"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</div>
|
||||||
|
</ai-card>
|
||||||
|
</el-form>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<!-- 底部按钮 -->
|
||||||
|
<template #footer>
|
||||||
|
<el-button @click="cancel">取消</el-button>
|
||||||
|
<el-button type="primary" @click="confirm('ruleForm')">提交</el-button>
|
||||||
|
</template>
|
||||||
|
</ai-detail>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { mapState } from "vuex";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "Add",
|
||||||
|
// 组件
|
||||||
|
components: {},
|
||||||
|
props: { instance: Function, dict: Object, params: Object },
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
id: "",
|
||||||
|
formData: {
|
||||||
|
name: "",
|
||||||
|
companyCategory: "",
|
||||||
|
unifiedCode: "",
|
||||||
|
isDangerousCompany: "",
|
||||||
|
administratorName: "",
|
||||||
|
dangerousType: "",
|
||||||
|
administratorIdNumber: "",
|
||||||
|
employeeNumber: "",
|
||||||
|
administratorPhone: "",
|
||||||
|
companyPhone: "",
|
||||||
|
areaId: "",
|
||||||
|
|
||||||
|
address: "",
|
||||||
|
girdId: "",
|
||||||
|
securityPersonName: "",
|
||||||
|
securityPersonPhone: "",
|
||||||
|
isBuildParty: "",
|
||||||
|
concernDegree: "",
|
||||||
|
isHaveParty: "",
|
||||||
|
partyNumber: "",
|
||||||
|
isHaveUnion: "",
|
||||||
|
unionNumber: "",
|
||||||
|
isHaveYoung: "",
|
||||||
|
|
||||||
|
youngNumber: "",
|
||||||
|
isHaveWoman: "",
|
||||||
|
womanNumber: "",
|
||||||
|
|
||||||
|
bizType: "0"
|
||||||
|
},
|
||||||
|
gridTree: []
|
||||||
|
};
|
||||||
|
},
|
||||||
|
// 计算
|
||||||
|
computed: {
|
||||||
|
...mapState(["user"]),
|
||||||
|
|
||||||
|
formRules() {
|
||||||
|
// 身份证号校验
|
||||||
|
const IdCard = (rule, value, callback) => {
|
||||||
|
const reg = /(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|12]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)/;
|
||||||
|
if (!value) {
|
||||||
|
return callback(new Error("身份证号码不能为空"));
|
||||||
|
} else if (!reg.test(value)) {
|
||||||
|
return callback(new Error("身份证号码不正确"));
|
||||||
|
} else {
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 统一社会信用代码校验
|
||||||
|
const unifiedCode = (rule, value, callback) => {
|
||||||
|
const reg = /[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}/;
|
||||||
|
if (value && !reg.test(value)) callback("统一社会信用代码格式错误");
|
||||||
|
else callback();
|
||||||
|
};
|
||||||
|
|
||||||
|
return {
|
||||||
|
name: [
|
||||||
|
{ required: true, message: "请输入企业名称", trigger: "change" }
|
||||||
|
],
|
||||||
|
companyCategory: [
|
||||||
|
{ required: true, message: "请选择企业类别", trigger: "change" }
|
||||||
|
],
|
||||||
|
unifiedCode: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请输入统一社会信用代码",
|
||||||
|
trigger: "change"
|
||||||
|
},
|
||||||
|
{ validator: unifiedCode }
|
||||||
|
],
|
||||||
|
isDangerousCompany: [
|
||||||
|
{ required: true, message: "请选择是否化危企业", trigger: "change" }
|
||||||
|
],
|
||||||
|
|
||||||
|
administratorName: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请输入法人姓名",
|
||||||
|
trigger: "change"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
dangerousType: [
|
||||||
|
{ required: true, message: "请选择安全隐患类型", trigger: "change" }
|
||||||
|
],
|
||||||
|
|
||||||
|
administratorIdNumber: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
trigger: "change"
|
||||||
|
},
|
||||||
|
{ validator: IdCard }
|
||||||
|
],
|
||||||
|
|
||||||
|
employeeNumber: [
|
||||||
|
{
|
||||||
|
validator: (r, v, cb) =>
|
||||||
|
!v || /^[1-9]\d*|0$/g.test(v) ? cb() : cb("请输入正整数")
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
administratorPhone: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请输入法人联系方式",
|
||||||
|
trigger: "change"
|
||||||
|
}
|
||||||
|
// { validator: phonePass }
|
||||||
|
],
|
||||||
|
|
||||||
|
companyPhone: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请输入企业联系方式",
|
||||||
|
trigger: "change"
|
||||||
|
}
|
||||||
|
// { validator: phonePass }
|
||||||
|
],
|
||||||
|
|
||||||
|
isBuildParty: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请输入是否具备建立中共党组织条件",
|
||||||
|
trigger: "change"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
areaId: [
|
||||||
|
{ required: true, message: "请选择所属区域" },
|
||||||
|
{
|
||||||
|
validator: (r, v, cb) =>
|
||||||
|
/0{3}$/g.test(v) ? cb("请选择到村") : cb()
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
girdId: [
|
||||||
|
{ required: true, message: "请选择网格归属", trigger: "change" }
|
||||||
|
],
|
||||||
|
concernDegree: [
|
||||||
|
{ required: true, message: "请选择关注程度", trigger: "change" }
|
||||||
|
],
|
||||||
|
isHaveParty: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请选择是否有中共党组织",
|
||||||
|
trigger: "change"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
partyNumber: [
|
||||||
|
{ required: true, message: "请输入中共党员人数", trigger: "change" },
|
||||||
|
{
|
||||||
|
validator: (r, v, cb) =>
|
||||||
|
!v || /^[1-9]\d*|0$/g.test(v) ? cb() : cb("请输入正整数")
|
||||||
|
}
|
||||||
|
],
|
||||||
|
isHaveUnion: [
|
||||||
|
{ required: true, message: "请选择是否有公会", trigger: "change" }
|
||||||
|
],
|
||||||
|
unionNumber: [
|
||||||
|
{ required: true, message: "请输入公会会员人数", trigger: "change" },
|
||||||
|
{
|
||||||
|
validator: (r, v, cb) =>
|
||||||
|
!v || /^[1-9]\d*|0$/g.test(v) ? cb() : cb("请输入正整数")
|
||||||
|
}
|
||||||
|
],
|
||||||
|
isHaveYoung: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请选择是否有共青团组织",
|
||||||
|
trigger: "change"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
youngNumber: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请输入共青团组织人数",
|
||||||
|
trigger: "change"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
validator: (r, v, cb) =>
|
||||||
|
!v || /^[1-9]\d*|0$/g.test(v) ? cb() : cb("请输入正整数")
|
||||||
|
}
|
||||||
|
],
|
||||||
|
isHaveWoman: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请选择是否有妇联组织",
|
||||||
|
trigger: "change"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
womanNumber: [
|
||||||
|
{ required: true, message: "请输入妇女人数", trigger: "change" },
|
||||||
|
{
|
||||||
|
validator: (r, v, cb) =>
|
||||||
|
!v || /^[1-9]\d*|0$/g.test(v) ? cb() : cb("请输入正整数")
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
isNofityList() {
|
||||||
|
return [
|
||||||
|
{ name: "是", label: "1" },
|
||||||
|
{ name: "否", label: "0" }
|
||||||
|
];
|
||||||
|
},
|
||||||
|
isBuildParty() {
|
||||||
|
return [
|
||||||
|
{ name: "是", label: "1" },
|
||||||
|
{ name: "否", label: "0" }
|
||||||
|
];
|
||||||
|
},
|
||||||
|
isHaveParty() {
|
||||||
|
return [
|
||||||
|
{ name: "是", label: "1" },
|
||||||
|
{ name: "否", label: "0" }
|
||||||
|
];
|
||||||
|
},
|
||||||
|
isHaveUnion() {
|
||||||
|
return [
|
||||||
|
{ name: "是", label: "1" },
|
||||||
|
{ name: "否", label: "0" }
|
||||||
|
];
|
||||||
|
},
|
||||||
|
isHaveYoung() {
|
||||||
|
return [
|
||||||
|
{ name: "是", label: "1" },
|
||||||
|
{ name: "否", label: "0" }
|
||||||
|
];
|
||||||
|
},
|
||||||
|
isHaveWoman() {
|
||||||
|
return [
|
||||||
|
{ name: "是", label: "1" },
|
||||||
|
{ name: "否", label: "0" }
|
||||||
|
];
|
||||||
|
},
|
||||||
|
gridTreeOps() {
|
||||||
|
return {
|
||||||
|
emitPath: false,
|
||||||
|
value: "id",
|
||||||
|
label: "girdName",
|
||||||
|
children: "girdList"
|
||||||
|
};
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 监听
|
||||||
|
watch: {},
|
||||||
|
// 实例创建后
|
||||||
|
created() {
|
||||||
|
this.dict
|
||||||
|
.load(
|
||||||
|
"twoNewOrgCompanyCategory",
|
||||||
|
"twoNewOrgDangerousType",
|
||||||
|
"twoNewOrgConcernDegree"
|
||||||
|
)
|
||||||
|
.then(() => {});
|
||||||
|
|
||||||
|
this.getGridTree();
|
||||||
|
this.formData.areaId = this.user.info.areaId;
|
||||||
|
|
||||||
|
if (this.params && this.params.id) {
|
||||||
|
this.id = this.params.id;
|
||||||
|
this.getInfoList(this.params.id);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onShow() {},
|
||||||
|
// 实例渲染后
|
||||||
|
mounted() {},
|
||||||
|
// 方法
|
||||||
|
methods: {
|
||||||
|
getInfoList(id) {
|
||||||
|
this.instance
|
||||||
|
.post(`/app/apptwoneworganization/queryDetailById?id=${id}`)
|
||||||
|
.then(res => {
|
||||||
|
if (res.code === 0) {
|
||||||
|
this.formData = res.data;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 确定新增
|
||||||
|
confirm() {
|
||||||
|
this.$refs["ruleForm"].validate(valid => {
|
||||||
|
if (valid) {
|
||||||
|
this.instance
|
||||||
|
.post(`/app/apptwoneworganization/addOrUpdate`, {
|
||||||
|
...this.formData
|
||||||
|
})
|
||||||
|
.then(res => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
this.$message.success("提交成功");
|
||||||
|
this.cancel(true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 返回按钮
|
||||||
|
cancel(isRefresh) {
|
||||||
|
this.$emit("change", {
|
||||||
|
type: "list",
|
||||||
|
isRefresh: !!isRefresh
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
getGridTree() {
|
||||||
|
this.instance.post("/app/appgirdinfo/listAllByTop").then(res => {
|
||||||
|
if (res.data) {
|
||||||
|
this.gridTree = res.data;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.Add {
|
||||||
|
::v-deep.ai-form {
|
||||||
|
.ai-card {
|
||||||
|
.ai-card-body {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: space-between;
|
||||||
|
.dangerous {
|
||||||
|
margin-right: 109px;
|
||||||
|
}
|
||||||
|
.width {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.girdId {
|
||||||
|
width: 100%;
|
||||||
|
.el-form-item__content {
|
||||||
|
.el-cascader {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
::v-deep .ai-form .el-form-item .el-form-item__content {
|
||||||
|
margin-left: 174px!important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
220
project/pingchang/apps/AppNewEconomics/components/List.vue
Normal file
220
project/pingchang/apps/AppNewEconomics/components/List.vue
Normal file
@@ -0,0 +1,220 @@
|
|||||||
|
<template>
|
||||||
|
<ai-list class="list">
|
||||||
|
<template slot="title">
|
||||||
|
<ai-title title="新经济组织管理" isShowBottomBorder></ai-title>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template slot="content">
|
||||||
|
<ai-search-bar>
|
||||||
|
<template #left>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
icon="iconfont iconAdd"
|
||||||
|
size="small"
|
||||||
|
@click="add('')"
|
||||||
|
>添加</el-button
|
||||||
|
>
|
||||||
|
<ai-select
|
||||||
|
v-model="search.companyCategory"
|
||||||
|
placeholder="企业类别"
|
||||||
|
clearable
|
||||||
|
@change="(page.current = 1), getList()"
|
||||||
|
:selectList="dict.getDict('twoNewOrgCompanyCategory')"
|
||||||
|
></ai-select>
|
||||||
|
|
||||||
|
<ai-select
|
||||||
|
v-model="search.concernDegree"
|
||||||
|
placeholder="关注程度"
|
||||||
|
clearable
|
||||||
|
@change="(page.current = 1), getList()"
|
||||||
|
:selectList="dict.getDict('twoNewOrgConcernDegree')"
|
||||||
|
></ai-select>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template slot="right">
|
||||||
|
<el-input
|
||||||
|
v-model="search.name"
|
||||||
|
size="small"
|
||||||
|
placeholder="企业名称"
|
||||||
|
prefix-icon="iconfont iconSearch"
|
||||||
|
clearable
|
||||||
|
@change="(page.current = 1), getList()"
|
||||||
|
/>
|
||||||
|
<!-- <el-button
|
||||||
|
class="el-button"
|
||||||
|
type="primary"
|
||||||
|
icon="el-icon-search"
|
||||||
|
size="small"
|
||||||
|
@click="(page.current = 1), getList()"
|
||||||
|
>查询</el-button
|
||||||
|
>
|
||||||
|
<el-button
|
||||||
|
class="el-button"
|
||||||
|
icon="el-icon-refresh-right"
|
||||||
|
@click="reset()"
|
||||||
|
>重置</el-button
|
||||||
|
> -->
|
||||||
|
</template>
|
||||||
|
</ai-search-bar>
|
||||||
|
|
||||||
|
<!-- <ai-search-bar>
|
||||||
|
<template #left>
|
||||||
|
<el-button
|
||||||
|
style="margin-bottom: 10px;"
|
||||||
|
class="el-button"
|
||||||
|
type="primary"
|
||||||
|
icon="iconfont iconAdd"
|
||||||
|
size="small"
|
||||||
|
@click="add('')"
|
||||||
|
>添加</el-button
|
||||||
|
>
|
||||||
|
</template>
|
||||||
|
</ai-search-bar> -->
|
||||||
|
|
||||||
|
<ai-table
|
||||||
|
class="ai-table"
|
||||||
|
:tableData="tableData"
|
||||||
|
:col-configs="colConfigs"
|
||||||
|
:total="page.total"
|
||||||
|
:current.sync="page.current"
|
||||||
|
:size.sync="page.size"
|
||||||
|
@getList="getList"
|
||||||
|
:dict="dict"
|
||||||
|
>
|
||||||
|
<el-table-column
|
||||||
|
slot="options"
|
||||||
|
label="操作"
|
||||||
|
align="center"
|
||||||
|
fixed="right"
|
||||||
|
width="200"
|
||||||
|
>
|
||||||
|
<template slot-scope="{ row }">
|
||||||
|
<div class="table-options">
|
||||||
|
<el-button type="text" @click="add(row.id)">编辑</el-button>
|
||||||
|
<el-button type="text" @click="toDelete(row.id)">删除</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</ai-table>
|
||||||
|
</template>
|
||||||
|
</ai-list>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: "List",
|
||||||
|
// 组件
|
||||||
|
components: {},
|
||||||
|
props: { instance: Function, dict: Object, params: Object },
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tableData: [],
|
||||||
|
colConfigs: [
|
||||||
|
{ prop: "name", label: "企业名称" },
|
||||||
|
{
|
||||||
|
prop: "companyCategory",
|
||||||
|
label: "企业类别",
|
||||||
|
dict: "twoNewOrgCompanyCategory"
|
||||||
|
},
|
||||||
|
{ prop: "companyPhone", label: "企业联系方式" },
|
||||||
|
{ prop: "administratorName", label: "法人姓名" },
|
||||||
|
{ prop: "administratorPhone", label: "法人联系方式" },
|
||||||
|
{ prop: "areaName", label: "所属区域" },
|
||||||
|
{
|
||||||
|
prop: "concernDegree",
|
||||||
|
label: "关注程度",
|
||||||
|
dict: "twoNewOrgConcernDegree"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
page: {
|
||||||
|
size: 10,
|
||||||
|
current: 1,
|
||||||
|
total: 0
|
||||||
|
},
|
||||||
|
search: {
|
||||||
|
name: "",
|
||||||
|
companyCategory: "",
|
||||||
|
concernDegree: ""
|
||||||
|
},
|
||||||
|
id: ""
|
||||||
|
};
|
||||||
|
},
|
||||||
|
// 计算
|
||||||
|
computed: {},
|
||||||
|
// 监听
|
||||||
|
watch: {},
|
||||||
|
created() {
|
||||||
|
this.dict
|
||||||
|
.load("twoNewOrgCompanyCategory", "twoNewOrgConcernDegree")
|
||||||
|
.then(() => {
|
||||||
|
this.getList();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
// this.dict.load('').then(() => {
|
||||||
|
// this.$nextTick(() => this.getList())
|
||||||
|
// })
|
||||||
|
},
|
||||||
|
// 实例创建后
|
||||||
|
onShow() {},
|
||||||
|
// 实例渲染后
|
||||||
|
// 方法
|
||||||
|
methods: {
|
||||||
|
getList() {
|
||||||
|
this.instance
|
||||||
|
.post(`/app/apptwoneworganization/list`, null, {
|
||||||
|
params: {
|
||||||
|
...this.page,
|
||||||
|
...this.search,
|
||||||
|
bizType: 0
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then(res => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
this.tableData = res.data.records;
|
||||||
|
this.page.total = res.data.total;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 添加
|
||||||
|
add(id) {
|
||||||
|
this.$emit("change", {
|
||||||
|
type: "Add",
|
||||||
|
params: {
|
||||||
|
id: id || ""
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
toDelete(id) {
|
||||||
|
this.$confirm("删除后不可恢复,确定删除该数据?").then(() => {
|
||||||
|
this.instance
|
||||||
|
.post(`/app/apptwoneworganization/delete?ids=${id}`)
|
||||||
|
.then(res => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
this.$message.success("删除成功!");
|
||||||
|
this.getList();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 重置
|
||||||
|
reset() {
|
||||||
|
Object.keys(this.search).forEach(e => {
|
||||||
|
this.search[e] = "";
|
||||||
|
});
|
||||||
|
this.getList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.list {
|
||||||
|
height: 100%;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
75
project/pingchang/apps/AppNewSociety/AppNewSociety.vue
Normal file
75
project/pingchang/apps/AppNewSociety/AppNewSociety.vue
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
<template>
|
||||||
|
<div class="AppNewSociety">
|
||||||
|
<keep-alive :include="['List']">
|
||||||
|
<component
|
||||||
|
ref="component"
|
||||||
|
:is="component"
|
||||||
|
@change="onChange"
|
||||||
|
:params="params"
|
||||||
|
:instance="instance"
|
||||||
|
:dict="dict"
|
||||||
|
></component>
|
||||||
|
</keep-alive>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import List from "./components/List";
|
||||||
|
import Add from "./components/Add";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
label: "新社会组织管理",
|
||||||
|
name: "AppNewSociety",
|
||||||
|
// 组件
|
||||||
|
components: { Add, List },
|
||||||
|
props: {
|
||||||
|
instance: Function,
|
||||||
|
dict: Object,
|
||||||
|
permissions: Function
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
component: "List",
|
||||||
|
params: {},
|
||||||
|
include: []
|
||||||
|
};
|
||||||
|
},
|
||||||
|
// 计算
|
||||||
|
computed: {},
|
||||||
|
// 监听
|
||||||
|
watch: {},
|
||||||
|
// 实例创建后
|
||||||
|
created() {},
|
||||||
|
// 实例创建后
|
||||||
|
onShow() {},
|
||||||
|
// 实例渲染后
|
||||||
|
mounted() {},
|
||||||
|
// 方法
|
||||||
|
methods: {
|
||||||
|
onChange(data) {
|
||||||
|
if (data.type === "Add") {
|
||||||
|
this.component = "Add";
|
||||||
|
this.params = data.params;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data.type === "list") {
|
||||||
|
this.component = "List";
|
||||||
|
this.params = data.params;
|
||||||
|
|
||||||
|
this.$nextTick(() => {
|
||||||
|
if (data.isRefresh) {
|
||||||
|
this.$refs.component.getList();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.AppNewSociety {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
653
project/pingchang/apps/AppNewSociety/components/Add.vue
Normal file
653
project/pingchang/apps/AppNewSociety/components/Add.vue
Normal file
@@ -0,0 +1,653 @@
|
|||||||
|
<template>
|
||||||
|
<ai-detail>
|
||||||
|
<!-- 标题 -->
|
||||||
|
<template slot="title">
|
||||||
|
<ai-title
|
||||||
|
title="新增新社会组织"
|
||||||
|
isShowBottomBorder
|
||||||
|
isShowBack
|
||||||
|
@onBackClick="cancel(false)"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<!-- 内容 -->
|
||||||
|
<template slot="content">
|
||||||
|
<el-form
|
||||||
|
:model="formData"
|
||||||
|
ref="ruleForm"
|
||||||
|
:rules="formRules"
|
||||||
|
label-width="140px"
|
||||||
|
>
|
||||||
|
|
||||||
|
<ai-card title="企业基本信息">
|
||||||
|
<div class="ai-form" slot="content">
|
||||||
|
<!-- 社会组织名称 -->
|
||||||
|
<el-form-item label="社会组织名称" prop="name">
|
||||||
|
<el-input
|
||||||
|
v-model="formData.name"
|
||||||
|
show-word-limit
|
||||||
|
:maxlength="30"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 社会组织类型 -->
|
||||||
|
<el-form-item label="社会组织类型" prop="socialType">
|
||||||
|
<ai-select
|
||||||
|
v-model="formData.socialType"
|
||||||
|
placeholder="请选择"
|
||||||
|
:selectList="$dict.getDict('twoNewOrgSocialType')"
|
||||||
|
></ai-select>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 统一社会信用代码 -->
|
||||||
|
<el-form-item label="统一社会信用代码" prop="unifiedCode">
|
||||||
|
<el-input
|
||||||
|
v-model="formData.unifiedCode"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 登记证号 -->
|
||||||
|
<el-form-item label="登记证号" prop="certificateNumber">
|
||||||
|
<el-input
|
||||||
|
v-model="formData.certificateNumber"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 负责人姓名 -->
|
||||||
|
<el-form-item label="负责人姓名" prop="administratorName">
|
||||||
|
<el-input
|
||||||
|
v-model="formData.administratorName"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 登记管理机构代码 -->
|
||||||
|
<el-form-item label="登记管理机构代码" prop="registrationCode">
|
||||||
|
<el-input
|
||||||
|
v-model="formData.registrationCode"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 负责人联系方式 -->
|
||||||
|
<el-form-item label="负责人联系方式" prop="administratorPhone">
|
||||||
|
<el-input
|
||||||
|
v-model="formData.administratorPhone"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 批准日期 -->
|
||||||
|
<el-form-item label="批准日期" prop="approvalDate">
|
||||||
|
<el-date-picker
|
||||||
|
value-format="yyyy-MM-dd"
|
||||||
|
v-model="formData.approvalDate"
|
||||||
|
type="date"
|
||||||
|
placeholder="选择日期"
|
||||||
|
size="small"
|
||||||
|
>
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 负责人身份证号码 -->
|
||||||
|
<el-form-item label="负责人身份证号码" prop="administratorIdNumber">
|
||||||
|
<el-input
|
||||||
|
v-model="formData.administratorIdNumber"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 是否有外资背景isForeign -->
|
||||||
|
<el-form-item label="是否有外资背景" prop="isForeign">
|
||||||
|
<el-radio-group v-model="formData.isForeign">
|
||||||
|
<el-radio
|
||||||
|
:label="item.label"
|
||||||
|
v-for="(item, i) in isForeign"
|
||||||
|
:key="i"
|
||||||
|
>{{ item.name }}
|
||||||
|
</el-radio
|
||||||
|
>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 所属区域 -->
|
||||||
|
<el-form-item label="所属区域" prop="areaId" style="width:100%;">
|
||||||
|
<ai-area-select
|
||||||
|
always-show
|
||||||
|
clearable
|
||||||
|
:instance="instance"
|
||||||
|
v-model="formData.areaId"
|
||||||
|
:areaLevel="5"
|
||||||
|
></ai-area-select>
|
||||||
|
<!-- @fullname="v => (formData.areaName = v)" -->
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 详细地址 -->
|
||||||
|
<el-form-item label="详细地址" prop="address" style="width:100%;">
|
||||||
|
<el-input
|
||||||
|
v-model="formData.address"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 网格归属 -->
|
||||||
|
<el-form-item label="网格归属" prop="girdId" >
|
||||||
|
<el-cascader
|
||||||
|
v-model="formData.girdId"
|
||||||
|
:options="gridTree"
|
||||||
|
:props="gridTreeOps"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</div>
|
||||||
|
</ai-card>
|
||||||
|
<ai-card title="治保负责人信息">
|
||||||
|
<div class="ai-form" slot="content">
|
||||||
|
<!-- 治保负责人姓名 -->
|
||||||
|
<el-form-item label="治保负责人姓名" prop="securityPersonName">
|
||||||
|
<el-input
|
||||||
|
v-model="formData.securityPersonName"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 治保负责人联系方式 -->
|
||||||
|
<el-form-item label="治保负责人联系方式" prop="securityPersonPhone">
|
||||||
|
<el-input
|
||||||
|
v-model.number="formData.securityPersonPhone"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</div>
|
||||||
|
</ai-card>
|
||||||
|
<ai-card title="组织信息">
|
||||||
|
<div class="ai-form" slot="content">
|
||||||
|
|
||||||
|
<!--是否具备建立中共党组织条件 -->
|
||||||
|
<el-form-item label="是否具备建立中共党组织条件" prop="isBuildParty">
|
||||||
|
<el-radio-group v-model="formData.isBuildParty">
|
||||||
|
<el-radio
|
||||||
|
:label="item.label"
|
||||||
|
v-for="(item, i) in isBuildParty"
|
||||||
|
:key="i"
|
||||||
|
>{{ item.name }}
|
||||||
|
</el-radio
|
||||||
|
>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 关注程度 -->
|
||||||
|
<el-form-item label="关注程度" prop="concernDegree">
|
||||||
|
<ai-select
|
||||||
|
v-model="formData.concernDegree"
|
||||||
|
placeholder="请选择"
|
||||||
|
:selectList="$dict.getDict('twoNewOrgConcernDegree')"
|
||||||
|
></ai-select>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!--是否有中共党组织 -->
|
||||||
|
<el-form-item label="是否有中共党组织" prop="isHaveParty">
|
||||||
|
<el-radio-group v-model="formData.isHaveParty">
|
||||||
|
<el-radio
|
||||||
|
:label="item.label"
|
||||||
|
v-for="(item, i) in isHaveParty"
|
||||||
|
:key="i"
|
||||||
|
>{{ item.name }}
|
||||||
|
</el-radio
|
||||||
|
>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 中共党员人数 -->
|
||||||
|
<el-form-item label="中共党员人数" prop="partyNumber">
|
||||||
|
<el-input
|
||||||
|
v-model.number="formData.partyNumber"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!--是否有公会 -->
|
||||||
|
<el-form-item label="是否有公会" prop="isHaveUnion">
|
||||||
|
<el-radio-group v-model="formData.isHaveUnion">
|
||||||
|
<el-radio
|
||||||
|
:label="item.label"
|
||||||
|
v-for="(item, i) in isHaveUnion"
|
||||||
|
:key="i"
|
||||||
|
>{{ item.name }}
|
||||||
|
</el-radio
|
||||||
|
>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 公会会员人数-->
|
||||||
|
<el-form-item label="公会会员人数" prop="unionNumber">
|
||||||
|
<el-input
|
||||||
|
v-model.number="formData.unionNumber"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!--是否有共青团组织 -->
|
||||||
|
<el-form-item label="是否有共青团组织" prop="isHaveYoung">
|
||||||
|
<el-radio-group v-model="formData.isHaveYoung">
|
||||||
|
<el-radio
|
||||||
|
:label="item.label"
|
||||||
|
v-for="(item, i) in isHaveYoung"
|
||||||
|
:key="i"
|
||||||
|
>{{ item.name }}
|
||||||
|
</el-radio
|
||||||
|
>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!--共青团组织人数-->
|
||||||
|
<el-form-item label="共青团组织人数" prop="youngNumber">
|
||||||
|
<el-input
|
||||||
|
v-model.number="formData.youngNumber"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!--是否有妇联组织 -->
|
||||||
|
<el-form-item label="是否有妇联组织" prop="isHaveWoman">
|
||||||
|
<el-radio-group v-model="formData.isHaveWoman">
|
||||||
|
<el-radio
|
||||||
|
:label="item.label"
|
||||||
|
v-for="(item, i) in isHaveWoman"
|
||||||
|
:key="i"
|
||||||
|
>{{ item.name }}
|
||||||
|
</el-radio
|
||||||
|
>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!--妇女人数-->
|
||||||
|
<el-form-item label="妇女人数" prop="womanNumber">
|
||||||
|
<el-input
|
||||||
|
v-model.number="formData.womanNumber"
|
||||||
|
size="small"
|
||||||
|
clearable
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</ai-card>
|
||||||
|
</el-form>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<!-- 底部按钮 -->
|
||||||
|
<template #footer>
|
||||||
|
<el-button @click="cancel">取消</el-button>
|
||||||
|
<el-button type="primary" @click="confirm('ruleForm')">提交</el-button>
|
||||||
|
</template>
|
||||||
|
</ai-detail>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {mapState} from "vuex";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "Add",
|
||||||
|
// 组件
|
||||||
|
components: {},
|
||||||
|
props: {instance: Function, dict: Object, params: Object},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
gridTree: [],
|
||||||
|
id: "",
|
||||||
|
formData: {
|
||||||
|
name: "",
|
||||||
|
socialType: "",
|
||||||
|
unifiedCode: "",
|
||||||
|
certificateNumber: "",
|
||||||
|
administratorName: "",
|
||||||
|
registrationCode: "",
|
||||||
|
administratorPhone: "",
|
||||||
|
approvalDate: "",
|
||||||
|
administratorIdNumber: "",
|
||||||
|
isForeign: "",
|
||||||
|
areaId: "",
|
||||||
|
|
||||||
|
address: "",
|
||||||
|
girdId: "",
|
||||||
|
securityPersonName: "",
|
||||||
|
securityPersonPhone: "",
|
||||||
|
isBuildParty: "",
|
||||||
|
concernDegree: "",
|
||||||
|
isHaveParty: "",
|
||||||
|
partyNumber: "",
|
||||||
|
isHaveUnion: "",
|
||||||
|
unionNumber: "",
|
||||||
|
isHaveYoung: "",
|
||||||
|
|
||||||
|
youngNumber: "",
|
||||||
|
isHaveWoman: "",
|
||||||
|
womanNumber: "",
|
||||||
|
|
||||||
|
bizType: "1"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
// 计算
|
||||||
|
computed: {
|
||||||
|
...mapState(["user"]),
|
||||||
|
|
||||||
|
formRules() {
|
||||||
|
// 身份证号校验
|
||||||
|
const IdCard = (rule, value, callback) => {
|
||||||
|
const reg = /(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|12]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)/;
|
||||||
|
if (!value) {
|
||||||
|
return callback(new Error("证件号码不能为空"));
|
||||||
|
} else if (!reg.test(value)) {
|
||||||
|
return callback(new Error("证件号码格式错误"));
|
||||||
|
} else {
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 统一社会信用代码校验
|
||||||
|
const unifiedCode = (rule, value, callback) => {
|
||||||
|
const reg = /[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}/;
|
||||||
|
if (value && !reg.test(value)) callback("统一社会信用代码格式错误");
|
||||||
|
else callback();
|
||||||
|
};
|
||||||
|
|
||||||
|
return {
|
||||||
|
name: [
|
||||||
|
{required: true, message: "请输入企业名称", trigger: "change"}
|
||||||
|
],
|
||||||
|
socialType: [
|
||||||
|
{required: true, message: "请选择社会组织类型", trigger: "change"}
|
||||||
|
],
|
||||||
|
unifiedCode: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请输入统一社会信用代码",
|
||||||
|
trigger: "change"
|
||||||
|
},
|
||||||
|
{validator: unifiedCode}
|
||||||
|
],
|
||||||
|
|
||||||
|
administratorName: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请输入负责人姓名",
|
||||||
|
trigger: "change"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
administratorPhone: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请输入负责人联系方式",
|
||||||
|
trigger: "change"
|
||||||
|
}
|
||||||
|
// { validator: phonePass }
|
||||||
|
],
|
||||||
|
areaId: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请选择所属区域",
|
||||||
|
trigger: "change"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
validator: (r, v, cb) =>
|
||||||
|
/0{3}$/g.test(v) ? cb("请选择到村") : cb()
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
administratorIdNumber: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请输入负责人身份证号码",
|
||||||
|
trigger: "change"
|
||||||
|
},
|
||||||
|
{validator: IdCard}
|
||||||
|
],
|
||||||
|
|
||||||
|
isForeign: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请选择是否有外资背景",
|
||||||
|
trigger: "change"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
isBuildParty: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请选择是否具备建立中共党组织条件",
|
||||||
|
trigger: "change"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
girdId: [
|
||||||
|
{required: true, message: "请选择网格归属", trigger: "change"}
|
||||||
|
],
|
||||||
|
|
||||||
|
// securityPersonPhone: [{ validator: phonePass }],
|
||||||
|
|
||||||
|
concernDegree: [
|
||||||
|
{required: true, message: "请选择关注程度", trigger: "change"}
|
||||||
|
],
|
||||||
|
isHaveParty: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请选择是否有中共党组织",
|
||||||
|
trigger: "change"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
partyNumber: [
|
||||||
|
{required: true, message: "请输入中共党员人数", trigger: "change"},
|
||||||
|
{
|
||||||
|
validator: (r, v, cb) =>
|
||||||
|
!v || /^[1-9]\d*|0$/g.test(v) ? cb() : cb("请输入正整数")
|
||||||
|
}
|
||||||
|
],
|
||||||
|
isHaveUnion: [
|
||||||
|
{required: true, message: "请选择是否有公会", trigger: "change"}
|
||||||
|
],
|
||||||
|
unionNumber: [
|
||||||
|
{required: true, message: "请输入公会会员人数", trigger: "change"},
|
||||||
|
{
|
||||||
|
validator: (r, v, cb) =>
|
||||||
|
!v || /^[1-9]\d*|0$/g.test(v) ? cb() : cb("请输入正整数")
|
||||||
|
}
|
||||||
|
],
|
||||||
|
isHaveYoung: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请选择是否有共青团组织",
|
||||||
|
trigger: "change"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
youngNumber: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请输入共青团组织人数",
|
||||||
|
trigger: "change"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
validator: (r, v, cb) =>
|
||||||
|
!v || /^[1-9]\d*|0$/g.test(v) ? cb() : cb("请输入正整数")
|
||||||
|
}
|
||||||
|
],
|
||||||
|
isHaveWoman: [
|
||||||
|
{required: true, message: "请选择是否有妇联组织", trigger: "change"}
|
||||||
|
],
|
||||||
|
womanNumber: [
|
||||||
|
{required: true, message: "请输入妇女人数", trigger: "change"},
|
||||||
|
{
|
||||||
|
validator: (r, v, cb) =>
|
||||||
|
!v || /^[1-9]\d*|0$/g.test(v) ? cb() : cb("请输入正整数")
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
isForeign() {
|
||||||
|
return [
|
||||||
|
{name: "是", label: "1"},
|
||||||
|
{name: "否", label: "0"}
|
||||||
|
];
|
||||||
|
},
|
||||||
|
isBuildParty() {
|
||||||
|
return [
|
||||||
|
{name: "是", label: "1"},
|
||||||
|
{name: "否", label: "0"}
|
||||||
|
];
|
||||||
|
},
|
||||||
|
isHaveParty() {
|
||||||
|
return [
|
||||||
|
{name: "是", label: "1"},
|
||||||
|
{name: "否", label: "0"}
|
||||||
|
];
|
||||||
|
},
|
||||||
|
isHaveUnion() {
|
||||||
|
return [
|
||||||
|
{name: "是", label: "1"},
|
||||||
|
{name: "否", label: "0"}
|
||||||
|
];
|
||||||
|
},
|
||||||
|
isHaveYoung() {
|
||||||
|
return [
|
||||||
|
{name: "是", label: "1"},
|
||||||
|
{name: "否", label: "0"}
|
||||||
|
];
|
||||||
|
},
|
||||||
|
isHaveWoman() {
|
||||||
|
return [
|
||||||
|
{name: "是", label: "1"},
|
||||||
|
{name: "否", label: "0"}
|
||||||
|
];
|
||||||
|
},
|
||||||
|
gridTreeOps() {
|
||||||
|
return {
|
||||||
|
emitPath: false,
|
||||||
|
value: "id",
|
||||||
|
label: "girdName",
|
||||||
|
children: "girdList"
|
||||||
|
};
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 监听
|
||||||
|
watch: {},
|
||||||
|
// 实例创建后
|
||||||
|
created() {
|
||||||
|
this.dict
|
||||||
|
.load(
|
||||||
|
"twoNewOrgCompanyCategory",
|
||||||
|
"twoNewOrgDangerousType",
|
||||||
|
"twoNewOrgConcernDegree"
|
||||||
|
)
|
||||||
|
.then(() => {
|
||||||
|
});
|
||||||
|
|
||||||
|
this.getGridTree();
|
||||||
|
this.formData.areaId = this.user.info.areaId;
|
||||||
|
|
||||||
|
if (this.params && this.params.id) {
|
||||||
|
this.id = this.params.id;
|
||||||
|
this.getInfoList(this.params.id);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onShow() {
|
||||||
|
},
|
||||||
|
// 实例渲染后
|
||||||
|
mounted() {
|
||||||
|
},
|
||||||
|
// 方法
|
||||||
|
methods: {
|
||||||
|
getInfoList(id) {
|
||||||
|
this.instance
|
||||||
|
.post(`/app/apptwoneworganization/queryDetailById?id=${id}`)
|
||||||
|
.then(res => {
|
||||||
|
if (res.code === 0) {
|
||||||
|
this.formData = res.data;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 确定新增
|
||||||
|
confirm() {
|
||||||
|
this.$refs["ruleForm"].validate(valid => {
|
||||||
|
if (valid) {
|
||||||
|
this.instance
|
||||||
|
.post(`/app/apptwoneworganization/addOrUpdate`, {
|
||||||
|
...this.formData
|
||||||
|
})
|
||||||
|
.then(res => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
this.$message.success("提交成功");
|
||||||
|
this.cancel(true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 返回按钮
|
||||||
|
cancel(isRefresh) {
|
||||||
|
this.$emit("change", {
|
||||||
|
type: "list",
|
||||||
|
isRefresh: !!isRefresh
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
getGridTree() {
|
||||||
|
this.instance.post("/app/appgirdinfo/listAllByTop").then(res => {
|
||||||
|
if (res.data) {
|
||||||
|
this.gridTree = res.data;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
::v-deep.ai-form {
|
||||||
|
.ai-card {
|
||||||
|
.ai-card-body {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
.isforeign {
|
||||||
|
margin-right: 109px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.width {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.girdId {
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
.el-form-item__content {
|
||||||
|
.el-cascader {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
::v-deep .ai-form .el-form-item .el-form-item__content {
|
||||||
|
margin-left: 164px!important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
192
project/pingchang/apps/AppNewSociety/components/List.vue
Normal file
192
project/pingchang/apps/AppNewSociety/components/List.vue
Normal file
@@ -0,0 +1,192 @@
|
|||||||
|
<template>
|
||||||
|
<ai-list class="list">
|
||||||
|
<template slot="title">
|
||||||
|
<ai-title title="新社会组织管理" isShowBottomBorder></ai-title>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template slot="content">
|
||||||
|
<ai-search-bar>
|
||||||
|
<template #left>
|
||||||
|
<el-button size="small" type="primary" icon="iconfont iconAdd" @click="add('')">添加</el-button>
|
||||||
|
<ai-select
|
||||||
|
v-model="search.socialType"
|
||||||
|
placeholder="社会组织类别"
|
||||||
|
clearable
|
||||||
|
@change="(page.current = 1), getList()"
|
||||||
|
:selectList="dict.getDict('twoNewOrgSocialType')"
|
||||||
|
></ai-select>
|
||||||
|
|
||||||
|
<ai-select
|
||||||
|
v-model="search.concernDegree"
|
||||||
|
placeholder="关注程度"
|
||||||
|
clearable
|
||||||
|
@change="(page.current = 1), getList()"
|
||||||
|
:selectList="dict.getDict('twoNewOrgConcernDegree')"
|
||||||
|
></ai-select>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template slot="right">
|
||||||
|
<el-input
|
||||||
|
v-model="search.name"
|
||||||
|
size="small"
|
||||||
|
placeholder="社会组织名称"
|
||||||
|
prefix-icon="iconfont iconSearch"
|
||||||
|
clearable
|
||||||
|
@change="(page.current = 1), getList()"
|
||||||
|
/>
|
||||||
|
<!-- <el-button
|
||||||
|
class="el-button"
|
||||||
|
type="primary"
|
||||||
|
icon="el-icon-search"
|
||||||
|
size="small"
|
||||||
|
@click="(page.current = 1), getList()"
|
||||||
|
>查询</el-button
|
||||||
|
>
|
||||||
|
<el-button
|
||||||
|
class="el-button"
|
||||||
|
icon="el-icon-refresh-right"
|
||||||
|
@click="reset()"
|
||||||
|
>重置</el-button
|
||||||
|
> -->
|
||||||
|
</template>
|
||||||
|
</ai-search-bar>
|
||||||
|
|
||||||
|
<ai-table
|
||||||
|
class="ai-table"
|
||||||
|
:tableData="tableData"
|
||||||
|
:col-configs="colConfigs"
|
||||||
|
:total="page.total"
|
||||||
|
:current.sync="page.current"
|
||||||
|
:size.sync="page.size"
|
||||||
|
@getList="getList"
|
||||||
|
:dict="dict"
|
||||||
|
>
|
||||||
|
<el-table-column
|
||||||
|
slot="options"
|
||||||
|
label="操作"
|
||||||
|
align="center"
|
||||||
|
fixed="right"
|
||||||
|
width="200"
|
||||||
|
>
|
||||||
|
<template slot-scope="{ row }">
|
||||||
|
<div class="table-options">
|
||||||
|
<el-button type="text" @click="add(row.id)">编辑</el-button>
|
||||||
|
<el-button type="text" @click="toDelete(row.id)">删除</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</ai-table>
|
||||||
|
</template>
|
||||||
|
</ai-list>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: "List",
|
||||||
|
// 组件
|
||||||
|
components: {},
|
||||||
|
props: { instance: Function, dict: Object, params: Object },
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tableData: [],
|
||||||
|
colConfigs: [
|
||||||
|
{ prop: "name", label: "社会组织名称" },
|
||||||
|
{
|
||||||
|
prop: "socialType",
|
||||||
|
label: "社会组织类别",
|
||||||
|
dict: "twoNewOrgSocialType"
|
||||||
|
},
|
||||||
|
{ prop: "administratorName", label: "负责人姓名" },
|
||||||
|
{ prop: "administratorPhone", label: "负责人联系方式" },
|
||||||
|
{ prop: "areaName", label: "所属区域" },
|
||||||
|
{
|
||||||
|
prop: "concernDegree",
|
||||||
|
label: "关注程度",
|
||||||
|
dict: "twoNewOrgConcernDegree"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
page: {
|
||||||
|
size: 10,
|
||||||
|
current: 1,
|
||||||
|
total: 0
|
||||||
|
},
|
||||||
|
search: {
|
||||||
|
name: "",
|
||||||
|
socialType: "",
|
||||||
|
concernDegree: ""
|
||||||
|
},
|
||||||
|
id: ""
|
||||||
|
};
|
||||||
|
},
|
||||||
|
// 计算
|
||||||
|
computed: {},
|
||||||
|
// 监听
|
||||||
|
watch: {},
|
||||||
|
created() {
|
||||||
|
this.dict.load("twoNewOrgSocialType", "twoNewOrgConcernDegree").then(() => {
|
||||||
|
this.getList();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
mounted() {},
|
||||||
|
// 实例创建后
|
||||||
|
onShow() {},
|
||||||
|
// 实例渲染后
|
||||||
|
// 方法
|
||||||
|
methods: {
|
||||||
|
getList() {
|
||||||
|
this.instance
|
||||||
|
.post(`/app/apptwoneworganization/list`, null, {
|
||||||
|
params: {
|
||||||
|
...this.page,
|
||||||
|
...this.search,
|
||||||
|
bizType: 1
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then(res => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
this.tableData = res.data.records;
|
||||||
|
this.page.total = res.data.total;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 添加
|
||||||
|
add(id) {
|
||||||
|
this.$emit("change", {
|
||||||
|
type: "Add",
|
||||||
|
params: {
|
||||||
|
id: id || ""
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
toDelete(id) {
|
||||||
|
this.$confirm("删除后不可恢复,确定删除该数据?").then(() => {
|
||||||
|
this.instance
|
||||||
|
.post(`/app/apptwoneworganization/delete?ids=${id}`)
|
||||||
|
.then(res => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
this.$message.success("删除成功!");
|
||||||
|
this.getList();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 重置
|
||||||
|
reset() {
|
||||||
|
Object.keys(this.search).forEach(e => {
|
||||||
|
this.search[e] = "";
|
||||||
|
});
|
||||||
|
this.getList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.list {
|
||||||
|
height: 100%;
|
||||||
|
overflow: auto;
|
||||||
|
}</style>
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
<template>
|
||||||
|
<section class="AppTwoNewOrganizationSta">
|
||||||
|
<ai-list>
|
||||||
|
<template slot="title">
|
||||||
|
<ai-title :isShowBottomBorder="false" title="两新组织统计" />
|
||||||
|
</template>
|
||||||
|
<template slot="tabs">
|
||||||
|
<el-tabs v-model="bizType">
|
||||||
|
<el-tab-pane v-for="tab in tabs" :key="tab.name" v-bind="tab" lazy>
|
||||||
|
<component
|
||||||
|
:is="tab.comp"
|
||||||
|
v-if="bizType == tab.name"
|
||||||
|
:instance="instance"
|
||||||
|
:dict="dict"
|
||||||
|
:permissions="permissions"
|
||||||
|
/>
|
||||||
|
</el-tab-pane>
|
||||||
|
</el-tabs>
|
||||||
|
</template>
|
||||||
|
</ai-list>
|
||||||
|
</section>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { mapState } from "vuex";
|
||||||
|
import StaPane from "./staPane";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "AppTwoNewOrganizationSta",
|
||||||
|
components: { StaPane },
|
||||||
|
label: "两新组织统计",
|
||||||
|
props: {
|
||||||
|
instance: Function,
|
||||||
|
dict: Object,
|
||||||
|
permissions: Function
|
||||||
|
},
|
||||||
|
provide() {
|
||||||
|
return {
|
||||||
|
top: this
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapState(["user"]),
|
||||||
|
tabs() {
|
||||||
|
return [
|
||||||
|
{ label: "新经济组织统计", name: "0", comp: StaPane },
|
||||||
|
{ label: "新社会组织统计", name: "1", comp: StaPane }
|
||||||
|
];
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
bizType: "0"
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.AppTwoNewOrganizationSta {
|
||||||
|
height: 100%;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
410
project/pingchang/apps/AppTwoNewOrganizationSta/staPane.vue
Normal file
410
project/pingchang/apps/AppTwoNewOrganizationSta/staPane.vue
Normal file
@@ -0,0 +1,410 @@
|
|||||||
|
<template>
|
||||||
|
<section class="staPane">
|
||||||
|
<ai-list isTabs>
|
||||||
|
<template #blank>
|
||||||
|
<ai-tree-menu title="组织目录" @search="v=>$refs.areaTree.filter(v)">
|
||||||
|
<el-tree ref="areaTree" lazy node-key="id" :load="getAreas"
|
||||||
|
:filter-node-method="handleTreeFilter"
|
||||||
|
:default-expanded-keys="[selectedAreaId]"
|
||||||
|
@node-click="handleSelectArea"
|
||||||
|
:props="{label:'name',isLeaf:'leaf'}"/>
|
||||||
|
</ai-tree-menu>
|
||||||
|
<el-scrollbar>
|
||||||
|
<div class="mainPane">
|
||||||
|
<el-row type="flex">
|
||||||
|
<div class="cardPane orgCountMap" v-for="v in orgCountMap" :key="v.key">
|
||||||
|
<b v-html="v.name"/>
|
||||||
|
<span v-html="v.desc"/>
|
||||||
|
<b class="count" v-html="v.v1"/>
|
||||||
|
</div>
|
||||||
|
</el-row>
|
||||||
|
<el-row type="flex">
|
||||||
|
<div class="cardPane">
|
||||||
|
<ai-title title="各类组织成员数量" class="pad-l32"/>
|
||||||
|
<div id="orgMemberCountMapChart"/>
|
||||||
|
</div>
|
||||||
|
<div class="cardPane">
|
||||||
|
<ai-title title="待建党组织关注度统计" class="pad-l32"/>
|
||||||
|
<div id="buildPartyCountMapChart"/>
|
||||||
|
</div>
|
||||||
|
</el-row>
|
||||||
|
<el-row type="flex" v-if="top.bizType==0">
|
||||||
|
<div class="cardPane">
|
||||||
|
<ai-title title="新经济组织类型分布" class="pad-l32"/>
|
||||||
|
<div id="companyCategoryCountMapChart"/>
|
||||||
|
</div>
|
||||||
|
<div class="cardPane">
|
||||||
|
<ai-title title="安全隐患类型占比" class="pad-l32"/>
|
||||||
|
<div id="dangerousTypeCountMapChart"/>
|
||||||
|
</div>
|
||||||
|
</el-row>
|
||||||
|
<el-row type="flex" v-if="top.bizType==1">
|
||||||
|
<div class="cardPane">
|
||||||
|
<ai-title title="新社会组织类型分布" class="pad-l32"/>
|
||||||
|
<div id="socialTypeCountMapChart"/>
|
||||||
|
</div>
|
||||||
|
<div class="cardPane">
|
||||||
|
<ai-title title="外资背景统计" class="pad-l32"/>
|
||||||
|
<div id="foreignCountMapChart"/>
|
||||||
|
</div>
|
||||||
|
</el-row>
|
||||||
|
</div>
|
||||||
|
</el-scrollbar>
|
||||||
|
</template>
|
||||||
|
</ai-list>
|
||||||
|
</section>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {mapState} from "vuex";
|
||||||
|
import * as echarts from "echarts";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "staPane",
|
||||||
|
label: "两新组织统计",
|
||||||
|
props: {
|
||||||
|
instance: Function,
|
||||||
|
dict: Object,
|
||||||
|
permissions: Function,
|
||||||
|
},
|
||||||
|
inject: ['top'],
|
||||||
|
computed: {
|
||||||
|
...mapState(['user']),
|
||||||
|
typeName() {
|
||||||
|
return this.top.bizType == 0 ? '新经济' : '新社会'
|
||||||
|
},
|
||||||
|
orgCountMap() {
|
||||||
|
let init = [
|
||||||
|
{name: `${this.typeName}组织总量`, desc: `当前所有的${this.typeName}组织总数量`, key: "zzzl", v1: 0},
|
||||||
|
{name: "含有党群组织的数量", desc: `含有党群组织的${this.typeName}组织总数量`, key: "dqzzsl", v1: 0},
|
||||||
|
{name: "具备建立中共党组织条件的数量", desc: "具备条件但尚未建立党组织的数量", key: "jbjldzztjsl", v1: 0}
|
||||||
|
]
|
||||||
|
return init.map(e => ({
|
||||||
|
...e,
|
||||||
|
v1: Number(this.meta.orgCountMap?.[e.key]) || 0
|
||||||
|
}))
|
||||||
|
},
|
||||||
|
chartOps() {
|
||||||
|
let orgMemberCountMapData = this.dict.getDict('orgMemberTypes').map(e => [e.dictName, Number(this.meta?.orgMemberCountMap?.[e.dictValue] || 0)]),
|
||||||
|
buildPartyCountMapData = this.dict.getDict('twoNewOrgConcernDegree').map(e => [e.dictName, Number(this.meta?.buildPartyCountMap?.[e.dictValue] || 0)]),
|
||||||
|
companyCategoryCountMapData = this.dict.getDict('twoNewOrgCompanyCategory').map(e => [e.dictName, Number(this.meta?.companyCategoryCountMap?.[e.dictValue] || 0)]),
|
||||||
|
dangerousTypeCountMapData = this.dict.getDict('twoNewOrgDangerousType').slice(1).map(e => [e.dictName, Number(this.meta?.dangerousTypeCountMap?.[e.dictValue] || 0)]),
|
||||||
|
socialTypeCountMapData = this.dict.getDict('twoNewOrgSocialType').map(e => [e.dictName, Number(this.meta?.socialTypeCountMap?.[e.dictValue] || 0)]),
|
||||||
|
foreignCountMapData = this.dict.getDict('twoNewOrgIsForeign').map(e => [e.dictName, Number(this.meta?.foreignCountMap?.[e.dictValue] || 0)])
|
||||||
|
return {
|
||||||
|
orgMemberCountMap: {
|
||||||
|
tooltip: {},
|
||||||
|
grid: {
|
||||||
|
left: 82,
|
||||||
|
right: 40,
|
||||||
|
bottom: 80,
|
||||||
|
top: 30
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
type: 'category', axisLine: {lineStyle: {color: '#D8DDE8'}}, axisTick: false,
|
||||||
|
axisLabel: {color: '#666', margin: 19}
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: 'value', axisLine: false, min: 0, minInterval: 1,
|
||||||
|
axisLabel: {color: '#666', margin: 19},
|
||||||
|
splitLine: {lineStyle: {color: '#D8DDE8', type: 'dashed'}}
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
type: 'bar',
|
||||||
|
barWidth: 24,
|
||||||
|
itemStyle: {color: '#22AA99'},
|
||||||
|
emphasis: {itemStyle: {color: "#2266FF"}},
|
||||||
|
},
|
||||||
|
dataset: {
|
||||||
|
source: orgMemberCountMapData
|
||||||
|
}
|
||||||
|
},
|
||||||
|
buildPartyCountMap: {
|
||||||
|
tooltip: {},
|
||||||
|
grid: {
|
||||||
|
left: 82,
|
||||||
|
right: 40,
|
||||||
|
bottom: 80,
|
||||||
|
top: 30
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
type: 'category', axisLine: {lineStyle: {color: '#D8DDE8'}}, axisTick: false,
|
||||||
|
axisLabel: {color: '#666', margin: 19}
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: 'value', axisLine: false, min: 0, minInterval: 1,
|
||||||
|
axisLabel: {color: '#666', margin: 19},
|
||||||
|
splitLine: {lineStyle: {color: '#D8DDE8', type: 'dashed'}}
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
type: 'bar',
|
||||||
|
barWidth: 24,
|
||||||
|
itemStyle: {color: '#22AA99'},
|
||||||
|
emphasis: {itemStyle: {color: "#2266FF"}},
|
||||||
|
},
|
||||||
|
dataset: {
|
||||||
|
source: buildPartyCountMapData
|
||||||
|
}
|
||||||
|
},
|
||||||
|
companyCategoryCountMap: {
|
||||||
|
legend: {
|
||||||
|
orient: 'vertical', left: 220, y: 'center',
|
||||||
|
itemGap: 4, itemWidth: 8, itemHeight: 8,
|
||||||
|
formatter: name => {
|
||||||
|
let item = companyCategoryCountMapData.find(e => e?.[0] == name)
|
||||||
|
return ` {a|${name.replace(/(.{10}).*/g, '$1...')}} {b|${item?.[1]}}`
|
||||||
|
},
|
||||||
|
tooltip: {show: true},
|
||||||
|
textStyle: {
|
||||||
|
rich: {
|
||||||
|
a: {color: '#666', width: 130, fontSize: 14, lineHeight: 22},
|
||||||
|
b: {fontWeight: 'bold', align: 'right', color: '#333', fontSize: 14, width: 54, lineHeight: 22}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
tooltip: {},
|
||||||
|
color: ['#02A499', '#F8B425', '#EC4461', '#D846E4', '#38A4F8'],
|
||||||
|
series: {
|
||||||
|
name: '重点青少年类型分布',
|
||||||
|
center: [100, '50%'], radius: 80,
|
||||||
|
type: 'pie', label: false,
|
||||||
|
itemStyle: {borderColor: '#fff', borderWidth: 2},
|
||||||
|
},
|
||||||
|
dataset: {
|
||||||
|
source: companyCategoryCountMapData
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dangerousTypeCountMap: {
|
||||||
|
legend: {
|
||||||
|
orient: 'vertical', left: 220, y: 'center',
|
||||||
|
itemGap: 4, itemWidth: 8, itemHeight: 8,
|
||||||
|
formatter: name => {
|
||||||
|
let item = dangerousTypeCountMapData.find(e => e?.[0] == name)
|
||||||
|
return ` {a|${name.replace(/(.{10}).*/g, '$1...')}} {b|${item?.[1]}}`
|
||||||
|
},
|
||||||
|
tooltip: {show: true},
|
||||||
|
textStyle: {
|
||||||
|
rich: {
|
||||||
|
a: {color: '#666', width: 166, fontSize: 14, lineHeight: 22},
|
||||||
|
b: {fontWeight: 'bold', align: 'right', color: '#333', fontSize: 14, lineHeight: 22}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
tooltip: {},
|
||||||
|
color: ['#02A499', '#F8B425', '#EC4461', '#D846E4', '#38A4F8'],
|
||||||
|
series: {
|
||||||
|
name: '重点青少年性别分布', type: 'pie',
|
||||||
|
center: [100, '50%'], radius: [40, 80], label: false,
|
||||||
|
itemStyle: {borderColor: '#fff', borderWidth: 2},
|
||||||
|
},
|
||||||
|
dataset: {
|
||||||
|
source: dangerousTypeCountMapData
|
||||||
|
}
|
||||||
|
},
|
||||||
|
socialTypeCountMap: {
|
||||||
|
legend: {
|
||||||
|
orient: 'vertical', left: 220, y: 'center',
|
||||||
|
itemGap: 4, itemWidth: 8, itemHeight: 8,
|
||||||
|
formatter: name => {
|
||||||
|
let item = socialTypeCountMapData.find(e => e?.[0] == name)
|
||||||
|
return ` {a|${name.replace(/(.{10}).*/g, '$1...')}} {b|${item?.[1]}}`
|
||||||
|
},
|
||||||
|
tooltip: {show: true},
|
||||||
|
textStyle: {
|
||||||
|
rich: {
|
||||||
|
a: {color: '#666', width: 130, fontSize: 14, lineHeight: 22},
|
||||||
|
b: {fontWeight: 'bold', align: 'right', color: '#333', fontSize: 14, width: 54, lineHeight: 22}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
tooltip: {},
|
||||||
|
color: ['#02A499', '#F8B425', '#EC4461', '#D846E4', '#38A4F8'],
|
||||||
|
series: {
|
||||||
|
name: '重点青少年类型分布',
|
||||||
|
center: [100, '50%'], radius: 80,
|
||||||
|
type: 'pie', label: false,
|
||||||
|
itemStyle: {borderColor: '#fff', borderWidth: 2},
|
||||||
|
},
|
||||||
|
dataset: {
|
||||||
|
source: socialTypeCountMapData
|
||||||
|
}
|
||||||
|
},
|
||||||
|
foreignCountMap: {
|
||||||
|
legend: {
|
||||||
|
orient: 'vertical', left: 220, y: 'center',
|
||||||
|
itemGap: 4, itemWidth: 8, itemHeight: 8,
|
||||||
|
formatter: name => {
|
||||||
|
let item = foreignCountMapData.find(e => e?.[0] == name)
|
||||||
|
return ` {a|${name.replace(/(.{10}).*/g, '$1...')}} {b|${item?.[1]}}`
|
||||||
|
},
|
||||||
|
tooltip: {show: true},
|
||||||
|
textStyle: {
|
||||||
|
rich: {
|
||||||
|
a: {color: '#666', width: 166, fontSize: 14, lineHeight: 22},
|
||||||
|
b: {fontWeight: 'bold', align: 'right', color: '#333', fontSize: 14, lineHeight: 22}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
tooltip: {},
|
||||||
|
color: ['#02A499', '#F8B425', '#EC4461', '#D846E4', '#38A4F8'],
|
||||||
|
series: {
|
||||||
|
name: '重点青少年性别分布', type: 'pie',
|
||||||
|
center: [100, '50%'], radius: [40, 80], label: false,
|
||||||
|
itemStyle: {borderColor: '#fff', borderWidth: 2},
|
||||||
|
},
|
||||||
|
dataset: {
|
||||||
|
source: foreignCountMapData
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
selectedAreaId: "",
|
||||||
|
meta: {},
|
||||||
|
charts: {
|
||||||
|
orgMemberCountMap: null,
|
||||||
|
buildPartyCountMap: null,
|
||||||
|
companyCategoryCountMap: null,
|
||||||
|
dangerousTypeCountMap: null,
|
||||||
|
socialTypeCountMap: null,
|
||||||
|
foreignCountMap: null,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getAreas(node, resolve) {
|
||||||
|
if (node.level == 0) {
|
||||||
|
let {areaName: name, areaId: id} = this.user.info
|
||||||
|
resolve([{name, id}])
|
||||||
|
} else {
|
||||||
|
let {id} = node?.data
|
||||||
|
this.instance.post("/admin/area/queryAreaByParentId", null, {
|
||||||
|
params: {id}
|
||||||
|
}).then(res => {
|
||||||
|
if (res?.data) {
|
||||||
|
resolve(res.data.map(e => ({...e, leaf: e.type == 5})))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handleTreeFilter(v, data) {
|
||||||
|
return data.name.indexOf(v) > -1
|
||||||
|
},
|
||||||
|
getStaData() {
|
||||||
|
let {bizType} = this.top
|
||||||
|
return this.instance.post("/app/apptwoneworganization/countByAreaIdAndBizType", null, {
|
||||||
|
params: {areaId: this.selectedAreaId, bizType}
|
||||||
|
}).then(res => {
|
||||||
|
if (res?.data) {
|
||||||
|
this.meta = res.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleSelectArea({id}) {
|
||||||
|
this.selectedAreaId = id
|
||||||
|
this.getStaData().then(() => this.getChartData())
|
||||||
|
},
|
||||||
|
initEcharts() {
|
||||||
|
Object.keys(this.charts).map(id => {
|
||||||
|
let ref = document.getElementById(id + "Chart")
|
||||||
|
if (ref) this.charts[id] = echarts.init(ref)
|
||||||
|
})
|
||||||
|
this.getChartData()
|
||||||
|
},
|
||||||
|
getChartData() {
|
||||||
|
Object.keys(this.charts).map(e => {
|
||||||
|
this.charts[e]?.setOption(this.chartOps?.[e])
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.dict.load("twoNewOrgCompanyCategory", 'twoNewOrgDangerousType',
|
||||||
|
'twoNewOrgConcernDegree', 'orgMemberTypes', 'twoNewOrgSocialType', 'twoNewOrgIsForeign')
|
||||||
|
this.selectedAreaId = JSON.parse(JSON.stringify(this.user.info.areaId))
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.initEcharts()
|
||||||
|
this.getStaData().then(() => this.getChartData())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.staPane {
|
||||||
|
height: 100%;
|
||||||
|
|
||||||
|
::v-deep .ai-list__blank {
|
||||||
|
display: flex;
|
||||||
|
height: 100% !important;
|
||||||
|
gap: 16px;
|
||||||
|
|
||||||
|
.el-scrollbar {
|
||||||
|
flex: 1;
|
||||||
|
min-width: 0;
|
||||||
|
|
||||||
|
.el-scrollbar__wrap {
|
||||||
|
overflow-x: hidden;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.mainPane {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 16px;
|
||||||
|
|
||||||
|
& > .el-row {
|
||||||
|
width: 100%;
|
||||||
|
gap: 16px;
|
||||||
|
height: auto;
|
||||||
|
|
||||||
|
& > div {
|
||||||
|
flex: 1;
|
||||||
|
min-width: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.cardPane {
|
||||||
|
background: #FFFFFF;
|
||||||
|
box-shadow: 0 0 4px 0 rgba(0, 0, 0, 0.05);
|
||||||
|
border-radius: 4px;
|
||||||
|
|
||||||
|
&.orgCountMap {
|
||||||
|
padding: 16px 24px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
height: 120px;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #888;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 8px;
|
||||||
|
|
||||||
|
b {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #333333;
|
||||||
|
|
||||||
|
&.count {
|
||||||
|
font-size: 24px;
|
||||||
|
color: #2266FF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#orgMemberCountMapChart, #buildPartyCountMapChart {
|
||||||
|
width: 100%;
|
||||||
|
height: 270px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#companyCategoryCountMapChart, #dangerousTypeCountMapChart, #socialTypeCountMapChart, #foreignCountMapChart {
|
||||||
|
width: 100%;
|
||||||
|
height: 220px;
|
||||||
|
}
|
||||||
|
.pad-l32 {
|
||||||
|
padding-left: 32px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
Reference in New Issue
Block a user