BUG 26973

This commit is contained in:
aixianling
2022-01-25 17:06:41 +08:00
parent 2a43a20531
commit 48fa10a21b
11 changed files with 2160 additions and 2130 deletions

View File

@@ -37,7 +37,8 @@
<div class="list-item" v-for="(item, index) in list" :key="index">
<div>
<div class="list-item__title">
<h2 :style="{color: dict.getColor('questionnaireStatus', item.status)}">{{ dict.getLabel('questionnaireStatus', item.status) }}</h2>
<h2 :style="{color: dict.getColor('questionnaireStatus', item.status)}">
{{ dict.getLabel('questionnaireStatus', item.status) }}</h2>
<span :class="'type-' + item.type">{{ dict.getLabel('questionnaireType', item.type) }}</span>
</div>
<p>{{ item.title }}</p>
@@ -271,7 +272,7 @@
</template>
<script>
export default {
export default {
name: 'FormList',
props: {
instance: Function,
@@ -279,7 +280,7 @@
areaId: String
},
data () {
data() {
return {
search: {
current: 1,
@@ -290,7 +291,7 @@
title: ''
},
pickerOptions: {
disabledDate (time) {
disabledDate(time) {
return time.getTime() < Date.now() - 24 * 60 * 60 * 1000
}
},
@@ -317,7 +318,7 @@
}
},
created () {
created() {
this.loading = true
this.dict.load(['questionnaireStatus', 'questionnaireType', 'questionnaireFieldType']).then(() => {
this.getList()
@@ -325,7 +326,7 @@
},
methods: {
onClose () {
onClose() {
this.id = ''
this.editForm.commitType = '1'
this.editForm.periodValidityType = '0'
@@ -336,7 +337,7 @@
this.editForm.wechatId = '0'
},
getList () {
getList() {
this.instance.post(`/app/appquestionnairetemplate/list`, null, {
params: {
...this.search,
@@ -349,7 +350,7 @@
this.loading = false
this.$nextTick(() => {
this.$initWxOpenData()
})
} else {
this.loading = false
@@ -358,7 +359,7 @@
this.loading = false
})
},
publish () {
publish() {
this.instance.post(`/app/appquestionnairetemplate/release`, null, {
params: {
...this.editForm,
@@ -381,10 +382,10 @@
})
},
downloadImg (url) {
downloadImg(url) {
let image = new Image()
image.setAttribute('crossOrigin', 'anonymous')
image.onload = function() {
image.onload = function () {
let canvas = document.createElement('canvas')
canvas.width = image.width
canvas.height = image.height
@@ -400,7 +401,7 @@
image.src = url
},
toStop (id) {
toStop(id) {
this.$confirm('确定停止该表单?').then(() => {
this.instance.post(`/app/appquestionnairetemplate/stopRelease?id=${id}`).then(res => {
if (res.code === 0) {
@@ -411,19 +412,19 @@
})
},
handleSizeChange () {
handleSizeChange() {
this.$nextTick(() => {
this.getList()
})
},
handleChange () {
handleChange() {
this.$nextTick(() => {
this.getList()
})
},
handleCommand (e, id, type) {
handleCommand(e, id, type) {
if (e === 'edit') {
this.toEdit(id, type)
} else if (e === 'share') {
@@ -451,7 +452,7 @@
}
},
exportFile (id, title) {
exportFile(id, title) {
this.instance.post(`/app/appquestionnairetemplate/export?id=${id}`, null, {
responseType: 'blob'
}).then(res => {
@@ -466,7 +467,7 @@
})
},
showShare (info, isPreview) {
showShare(info, isPreview) {
this.loading = true
this.info = info
@@ -491,7 +492,7 @@
})
},
copy (link) {
copy(link) {
let oInput = document.createElement('input')
oInput.value = link
document.body.appendChild(oInput)
@@ -504,7 +505,7 @@
oInput.remove()
},
toEdit (id, type) {
toEdit(id, type) {
this.$emit('change', {
type: 'add',
params: {
@@ -515,7 +516,7 @@
})
},
onConfirm () {
onConfirm() {
this.$emit('change', {
type: 'add',
params: {
@@ -526,15 +527,15 @@
})
}
}
}
}
</script>
<style scoped lang="scss">
.form-list {
.form-list {
::v-deep .ai-list__content--right-wrapper {
background: transparent!important;
box-shadow: none!important;
padding: 12px 0 12px!important;
background: transparent !important;
box-shadow: none !important;
padding: 12px 0 12px !important;
}
::v-deep.el-pager {
@@ -630,6 +631,7 @@
color: #FF4466;
font-size: 14px;
}
h2 {
color: #222222;
font-size: 14px;
@@ -648,12 +650,13 @@
display: flex;
align-items: center;
height: 64px;
padding: 0 40px!important;
padding: 0 40px !important;
.el-pagination {
width: 100%;
padding: 0;
}
::v-deep .el-pager li.active {
background-color: #fff !important;
color: #2266FF !important;
@@ -743,7 +746,7 @@
.ai-dialog__success {
::v-deep .ai-dialog__content {
max-height: initial!important;
max-height: initial !important;
}
}
@@ -780,6 +783,7 @@
display: flex;
align-items: center;
justify-content: space-between;
&:last-child {
img {
width: 120px;
@@ -809,7 +813,7 @@
height: 130px;
padding: 5px;
background: #FFFFFF;
box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.08);
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.08);
border-radius: 4px;
border: 1px solid #E4E8EF;
}
@@ -873,7 +877,7 @@
h2 {
margin-top: 16px;
color: #222222;
font-size: 20ox;
font-size: 20 ox;
font-weight: 600;
}
}
@@ -949,6 +953,7 @@
::v-deep .el-button {
margin-left: 0;
padding: 0;
i {
color: #8899BB;
font-size: 14px;
@@ -1072,7 +1077,7 @@
height: 196px;
margin: 0 20px 20px 0;
background: #FFFFFF;
box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.05);
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.05);
border-radius: 2px;
&:nth-of-type(4n) {
@@ -1080,5 +1085,5 @@
}
}
}
}
}
</style>

View File

@@ -8,10 +8,12 @@
<template #content>
<ai-wrapper label-width="90px">
<ai-info-item label="表单名称" :value="info.title" isLine></ai-info-item>
<ai-info-item label="发布状态"><span :style="{color: dict.getColor('questionnaireStatus', info.status)}">已发布</span></ai-info-item>
<ai-info-item label="发布状态"><span
:style="{color: dict.getColor('questionnaireStatus', info.status)}">已发布</span></ai-info-item>
<ai-info-item label="创建人" :value="info.createUserName"></ai-info-item>
<ai-info-item label="创建时间" :value="info.createTime"></ai-info-item>
<ai-info-item label="截止时间" :value="info.periodValidityEndTime ? info.periodValidityEndTime : '永久有效'"></ai-info-item>
<ai-info-item label="截止时间"
:value="info.periodValidityEndTime ? info.periodValidityEndTime : '永久有效'"></ai-info-item>
<ai-info-item label="提交次数限制" :value="info.commitType === '1' ? '限提交一次' : '不限次数' "></ai-info-item>
</ai-wrapper>
</template>
@@ -33,7 +35,8 @@
</div>
<div class="statistics-wrapper__body--list">
<div class="statistics-wrapper__body--item" v-for="(item, index) in subjectList" :key="index">
<div class="statistics-wrapper__body--top" :style="{borderBottom: ['input', 'textarea', 'upload'].indexOf(item.type) > -1 ? 'none' : '1px solid #DDDDDD'}">
<div class="statistics-wrapper__body--top"
:style="{borderBottom: ['input', 'textarea', 'upload'].indexOf(item.type) > -1 ? 'none' : '1px solid #DDDDDD'}">
<div class="left">
<h2>{{ item.fieldName }}{{ item.fixedLabel }}</h2>
</div>
@@ -43,7 +46,8 @@
<span>条数据</span>
</div>
</div>
<div class="statistics-wrapper__body--bottom" v-if="['radio', 'checkbox', 'select'].indexOf(item.type) > -1">
<div class="statistics-wrapper__body--bottom"
v-if="['radio', 'checkbox', 'select'].indexOf(item.type) > -1">
<div class="statistics-wrapper__body--select" v-for="(item, i) in item.options" :key="i">
<div class="left">
<h2>{{ item.label }}</h2>
@@ -51,7 +55,8 @@
</div>
<div class="right">
<div class="progress">
<div :style="{width: `${(((item.c || 0) / fieldDataCount[`field_${index}`]) * 100).toFixed(2)}%`}"></div>
<div
:style="{width: `${(((item.c || 0) / fieldDataCount[`field_${index}`]) * 100).toFixed(2)}%`}"></div>
</div>
<i>{{ (((item.c || 0) / fieldDataCount[`field_${index}`]) * 100).toFixed(2) }}%</i>
</div>
@@ -90,7 +95,9 @@
<div class="userinfo">
<img :src="row.avatarUrl || 'https://cdn.cunwuyun.cn/dvcp/h5/defaultAvatar.png'">
<!-- <h3>{{ row.nickName }}</h3> -->
<el-tooltip effect="dark" :content="row.corpName ? row.nickName + '@' + row.corpFullName : row.nickName + ''" placement="top">
<el-tooltip effect="dark"
:content="row.corpName ? row.nickName + '@' + row.corpFullName : row.nickName + ''"
placement="top">
<div class="userinfo-right__top">
<h3>{{ row.corpName ? row.nickName : row.nickName }}</h3>
<span class="ellipsis">{{ row.corpName ? '@' + row.corpName : '' }}</span>
@@ -102,7 +109,9 @@
<el-table-column slot="tags" label="标签" align="center" width="240px">
<template slot-scope="{ row }">
<div class="table-tags" v-if="row.tagNames">
<el-tag type="info" v-for="(item, index) in row.tagNames.split(',')" size="medium" :key="index">{{ item }}</el-tag>
<el-tag type="info" v-for="(item, index) in row.tagNames.split(',')" size="medium" :key="index">
{{ item }}
</el-tag>
</div>
<span v-else></span>
</template>
@@ -146,9 +155,9 @@
<h2>{{ item.label }}</h2>
</div>
<div class="left-item__item--wrapper">
<template v-if="(item.type === 'radio')" >
<div class="radio-item" v-for="(field, index) in item.options" :key="index" >
<input type="radio" disabled :value="field.label" v-model="formInfo[`field_${i}`]" />
<template v-if="(item.type === 'radio')">
<div class="radio-item" v-for="(field, index) in item.options" :key="index">
<input type="radio" disabled :value="field.label" v-model="formInfo[`field_${i}`]"/>
<img :src="field.img[0].url" v-if="field.img.length">
<label>{{ field.label }}</label>
</div>
@@ -159,8 +168,9 @@
<span>图片</span>
</div>
</template>
<template v-if="item.type === 'select'" >
<el-input resize="none" class="preview" type="textarea" style="color: #333" :placeholder="item.placeholder" v-model="formInfo[`field_${i}`]" disabled></el-input>
<template v-if="item.type === 'select'">
<el-input resize="none" class="preview" type="textarea" style="color: #333"
:placeholder="item.placeholder" v-model="formInfo[`field_${i}`]" disabled></el-input>
<!-- <span>{{ formInfo[`field_${i}`] }}</span> -->
<!-- <textarea :placeholder="item.placeholder" v-model="formInfo[`field_${i}`]" disabled></textarea> -->
<!-- <el-select placeholder="请选择" disabled v-model="formInfo[`field_${i}`]" style="width: 100%;">
@@ -172,19 +182,19 @@
</el-option>
</el-select> -->
</template>
<template v-if="(item.type === 'checkbox')" >
<div class="radio-item" v-for="(field, index) in item.options" :key="index" >
<input type="checkbox" disabled :value="field.label" v-model="formInfo[`field_${i}`]" />
<template v-if="(item.type === 'checkbox')">
<div class="radio-item" v-for="(field, index) in item.options" :key="index">
<input type="checkbox" disabled :value="field.label" v-model="formInfo[`field_${i}`]"/>
<img :src="field.img[0].url" v-if="field.img.length">
<label>{{ field.label }}</label>
</div>
</template>
<template v-if="(item.type === 'input')" >
<template v-if="(item.type === 'input')">
<div class="text-item">
<input :placeholder="item.placeholder" v-model="formInfo[`field_${i}`]" disabled>
</div>
</template>
<template v-if="(item.type === 'textarea')" >
<template v-if="(item.type === 'textarea')">
<div class="textarea-item" resize="none">
<textarea :placeholder="item.placeholder" v-model="formInfo[`field_${i}`]" disabled></textarea>
</div>
@@ -203,7 +213,7 @@
</template>
<script>
export default {
export default {
name: 'Statistics',
props: {
@@ -212,7 +222,7 @@
params: Object
},
data () {
data() {
return {
currIndex: 0,
search: {
@@ -233,17 +243,23 @@
formInfo: {},
colConfigs: [
{slot: 'userinfo'},
{prop: 'residentName', label: '真实姓名', align: 'center', width: '100px' },
{prop: 'commitTime', label: '提交时间', align: 'center', width: '160px' },
{prop: 'userType', label: '微信类型', align: 'center', width: '100px', formart: v => this.dict.getLabel('wxUserType', v) },
{prop: 'wxUserNames', label: '所属员工', align: 'center', width: '100px' },
{prop: 'residentName', label: '真实姓名', align: 'center', width: '100px'},
{prop: 'commitTime', label: '提交时间', align: 'center', width: '160px'},
{
prop: 'userType',
label: '微信类型',
align: 'center',
width: '100px',
formart: v => this.dict.getLabel('wxUserType', v)
},
{prop: 'wxUserNames', label: '所属员工', align: 'center', width: '100px'},
{slot: 'tags', label: '标签', align: 'center', width: '268px'},
{prop: 'totalScore', label: '分值', align: 'center'}
]
}
},
mounted () {
mounted() {
this.getInfo()
this.getFormInfo()
@@ -252,7 +268,7 @@
})
},
methods: {
getList () {
getList() {
this.instance.post(`/app/appquestionnairetemplate/statisticsResident?id=${this.params.id}`, null, {
params: {
...this.search
@@ -261,12 +277,12 @@
if (res.code == 0) {
this.tableData = res.data.records
this.total = res.data.total
this.$initWxOpenData()
}
})
},
showForm (id) {
showForm(id) {
this.instance.post(`/app/appquestionnairetemplate/queryDataInfoById?id=${this.params.id}&dataId=${id}`).then(res => {
if (res.code == 0) {
this.formInfo = res.data
@@ -282,7 +298,7 @@
})
},
mapType (type) {
mapType(type) {
return {
upload: '上传图片',
input: '单行填空',
@@ -293,7 +309,7 @@
}[type]
},
getFormInfo () {
getFormInfo() {
this.instance.post(`/app/appquestionnairetemplate/statisticsTable?id=${this.params.id}`, null, {
params: {
...this.search
@@ -329,30 +345,30 @@
})
},
getInfo () {
getInfo() {
this.instance.post(`/app/appquestionnairetemplate/queryDetailById?id=${this.params.id}`).then(res => {
if (res.code == 0) {
this.info = res.data
this.targetList = res.data.fields.map(item => {
return JSON.parse(item.fieldInfo)
})
this.$initWxOpenData()
}
})
},
cancel (isRefresh) {
cancel(isRefresh) {
this.$emit('change', {
type: 'list',
isRefresh: !!isRefresh
})
}
}
}
}
</script>
<style scoped lang="scss">
.statistics {
.statistics {
* {
box-sizing: border-box;
font-weight: normal;
@@ -361,7 +377,7 @@
.preview {
::v-deep .el-textarea.is-disabled, ::v-deep .el-textarea__inner {
color: #666!important;
color: #666 !important;
}
}
@@ -585,7 +601,7 @@
.statistics-wrapper {
background: #FFFFFF;
box-shadow: 0px 4px 6px -2px rgba(15, 15, 21, 0.15);
box-shadow: 0 4px 6px -2px rgba(15, 15, 21, 0.15);
border-radius: 2px;
.statistics-wrapper__title {
@@ -645,7 +661,7 @@
max-width: 384px;
margin-right: 10px;
overflow: hidden;
text-overflow:ellipsis;
text-overflow: ellipsis;
white-space: nowrap;
font-size: 12px;
color: #222222;
@@ -693,7 +709,7 @@
height: 70px;
padding: 0 20px;
background: #FFFFFF;
border-radius: 4px 4px 0px 0px;
border-radius: 4px 4px 0 0;
border-bottom: 1px solid #DDDDDD;
& > div {
@@ -704,6 +720,7 @@
.left {
flex: 1;
h2 {
color: #222222;
font-size: 14px;
@@ -741,5 +758,5 @@
}
}
}
}
}
</style>

View File

@@ -95,7 +95,7 @@
</template>
<script>
export default {
export default {
name: 'Template',
props: {
@@ -103,7 +103,7 @@
dict: Object
},
data () {
data() {
return {
search: {
current: 1,
@@ -117,23 +117,23 @@
isShow: false,
total: 10,
colConfigs: [
{ prop: 'title', label: '模板名称', align: 'left' },
{ slot: 'type', label: '项目类型', align: 'center' },
{ prop: 'quoteCount', label: '引用次数', align: 'center' },
{ prop: 'createUserName', label: '创建人', align: 'center' },
{ prop: 'createUnitName', label: '创建单位', align: 'center' },
{ prop: 'createTime', label: '创建时间', align: 'center' }
{prop: 'title', label: '模板名称', align: 'left'},
{slot: 'type', label: '项目类型', align: 'center'},
{prop: 'quoteCount', label: '引用次数', align: 'center'},
{prop: 'createUserName', label: '创建人', align: 'center'},
{prop: 'createUnitName', label: '创建单位', align: 'center'},
{prop: 'createTime', label: '创建时间', align: 'center'}
],
tableData: []
}
},
mounted () {
mounted() {
this.getList()
},
methods: {
getList () {
getList() {
this.instance.post(`/app/appquestionnairetemplate/list`, null, {
params: {
...this.search
@@ -142,12 +142,12 @@
if (res.code == 0) {
this.tableData = res.data.records
this.total = res.data.total
this.$initWxOpenData()
}
})
},
quote (id, type) {
quote(id, type) {
this.$emit('change', {
type: 'add',
params: {
@@ -159,7 +159,7 @@
})
},
remove (id) {
remove(id) {
this.$confirm('确定删除该数据?').then(() => {
this.instance.post(`/app/appquestionnairetemplate/deleteShareTemplate?ids=${id}`).then(res => {
if (res.code == 0) {
@@ -170,7 +170,7 @@
})
},
toAdd (id) {
toAdd(id) {
this.$emit('change', {
type: 'Add',
params: {
@@ -179,7 +179,7 @@
})
},
toEdit (id, type) {
toEdit(id, type) {
this.$emit('change', {
type: 'add',
params: {
@@ -190,7 +190,7 @@
})
},
onConfirm () {
onConfirm() {
this.$emit('change', {
type: 'add',
params: {
@@ -201,11 +201,11 @@
})
}
}
}
}
</script>
<style lang="scss" scoped>
.template {
.template {
.tags-wrapper {
display: flex;
justify-content: center;
@@ -223,7 +223,6 @@
height: 64px;
margin-right: 20px;
background: #FFFFFF;
border-radius: 2px;
// box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.08);
border-radius: 2px;
cursor: pointer;
@@ -279,5 +278,5 @@
color: rgba(236, 68, 97, 1);
background: rgba(236, 68, 97, 0.1);
}
}
}
</style>

View File

@@ -246,7 +246,7 @@ export default {
if (res?.data) {
this.info.attendees = res.data.records;
this.total = res.data.total;
this.$initWxOpenData()
}
});
},

View File

@@ -133,7 +133,7 @@ export default {
if (res && res.data) {
this.tableData = res.data.records;
this.total = res.data.total;
this.$initWxOpenData()
}
});
},

View File

@@ -114,7 +114,7 @@ export default {
if (res?.data) {
this.tableData = res.data.records
this.page.total = res.data.total
this.$initWxOpenData()
}
})
},

View File

@@ -1,7 +1,8 @@
<template>
<ai-detail>
<template slot="title">
<ai-title :title="detail.id ? '编辑公告' : '创建公告'" isShowBack isShowBottomBorder @onBackClick="$parent.goBack"></ai-title>
<ai-title :title="detail.id ? '编辑公告' : '创建公告'" isShowBack isShowBottomBorder
@onBackClick="$parent.goBack"></ai-title>
</template>
<template #content>
<ai-card title="基本信息">
@@ -20,7 +21,7 @@
<el-row type="flex" align="middle">
<div class="text-area">
<span v-text="item.name"/>
<span v-if="persons.length">{{persons.length}}</span>
<span v-if="persons.length">{{ persons.length }}</span>
</div>
<ai-wechat-selecter v-model="form.persons" :instance="instance" @change="onChange">
<el-button type="info">选择</el-button>
@@ -58,7 +59,7 @@
</template>
<script>
export default {
export default {
name: "add",
props: {
instance: Function,
@@ -76,7 +77,7 @@
type: 0,
releaseTime: null,
},
persons:[],
persons: [],
}
},
computed: {
@@ -101,7 +102,7 @@
}
},
methods: {
onChange(e){
onChange(e) {
this.form.persons = e;
this.persons = e;
this.$refs["form"].validateField("persons");
@@ -109,7 +110,7 @@
confim(e) {
this.$refs["form"].validate(v => {
if (v) {
if(this.form.releaseTime && (new Date(this.form.releaseTime).getTime() <= Date.now())){
if (this.form.releaseTime && (new Date(this.form.releaseTime).getTime() <= Date.now())) {
return this.$message.error("发送时间要大于当前时间")
}
this.instance.post("/app/appannouncement/addOrUpdate", {
@@ -117,67 +118,69 @@
status: e
}).then(res => {
if (res.code == 0) {
this.$message.success(e==0?"保存成功":"发布成功");
this.$message.success(e == 0 ? "保存成功" : "发布成功");
this.$parent.goBack();
}
})
}
})
},
getDetail(){
this.instance.post("/app/appannouncement/detail",null,{
params:{
id:this.detail.id
getDetail() {
this.instance.post("/app/appannouncement/detail", null, {
params: {
id: this.detail.id
}
}).then(res=>{
if(res && res.data){
Object.keys(this.form).map(e=>this.form[e] = res.data[e]);
}).then(res => {
if (res && res.data) {
Object.keys(this.form).map(e => this.form[e] = res.data[e]);
this.form.type = res.data.releaseTime ? 1 : 0;
this.$initWxOpenData()
}
})
},
},
mounted(){
if(this.detail?.id){
mounted() {
if (this.detail?.id) {
this.getDetail();
}
}
}
}
</script>
<style lang="scss" scoped>
::v-deep .picker {
::v-deep .picker {
width: 300px;
.el-form-item__content {
margin-left: 0 !important;
}
}
}
.text-area{
width:995px;
height:32px;
background-color:#F5F5F5;
.text-area {
width: 995px;
height: 32px;
background-color: #F5F5F5;
border: 1px solid #d0d4dc;
border-radius: 2px;
display: flex;
align-items: center;
box-sizing: border-box;
padding:0 6px;
padding: 0 6px;
color: #666666;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
}
::v-deep .AiOpenData {
height: auto !important;
&:after {
content: "、";
}
::v-deep .AiOpenData{
height:auto !important;
&:after{
content:"、";
}
&:nth-child(2):after{
content:"";
}
&:nth-child(2):after {
content: "";
}
}
</style>

View File

@@ -7,7 +7,7 @@
<ai-card :title="detailObj.title" class="title">
<template #content>
<el-row type="flex" justify="space-between" class="info">
<span>时间{{detailObj.releaseTime}}</span>
<span>时间{{ detailObj.releaseTime }}</span>
<span style="display:flex">发布单位
<span v-text="detailObj.unitName"/>
</span>
@@ -20,9 +20,10 @@
</ai-card>
<ai-card title="附件" v-if="detailObj.files && detailObj.files.length">
<template #content>
<el-row type="flex" justify="space-between" class="file" v-for="(item,index) in detailObj.files" :key="index" @click.native="open(item)">
<span>{{item.fileName}}</span>
<span>{{(item.size/1024).toFixed(2)}}KB</span>
<el-row type="flex" justify="space-between" class="file" v-for="(item,index) in detailObj.files" :key="index"
@click.native="open(item)">
<span>{{ item.fileName }}</span>
<span>{{ (item.size / 1024).toFixed(2) }}KB</span>
</el-row>
</template>
</ai-card>
@@ -31,7 +32,7 @@
</template>
<script>
export default {
export default {
name: "detail",
props: {
instance: Function,
@@ -56,22 +57,22 @@
}).then(res => {
if (res && res.data) {
this.detailObj = res.data;
this.$initWxOpenData()
}
})
}
}
}
</script>
<style lang="scss" scoped>
::v-deep .title {
::v-deep .title {
.aibar-left {
width: 100%;
text-align: center;
}
}
}
.file {
.file {
height: 40px;
line-height: 40px;
padding: 0 8px;
@@ -82,13 +83,13 @@
border: 1px solid #d0d4dc;
margin-bottom: 16px;
cursor: pointer;
}
}
.info {
.info {
& > span {
font-size: 14px;
color: #333;
}
}
}
</style>

View File

@@ -9,7 +9,7 @@
<ai-card :title="detailObj.title" class="title">
<template #content>
<el-row type="flex" justify="space-between" class="info">
<span>时间{{detailObj.releaseTime}}</span>
<span>时间{{ detailObj.releaseTime }}</span>
<span style="display:flex">发布单位
<span v-text="detailObj.unitName"/>
</span>
@@ -25,7 +25,7 @@
<span class="Edit" @click="downFileAll"><i class="iconfont iconDownload"></i>下载全部</span>
</template>
<template #content>
<ai-file-list :fileList="detailObj.files" :fileOps="{ name: 'fileName', size: 'size' }" ></ai-file-list>
<ai-file-list :fileList="detailObj.files" :fileOps="{ name: 'fileName', size: 'size' }"></ai-file-list>
</template>
</ai-card>
</template>
@@ -43,7 +43,8 @@
</template>
<template #right>
<el-input v-model="search.readUserName" @keyup.enter.native="getList()" placeholder="姓名"
size="small" suffix-icon="iconfont iconSearch" clearable @clear="search.current=1,getList()"></el-input>
size="small" suffix-icon="iconfont iconSearch" clearable
@clear="search.current=1,getList()"></el-input>
</template>
</ai-search-bar>
<ai-table
@@ -72,12 +73,12 @@
</template>
<script>
export default {
export default {
name: "manageDetail",
props: {
instance: Function,
dict: Object,
detail:Object
detail: Object
},
data() {
return {
@@ -95,20 +96,21 @@
tabTitle() {
return ["公告详情", "查询情况"];
},
colConfigs(){
colConfigs() {
return [
{slot:"readUserName"},
{prop:"readUserPhone",label:"手机号",align:"center"},
{slot:"unitName"},
{slot: "readUserName"},
{prop: "readUserPhone", label: "手机号", align: "center"},
{slot: "unitName"},
{
prop:"readStatus",label:"查阅状态",align:"center",
render:(h,{row})=>[<span style={{color:this.dict.getColor("announcementReadStatus",row.readStatus)}}>{this.dict.getLabel("announcementReadStatus",row.readStatus)}</span>]
prop: "readStatus", label: "查阅状态", align: "center",
render: (h, {row}) => [<span
style={{color: this.dict.getColor("announcementReadStatus", row.readStatus)}}>{this.dict.getLabel("announcementReadStatus", row.readStatus)}</span>]
},
];
}
},
methods: {
downFileAll () {
downFileAll() {
if (this.detailObj.files.length > 0) {
this.instance.post('/app/appannouncement/downLoadAllFileForDetail', null, {
responseType: 'blob',
@@ -117,7 +119,7 @@
}
}).then((res) => {
const link = document.createElement('a')
let blob = new Blob([res], { type: 'application/octet-stream' })
let blob = new Blob([res], {type: 'application/octet-stream'})
link.style.display = 'none'
link.href = URL.createObjectURL(blob)
var num = ''
@@ -133,10 +135,10 @@
this.$message.error('暂无附件提供下载')
}
},
onChange(val){
if(val==0){
onChange(val) {
if (val == 0) {
this.getDetail();
}else {
} else {
this.getList();
}
},
@@ -148,7 +150,7 @@
}).then(res => {
if (res && res.data) {
this.detailObj = res.data;
this.$initWxOpenData()
}
})
},
@@ -169,18 +171,18 @@
created() {
this.dict.load("announcementReadStatus").then(this.getDetail);
}
}
}
</script>
<style lang="scss" scoped>
::v-deep .title {
::v-deep .title {
.aibar-left {
width: 100%;
text-align: center;
}
}
}
.file {
.file {
height: 40px;
line-height: 40px;
padding: 0 8px;
@@ -191,12 +193,12 @@
border: 1px solid #d0d4dc;
margin-bottom: 16px;
cursor: pointer;
}
}
.info {
.info {
& > span {
font-size: 14px;
color: #333;
}
}
}
</style>

View File

@@ -94,7 +94,7 @@
</template>
<script>
export default {
export default {
name: "noticeManage",
props: {
instance: Function,
@@ -113,7 +113,7 @@
total: 0,
visible: false,
row: {},
readObj:{},
readObj: {},
}
},
@@ -123,14 +123,17 @@
{prop: 'title', label: '标题'},
{
prop: 'readNum', label: '查询状态', align: 'center',
render:(h,{row})=>[<span class='status' onClick={this.showDialog.bind(this,row)}>{row.readNum}人已读</span>,<span class='status' onClick={this.showDialog.bind(this,row)}>{row.unReadNum}人未读</span>]
render: (h, {row}) => [<span class='status'
onClick={this.showDialog.bind(this, row)}>{row.readNum}人已读</span>,
<span class='status' onClick={this.showDialog.bind(this, row)}>{row.unReadNum}人未读</span>]
},
{slot: 'releaseUserName'},
{slot: 'unitName'},
{prop: 'releaseTime', label: '发布时间', align: 'center'},
{
prop: 'status', label: '发布状态', align: 'center',
render:(h,{row})=>[<span style={{color:this.dict.getColor("announcementStatus",row.status)}}>{this.dict.getLabel("announcementStatus",row.status)}</span>]
render: (h, {row}) => [<span
style={{color: this.dict.getColor("announcementStatus", row.status)}}>{this.dict.getLabel("announcementStatus", row.status)}</span>]
},
{slot: 'options'},
];
@@ -142,77 +145,77 @@
this.row = row;
this.getReadList();
},
toDetail(row){
toDetail(row) {
this.$emit('goPage', {
comp: 'manageDetail',
row
});
},
toEdit(row){
toEdit(row) {
this.$emit('goPage', {
comp: 'add',
row
});
},
publish(row,status){
this.$confirm(`是否要${status==0?'发布':'撤回'}该公告?`).then(()=>{
this.instance.post("/app/appannouncement/update-status",null,{
publish(row, status) {
this.$confirm(`是否要${status == 0 ? '发布' : '撤回'}该公告?`).then(() => {
this.instance.post("/app/appannouncement/update-status", null, {
params: {
id:row.id
id: row.id
}
}).then(res=>{
if(res.code==0){
this.$message.success(status==0?'发布成功':'撤回成功');
}).then(res => {
if (res.code == 0) {
this.$message.success(status == 0 ? '发布成功' : '撤回成功');
this.getList();
}
})
})
},
handleDel(row){
this.$confirm("是否要删除该公布?").then(()=>{
this.instance.post("/app/appannouncement/delete",null,{
params:{
ids:row.id
handleDel(row) {
this.$confirm("是否要删除该公布?").then(() => {
this.instance.post("/app/appannouncement/delete", null, {
params: {
ids: row.id
}
}).then(res=>{
if(res.code==0){
}).then(res => {
if (res.code == 0) {
this.$message.success("删除成功");
this.getList();
}
})
})
},
add(){
add() {
this.$emit('goPage', {
comp: 'add',
row: {},
});
},
getReadList(){
this.instance.post("/app/appannouncementreader/list-unread",null,{
params:{
id:this.row.id
getReadList() {
this.instance.post("/app/appannouncementreader/list-unread", null, {
params: {
id: this.row.id
}
}).then(res=>{
if(res && res.data){
}).then(res => {
if (res && res.data) {
this.readObj = res.data;
this.visible = true;
this.$initWxOpenData()
}
})
},
getList() {
this.instance.post("/app/appannouncement/list-mgr",null,{
params:{
this.instance.post("/app/appannouncement/list-mgr", null, {
params: {
...this.search,
startTime: this.date?.length ? this.date[0] : null,
endTime: this.date?.length ? this.date[1] : null,
}
}).then(res=>{
if(res && res.data){
}).then(res => {
if (res && res.data) {
this.tableData = res.data.records;
this.total = res.data.total;
this.$initWxOpenData()
}
})
}
@@ -220,22 +223,22 @@
created() {
this.dict.load("announcementStatus").then(this.getList)
}
}
}
</script>
<style lang="scss" scoped>
::v-deep .status {
::v-deep .status {
color: rgba(41, 107, 251, 100);
cursor: pointer;
}
}
header{
header {
font-size: 14px;
color: #333333;
margin-bottom: 10px;
}
}
::v-deep .wrap {
::v-deep .wrap {
display: flex;
align-items: center;
flex-wrap: wrap;
@@ -254,11 +257,11 @@
border-radius: 50%;
}
span{
span {
font-size: 14px;
color: #333333;
text-align: center;
}
}
}
}
</style>

View File

@@ -33,7 +33,7 @@
<!-- <em v-if="item.readStatus==0"></em>-->
<div class="status" v-if="item.readStatus==0">未读</div>
<div class="status read" v-else>已读</div>
{{item.title}}</label>
{{ item.title }}</label>
<el-row type="flex" justify="space-between" class="row">
<span style="display:flex">
<b>发布人</b>
@@ -45,7 +45,7 @@
</span>
<span>
<b>发布日期</b>
{{item.releaseTime}}</span>
{{ item.releaseTime }}</span>
</el-row>
</li>
</ul>
@@ -62,7 +62,7 @@
layout="slot,->,prev, pager, next,sizes,jumper"
:total="total">
<div class="page" style="text-align: left">
<em>{{total}}</em>
<em>{{ total }}</em>
条记录
</div>
</el-pagination>
@@ -72,7 +72,7 @@
</template>
<script>
export default {
export default {
name: "recentNotice",
props: {
instance: Function,
@@ -112,7 +112,7 @@
if (res && res.data) {
this.tableData = res.data.records;
this.total = res.data.total;
this.$initWxOpenData()
}
});
},
@@ -128,11 +128,11 @@
created() {
this.dict.load("announcementReadStatus").then(_ => this.getList())
}
}
}
</script>
<style lang="scss" scoped>
.body {
.body {
ul {
overflow: hidden;
@@ -172,7 +172,7 @@
margin-right: 4px;
}
.read{
.read {
background: #EEEEEE;
color: #999999;
}
@@ -203,9 +203,9 @@
}
}
}
}
}
::v-deep .page {
::v-deep .page {
font-size: 12px;
color: #555555;
@@ -213,5 +213,5 @@
font-style: normal;
color: rgb(34, 102, 255);
}
}
}
</style>