feat(richedit): 添加撤审和发布按钮并优化权限控制

为二审账号添加撤审和发布按钮功能,同时优化不同用户类型的操作权限控制
重构详情抽屉中的按钮逻辑,增加退改和复审功能
This commit is contained in:
34701892@qq.com 2025-09-25 20:52:48 +08:00
parent 2fbc1d841d
commit 3118dd6424
2 changed files with 86 additions and 14 deletions

View File

@ -7,21 +7,51 @@
<div class="title">{{ readOnly ? '资讯信息浏览' : type == 1 ? '资讯信息编辑' : '资讯信息创建' }}</div> <div class="title">{{ readOnly ? '资讯信息浏览' : type == 1 ? '资讯信息编辑' : '资讯信息创建' }}</div>
<div class="btn" v-if="type == 1"> <div class="btn" v-if="type == 1">
<el-button type="text" v-if="!form.deleted && (data.status == 0 || data.status == 1)" <!-- <el-button type="text"
v-if="!form.deleted && (data.status == 3 || data.status == -1 || data.status == 4 || data.status == 2) && (Session.get('userInfoLocal').userType == '01' || Session.get('userInfoLocal').userType == '02')"
@click="handleEditStatus(!readOnly)">{{ readOnly ? @click="handleEditStatus(!readOnly)">{{ readOnly ?
'编辑' : '浏览' }}</el-button> '编辑' : '浏览' }}</el-button>
<el-button type="text" <el-button type="text"
v-if="!form.deleted && (data.status == 3) && Session.get('userInfoLocal').userType == '01'" v-else-if="!form.deleted && (data.status == 0 || data.status == 1 || data.status == -1)"
@click="handleEditStatus(!readOnly)">{{ readOnly ?
'编辑' : '浏览' }}</el-button> -->
<!-- <el-button type="text" style="color: #ff1818"
v-if="!form.deleted && (data.status == 0 || data.status == 1 || data.status == -1)"
@click="doDeleteNewsFn(data)">删除</el-button> -->
<div v-if="Session.get('userInfoLocal').userType == '00'">
<el-button type="text" v-if="!form.deleted && (data.status == 1 || data.status == -1)"
@click="handleEditStatus(!readOnly)">{{ readOnly ? @click="handleEditStatus(!readOnly)">{{ readOnly ?
'编辑' : '浏览' }}</el-button> '编辑' : '浏览' }}</el-button>
<!-- <el-button type="text"
v-if="data.status == 2 && !form.deleted && Session.get('userInfoLocal').userType == '01'"
@click="doNewsPublishFn(data, 1)">撤稿</el-button> -->
<el-button type="text" style="color: #ff1818" <el-button type="text" style="color: #ff1818"
v-if="!form.deleted && (data.status == 0 || data.status == 1)" v-if="!form.deleted && (data.status == 0 || data.status == 1)"
@click="doDeleteNewsFn(data)">删除</el-button> @click="doDeleteNewsFn(data)">删除</el-button>
</div>
<div v-if="Session.get('userInfoLocal').userType == '02'">
<el-button type="text"
v-if="!form.deleted && (data.status == 0 || data.status == 1 || data.status == 3)"
@click="handleEditStatus(!readOnly)">{{ readOnly ?
'编辑' : '浏览' }}</el-button>
<el-button type="text" style="color: #ff1818"
v-if="!form.deleted && (data.status == 0 || data.status == 1)"
@click="doDeleteNewsFn(data)">删除</el-button>
</div>
<div v-if="Session.get('userInfoLocal').userType == '01'">
<el-button type="text" v-if="!form.deleted && (data.status == 4 || data.status == 2)"
@click="handleEditStatus(!readOnly)">{{ readOnly ?
'编辑' : '浏览' }}</el-button>
<el-button type="text" style="color: #ff1818"
v-if="!form.deleted && (data.status == 0 || data.status == 1)"
@click="doDeleteNewsFn(data)">删除</el-button>
</div>
<el-button type="text" @click="clickFull" v-if="!isMobileByWidth()"> <el-button type="text" @click="clickFull" v-if="!isMobileByWidth()">
<el-icon v-if="!isFull"> <el-icon v-if="!isFull">
<FullScreen /> <FullScreen />
@ -121,16 +151,30 @@
<el-button v-if="data?.status != 3" type="primary" @click="doApprovalFn()">送审</el-button> <el-button v-if="data?.status != 3" type="primary" @click="doApprovalFn()">送审</el-button>
<el-button v-else-if="data?.status == 3" type="primary" @click="doApprovalFn()">撤审</el-button> <el-button v-else-if="data?.status == 3" type="primary" @click="doApprovalFn()">撤审</el-button>
</div> --> </div> -->
<el-button type="primary" @click="submit(0, false)">
<el-button
v-if="data?.status == 2 && !form.deleted && Session.get('userInfoLocal').userType == '01'"
type="primary" style="margin-right: 30px;margin-bottom: 20px;"
@click="doNewsPublishFn(data, 1)">撤稿</el-button>
<el-button type="primary" @click="doNewCheckFn(data)"
v-if="data?.status != 2 && !form.deleted && Session.get('userInfoLocal').userType == '02'">复审</el-button>
<el-button type="primary" @click="submit(0, false)"
v-if="data?.status != 2 && !form.deleted && Session.get('userInfoLocal').userType != '02'">
<text v-if="Session.get('userInfoLocal').userType == '00'">送审</text> <text v-if="Session.get('userInfoLocal').userType == '00'">送审</text>
<text v-if="Session.get('userInfoLocal').userType == '01'">发布</text> <text v-if="Session.get('userInfoLocal').userType == '01'">发布</text>
</el-button> </el-button>
<el-button type="danger"
v-if="Session.get('userInfoLocal').userType == '02' && (data?.status == 3 || data?.status == 4)"
@click="doNewReturnFn(data)">退改</el-button>
<el-button type="danger" v-if="Session.get('userInfoLocal').userType == '01' && (data?.status == 4)"
@click="doNewReturnFn(data)">退改</el-button>
</div> </div>
<el-button v-if="data?.status == 2 && !form.deleted && Session.get('userInfoLocal').userType == '01'"
type="primary" style="margin-right: 30px;margin-bottom: 20px;"
@click="doNewsPublishFn(data, 1)">撤稿</el-button>
</template> </template>
</el-drawer> </el-drawer>
</div> </div>
@ -150,6 +194,7 @@ import icon_ai from '/@/components/icon_ai.vue';
import translate from '/@/components/translate/translate.vue'; import translate from '/@/components/translate/translate.vue';
import { Session } from '/@/utils/storage'; import { Session } from '/@/utils/storage';
import { isMobileByWidth } from '/@/utils/Utils' import { isMobileByWidth } from '/@/utils/Utils'
import { doNewReturn, doNewCheck } from '/@/api/api';
const emit = defineEmits(['doNewsPublishFn', 'handleEditStatus', 'doDeleteNewsFn', 'getData']); const emit = defineEmits(['doNewsPublishFn', 'handleEditStatus', 'doDeleteNewsFn', 'getData']);
@ -334,6 +379,27 @@ watch(
} }
); );
// 退
async function doNewReturnFn(item) {
let { code, data } = await doNewReturn({
id: item.id,
});
if (code == 200) {
ElMessage.success('操作成功');
goBack()
}
}
//
async function doNewCheckFn(item) {
let { code, data } = await doNewCheck({
id: item.id,
});
if (code == 200) {
ElMessage.success('操作成功');
goBack()
}
}
const pictureTemp = ref([]); const pictureTemp = ref([]);
/** /**
* 提交创建 * 提交创建

View File

@ -193,6 +193,9 @@
@click="doDeleteNewsFn(scope.row)">删除</el-button> @click="doDeleteNewsFn(scope.row)">删除</el-button>
</div> </div>
<div v-if="Session.get('userInfoLocal').userType == '02'"> <div v-if="Session.get('userInfoLocal').userType == '02'">
<el-button v-if="scope.row.status == 4" type="text"
@click="doApprovalFn(scope.row, scope.row.status)">撤审</el-button>
<!-- 二审账号 --> <!-- 二审账号 -->
<el-button v-if="scope.row.status == 3" type="text" style="color: #ff1818" <el-button v-if="scope.row.status == 3" type="text" style="color: #ff1818"
@click="doNewReturnFn(scope.row)">退改</el-button> @click="doNewReturnFn(scope.row)">退改</el-button>
@ -202,6 +205,9 @@
<el-button v-if="scope.row.status == 3" type="text" <el-button v-if="scope.row.status == 3" type="text"
@click="doNewCheckFn(scope.row)">复审</el-button> @click="doNewCheckFn(scope.row)">复审</el-button>
<el-button type="text" v-if="scope.row.status == 4"
@click="doNewsPublishFn(scope.row, 2)">发布</el-button>
</div> </div>
<div v-if="Session.get('userInfoLocal').userType == '01'"> <div v-if="Session.get('userInfoLocal').userType == '01'">
<!-- 终审账号 --> <!-- 终审账号 -->
@ -457,7 +463,7 @@ async function getData() {
async function doApprovalFn(item, status) { async function doApprovalFn(item, status) {
let str = '确认初审完成并提交复核?送审后不支持再次编辑'; let str = '确认初审完成并提交复核?送审后不支持再次编辑';
if (status == 3) { if (status == 3 || status == 4) {
str = '确认撤销该篇资讯审核?'; str = '确认撤销该篇资讯审核?';
} else { } else {
str = '确认初审完成并提交复核?送审后不支持再次编辑'; str = '确认初审完成并提交复核?送审后不支持再次编辑';