|
|
|
@ -6,13 +6,13 @@ import {listPolice} from "@/api/system/police"; |
|
|
|
import {getList,save,delCommon} from '@/api/commonOpinions'; |
|
|
|
import {getList,save,delCommon} from '@/api/commonOpinions'; |
|
|
|
import useCatchStore from "@/stores/modules/catch"; |
|
|
|
import useCatchStore from "@/stores/modules/catch"; |
|
|
|
import useUserStore from "@/stores/modules/user"; |
|
|
|
import useUserStore from "@/stores/modules/user"; |
|
|
|
|
|
|
|
import { saveLastChoice, loadLastChoice } from '@/utils/lastChoice'; |
|
|
|
|
|
|
|
|
|
|
|
const userStore = useUserStore(); |
|
|
|
const userStore = useUserStore(); |
|
|
|
const props = defineProps(['dialog','reportId','node','isAudit']) |
|
|
|
const props = defineProps(['dialog','reportId','node','isAudit']) |
|
|
|
const emits = defineEmits(['submitFeedback',"closeFun"]) |
|
|
|
const emits = defineEmits(['submitFeedback',"closeFun"]) |
|
|
|
const loading =ref(false) |
|
|
|
const loading =ref(false) |
|
|
|
|
|
|
|
|
|
|
|
const catchSotre = useCatchStore(); |
|
|
|
const catchSotre = useCatchStore(); |
|
|
|
|
|
|
|
|
|
|
|
const departs = catchSotre.getDeparts() ; |
|
|
|
const departs = catchSotre.getDeparts() ; |
|
|
|
const formData = ref({ |
|
|
|
const formData = ref({ |
|
|
|
isInform:'1' |
|
|
|
isInform:'1' |
|
|
|
@ -45,6 +45,7 @@ const flowNodes = ref([ |
|
|
|
value:'audit' |
|
|
|
value:'audit' |
|
|
|
} |
|
|
|
} |
|
|
|
]) |
|
|
|
]) |
|
|
|
|
|
|
|
const silentUnitChange = ref(false); |
|
|
|
|
|
|
|
|
|
|
|
const getNodesFun = (val)=>{ |
|
|
|
const getNodesFun = (val)=>{ |
|
|
|
let data = []; |
|
|
|
let data = []; |
|
|
|
@ -141,7 +142,7 @@ function getPoliceList() { |
|
|
|
}); |
|
|
|
}); |
|
|
|
loading.value=false |
|
|
|
loading.value=false |
|
|
|
} |
|
|
|
} |
|
|
|
getPoliceList() |
|
|
|
// getPoliceList() |
|
|
|
|
|
|
|
|
|
|
|
// 获取常用意见 |
|
|
|
// 获取常用意见 |
|
|
|
const commonList =ref([]) |
|
|
|
const commonList =ref([]) |
|
|
|
@ -206,12 +207,72 @@ const submitFun = async ()=>{ |
|
|
|
//nextNode |
|
|
|
//nextNode |
|
|
|
|
|
|
|
|
|
|
|
const res = await auditReport(formData.value); |
|
|
|
const res = await auditReport(formData.value); |
|
|
|
|
|
|
|
// === 写回“当前节点桶”的最近一次选择 === |
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
const curUserId = userStore?.user?.userName || userStore?.user?.id || ''; |
|
|
|
|
|
|
|
const nodeKey = formData.value.nextNode || 'default'; |
|
|
|
|
|
|
|
saveLastChoice(curUserId, nodeKey, { |
|
|
|
|
|
|
|
approverUnitId: formData.value.approverUnitId, |
|
|
|
|
|
|
|
approverUnit: formData.value.approverUnit, |
|
|
|
|
|
|
|
approverId: formData.value.approverId, |
|
|
|
|
|
|
|
approver: formData.value.approver, |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
} catch (e) {} |
|
|
|
|
|
|
|
|
|
|
|
feedback.msgSuccess("操作成功"); |
|
|
|
feedback.msgSuccess("操作成功"); |
|
|
|
emits('submitFeedback',true) |
|
|
|
emits('submitFeedback',true) |
|
|
|
closeAdd() |
|
|
|
closeAdd() |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 计算“记忆桶”的节点 key(优先使用当前选择的 nextNode) |
|
|
|
|
|
|
|
const nodeKeyOf = (nodeOverride) => nodeOverride || formData.value.nextNode || 'default'; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 事件:当选择“办理流程”节点时,从缓存拿数据回显 |
|
|
|
|
|
|
|
const handleFlowChange = async (node) => { |
|
|
|
|
|
|
|
debugger |
|
|
|
|
|
|
|
// 确保模型已是最新节点 |
|
|
|
|
|
|
|
formData.value.nextNode = node; |
|
|
|
|
|
|
|
// 2) 读取上次选择(按 用户ID + 节点 分桶) |
|
|
|
|
|
|
|
const uid = userStore?.user?.userName || userStore?.user?.id || ''; |
|
|
|
|
|
|
|
const hint = loadLastChoice(uid, nodeKeyOf(node)); |
|
|
|
|
|
|
|
if (!hint){ |
|
|
|
|
|
|
|
// formData.value.approverUnitId = null; |
|
|
|
|
|
|
|
// formData.value.approverUnit = null; |
|
|
|
|
|
|
|
// formData.value.approverId = null; |
|
|
|
|
|
|
|
// formData.value.approver = null; |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// —— 开始静默:避免 watcher 再拉一次 —— |
|
|
|
|
|
|
|
silentUnitChange.value = true; |
|
|
|
|
|
|
|
// 3) 直接覆盖“办理单位” |
|
|
|
|
|
|
|
formData.value.approverUnitId = hint.approverUnitId ?? null; |
|
|
|
|
|
|
|
formData.value.approverUnit = hint.approverUnit ?? null; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 4) 为了让“审核人”下拉是该单位的人,按单位拉一次人员列表(不做任何判断,强制拉) |
|
|
|
|
|
|
|
if (hint.approverUnitId) { |
|
|
|
|
|
|
|
query.value.departId = hint.approverUnitId; |
|
|
|
|
|
|
|
loading.value = true; |
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
const data = await listPolice(query.value); |
|
|
|
|
|
|
|
polices.value = data?.records || []; |
|
|
|
|
|
|
|
} finally { |
|
|
|
|
|
|
|
loading.value = false; |
|
|
|
|
|
|
|
delete query.value.departId; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 5) 直接覆盖“审核人” |
|
|
|
|
|
|
|
formData.value.approverId = hint.approverId ?? null; |
|
|
|
|
|
|
|
formData.value.approver = hint.approver ?? null; |
|
|
|
|
|
|
|
// —— 结束静默 —— |
|
|
|
|
|
|
|
silentUnitChange.value = false; |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
watch(()=>props.dialog,(val)=>{ |
|
|
|
watch(()=>props.dialog,(val)=>{ |
|
|
|
debugger |
|
|
|
debugger |
|
|
|
if(val){ |
|
|
|
if(val){ |
|
|
|
@ -268,7 +329,7 @@ watch(()=>formData.value.approverId,(val)=>{ |
|
|
|
<depart-tree-select :auth="false" v-model="formData.approverUnitId" :size="'default'" placeholder="" clearable/> |
|
|
|
<depart-tree-select :auth="false" v-model="formData.approverUnitId" :size="'default'" placeholder="" clearable/> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="办理流程" prop="nextNode" :rules="{ required: true, message: '请选择办理流程', trigger: 'blur' }"> |
|
|
|
<el-form-item label="办理流程" prop="nextNode" :rules="{ required: true, message: '请选择办理流程', trigger: 'blur' }"> |
|
|
|
<el-select v-model="formData.nextNode"> |
|
|
|
<el-select v-model="formData.nextNode" @change="handleFlowChange"> |
|
|
|
<el-option v-for="(item,index) in flowNodes" :value="item.value" :label="item.label" :key="index"></el-option> |
|
|
|
<el-option v-for="(item,index) in flowNodes" :value="item.value" :label="item.label" :key="index"></el-option> |
|
|
|
</el-select> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
|