|
|
@@ -29,7 +29,7 @@
|
|
|
:auto-expand-keys="treeAutoExpandKeys"
|
|
|
default-expand-all
|
|
|
:menus="treeMenus"
|
|
|
- @node-tap="wbsElTreeClick"
|
|
|
+ @node-tap="wbsElTreeClick"
|
|
|
@menu-tap="ElTreeMenuClick"
|
|
|
/>
|
|
|
</el-scrollbar>
|
|
|
@@ -41,7 +41,7 @@
|
|
|
is-type
|
|
|
:menus="treeMenus"
|
|
|
@load="treeLoadNode"
|
|
|
- @node-tap="wbsElTreeClick"
|
|
|
+ @node-tap="wbsElTreeClick"
|
|
|
@menu-tap="ElTreeMenuClick"
|
|
|
/>
|
|
|
</el-scrollbar>
|
|
|
@@ -168,8 +168,8 @@
|
|
|
<HcIcon name="send-plane-2" />
|
|
|
<span>上报</span>
|
|
|
</el-button>
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
<el-button :disabled="tableCheckedKeys.length <= 0" :loading="reportLoading" hc-btn color="#FF976A" style="color: white;" @click="reportModalClick">
|
|
|
<HcIcon name="send-plane-2" />
|
|
|
<span>上报且审批</span>
|
|
|
@@ -183,11 +183,11 @@
|
|
|
<span>save-again</span>
|
|
|
</el-button>
|
|
|
<el-button :disabled="tableCheckedKeys.length <= 0" :loading="signLoading" hc-btn type="primary" @click="resignClick"> <HcIcon name="repeat" />re-sign</el-button>
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
<el-button
|
|
|
hc-btn
|
|
|
- color="#52B200"
|
|
|
+ color="#52B200"
|
|
|
style="color: white;"
|
|
|
:disabled="tableCheckedKeys.length <= 0 "
|
|
|
@click="batchOnlineClick"
|
|
|
@@ -195,15 +195,15 @@
|
|
|
<HcIcon name="survey" />
|
|
|
<span>电签检测</span>
|
|
|
</el-button>
|
|
|
-
|
|
|
+
|
|
|
<HcTooltip keys="data-query-once-agin">
|
|
|
- <el-button
|
|
|
+ <el-button
|
|
|
v-if="userInfo.dept_id === '1536982621165592577'"
|
|
|
- :disabled="tableCheckedKeys.length <= 0 || userInfo.dept_id !== '1536982621165592577'"
|
|
|
- :loading="signLoading"
|
|
|
- hc-btn type="warning"
|
|
|
+ :disabled="tableCheckedKeys.length <= 0 || userInfo.dept_id !== '1536982621165592577'"
|
|
|
+ :loading="signLoading"
|
|
|
+ hc-btn type="warning"
|
|
|
@click="resignClick1"
|
|
|
- >
|
|
|
+ >
|
|
|
<HcIcon name="repeat" />
|
|
|
一键电签
|
|
|
</el-button>
|
|
|
@@ -237,7 +237,7 @@
|
|
|
/>
|
|
|
</el-select>
|
|
|
</div>
|
|
|
-
|
|
|
+
|
|
|
<div class="ml-2 w-40">
|
|
|
<el-select v-model="searchForm.sourceType" clearable placeholder="文件类型">
|
|
|
<el-option
|
|
|
@@ -411,8 +411,8 @@
|
|
|
<el-checkbox-group v-model="checkTaskUserIds">
|
|
|
<el-checkbox v-for="item in tableCheckedKeys[0].waitingUserList" :key="item.id" :label="item.waitingUserName" :value="item.userId">
|
|
|
<el-tag
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
:type="`${item.status === 2 ? 'success' : item.status === 3 ? 'warning' : item.status === 999 ? 'danger' : 'info'}`"
|
|
|
class="mx-1" effect="dark"
|
|
|
>
|
|
|
@@ -442,13 +442,13 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</template>
|
|
|
-
|
|
|
+
|
|
|
<div class="flex items-center justify-between">
|
|
|
<div>批量设置:</div>
|
|
|
- <el-select
|
|
|
- v-model="setValue"
|
|
|
- placeholder="请选择"
|
|
|
-
|
|
|
+ <el-select
|
|
|
+ v-model="setValue"
|
|
|
+ placeholder="请选择"
|
|
|
+
|
|
|
multiple
|
|
|
clearable
|
|
|
class="custom-select flex-1"
|
|
|
@@ -464,16 +464,16 @@
|
|
|
</el-select>
|
|
|
<el-button type="primary" hc-btn size="small" class="ml-2" :disabled="setValue.length === 0" @click="batchSetRule">设置</el-button>
|
|
|
</div>
|
|
|
-
|
|
|
+
|
|
|
<div style="position: relative; height: 440px" class="mt-2">
|
|
|
<HcTable v-loading="ruleTableLoading" :column="ruleTableColumn" :datas="ruleTableData" :loading="ruleTableLoading">
|
|
|
<template #rule="{ row }">
|
|
|
<div class="flex items-center">
|
|
|
<span class="text-red">*</span>
|
|
|
- <el-select
|
|
|
+ <el-select
|
|
|
v-model="row.rule"
|
|
|
- :class="{ 'error-border': !row.rule || row.rule.length === 0 }"
|
|
|
- placeholder="请选择"
|
|
|
+ :class="{ 'error-border': !row.rule || row.rule.length === 0 }"
|
|
|
+ placeholder="请选择"
|
|
|
multiple
|
|
|
clearable
|
|
|
class="custom-select"
|
|
|
@@ -543,7 +543,7 @@ const treeAutoExpandKeys = ref(getStoreValue('wbsTreeExpandKeys') || [])
|
|
|
|
|
|
//渲染完成
|
|
|
onMounted(() => {
|
|
|
- // getOtherPaceInfoData()
|
|
|
+ getOtherPaceInfoData()
|
|
|
getCheckPdfPaceInfoData()
|
|
|
getFileUser()
|
|
|
getReportNumber()
|
|
|
@@ -553,7 +553,7 @@ onMounted(() => {
|
|
|
isCanDown.value = !website.localModel
|
|
|
const treeWidth = useAppState.getTreeWidth
|
|
|
leftWidth.value = isNullES(treeWidth) || treeWidth <= 0 ? 440 : treeWidth
|
|
|
-
|
|
|
+
|
|
|
})
|
|
|
|
|
|
//获取
|
|
|
@@ -655,7 +655,7 @@ const wbsElTreeClick = ({ node, data, keys }) => {
|
|
|
searchForm.value.current = 1
|
|
|
getFileUser()
|
|
|
getTableData()
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
|
|
|
//搜索条件
|
|
|
@@ -667,7 +667,7 @@ const reportBatchData = ref([]) //上报批次
|
|
|
//获取所有填报人
|
|
|
const getFileUser = async () => {
|
|
|
const info = nodeDataInfo.value
|
|
|
-
|
|
|
+
|
|
|
if (!info ) {
|
|
|
window.$message?.warning('请先点击左侧节点')
|
|
|
return
|
|
|
@@ -806,7 +806,7 @@ const tableListRef = ref(null)
|
|
|
const tableLoading = ref(false)
|
|
|
const tableListColumn = ref([
|
|
|
{ key: 'name', name: '文件题名' },
|
|
|
-
|
|
|
+
|
|
|
{ key: 'taskStatusStr', name: '资料状态', width: 100, align: 'center' },
|
|
|
{ key: 'chekStatus', name: '检测状态', width: 100, align: 'center' },
|
|
|
{ key: 'checkDesc', name: '检测描述', align: 'center' },
|
|
|
@@ -1124,7 +1124,7 @@ const leftWidth = ref(300)
|
|
|
watch(
|
|
|
() => leftWidth.value,
|
|
|
(diffVal) => {
|
|
|
-
|
|
|
+
|
|
|
setUserConfig(diffVal)
|
|
|
},
|
|
|
)
|
|
|
@@ -1163,9 +1163,9 @@ const resignModalRadio = ref(0)
|
|
|
const resignClick = async ()=>{
|
|
|
const rows = tableCheckedKeys.value
|
|
|
|
|
|
-
|
|
|
+
|
|
|
if (rows.length <= 0) {
|
|
|
- window.$message?.warning('勾选错误!只能操作待审批和已审批数据')
|
|
|
+ window.$message?.warning('只能操作待审批和已审批数据')
|
|
|
return
|
|
|
}
|
|
|
|
|
|
@@ -1179,7 +1179,7 @@ const signClick = async () => {
|
|
|
const taskIds = arrToKey(rows, 'taskId')
|
|
|
const idsArr = taskIds.split(',')
|
|
|
let isCan = idsArr.some(ele=>!ele)
|
|
|
-
|
|
|
+
|
|
|
if (isCan) {
|
|
|
window.$message?.warning('该数据不存在任务ID,请重新勾选数据!')
|
|
|
|
|
|
@@ -1215,7 +1215,7 @@ const saveAginClick = async ()=>{
|
|
|
const rows = tableCheckedKeys.value
|
|
|
const taskIds = rows.map(row => row.taskId)
|
|
|
if (taskIds.some(id => id)) {
|
|
|
- window.$message?.warning('勾选错误!只能操作未上报的数据')
|
|
|
+ window.$message?.warning('只能操作未上报的数据')
|
|
|
return
|
|
|
}
|
|
|
const objArr = rows.map(row => ({
|
|
|
@@ -1242,15 +1242,15 @@ const saveAginLoading = ref(false)
|
|
|
//重置文件题名
|
|
|
const resignTitleModal = ref(false)
|
|
|
const resignTitleClick = async ()=>{
|
|
|
-
|
|
|
+
|
|
|
// resignTitleModal.value = true
|
|
|
if (isTemplateType.value) {
|
|
|
-
|
|
|
+
|
|
|
resignTitleModal.value = true
|
|
|
} else {
|
|
|
resignTitleSave()
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
const resignTitleSave = async ()=>{
|
|
|
const rows = tableCheckedKeys.value
|
|
|
@@ -1290,11 +1290,11 @@ const changeRuleClick = async ()=>{
|
|
|
|
|
|
let arr = tableCheckedKeys.value.map(item=>{
|
|
|
return {
|
|
|
-
|
|
|
+
|
|
|
wbsId:item.wbsId,
|
|
|
projectId:projectId.value,
|
|
|
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
})
|
|
|
let arr1 = await getRuleListData(arr)
|
|
|
@@ -1309,9 +1309,9 @@ const changeRuleClick = async ()=>{
|
|
|
}
|
|
|
}
|
|
|
// ruleTableData.value = arr
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
const ruleModal = ref(false)
|
|
|
const ruleModalSaveLoad = ref(false)
|
|
|
@@ -1350,7 +1350,7 @@ const ruleModalSave = async ()=>{
|
|
|
resignTitleModal.value = false
|
|
|
|
|
|
|
|
|
- }
|
|
|
+ }
|
|
|
}
|
|
|
const setValue = ref('')
|
|
|
|
|
|
@@ -1370,16 +1370,16 @@ const batchSetRule = async ()=>{
|
|
|
let matchedItems = [] // 存储匹配的项
|
|
|
if (ele.rule.length > 0) {
|
|
|
// 1. 找出所有匹配的项
|
|
|
- matchedItems = nodeTypeData.value.filter(dataItem =>
|
|
|
+ matchedItems = nodeTypeData.value.filter(dataItem =>
|
|
|
ele.rule.includes(dataItem.value),
|
|
|
)
|
|
|
// 2. 按原始 sort 排序
|
|
|
matchedItems.sort((a, b) => a.sort - b.sort)
|
|
|
-
|
|
|
+
|
|
|
// 3. 更新 ele.rule 为排序后的 value 数组
|
|
|
ele.rule = matchedItems.map(item => item.value)
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
})
|
|
|
|
|
|
@@ -1407,36 +1407,36 @@ const batchSetRule = async ()=>{
|
|
|
const ruleChange = async (ele) => {
|
|
|
let str = ''
|
|
|
let matchedItems = [] // 存储匹配的项
|
|
|
-
|
|
|
+
|
|
|
if (ele.rule.length > 0) {
|
|
|
// 1. 找出所有匹配的项
|
|
|
- matchedItems = nodeTypeData.value.filter(dataItem =>
|
|
|
+ matchedItems = nodeTypeData.value.filter(dataItem =>
|
|
|
ele.rule.includes(dataItem.value),
|
|
|
)
|
|
|
-
|
|
|
+
|
|
|
// 2. 按原始 sort 排序
|
|
|
matchedItems.sort((a, b) => a.sort - b.sort)
|
|
|
-
|
|
|
+
|
|
|
// 3. 更新 ele.rule 为排序后的 value 数组
|
|
|
ele.rule = matchedItems.map(item => item.value)
|
|
|
-
|
|
|
+
|
|
|
// 4. 生成连接字符串
|
|
|
str = ele.rule.join('-')
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
// 5. 调用API
|
|
|
let arr = [{
|
|
|
wbsId: ele.wbsId,
|
|
|
nameRule: str,
|
|
|
}]
|
|
|
-
|
|
|
+
|
|
|
let afterArr = await getRuleValue(arr)
|
|
|
ele.newNodeName = afterArr[0].newNodeName
|
|
|
}
|
|
|
const getRuleLoad = ref(false)
|
|
|
const ruleTableLoading = ref(false)
|
|
|
-const getRuleListData = async (arr) => {
|
|
|
+const getRuleListData = async (arr) => {
|
|
|
|
|
|
ruleTableLoading.value = true
|
|
|
const { error, code, msg, data } = await queryApi.getNameRuleList(arr)
|
|
|
@@ -1449,7 +1449,7 @@ const getRuleListData = async (arr) => {
|
|
|
}
|
|
|
|
|
|
}
|
|
|
-const getRuleValue = async (arr) => {
|
|
|
+const getRuleValue = async (arr) => {
|
|
|
// 检查 arr 中每一项的 nameRule 是否有值
|
|
|
const hasInvalidItem = arr.some(item => !item.nameRule || item.nameRule.length === 0)
|
|
|
if (hasInvalidItem) {
|
|
|
@@ -1478,13 +1478,13 @@ const getWbsNodeTypeApi = async () => {
|
|
|
let newArr = []
|
|
|
const newData = getArrValue(data)
|
|
|
for (let i = 0; i < newData.length; i++) {
|
|
|
-
|
|
|
+
|
|
|
newArr.push({
|
|
|
label: newData[i]['dictValue'],
|
|
|
value:newData[i]['dictKey'],
|
|
|
})
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
nodeTypeData.value = newArr
|
|
|
}
|
|
|
@@ -1494,20 +1494,20 @@ const resignModalRadio1 = ref(0)
|
|
|
const resignClick1 = ()=>{
|
|
|
const rows = tableCheckedKeys.value
|
|
|
if (rows.length <= 0) {
|
|
|
- window.$message?.warning('勾选错误!只能操作待审批和已审批数据')
|
|
|
+ window.$message?.warning('只能操作待审批和已审批数据')
|
|
|
return
|
|
|
}
|
|
|
//获取任务id
|
|
|
const taskIds = arrToKey(rows, 'taskId')
|
|
|
const idsArr = taskIds.split(',')
|
|
|
let isCan = idsArr.some(ele=>!ele)
|
|
|
-
|
|
|
+
|
|
|
if (isCan) {
|
|
|
- window.$message?.warning('勾选错误!只能操作待审批和已审批数据')
|
|
|
+ window.$message?.warning('只能操作待审批和已审批数据')
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
|
|
|
resignModal1.value = true
|
|
|
}
|
|
|
@@ -1525,7 +1525,7 @@ const signClick1 = async () => {
|
|
|
const ids = arrToId(rows)
|
|
|
|
|
|
if (resignModalRadio1.value === 1) {
|
|
|
- if (checkTaskUserIds.value.length === 0) {
|
|
|
+ if (checkTaskUserIds.value.length === 0) {
|
|
|
return window.$message?.warning('请选择用户')
|
|
|
}
|
|
|
} else {
|
|
|
@@ -1534,13 +1534,13 @@ const signClick1 = async () => {
|
|
|
//发起请求
|
|
|
signLoading1.value = true
|
|
|
|
|
|
-
|
|
|
+
|
|
|
const { error, code, msg } = await queryApi.reSigningEVisa1({
|
|
|
userIds: checkTaskUserIds.value.length === 1 ? checkTaskUserIds.value[0] : checkTaskUserIds.value.join(','),
|
|
|
|
|
|
ids: ids,
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
})
|
|
|
//处理数据
|
|
|
signLoading1.value = false
|
|
|
@@ -1550,7 +1550,7 @@ const signClick1 = async () => {
|
|
|
cancelresign1()
|
|
|
getTableData().then()
|
|
|
getOtherPaceInfoData()
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
const checkTaskUserIds = ref([])
|
|
|
@@ -1568,7 +1568,7 @@ const batchOnlineClick = async ()=>{
|
|
|
type:2,
|
|
|
ids,
|
|
|
},
|
|
|
-
|
|
|
+
|
|
|
)
|
|
|
batchOnlineClickLoad.value = false
|
|
|
//处理数据
|
|
|
@@ -1578,10 +1578,10 @@ const batchOnlineClick = async ()=>{
|
|
|
window.$message?.success(msg )
|
|
|
getCheckPdfPaceInfoData()
|
|
|
getTableData()
|
|
|
- }
|
|
|
-
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
|
|
|
-
|
|
|
}
|
|
|
const treeMenus = ref([
|
|
|
{
|
|
|
@@ -1589,7 +1589,7 @@ const treeMenus = ref([
|
|
|
label: '电签检测',
|
|
|
key: 'add1',
|
|
|
},
|
|
|
-
|
|
|
+
|
|
|
])
|
|
|
|
|
|
const ElTreeMenuClick = async ({ key, node, data, keys }) => {
|
|
|
@@ -1610,7 +1610,7 @@ const ElTreeMenuClick = async ({ key, node, data, keys }) => {
|
|
|
type:1,
|
|
|
ids:nodeDataInfo.value.primaryKeyId,
|
|
|
},
|
|
|
-
|
|
|
+
|
|
|
)
|
|
|
batchOnlineClickLoad.value = false
|
|
|
//处理数据
|
|
|
@@ -1621,13 +1621,13 @@ const ElTreeMenuClick = async ({ key, node, data, keys }) => {
|
|
|
getCheckPdfPaceInfoData().then()
|
|
|
|
|
|
getTableData().then()
|
|
|
- }
|
|
|
+ }
|
|
|
}
|
|
|
},
|
|
|
})
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
//获取进度状态
|
|
|
const progressObj = ref({
|
|
|
@@ -1637,16 +1637,16 @@ const progressObj = ref({
|
|
|
})
|
|
|
const getCheckPdfPaceInfoData = async () => {
|
|
|
const { error, code, data, msg } = await queryApi.getCheckPdfPaceInfo({
|
|
|
-
|
|
|
+
|
|
|
contractId: contractId.value,
|
|
|
-
|
|
|
+
|
|
|
classify: contractTypeTabKey.value,
|
|
|
})
|
|
|
//处理数据
|
|
|
-
|
|
|
+
|
|
|
if (!error && code === 200) {
|
|
|
progressObj.value = getObjValue(data)
|
|
|
-
|
|
|
+
|
|
|
} else {
|
|
|
progressObj.value = {
|
|
|
finishCount:0,
|
|
|
@@ -1654,7 +1654,7 @@ const getCheckPdfPaceInfoData = async () => {
|
|
|
pace:0,
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
const saveAgainData = ref(
|
|
|
{
|
|
|
@@ -1679,13 +1679,13 @@ const electronicSignData = ref(
|
|
|
)
|
|
|
const getOtherPaceInfoData = async () => {
|
|
|
const { error, code, data, msg } = await queryApi.getTaskProgress({
|
|
|
-
|
|
|
+
|
|
|
contractId: contractId.value,
|
|
|
-
|
|
|
+
|
|
|
projectId:projectId.value,
|
|
|
})
|
|
|
//处理数据
|
|
|
-
|
|
|
+
|
|
|
if (!error && code === 200) {
|
|
|
console.log(data, 'data')
|
|
|
const resData = getObjValue(data)
|
|
|
@@ -1704,8 +1704,8 @@ const getOtherPaceInfoData = async () => {
|
|
|
pace:0,
|
|
|
finishCount:0,
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
} else {
|
|
|
saveAgainData.value = {
|
|
|
totalCount:0,
|
|
|
@@ -1722,9 +1722,9 @@ const getOtherPaceInfoData = async () => {
|
|
|
pace:0,
|
|
|
finishCount:0,
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
</script>
|
|
|
|
|
|
@@ -1740,7 +1740,7 @@ const getOtherPaceInfoData = async () => {
|
|
|
.bg-primary-color {
|
|
|
background-color: var(--el-color-primary) ;
|
|
|
}
|
|
|
-.basic-info-box {
|
|
|
+.basic-info-box {
|
|
|
height: calc(100% - 77px);
|
|
|
}
|
|
|
</style>
|
|
|
@@ -1775,7 +1775,7 @@ const getOtherPaceInfoData = async () => {
|
|
|
overflow-y: hidden;
|
|
|
overflow-x: hidden;
|
|
|
flex-wrap: nowrap;
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
</style>
|