@@ -282,7 +282,7 @@ const | |||||
}) | }) | ||||
} | } | ||||
}, | }, | ||||
emits = defineEmits(['changeIsFirst', 'getBasicInfoData', 'reuseItem']), | |||||
emits = defineEmits(['changeIsFirst', 'getBasicInfoData', 'reuseItem', 'changeProjectTypeResetForm']), | |||||
changeIsFirst = (val) => { | changeIsFirst = (val) => { | ||||
emits('changeIsFirst', val) | emits('changeIsFirst', val) | ||||
}, | }, | ||||
@@ -531,6 +531,14 @@ watch(() => props.dictionaryList, val => { | |||||
watch(() => formData.value, val => { | watch(() => formData.value, val => { | ||||
emits('getBasicInfoData', formData.value) | emits('getBasicInfoData', formData.value) | ||||
}, { deep: true }) | }, { deep: true }) | ||||
const isClickFy = ref(false) | |||||
function changeProjectType () { | |||||
console.log(isClickFy.value) | |||||
if (isClickFy.value) { | |||||
emits('changeProjectTypeResetForm', formData.value) | |||||
} | |||||
} | |||||
</script> | </script> | ||||
<template> | <template> | ||||
@@ -563,6 +571,7 @@ watch(() => formData.value, val => { | |||||
<el-radio-group | <el-radio-group | ||||
v-model="formData.projectType" | v-model="formData.projectType" | ||||
:disabled="$route.name==='declarePlan'||[10012,10013,10016].includes(detailData?.status)" | :disabled="$route.name==='declarePlan'||[10012,10013,10016].includes(detailData?.status)" | ||||
@change="changeProjectType" | |||||
> | > | ||||
<el-radio label="01">首次建设</el-radio> | <el-radio label="01">首次建设</el-radio> | ||||
<el-radio label="02">迭代升级</el-radio> | <el-radio label="02">迭代升级</el-radio> | ||||
@@ -585,7 +594,7 @@ watch(() => formData.value, val => { | |||||
:empty-temp="false" | :empty-temp="false" | ||||
> | > | ||||
<template #action="{scope}"> | <template #action="{scope}"> | ||||
<a v-if="formData.projectType==='03'" class="text-primary" @click="emits('reuseItem', formData.baseHistorProjs[scope.$index])">复用信息</a> | |||||
<a v-if="formData.projectType==='03'" class="text-primary" @click="emits('reuseItem', formData.baseHistorProjs[scope.$index]);isClickFy=true">复用信息</a> | |||||
<a class="text-danger" @click="delPro(scope.$index)">删除</a> | <a class="text-danger" @click="delPro(scope.$index)">删除</a> | ||||
</template> | </template> | ||||
</table-list> | </table-list> | ||||
@@ -522,6 +522,10 @@ const { proxy } = getCurrentInstance(), | |||||
} | } | ||||
onMounted(async () => { | onMounted(async () => { | ||||
dictionaryList.value = (await dictionary()).data | dictionaryList.value = (await dictionary()).data | ||||
getData() | |||||
}) | |||||
async function getData () { | |||||
if (!route.query.id) { | if (!route.query.id) { | ||||
const res = await getFormConfig({ | const res = await getFormConfig({ | ||||
regionCode: userInfo.value.regionCode | regionCode: userInfo.value.regionCode | ||||
@@ -585,7 +589,7 @@ onMounted(async () => { | |||||
collapseModal.value.push(index++ + '') | collapseModal.value.push(index++ + '') | ||||
}) | }) | ||||
} | } | ||||
}) | |||||
} | |||||
async function reuseItem (data) { | async function reuseItem (data) { | ||||
const projectId = data.baseProjId | const projectId = data.baseProjId | ||||
@@ -647,7 +651,15 @@ async function reuseItem (data) { | |||||
setData() | setData() | ||||
}) | }) | ||||
} | } | ||||
function changeProjectTypeResetForm () { | |||||
// nextTick(() => { | |||||
// console.log('111111111') | |||||
// setData() | |||||
// }) | |||||
// getData() | |||||
// detailData.value = {} | |||||
location.reload() | |||||
} | |||||
</script> | </script> | ||||
<template> | <template> | ||||
<div class="declarePage footerPage"> | <div class="declarePage footerPage"> | ||||
@@ -715,6 +727,7 @@ async function reuseItem (data) { | |||||
:declare-amount="fundsInfoRef?.formData.declareAmount" | :declare-amount="fundsInfoRef?.formData.declareAmount" | ||||
@reuse-item="reuseItem" | @reuse-item="reuseItem" | ||||
@change-is-first="changeIsFirst" | @change-is-first="changeIsFirst" | ||||
@change-project-type-reset-form="changeProjectTypeResetForm" | |||||
@get-basic-info-data="getBasicInfoData" | @get-basic-info-data="getBasicInfoData" | ||||
/> | /> | ||||
</div> | </div> | ||||
@@ -21,10 +21,21 @@ import { UserFilled, Lock } from '@element-plus/icons-vue' | |||||
const | const | ||||
{ proxy } = getCurrentInstance() | { proxy } = getCurrentInstance() | ||||
const appName = import.meta.env.MODE === 'production' ? '浙政钉' : '专有钉钉' | const appName = import.meta.env.MODE === 'production' ? '浙政钉' : '专有钉钉' | ||||
// const qrSrc = | |||||
// import.meta.env.MODE === 'production' | |||||
// ? 'https://login-pro.ding.zj.gov.cn/oauth2/auth.htm?response_type=code&client_id=ls_project_managment_dingoa&redirect_uri=http://10.39.255.184:8090/login&scope=get_user_info&authType=QRCODE&embedMode=true' | |||||
// : 'https://login.dg-work.cn/oauth2/auth.htm?response_type=code&client_id=ls_project_managment_dingoa&redirect_uri=http://121.199.28.40:9089/login&scope=get_user_info&authType=QRCODE&embedMode=true' | |||||
// const qrSrc = | |||||
// import.meta.env.MODE === 'production' | |||||
// ? 'https://login-pro.ding.zj.gov.cn/oauth2/auth.htm?response_type=code&client_id=ls_project_managment_dingoa&redirect_uri=http://60.188.225.145/&scope=get_user_info&authType=QRCODE&embedMode=true' | |||||
// : 'https://login.dg-work.cn/oauth2/auth.htm?response_type=code&client_id=ls-rebuild_dingoa&redirect_uri=http://ls-rebuild.ningdatech.com/login&scope=get_user_info&authType=QRCODE&embedMode=true' | |||||
const qrSrc = | const qrSrc = | ||||
import.meta.env.MODE === 'production' | import.meta.env.MODE === 'production' | ||||
? 'https://login-pro.ding.zj.gov.cn/oauth2/auth.htm?response_type=code&client_id=ls_project_managment_dingoa&redirect_uri=http://60.188.225.145/&scope=get_user_info&authType=QRCODE&embedMode=true' | ? 'https://login-pro.ding.zj.gov.cn/oauth2/auth.htm?response_type=code&client_id=ls_project_managment_dingoa&redirect_uri=http://60.188.225.145/&scope=get_user_info&authType=QRCODE&embedMode=true' | ||||
: 'https://login.dg-work.cn/oauth2/auth.htm?response_type=code&client_id=ls-rebuild_dingoa&redirect_uri=http://ls-rebuild.ningdatech.com/login&scope=get_user_info&authType=QRCODE&embedMode=true' | : 'https://login.dg-work.cn/oauth2/auth.htm?response_type=code&client_id=ls-rebuild_dingoa&redirect_uri=http://ls-rebuild.ningdatech.com/login&scope=get_user_info&authType=QRCODE&embedMode=true' | ||||
const tabStatus = ref(true) | const tabStatus = ref(true) | ||||
const clickTab = (val) => { | const clickTab = (val) => { | ||||
tabStatus.value = val | tabStatus.value = val | ||||
@@ -98,7 +98,7 @@ | |||||
import { ElMessage } from 'element-plus' | import { ElMessage } from 'element-plus' | ||||
const title = '关联运维包' | const title = '关联运维包' | ||||
import { defineModel, ref, watch, defineEmits } from 'vue' | |||||
import { defineModel, ref, watch, defineEmits, nextTick } from 'vue' | |||||
import { | import { | ||||
operationPackageList, | operationPackageList, | ||||
operationPackageSave, | operationPackageSave, | ||||
@@ -127,7 +127,7 @@ const emits = defineEmits(['relevanceSuccess']) | |||||
async function savePackage (row) { | async function savePackage (row) { | ||||
if (!row.operationPackageName) { | if (!row.operationPackageName) { | ||||
ElMessage({ | ElMessage({ | ||||
message: '运维包名称', | |||||
message: '请输入运维包名称', | |||||
type: 'warning' | type: 'warning' | ||||
}) | }) | ||||
return | return | ||||
@@ -141,11 +141,14 @@ async function savePackage (row) { | |||||
} | } | ||||
loading.value = true | loading.value = true | ||||
await operationPackageSave(row) | |||||
loading.value = false | |||||
row.edit = false | |||||
getList() | |||||
try { | |||||
await operationPackageSave(row) | |||||
loading.value = false | |||||
row.edit = false | |||||
getList() | |||||
} catch (e) { | |||||
loading.value = false | |||||
} | |||||
} | } | ||||
function addPackage () { | function addPackage () { | ||||
@@ -154,6 +157,10 @@ function addPackage () { | |||||
operationPackageName: '', | operationPackageName: '', | ||||
edit: true | edit: true | ||||
}) | }) | ||||
nextTick(() => { | |||||
// 调到底部 | |||||
tableRef.value.setScrollTop(1000000) | |||||
}) | |||||
} | } | ||||
async function relevance () { | async function relevance () { | ||||
@@ -242,6 +242,11 @@ function relevanceSuccess () { | |||||
getTableData() | getTableData() | ||||
} | } | ||||
async function operationPackageIdVisibleChange () { | |||||
const res = await operationPackageList() | |||||
operationList.value = res.data | |||||
} | |||||
</script> | </script> | ||||
<template> | <template> | ||||
<el-row> | <el-row> | ||||
@@ -391,6 +396,7 @@ function relevanceSuccess () { | |||||
filterable | filterable | ||||
placeholder="全部" | placeholder="全部" | ||||
class="w-full" | class="w-full" | ||||
@visible-change="operationPackageIdVisibleChange" | |||||
> | > | ||||
<el-option | <el-option | ||||
v-for="(v,k) in operationList" | v-for="(v,k) in operationList" | ||||
@@ -510,6 +516,7 @@ function relevanceSuccess () { | |||||
:column="column" | :column="column" | ||||
:data="data" | :data="data" | ||||
:total="total" | :total="total" | ||||
row-key="projectId" | |||||
:selectable="selectable" | :selectable="selectable" | ||||
@selection-change="selectionChange" | @selection-change="selectionChange" | ||||
@get-table-data="getTableData" | @get-table-data="getTableData" | ||||
@@ -4,7 +4,8 @@ import store from '@/store' | |||||
const { statusOptions } = store.dictStore.globalDicts || {} | const { statusOptions } = store.dictStore.globalDicts || {} | ||||
const select = { | const select = { | ||||
type: 'selection', | type: 'selection', | ||||
width: '50' | |||||
width: '50', | |||||
reserveSelection: true | |||||
} | } | ||||
export const allColumn = [ | export const allColumn = [ | ||||
{ | { | ||||
@@ -178,6 +179,7 @@ export const maintenanceColumn = [ | |||||
label: '序号', | label: '序号', | ||||
type: 'index', | type: 'index', | ||||
width: '60' | width: '60' | ||||
}, | }, | ||||
{ | { | ||||
label: '项目名称', | label: '项目名称', | ||||
@@ -48,11 +48,13 @@ defineProps({ | |||||
</p> | </p> | ||||
</el-descriptions-item> | </el-descriptions-item> | ||||
<el-descriptions-item v-if="detailData.constructionPlanFile&&JSON.parse(detailData.constructionPlanFile)?.length" label="建设方案"> | |||||
<p v-for="(item,index) in detailData.constructionPlanFile&&JSON.parse(detailData.constructionPlanFile)" :key="index" class="mb-4"> | |||||
<accessory :file-name="item.originalFileName" :file-id="item.id" :is-down-load="isDownLoadFile" /> | |||||
</p> | |||||
</el-descriptions-item> | |||||
<template v-if="detailData.projectType!=='03'&&detailData.projectType!=='04'&&detailData.projectType!=='05'"> | |||||
<el-descriptions-item v-if="detailData.constructionPlanFile&&JSON.parse(detailData.constructionPlanFile)?.length" label="建设方案"> | |||||
<p v-for="(item,index) in detailData.constructionPlanFile&&JSON.parse(detailData.constructionPlanFile)" :key="index" class="mb-4"> | |||||
<accessory :file-name="item.originalFileName" :file-id="item.id" :is-down-load="isDownLoadFile" /> | |||||
</p> | |||||
</el-descriptions-item> | |||||
</template> | |||||
<el-descriptions-item label="其他附件"> | <el-descriptions-item label="其他附件"> | ||||
<p v-for="(item,index) in detailData.baseProjOtherFile&&JSON.parse(detailData.baseProjOtherFile)" :key="index" class="mb-4"> | <p v-for="(item,index) in detailData.baseProjOtherFile&&JSON.parse(detailData.baseProjOtherFile)" :key="index" class="mb-4"> | ||||
<accessory :file-name="item.originalFileName" :file-id="item.id" :is-down-load="isDownLoadFile" /> | <accessory :file-name="item.originalFileName" :file-id="item.id" :is-down-load="isDownLoadFile" /> | ||||