This commit is contained in:
shijing 2025-11-07 15:08:53 +08:00
commit 1836b7b84b
8 changed files with 192 additions and 652 deletions

View File

@ -69,7 +69,7 @@
</template>
<script setup>
import { ref, defineProps, defineEmits, computed, onMounted } from "vue";
import { ref, defineProps, defineEmits, computed, onMounted, watch } from "vue";
const props = defineProps({
multiple: { type: Boolean, default: false },
@ -103,7 +103,24 @@ onMounted(() => {
tableData.value = props.options;
hidePagination.value = true;
}
watch(
() => props.label,
async (newVal) => {
init()
},
{ deep: true, immediate: true }
);
watch(
() => props.modelValue,
async (newVal) => {
init()
},
{ deep: true, immediate: true }
)
});
const init = () => {
if (props.label) {
selectLabel.value = props.label;
} else {
@ -133,7 +150,7 @@ onMounted(() => {
}
}
}
});
}
const isFixOptions = ref(false);
const tableData = ref(null);

View File

@ -105,7 +105,7 @@
</scTable>
</el-main>
</el-container>
<el-drawer :title="titleMap[type] " v-model="limitedVisible" size="50%">
<el-drawer :title="titleMap " v-model="limitedVisible" size="50%">
<el-form
:model="addForm"
:rules="rules"
@ -152,24 +152,14 @@ export default {
name: "index",
data() {
return {
workflowName:"",
workFlowId:'',
apiObj: this.$API.ofm.filerecord.list,
selection: [],
checkList: [],
transitions:[],
timeRange: [],
query: {},
editId: null,
isSaving: false,
limitedVisible: false,
limitedWatch: false,
type: "add",
titleMap: {
add: "新增",
edit: "编辑",
show: "查看",
},
titleMap:"档案管理",
//
addForm: {
name: null,
@ -188,16 +178,8 @@ export default {
this.addForm = this.getDefaultForm();
this.limitedVisible = true;
},
handleAdd_outer() {
this.addForm = this.getDefaultForm();
this.type = "add";
this.limitedVisible = true;
this.lending_type = "outer";
this.addForm.is_lending = true;
},
handleCancel() {
this.limitedVisible = false; //
this.lending_type = ""; // lending_type
this.getDefaultForm()//
},
submitHandle() {
@ -260,54 +242,4 @@ export default {
};
</script>
<style scoped>
.treeMain {
height: 280px;
overflow: auto;
border: 1px solid #dcdfe6;
margin-bottom: 10px;
}
::-webkit-scrollbar {
width: 10px;
}
::-webkit-scrollbar-track {
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.2);
background-color: #fefefe;
border-radius: 5px;
}
::-webkit-scrollbar-thumb {
border-radius: 5px;
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.5);
background-color: #f5f5f5;
}
.node rect {
stroke: #606266;
fill: #fff;
}
.edgePath path {
stroke: #606266;
fill: #333;
stroke-width: 1.5px;
}
g.conditions > rect {
fill: #00ffd0;
stroke: #000;
}
.el-icon-close {
cursor: pointer;
}
.left-panel-group {
display: flex;
align-items: center;
gap: 6px; /* 按钮之间的间隙,可以调小点 */
margin-left: 0; /* 靠左 */
}
</style>

View File

@ -1,89 +0,0 @@
<template>
<el-container>
<el-main>
<el-form
:model="addForm"
:rules="rules"
ref="addForm"
label-width="100px"
label-position="left"
>
<el-form-item label="资料名称" prop="name">
<el-input v-model="addForm.name" clearable :disabled="mode==='view'"></el-input>
</el-form-item>
<el-form-item label="档案编号" prop="number">
<el-input v-model="addForm.number" clearable :disabled="mode==='view'"></el-input>
</el-form-item>
<el-form-item label="文件份数" prop="counts">
<el-input v-model="addForm.counts" clearable :disabled="mode==='view'"></el-input>
</el-form-item>
<el-form-item label="存放位置" prop="location">
<el-input v-model="addForm.location" clearable :disabled="mode==='view'"></el-input>
</el-form-item>
<el-form-item label="存档人电话" prop="contacts">
<el-input v-model="addForm.contacts" clearable :disabled="mode==='view'"></el-input>
</el-form-item>
<el-form-item label="接收人(综合办)" prop="reciver" label-width="120px">
<el-input v-model="addForm.reciver" clearable :disabled="mode==='view'"></el-input>
</el-form-item>
<el-form-item label="备注" prop="remark" type="textarea">
<el-input v-model="addForm.remark" clearable :disabled="mode==='view'"></el-input>
</el-form-item>
</el-form>
<el-footer v-show="mode!=='show'">
<ticketd_b
:workflow_key="'borrowrecord'"
:title="ticketTitle"
:t_id="addForm.id"
:ticket_="addForm.ticket_"
:submit_b_func="submit_b_func"
:ticket_data="ticket_data"
ref="ticketd_b"
@success="$emit('success')"
@colsed="$emit('closed')"
/>
</el-footer>
</el-main>
<el-aside width="20%" v-if="addForm.ticket_">
<ticketd ::ticket_="addForm.ticket_" @success="$emit('success')"></ticketd>
</el-aside>
</el-container>
</template>
<script>
import ticketd_b from "@/views/wf/ticketd_b.vue";
import ticketd from '@/views/wf/ticketd.vue'
export default {
props: {
mode: { type: String, default: "view" }, // add / edit / view
modelValue: { type: Object, default: () => ({}) },
transitions: { type: Array, default: () => [] },
},
components: {ticketd, ticketd_b},
emits: ["update:modelValue", "submit", "cancel"],
data(){
return {
addForm: { ...this.modelValue },
ticketTitle: "档案申请",
rules:{
filename: [{ required: true, message: "请输入文件名称", trigger: "blur" }],
},
}
},
methods:{
async submit_b_func() {
let that = this;
this.ticketTitle = `${this.addForm.name}-档案申请`
if(that.mode == "add") {
let res = await that.$API.ofm.filerecord.create.req(that.addForm);
that.addForm.id = res.id;
} else if (that.mode == "edit") {
await that.$API.ofm.filerecord.update.req(that.addForm.id, that.addForm);
}
},
},
}
</script>

View File

@ -6,7 +6,6 @@
type="primary"
icon="el-icon-plus"
@click="handleAdd"
v-auth="'fileborrow.create'"
></el-button>
</div>
<div class="right-panel">
@ -61,14 +60,13 @@
prop="return_date"
min-width="100"
></el-table-column>
<el-table-column label="所在节点" min-width="60">
<el-table-column label="审批信息" width="200">
<template #default="scope">
{{scope.row.ticket_.state_.name}}
</template>
</el-table-column>
<el-table-column label="进行状态" min-width="60">
<template #default="scope">
{{statusOptions[scope.row.ticket_.state_.type]}}
<el-tag :type="actStateEnum[scope.row.ticket_?.act_state]?.type">
{{ actStateEnum[scope.row.ticket_?.act_state]?.text }}
</el-tag>
<el-tag type="info" effect="plain">{{ scope.row.ticket_?.state_.name }}</el-tag>
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" align="center" width="250">
@ -77,7 +75,7 @@
link
size="small"
type="primary"
@click="borrowEidt(scope.row)"
@click="borrowShow(scope.row)"
v-auth="'fileborrow.update'"
>详情
</el-button>
@ -100,16 +98,18 @@
</scTable>
</el-main>
</el-container>
<el-drawer :title="titleMap[type] "
<el-drawer
title="档案管理"
v-model="limitedVisible"
:destroy-on-close="true"
direction="rtl"
size="70%">
<div style="display: flex; height: calc(100% - 60px);">
<div style="flex: 1; padding-right: 20px; overflow-y: auto;">
<borrowlForm
:mode="type"
v-model="addForm"
:mode="mode"
:t_id="t_id"
@success="()=>{handleQuery(); limitedVisible = false}"
@closed="limitedVisible = false"
/>
@ -120,102 +120,37 @@
<script>
import borrowlForm from "./borrowfile_form.vue";
import { actStateEnum, interveneTypeEnum } from "@/utils/enum.js";
export default {
components: { borrowlForm },
name: "index",
data() {
return {
workflowName:"",
workFlowId:'',
actStateEnum, interveneTypeEnum,
apiObj: this.$API.ofm.borrow.list,
selection: [],
checkList: [],
fileList: [],
transitions:[],
timeRange: [],
query: {},
editId: null,
isSaving: false,
limitedVisible: false,
limitedWatch: false,
type: "add",
titleMap: {
add: "新增",
edit: "编辑",
show: "查看",
},
statusOptions:{
0: "审批中",
1: "初始中",
2: "已完成",
},
//
addForm: {
borrow_file: [],
number: null,
counts: null,
location: null,
contacts: null,
ticket_: null,
reciver: "",
remark: [],
},
mode: "show",
t_id: null,
};
},
mounted(){
let that = this;
that.getInit();
},
methods: {
getInit() {
let that = this;
if(this.addForm.ticket_!==null){
this.$API.wf.ticket_.ticketTransitions.req(this.addForm.ticket_).then((res) => {
that.transitions = res;
})
}else{
that.$API.wf.workflow.initkey.req("borrowrecord").then((res) => {
that.initForm = res;
that.transitions = res.transitions;
});
}
},
handleAdd() {
this.type = "add";
this.addForm = this.getDefaultForm();
this.mode = "add";
this.t_id = null;
this.limitedVisible = true;
},
getDefaultForm(){
return {
borrow_file: [],
number: null,
counts: null,
location: null,
contacts: null,
ticket_:null,
reciver: "",
remark: [],
}
},
//
borrowEidt(row) {
this.type = "view";
this.editId = row.id;
borrowShow(row) {
this.mode = "show";
this.t_id = row.id;
this.limitedVisible = true;
this.addForm = Object.assign({}, row);
},
async borrowDel(row) {
var id = row.id;
var res = await this.$API.ofm.borrow.delete.req(id);
if (res.err_msg) {
this.$message.error(res.err_msg);
} else {
this.$refs.table.refresh();
this.$message.success("删除成功");
}
},
//
handleQuery() {

View File

@ -9,17 +9,21 @@
label-position="left"
>
<el-form-item label="档案名称">
<el-select v-model="addForm.borrow_file" multiple placeholder="请选择档案" clearable style="width: 300px;">
<el-option
v-for="item in fileList"
:key="item.id"
:value="item.id"
:disabled="localMode ==='view'"
:label="item.name"></el-option>
</el-select>
<xtSelect
:apiObj="apiObjM2"
:multiple = "true"
v-model:obj = "addForm.borrow_file_"
v-model = "addForm.borrow_file"
style="width: 300px;"
placeholder="选择档案名称"
>
<el-table-column label="档案编号" prop="number"></el-table-column>
<el-table-column label="档案名称" prop="name"></el-table-column>
</xtSelect>
</el-form-item>
<el-form-item label="申请人电话" prop="contacts">
<el-input v-model="addForm.contacts" clearable style="width: 300px;" :disabled="localMode ==='view'"></el-input>
<el-input v-model="addForm.contacts" clearable style="width: 300px;" :disabled="localMode ==='show'"></el-input>
</el-form-item>
<el-form-item label="借阅时间" prop="borrow_date">
<el-date-picker
@ -28,7 +32,7 @@
placeholder="选择日期时间"
align="right"
value-format="YYYY-MM-DD"
:disabled="localMode ==='view'"
:disabled="localMode ==='show'"
>
</el-date-picker>
</el-form-item>
@ -42,7 +46,7 @@
>
</el-date-picker>
</el-form-item>
<el-form-item label="用途" prop="remark" :disabled="localMode ==='view'">
<el-form-item label="用途" prop="remark" :disabled="localMode ==='show'">
<el-checkbox-group v-model="addForm.remark">
<el-checkbox label="借阅"></el-checkbox>
<el-checkbox label="复印"></el-checkbox>
@ -51,14 +55,14 @@
</el-form-item>
</el-form>
<el-footer v-show="mode!=='show'">
<el-footer>
<ticketd_b
:workflow_key="'borrowrecord'"
:title="ticketTitle"
:t_id="addForm.id"
:ticket_="addForm.ticket_"
:ticket_data="ticket_data"
:submit_b_func="submit"
:submit_b_func="submit_b_func"
ref="ticketd_b"
@success="$emit('success')"
/>
@ -81,12 +85,10 @@ import ticketd_b from "@/views/wf/ticketd_b.vue";
import ticketd from "@/views/wf/ticketd.vue";
export default {
name: "index",
props: {
mode: {
type: String, default: "view"
type: String, default: "show"
},
modelValue: { type: Object, default: () => ({}) },
t_id: {
type: String,
default: null
@ -99,14 +101,10 @@ export default {
data() {
return {
ticketTitle: "档案借阅",
addForm: {
ticket_: {
state_: { type: '' }
},
borrow_file: [],
...this.modelValue },
addForm: {},
localMode : this.mode,
query: {},
apiObjM2: this.$API.ofm.filerecord.list,
fileList: [],
ticket_data: {},
rules: {
@ -117,14 +115,10 @@ export default {
};
},
mounted(){
this.getFileList().then(() => {
console.log('fileList:', this.fileList)
console.log('addForm.borrow_file:', this.addForm.borrow_file)
});
if (this.addForm.ticket_?.state_.type===1){
this.localMode = 'edit'
};
let that = this;
if (that.t_id){
this.getTid();
};
},
watch: {
addForm: {
@ -137,18 +131,13 @@ export default {
}
},
methods: {
async submit() {
async submit_b_func() {
let that = this;
let res = null;
if (that.localMode === "add") {
res = await that.$API.ofm.borrow.create.req(that.addForm);
let res = await that.$API.ofm.borrow.create.req(that.addForm);
that.addForm.id = res.id;
} else if (that.localMode === "edit") {
res = await that.$API.ofm.borrow.update.req(
that.addForm.id,
that.addForm
);
await that.$API.ofm.borrow.update.req(that.addForm.id, that.addForm);
}
},
getFileList() {
@ -173,54 +162,3 @@ export default {
};
</script>
<style scoped>
.treeMain {
height: 280px;
overflow: auto;
border: 1px solid #dcdfe6;
margin-bottom: 10px;
}
::-webkit-scrollbar {
width: 10px;
}
::-webkit-scrollbar-track {
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.2);
background-color: #fefefe;
border-radius: 5px;
}
::-webkit-scrollbar-thumb {
border-radius: 5px;
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.5);
background-color: #f5f5f5;
}
.node rect {
stroke: #606266;
fill: #fff;
}
.edgePath path {
stroke: #606266;
fill: #333;
stroke-width: 1.5px;
}
g.conditions > rect {
fill: #00ffd0;
stroke: #000;
}
.el-icon-close {
cursor: pointer;
}
.left-panel-group {
display: flex;
align-items: center;
gap: 6px; /* 按钮之间的间隙,可以调小点 */
margin-left: 0; /* 靠左 */
}
</style>

View File

@ -6,7 +6,6 @@
type="primary"
icon="el-icon-plus"
@click="handleAdd"
v-auth="'publicity.create'"
></el-button>
</div>
</el-header>
@ -68,14 +67,13 @@
prop="dept_opinion_review"
min-width="100"
></el-table-column>
<el-table-column label="所在节点" min-width="60">
<el-table-column label="审批信息" width="200">
<template #default="scope">
{{scope.row.ticket_.state_.name}}
</template>
</el-table-column>
<el-table-column label="进行状态" min-width="60">
<template #default="scope">
{{statusOptions[scope.row.ticket_.state_.type]}}
<el-tag :type="actStateEnum[scope.row.ticket_?.act_state]?.type">
{{ actStateEnum[scope.row.ticket_?.act_state]?.text }}
</el-tag>
<el-tag type="info" effect="plain">{{ scope.row.ticket_?.state_.name }}</el-tag>
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" align="center" width="250">
@ -84,179 +82,73 @@
link
size="small"
type="primary"
@click="publicityEdit(scope.row)"
v-auth="'publicity.update'"
@click="publicityShow(scope.row)"
>详情
</el-button>
<!-- <el-popconfirm
<el-popconfirm
title="确定删除吗?"
@confirm="publicityDel(scope.row)"
@confirm="handleDel(scope.row)"
>
<template #reference>
<el-button
link
size="small"
type="danger"
v-auth="'vehicle.delete'"
v-auth="'publicity.delete'"
>删除</el-button
>
</template>
</el-popconfirm> -->
</el-popconfirm>
</template>
</el-table-column>
</scTable>
</el-main>
</el-container>
<el-drawer :title="titleMap[type] " v-model="limitedVisible" direction="rtl" size="70%">
<el-drawer title="宣传报道" v-model="limitedVisible" direction="rtl" size="70%">
<div style="display: flex; height: calc(100% - 60px);">
<div style="flex: 1; padding-right: 20px; overflow-y: auto;">
<publicity
v-if="limitedVisible"
:mode="type"
:modelValue="addForm"
:transitions="transitions"
:mode="mode"
:t_id="t_id"
@success="()=>{handleQuery(); limitedVisible = false}"
@closed="clearState"
@submit="savePublicity"
/>
</div>
</div>
</el-drawer>
</template>
<script>
import publicity from "./publicityForm.vue";
import { actStateEnum, interveneTypeEnum } from "@/utils/enum.js";
export default {
components: {publicity},
name: "index",
data() {
return {
workflowName:"",
workFlowId:'',
apiObj: this.$API.ofm.publicity.list,
transitions:[],
timeRange: [],
actStateEnum, interveneTypeEnum,
query: {},
isSaving: false,
limitedVisible: false,
limitedWatch: false,
type: "add",
titleMap: {
add: "新增",
edit: "编辑",
show: "查看",
},
statusOptions:{
0: "审批中",
1: "初始中",
2: "已完成",
},
//
addForm: {
number: null,
title: null,
participants: null,
department: null,
pfile: '',
level: null,
content: [],
other_content: '',
channel: [],
other_channel: null,
report_purpose: null,
report_name: null,
review:null,
dept_opinion: [],
dept_opinion_review: null,
publicity_opinion: null,
ticket_: null,
},
mode: "show",
t_id: null,
};
},
mounted(){
let that = this;
that.getInit();
},
methods: {
//
//
getInit() {
let that = this;
if(this.addForm.ticket_!==null){
this.$API.wf.ticket.ticketTransitions.req(this.addForm.ticket_).then((res) => {
that.transitions = res;
})
}else{
that.$API.wf.workflow.initkey.req("publicity").then((res) => {
that.initForm = res;
that.transitions = res.transitions;
});
}
},
clearState(){
this.type = ' ';
this.addForm = this.getDefaultForm();
this.limitedVisible = false;
},
handleAdd() {
this.type = "add";
this.addForm = this.getDefaultForm();
this.$nextTick(()=>{
this.mode = "add";
this.t_id = null;
this.limitedVisible = true;
})
},
getDefaultForm(){
return {
number: null,
title: null,
participants: null,
pub_dept: null,
pfile: '',
level: null,
content: [],
other_content: '',
channel: [],
other_channel: null,
report_purpose: null,
report_name: null,
review:null,
dept_opinion: [],
dept_opinion_review: null,
publicity_opinion: null,
ticket_: null,
}
},
//
publicityEdit(row) {
this.type = "view";
this.addForm = Object.assign({}, row);
this.$nextTick(()=>{
publicityShow(row) {
this.mode = "show";
this.t_id = row.id;
this.limitedVisible = true;
})
},
async publicityDel(row) {
async handleDel(row) {
var id = row.id;
var res = await this.$API.ofm.publicity.delete.req(id);
if (res.err_msg) {
this.$message.error(res.err_msg);
} else {
await this.$API.ofm.publicity.delete.req(id);
this.$refs.table.refresh();
this.$message.success("删除成功");
}
},
savePublicity(){
this.isSaving = true;
this.$API.ofm.publicity.update.req(this.addForm.id, this.addForm).then((res) => {
this.isSaving = false;
if (res.err_code) {
this.$message.error(res.err_msg);
} else {
this.$message.success("更新成功");
// this.limitedVisible = false;
this.$refs.table.refresh();
}
});
},
//
handleQuery() {
@ -266,54 +158,5 @@ export default {
};
</script>
<style scoped>
.treeMain {
height: 280px;
overflow: auto;
border: 1px solid #dcdfe6;
margin-bottom: 10px;
}
::-webkit-scrollbar {
width: 10px;
}
::-webkit-scrollbar-track {
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.2);
background-color: #fefefe;
border-radius: 5px;
}
::-webkit-scrollbar-thumb {
border-radius: 5px;
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.5);
background-color: #f5f5f5;
}
.node rect {
stroke: #606266;
fill: #fff;
}
.edgePath path {
stroke: #606266;
fill: #333;
stroke-width: 1.5px;
}
g.conditions > rect {
fill: #00ffd0;
stroke: #000;
}
.el-icon-close {
cursor: pointer;
}
.left-panel-group {
display: flex;
align-items: center;
gap: 6px; /* 按钮之间的间隙,可以调小点 */
margin-left: 0; /* 靠左 */
}
</style>

View File

@ -9,35 +9,35 @@
label-position="left"
>
<el-form-item label="送审稿件标题" prop="title">
<el-input v-model="addForm.title" clearable :disabled="localMode ==='view'"></el-input>
<el-input v-model="addForm.title" clearable :disabled="localMode ==='show'"></el-input>
</el-form-item>
<el-form-item label="文件内容">
<sc-upload-file
v-model="addForm.pfile"
:multiple="false"
:limit="1"
:disabled="localMode ==='view'"
:disabled="localMode ==='show'"
:accept="['.xlsx', '.xls','.pdf','.docx', '.doc', '.jpg', '.png', '.jpeg']"
@success = "fileUPSuccess"
>
<el-button type="primary" icon="el-icon-upload" :disabled="localMode ==='view'"> </el-button>
<el-button type="primary" icon="el-icon-upload" :disabled="localMode ==='show'"> </el-button>
</sc-upload-file>
</el-form-item>
<el-form-item label="所有撰稿人" prop="participants">
<el-input v-model="addForm.participants" clearable :disabled="localMode ==='view'"></el-input>
<el-input v-model="addForm.participants" clearable :disabled="localMode ==='show'"></el-input>
</el-form-item>
<el-form-item label="部室/研究院" prop="pub_dept">
<el-input v-model="addForm.pub_dept" clearable :disabled="localMode ==='view'"></el-input>
<el-input v-model="addForm.pub_dept" clearable :disabled="localMode ==='show'"></el-input>
</el-form-item>
<el-form-item label="第一撰稿人涉密等级" prop="level">
<el-radio-group v-model="addForm.level" :disabled="localMode ==='view'">
<el-radio-group v-model="addForm.level" :disabled="localMode ==='show'">
<el-radio label="重要"></el-radio>
<el-radio label="一般"></el-radio>
<el-radio label="非涉密"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="稿件内容涉及" prop="content">
<el-checkbox-group v-model="addForm.content" :disabled="localMode ==='view'">
<el-checkbox-group v-model="addForm.content" :disabled="localMode ==='show'">
<el-checkbox label="武器装备科研生产综合事项"></el-checkbox>
<el-checkbox label="其他"></el-checkbox>
</el-checkbox-group>
@ -47,14 +47,14 @@
placeholder = "请输入名称"
size = "small"
style="margin-top: 10;"
:disabled="localMode ==='view'"
:disabled="localMode ==='show'"
></el-input>
</el-form-item>
<el-form-item label="宣传报道目的" prop="report_purpose">
<el-input v-model="addForm.report_purpose" clearable :disabled="localMode ==='view'"></el-input>
<el-input v-model="addForm.report_purpose" clearable :disabled="localMode ==='show'"></el-input>
</el-form-item>
<el-form-item label="宣传渠道" prop="channel">
<el-checkbox-group v-model="addForm.channel" :disabled="localMode ==='view'">
<el-checkbox-group v-model="addForm.channel" :disabled="localMode ==='show'">
<el-checkbox label="互联网"></el-checkbox>
<el-checkbox label="信息平台"></el-checkbox>
<el-checkbox label="官微"></el-checkbox>
@ -67,42 +67,44 @@
placeholder = "请输入渠道名称"
size = "small"
style="margin-top: 10;"
:disabled="localMode ==='view'"
:disabled="localMode ==='show'"
></el-input>
</el-form-item>
<el-form-item label="第一撰稿人自审" prop="review">
<el-radio-group v-model="addForm.review" :disabled="localMode ==='view'">
<el-radio-group v-model="addForm.review" :disabled="localMode ==='show'">
<el-radio label="内容不涉及国家秘密和商业秘密,申请公开"></el-radio>
<el-radio label="内容不涉及国家秘密、但涉及商业秘密,申请受控公开"></el-radio>
<el-radio label="内容涉及国家秘密,申请按涉密渠道发布"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="所在部室/研究院定密意见" prop="dept_opinion" v-if="addForm.ticket_?.state_?.name === '部门领导审批'">
<el-form-item label="所在部室/研究院定密意见" prop="dept_opinion" v-if="['部门领导审批', '总经理审批', '结束'].includes(addForm.ticket_?.state_?.name)">
<div class="dept-opinion-wrap">
<div>
<el-checkbox-group v-model="ticket_data.dept_opinion" style="display: inline;">
<el-checkbox label="不符合定密要求"></el-checkbox>
</el-checkbox-group>
<span>应做</span>
<el-checkbox-group v-model="ticket_data.dept_opinion" style="display: inline;">
<el-checkbox label="公开"></el-checkbox>
<el-checkbox label="受控"></el-checkbox>
</el-checkbox-group>
<el-radio-group v-model="addForm.dept_opinion" style="display: inline;" :disabled="addForm.ticket_?.state_?.name === '总经理审批'">
<el-radio label="不符合定密要求">不符合定密要求</el-radio>
<el-radio label="同意内容为涉密事项">同意内容为涉密事项</el-radio>
</el-radio-group>
</div>
<!-- 根据选择显示不同的选项 -->
<div v-if="addForm.dept_opinion === '不符合定密要求'" style="margin-top: 8px;">
<span>应做</span>
<el-radio-group v-model="disposalMethod" style="display: inline; margin-left: 5px;" :disabled="addForm.ticket_?.state_?.name === '总经理审批'">
<el-radio label="公开">公开</el-radio>
<el-radio label="受控">受控</el-radio>
</el-radio-group>
<span>处理</span>
</div>
<div style="margin-top: 8px;">
<el-checkbox-group v-model="ticket_data.dept_opinion" style="display: inline;">
<el-checkbox label="同意内容为涉密事项"></el-checkbox>
</el-checkbox-group>
<span>涉密等级为</span>
<el-checkbox-group v-model="ticket_data.dept_opinion" style="display: inline;">
<el-checkbox label="机密"></el-checkbox>
<el-checkbox label="秘密"></el-checkbox>
</el-checkbox-group>
<div v-if="addForm.dept_opinion === '同意内容为涉密事项'" style="margin-top: 8px;">
<span>涉密等级为</span>
<el-radio-group v-model="addForm.secret_level" style="display: inline; margin-left: 5px;">
<el-radio label="机密">机密</el-radio>
<el-radio label="秘密">秘密</el-radio>
</el-radio-group>
<span>保密期限解密时间或解密条件</span>
<el-input
v-model="ticket_data.secret_period"
v-model="addForm.secret_period"
placeholder="请输入期限"
style="width: 200px; margin-left: 5px;"
size="small"
@ -111,15 +113,15 @@
</div>
</div>
</el-form-item>
<el-form-item label="所在部室/研究院审查意见" prop="dept_opinion_review" v-if="addForm.ticket_?.state_?.name === '总经理审批'">
<el-radio-group v-model="ticket_data.dept_opinion_review">
<el-form-item label="所在部室/研究院审查意见" prop="dept_opinion_review" v-if="['部门领导审批', '总经理审批', '结束'].includes(addForm.ticket_?.state_?.name)">
<el-radio-group v-model="addForm.dept_opinion_review" :disabled="addForm.ticket_?.state_?.name === '总经理审批'">
<el-radio label="内容不涉及国家秘密和商业秘密,同意公开"></el-radio>
<el-radio label="内容不涉及国家秘密、但涉及商业秘密,同意受控公开"></el-radio>
<el-radio label="内容涉及国家秘密,同意按涉密渠道发布"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="宣传统战部审查意见" prop="publicity_opinion" v-if="addForm.ticket_?.state_?.name === '总经理审批'">
<el-radio-group v-model="ticket_data.publicity_opinion">
<el-form-item label="宣传统战部审查意见" prop="publicity_opinion" v-if="['总经理审批', '结束'].includes(addForm.ticket_?.state_?.name)">
<el-radio-group v-model="addForm.publicity_opinion">
<el-radio label="同意公开宣传报道"></el-radio>
<el-radio label="同意受控报道"></el-radio>
<el-radio label="同意按涉密渠道宣传报道"></el-radio>
@ -127,7 +129,7 @@
</el-radio-group>
</el-form-item>
</el-form>
<el-footer v-show="mode!=='show'">
<el-footer>
<ticketd_b
:workflow_key="'publicity'"
:title="ticketTitle"
@ -137,7 +139,7 @@
:submit_b_func="submit_b_func"
ref="ticketd_b"
@success="$emit('success')"
@colsed="$emit('closed')"/>
/>
</el-footer>
</el-main>
<el-aside v-if="addForm.ticket">
@ -151,7 +153,6 @@
</el-container>
</template>
<script>
import ticketd_b from "@/views/wf/ticketd_b.vue";
import ticketd from '@/views/wf/ticketd.vue'
@ -159,19 +160,20 @@ export default {
name: "index",
props: {
mode: {
type: String, default: "view"
type: String, default: "show"
}, // add / edit / show
t_id: {
type: String, default: null
},
modelValue: { type: Object, default: () => ({})},
transitions: { type: Array, default: () => [] },
},
components: {
ticketd, ticketd_b
},
emits: ["update:modelValue", "submit", "cancel"],
data(){
return {
ticketTitle: "宣传报道",
ticket_data: {},
addForm:{},
localMode : this.mode,
rules: {
file_name: [
@ -180,31 +182,54 @@ export default {
},
}
},
computed: {
addForm: {
get() {
return this.modelValue;
},
set(val) {
this.$emit("update:modelValue", val);
},
},
},
mounted() {
this.getTid();
if (this.addForm.ticket_?.state_.type===1){
this.localMode = 'edit'
let that = this;
if (that.t_id) {
that.getTid();
};
},
watch: {
'addForm.dept_opinion'(val) {
console.log('addForm.dept_opinion 发生变化',val)
this.ticket_data.dept_opinion = val
},
'addForm.secret_period'(val) {
this.ticket_data.secret_period = val
},
'addForm.secret_level'(val) {
this.ticket_data.secret_level = val
},
'addForm.disposal_method'(val) {
console.log('addForm.disposal_method 发生变化',val)
this.ticket_data.disposal_method = val
},
'addForm.dept_opinion_review'(val) {
this.ticket_data.dept_opinion_review = val
},
'addForm.publicity_opinion'(val) {
console.log('addForm.publicity_opinion 发生变化',val)
this.ticket_data.publicity_opinion = val
},
deep:true
},
computed: {
disposalMethod: {
get() {
return this.addForm.disposal_method || '';
},
set(value) {
this.addForm.disposal_method = value;
}
}
},
methods: {
async submit_b_func() {
let that = this;
let res = null;
if (that.localMode === "add") {
res = await that.$API.ofm.publicity.create.req(that.addForm);
let res = await that.$API.ofm.publicity.create.req(that.addForm);
that.addForm.id = res.id;
} else if (that.localMode === "edit"){
res = await that.$API.ofm.publicity.update.req(
await that.$API.ofm.publicity.update.req(
that.addForm.id,
that.addForm
);
@ -227,65 +252,5 @@ export default {
};
</script>
<style scoped>
.treeMain {
height: 280px;
overflow: auto;
border: 1px solid #dcdfe6;
margin-bottom: 10px;
}
::-webkit-scrollbar {
width: 10px;
}
::-webkit-scrollbar-track {
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.2);
background-color: #fefefe;
border-radius: 5px;
}
::-webkit-scrollbar-thumb {
border-radius: 5px;
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.5);
background-color: #f5f5f5;
}
.node rect {
stroke: #606266;
fill: #fff;
}
.edgePath path {
stroke: #606266;
fill: #333;
stroke-width: 1.5px;
}
g.conditions > rect {
fill: #00ffd0;
stroke: #000;
}
.el-icon-close {
cursor: pointer;
}
.left-panel-group {
display: flex;
align-items: center;
gap: 6px; /* 按钮之间的间隙,可以调小点 */
margin-left: 0; /* 靠左 */
}
.dept-opinion-wrap {
display: flex;
flex-direction: column;
line-height: 1.8;
}
.dept-opinion-wrap .el-checkbox {
margin-right: 6px;
}
</style>

View File

@ -6,7 +6,6 @@
type="primary"
icon="el-icon-plus"
@click="handleAdd"
v-auth="'seal.create'"
>新增</el-button>
</div>
<div class="right-panel">