This commit is contained in:
刘仕伟
2022-03-08 18:27:52 +08:00
21 changed files with 227 additions and 229 deletions

View File

@@ -7,7 +7,7 @@
<template slot="content">
<ai-card title="基本信息">
<template #content>
<el-form ref="form" class="ai-form" :model="form" label-width="110px" label-position="right">
<el-form ref="CBookForm" class="ai-form" :model="form" label-width="110px" label-position="right">
<el-form-item label="地区" style="width: 100%;" prop="codeName">
<span style="color: #666;">{{ form.areaName }}</span>
</el-form-item>
@@ -93,7 +93,7 @@
methods: {
getInfo (id) {
this.instance.post(`/app/appconvenientaddressbook/queryDetailById?id=${id}`).then(res => {
if (res.code === 0) {
if (res?.data) {
this.form = res.data
}
})
@@ -117,7 +117,7 @@
},
confirm () {
this.$refs.form.validate((valid) => {
this.$refs.CBookForm.validate((valid) => {
if (valid) {
this.instance.post(`/app/appconvenientaddressbook/addOrUpdate`, {
...this.form,

View File

@@ -4,7 +4,8 @@
<ai-title title="三会一课" isShowBottomBorder slot="title">
<template #rightBtn>
<ai-party :instance="instance" v-model="partyId" :topOrgId="topOrgId" :name.sync="partyOrgLabel"
style="display:inline-block" @origin="changeParty" customClicker url="/app/partyOrganization/queryAllChildren">
style="display:inline-block" @origin="changeParty" customClicker
url="/app/partyOrganization/queryAllChildren">
<el-input size="small" v-model="partyOrgLabel" readonly placeholder="选择党组织">
<el-row slot="append" type="flex" class="partyPicker">
<i class="iconfont icondangyuan"/>
@@ -42,11 +43,7 @@
</template>
<template #right>
<el-input size="small" v-model="search.meetingAgenda" placeholder="会议标题/创建人"
prefix-icon="iconfont iconSearch" clearable
@keyup.enter.native="page.current=1,getAppThreeMeetingInfo()"/>
<el-button type="primary" icon="iconfont iconSearch" @click="page.current=1,getAppThreeMeetingInfo()">查询
</el-button>
<el-button icon="el-icon-refresh-right" @click="resetSearch">重置</el-button>
suffix-icon="iconfont iconSearch" clearable @change="page.current=1,getAppThreeMeetingInfo()"/>
</template>
</ai-search-bar>
<ai-search-bar>
@@ -136,18 +133,19 @@
<div class="content input-240">
<div class="flex">
<el-date-picker
v-model="searchYear"
type="year"
size="small"
style="width: 200px; margin-right: 10px;"
value-format="yyyy"
@change="getMeetStatistics"
placeholder="选择年份">
v-model="searchYear"
type="year"
size="small"
style="width: 200px; margin-right: 10px;"
value-format="yyyy"
@change="getMeetStatistics"
placeholder="选择年份">
</el-date-picker>
<el-select style="width: 200px" v-model="searchMonth" placeholder="全部" size="small" clearable class="timeSelect"
@change="getMeetStatistics">
<el-select style="width: 200px" v-model="searchMonth" placeholder="全部" size="small" clearable
class="timeSelect"
@change="getMeetStatistics">
<el-option v-for="(op,j) in dict.getDict('monthList')" :key="j" :label="op.dictName"
:value="op.dictValue"/>
:value="op.dictValue"/>
</el-select>
</div>
<ul class="totalTitle">

View File

@@ -47,28 +47,28 @@
</span>
</span>
<span class="value" v-else>-</span></el-form-item>
<ai-title title="附件" isShowBottomBorder>
<template #rightBtn>
<el-button type="text" icon="iconfont iconDownload" @click="downLoadAll">下载全部</el-button>
</template>
</ai-title>
<el-form-item label-width="0">
<div v-if="obj.annex.length">
<div class="flie" v-for="(item, index) in obj.annex" :key="index"
@click="downFile(item)">
<p>
<svg aria-hidden="true" style="width:24px;height:24px;">
<use xlink:href="#iconAppendix_UNdownload"></use>
</svg>
<span>{{ item.name }}</span>
</p>
<span style="color:#999;">{{ (item.size / 1024).toFixed(2) + "KB" }}
<span class="iconfont iconDownload" style="color:#5088FF"></span>
</span>
</div>
</div>
<div class="no-data" style="height:160px;width:100%;" v-else></div>
</el-form-item>
<!-- <ai-title title="附件" isShowBottomBorder>-->
<!-- <template #rightBtn>-->
<!-- <el-button type="text" icon="iconfont iconDownload" @click="downLoadAll">下载全部</el-button>-->
<!-- </template>-->
<!-- </ai-title>-->
<!-- <el-form-item label-width="0">-->
<!-- <div v-if="obj.annex.length">-->
<!-- <div class="flie" v-for="(item, index) in obj.annex" :key="index"-->
<!-- @click="downFile(item)">-->
<!-- <p>-->
<!-- <svg aria-hidden="true" style="width:24px;height:24px;">-->
<!-- <use xlink:href="#iconAppendix_UNdownload"></use>-->
<!-- </svg>-->
<!-- <span>{{ item.name }}</span>-->
<!-- </p>-->
<!-- <span style="color:#999;">{{ (item.size / 1024).toFixed(2) + "KB" }}-->
<!-- <span class="iconfont iconDownload" style="color:#5088FF"></span>-->
<!-- </span>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="no-data" style="height:160px;width:100%;" v-else></div>-->
<!-- </el-form-item>-->
<ai-title title="人员信息" isShowBottomBorder/>
<el-form-item label="与会组织">{{ arrLabel(obj.appThreeMeetingOrganizationList, 'name') }}</el-form-item>
<el-form-item label="主持人">{{ arrLabel(obj.hostList, 'userName') }}</el-form-item>

View File

@@ -461,7 +461,11 @@
return this.$message.error('请上传图片')
}
this.images.push(this.form.images)
this.images = [
...this.images,
...this.form.images
]
this.form.images = []
this.isShowAddImg = false
},

View File

@@ -227,7 +227,7 @@
this.instance.post(this.options.api).then(res => {
if (res.code == 0) {
if (res.data.length) {
if (this.options.type === 'table') {
if (this.options.type === 'table') {
const keys = Object.keys(res.data[0])
const list = res.data
this.options.apiData = keys.map(v => {

View File

@@ -620,7 +620,7 @@ const components = [
title: '',
moniterId: '',
monitorType: 'cmcc',
api: '/app/appzyvideoequipment/list',
api: '/app/appzyvideoequipment/list2',
border: 'border2',
sourceDataId: '',
dataType: 'staticData',

View File

@@ -1,7 +1,7 @@
<template>
<ai-detail class="family_detail">
<template slot="title">
<ai-title title="余额明细" :isShowBack="true" :isShowBottomBorder="true" @onBackClick="$emit('goBack')" ></ai-title>
<ai-title title="余额明细" :isShowBack="true" :isShowBottomBorder="true" @onBackClick="$emit('goBack')"></ai-title>
</template>
<template slot="content">
<div class="detail-info">
@@ -25,33 +25,33 @@
<ai-card title="余额变动明细">
<template slot="right">
<ai-download
:instance="instance"
url="/app/appvillagerintegraldetail/export"
:disabled="!Boolean(tableData.length)"
:params="{familyName:detailInfo.name,doType:doType}"
fileName="余额变动明细">
:instance="instance"
url="/app/appvillagerintegraldetail/export"
:disabled="!Boolean(tableData.length)"
:params="{familyId:detailInfo.id,bizType:detailInfo.doType}"
fileName="余额变动明细">
<span class="iconfont iconExported">导出</span>
</ai-download>
</template>
<template #content>
<el-select v-model="doType" placeholder="请选择类型" size='small' clearable @change="page.current=1,getList()">
<el-select v-model="doType" placeholder="请选择类型" size='small' clearable @change="page.current=1,getList()">
<el-option
v-for="(item,i) in dict.getDict('integralDetailType')"
:label="item.dictName"
:key="i"
:value="item.dictValue">
v-for="(item,i) in dict.getDict('integralDetailType')"
:label="item.dictName"
:key="i"
:value="item.dictValue">
</el-option>
</el-select>
<ai-table
style="margin-top: 16px;"
:tableData="tableData"
:col-configs="colConfigs"
:total="page.total"
:border="true"
:stripe="false"
:current.sync="page.current"
:size.sync="page.size"
@getList="getList">
style="margin-top: 16px;"
:tableData="tableData"
:col-configs="colConfigs"
:total="page.total"
:border="true"
:stripe="false"
:current.sync="page.current"
:size.sync="page.size"
@getList="getList">
</ai-table>
</template>
</ai-card>
@@ -60,153 +60,152 @@
</template>
<script>
export default {
name: 'balance',
export default {
name: 'balance',
props: {
detailInfo: {
type: Object,
require: true
props: {
detailInfo: {
type: Object,
require: true
},
instance: Function,
dict: Object
},
data() {
return {
page: {
current: 1,
size: 10,
total: 0
},
instance: Function,
dict: Object
},
doType: '',
tableData: []
}
},
data () {
return {
page: {
current: 1,
size: 10,
total: 0
created() {
this.dict.load('integralDetailType')
this.getList()
},
computed: {
colConfigs() {
const _this = this
return [
{
prop: 'doTime',
label: '时间'
},
doType: '',
tableData: []
}
},
created () {
this.dict.load('integralDetailType')
this.getList()
},
computed: {
colConfigs () {
const _this = this
return [
{
prop: 'doTime',
align: 'center',
label: '时间',
align:'left'
},
{
prop: 'bizType',
align: 'center',
label: '类型',
render (h, {row}) {
return h('span',{}, _this.dict.getLabel('integralDetailType', row.bizType))
}
},
{
prop: 'changeIntegral',
align: 'center',
label: '变动积分',
formart: v => v > 0 ? `+${v}` : v
},
{
prop: 'nowIntegral',
align: 'center',
label: '剩余积分'
},
{
prop: 'description',
align: 'center',
label: '事件类型',
align:'left'
{
prop: 'bizType',
align: 'center',
label: '类型',
render(h, {row}) {
return h('span', {}, _this.dict.getLabel('integralDetailType', row.bizType))
}
]
}
},
},
{
prop: 'changeIntegral',
align: 'center',
label: '变动积分',
formart: v => v > 0 ? `+${v}` : v
},
{
prop: 'nowIntegral',
align: 'center',
label: '剩余积分'
},
{
prop: 'description',
label: '事件类型',
}
]
}
},
methods: {
getList () {
this.instance.post('/app/appvillagerintegraldetail/list', null, {
params: {
...this.page,
familyId:this.detailInfo.id,
bizType:this.doType
}
}).then(res => {
if (res.code === 0) {
this.tableData = res.data.records
this.page.total = res.data.total
}
})
}
methods: {
getList() {
this.instance.post('/app/appvillagerintegraldetail/list', null, {
params: {
...this.page,
familyId: this.detailInfo.id,
bizType: this.doType
}
}).then(res => {
if (res.code === 0) {
this.tableData = res.data.records
this.page.total = res.data.total
}
})
}
}
}
</script>
<style lang="scss" scoped>
.family_detail{
height: 100%;
background-color: #fff;
.family_detail {
height: 100%;
background-color: #fff;
::v-deep .ai-card__body {
padding: 12px 16px 20px!important;
}
::v-deep .ai-card__body {
padding: 12px 16px 20px !important;
}
.detail-info {
display: flex;
align-items: center;
margin-bottom: 20px;
.detail-info {
display: flex;
align-items: center;
margin-bottom: 20px;
.detail-info__item {
flex: 1;
height: 96px;
margin-right: 20px;
padding: 16px 24px;
background: #FFFFFF;
box-shadow: 0px 4px 6px -2px rgba(15, 15, 21, 0.15);
border-radius: 4px;
.detail-info__item {
flex: 1;
height: 96px;
margin-right: 20px;
padding: 16px 24px;
background: #FFFFFF;
box-shadow: 0 4px 6px -2px rgba(15, 15, 21, 0.15);
border-radius: 4px;
&:last-child {
margin-right: 0;
}
h2 {
margin-bottom: 8px;
color: #888888;
font-size: 16px;
font-weight: bold;
}
span {
display: block;
line-height: 32px;
font-size: 24px;
font-weight: bold;
color: #222;
}
&:last-child {
margin-right: 0;
}
}
.iconExported{
color:#5088FF;
font-size: 12px;
cursor: pointer;
}
.info{
padding: 16px 0 16px 0;
}
.do_type{
height: 56px;
}
.fs-14{
::v-deep .el-table--small{
font-size: 14px!important;
h2 {
margin-bottom: 8px;
color: #888888;
font-size: 16px;
font-weight: bold;
}
span {
display: block;
line-height: 32px;
font-size: 24px;
font-weight: bold;
color: #222;
}
}
}
</style>
.iconExported {
color: #5088FF;
font-size: 12px;
cursor: pointer;
}
.info {
padding: 16px 0 16px 0;
}
.do_type {
height: 56px;
}
.fs-14 {
::v-deep .el-table--small {
font-size: 14px !important;
}
}
}
</style>

View File

@@ -1,8 +1,8 @@
<template>
<section class="approval-manage">
<section class="AppApprovalManage">
<ai-list v-if="showList">
<template slot="title">
<ai-title title="审批管理" :isShowBottomBorder="false"></ai-title>
<ai-title title="审批管理" :isShowBottomBorder="false"/>
</template>
<template slot="tabs">
<el-tabs class="tabs-page" v-model="currIndex">
@@ -86,7 +86,7 @@
</script>
<style lang="scss" scoped>
.approval-manage {
.AppApprovalManage {
width: 100%;
height: 100%;
background-color: #F3F6F9;

View File

@@ -61,7 +61,7 @@
</el-form-item>
</div>
<template v-if="applyForm=={}">
<div class="no-data"></div>
<div class="no-data"/>
</template>
</div>
</el-form>

View File

@@ -587,11 +587,7 @@
},
onheadPictureChange (e) {
if (e.length) {
this.form.isShowheadPicture = true
} else {
this.form.isShowheadPicture = false
}
this.form.isShowheadPicture = !!e.length;
},
init () {
@@ -757,7 +753,7 @@
onConfirm (status) {
if (this.params.templateType == 1) {
this.submitTemp()
// this.submitTemp()
}
if (this.form.periodValidityType === '1') {

View File

@@ -28,5 +28,7 @@
"AppMeetingChinaunion": "三会一课",
"AppPartyHistoryClass": "党员学习",
"AppPartyOrganization": "党组织管理",
"AppPartyMember": "党员管理"
"AppPartyMember": "党员管理",
"AppLicence": "产品许可",
"AppContentManage": "内容中心"
}

View File

@@ -4,7 +4,7 @@
<template #title>
<ai-title title="公文详情" isShowBottomBorder isShowBack @onBackClick="cancel(true)">
<template #rightBtn>
<ai-wechat-selecter :instance="instance" v-model="addUser" :isMultiple="form.readType == '0' ? false : true" @change="onChange" v-if="form.status === '0'">
<ai-wechat-selecter :instance="instance" v-model="addUser" :isMultiple="form.readType!='0'" @change="onChange" v-if="form.status === '0'">
<el-button
size="small"
type="primary"
@@ -12,7 +12,7 @@
开始流转
</el-button>
</ai-wechat-selecter>
<ai-wechat-selecter :instance="instance" v-model="addUser" :isMultiple="form.readType == '0' ? false : true" @change="onChange" v-if="form.status === '2' && form.readType == '0'">
<ai-wechat-selecter :instance="instance" v-model="addUser" :isMultiple="form.readType!='0'" @change="onChange" v-if="form.status === '2' && form.readType == '0'">
<el-button
size="small"
type="primary"
@@ -28,7 +28,7 @@
结束流转</el-button>
</template>
</ai-title>
</template>
<template #content>
<ai-card :title="form.documentName">
@@ -131,7 +131,7 @@
class="iconfont iconDelete"
title="删除"
style="cursor: pointer;"
@click="remove(row.id)">
@click="remove(row.flowId)">
</span>
</template>
</el-table-column>
@@ -220,9 +220,9 @@ export default {
this.showDetail = true
this.isAdd = false
this.getDetail()
},
methods: {
methods: {
remove (id) {
if(this.form.flowUsers.length<=1){
return this.$message.error("至少留一个流转对象!");
@@ -560,4 +560,4 @@ export default {
}
}
}
</style>
</style>

View File

@@ -80,6 +80,7 @@
:size.sync="page.size"
@getList="getList"
@selection-change="handleSelectionChange"
:dict="dict"
>
<el-table-column slot="selection" type="selection" width="55"></el-table-column>
<el-table-column slot="options" label="操作" align="center" width="200">
@@ -142,24 +143,21 @@ export default {
label: "公文类型",
width: 120,
align: "center",
formart: (documentType) =>
this.$dict.getLabel("officialDocumentName", documentType),
dict: "officialDocumentName"
},
{
prop: "readType",
label: "阅示类型",
width: 120,
align: "center",
formart: (readType) =>
this.$dict.getLabel("officialDocumentReadType", readType),
dict: "officialDocumentReadType"
},
{
prop: "confidentialityLevel",
label: "保密等级",
width: 120,
align: "center",
formart: (confidentialityLevel) =>
this.$dict.getLabel("officialDocumentConfidentialityLevel", confidentialityLevel),
dict: "officialDocumentConfidentialityLevel"
},
{
prop: "flowUserName",
@@ -192,7 +190,7 @@ export default {
];
},
},
mounted() {
created() {
this.dict.load('officialDocumentName', 'officialDocumentConfidentialityLevel', 'officialDocumentReadType', 'documentStatus').then(() => {
this.$nextTick(() => this.getList())
})

View File

@@ -28,7 +28,7 @@
<ai-info-item label="审核意见" v-if="info.auditStatus === '2'" isLine :value="info.auditOpinion"></ai-info-item>
<ai-info-item label="积分规则类别" v-if="info.auditStatus === '1'" :value="dict.getLabel('atWillReportType', info.auditIntegralType)"></ai-info-item>
<ai-info-item label="积分规则事项" v-if="info.auditStatus === '1'" :value="info.auditRuleName"></ai-info-item>
<ai-info-item label="积分调整" isLine v-if="info.auditStatus === '1'" :value="(info.auditIntegral >= 0 ? + info.auditIntegral : info.auditIntegral) + '分'"></ai-info-item>
<ai-info-item label="积分调整" isLine v-if="info.auditStatus === '1'" :value="(info.auditIntegral >= 0 ? info.auditIntegral : info.auditIntegral) + '分'"></ai-info-item>
<ai-info-item label="审核人" :value="info.auditUserName"></ai-info-item>
<ai-info-item label="审核时间" :value="info.auditTime"></ai-info-item>
</ai-wrapper>
@@ -72,7 +72,7 @@
</div>
</el-form-item>
<el-form-item label="审核意见" v-if="form.pass === '0'" prop="opinion" style="width: 100%;" :rules="[{ required: true, message: '请输入审核意见' }]">
<el-input type="textarea" :rows="5" :maxlength="500" v-model="form.opinion" clearable placeholder="请输入审核意见" show-word-limit></el-input>
<el-input type="textarea" :rows="5" :maxlength="200" v-model="form.opinion" clearable placeholder="请输入审核意见" show-word-limit></el-input>
</el-form-item>
</el-form>
</ai-dialog>

View File

@@ -71,7 +71,7 @@
<el-radio label="1"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="审核意见" prop="opinion" style="width: 100%;" :rules="[{ required: form.pass === '0' ? true : false, message: '请输入审核意见' }]">
<el-form-item label="审核意见" prop="opinion" style="width: 100%;" :rules="[{ required: form.pass === '0', message: '请输入审核意见' }]">
<el-input type="textarea" :rows="5" :maxlength="500" v-model="form.opinion" clearable placeholder="请输入审核意见" show-word-limit></el-input>
</el-form-item>
</el-form>

View File

@@ -1,7 +1,7 @@
<template>
<section class="addAborigines">
<ai-detail>
<ai-title slot="title" title="详情" isShowBack @onBackClick="$router.push({query:{}})" isShowBottomBorder></ai-title>
<ai-title slot="title" title="详情" isShowBack @onBackClick="$router.push({query:{}})" isShowBottomBorder/>
<template #content>
<ai-card title="基本信息">
<div slot="content">
@@ -193,8 +193,8 @@
<el-radio label="1"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="审核意见" prop="opinion" style="width: 100%;" :rules="[{ required: form.pass === '0' ? true : false, message: '请输入审核意见' }]">
<el-input type="textarea" :rows="5" :maxlength="500" v-model="form.opinion" clearable placeholder="请输入审核意见" show-word-limit></el-input>
<el-form-item label="审核意见" prop="opinion" style="width: 100%;" :rules="[{ required: form.pass === '0', message: '请输入审核意见' }]">
<el-input type="textarea" :rows="5" :maxlength="200" v-model="form.opinion" clearable placeholder="请输入审核意见" show-word-limit></el-input>
</el-form-item>
</el-form>
</ai-dialog>

View File

@@ -1,7 +1,7 @@
<template>
<ai-list class="villagecode">
<template slot="title">
<ai-title title="一村一" isShowBottomBorder></ai-title>
<ai-title title="一村一" isShowBottomBorder></ai-title>
</template>
<template #left>
<div class="villagecode-left">

View File

@@ -47,7 +47,7 @@
</el-radio-group>
</el-form-item>
<el-form-item label="审核意见" v-if="form.pass === '0'" prop="opinion" style="width: 100%;" :rules="[{ required: true, message: '请输入审核意见' }]">
<el-input type="textarea" :rows="5" :maxlength="500" v-model="form.opinion" clearable placeholder="请输入审核意见" show-word-limit></el-input>
<el-input type="textarea" :rows="5" :maxlength="200" v-model="form.opinion" clearable placeholder="请输入审核意见" show-word-limit></el-input>
</el-form-item>
</el-form>
</ai-dialog>

View File

@@ -121,7 +121,8 @@
this.instance.post(`/app/appvillagercircleinfo/list`, null, {
params: {
...this.search,
areaId: this.areaId
areaId: this.areaId,
createTimeEnd: this.search.createTimeEnd ? this.search.createTimeEnd + ' 23:59:59' : ''
}
}).then(res => {
if (res.code == 0) {

View File

@@ -1,7 +1,7 @@
<template>
<ai-list>
<template slot="title">
<ai-title title="积分审核" :isShowBottomBorder="false" :instance="instance" :isShowArea="true" v-model="areaId"
<ai-title title="积分维护" :isShowBottomBorder="false" :instance="instance" :isShowArea="true" v-model="areaId"
@change="changeArea"></ai-title>
</template>
<template slot="tabs">
@@ -24,7 +24,7 @@ import scoreChange from "./scoreChange";
export default {
name: 'AppScoreManage',
label: "积分审核",
label: "积分维护",
components: {pointsDeclaration, pointsDetails, pointsAppeal, scoreChange},
props: {
instance: Function,