From 4288763d891c5bad5f5033be045fc0598881049a Mon Sep 17 00:00:00 2001 From: lshwy817 <lshwy817@163.com> Date: Fri, 7 Apr 2023 08:52:31 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9bug=E5=B9=B6=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E6=96=B0=E7=9A=84=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WebSite/.env.gxzzzy | 2 + WebSite/.env.sd | 2 +- WebSite/package.json | 1 + WebSite/src/api/deptSP.js | 6 + WebSite/src/api/projectLibrary.js | 11 + WebSite/src/main.js | 3 +- WebSite/src/router/modules/deptSP.js | 6 + .../src/views/login/components/SelectUser.vue | 1 + .../allocation/apply/components/Detail.vue | 1 + .../main/basicSetting/fundsArrive/index.vue | 13 +- .../projectLibrary/components/Detail.vue | 6 +- .../subjectsSetting/components/Detail.vue | 2 +- .../basicSetting/subjectsSetting/index.vue | 2 +- .../department/components/List.vue | 201 ++- .../main/project-library/fundCardNo/index.vue | 2 +- .../inSchool/components/List.vue | 75 +- .../yo-common/ProjectFundApply/index.vue | 4 +- .../Personnel/components/List.vue | 83 ++ .../Personnel/components/workDetail.vue | 1142 +++++++++++++++++ .../project-fund-approval/Personnel/index.vue | 46 + WebSite/vue.config.js | 4 +- 21 files changed, 1549 insertions(+), 64 deletions(-) create mode 100644 WebSite/.env.gxzzzy create mode 100644 WebSite/src/views/yo-dept-sp/project-fund-approval/Personnel/components/List.vue create mode 100644 WebSite/src/views/yo-dept-sp/project-fund-approval/Personnel/components/workDetail.vue create mode 100644 WebSite/src/views/yo-dept-sp/project-fund-approval/Personnel/index.vue diff --git a/WebSite/.env.gxzzzy b/WebSite/.env.gxzzzy new file mode 100644 index 000000000..5a087f2b6 --- /dev/null +++ b/WebSite/.env.gxzzzy @@ -0,0 +1,2 @@ +NODE_ENV = gxzzzy +VUE_APP_BASE_API = '/projectplan' \ No newline at end of file diff --git a/WebSite/.env.sd b/WebSite/.env.sd index 81dcba04b..c517e5671 100644 --- a/WebSite/.env.sd +++ b/WebSite/.env.sd @@ -1,2 +1,2 @@ NODE_ENV = sd -VUE_APP_BASE_API = '/projectplanshu' \ No newline at end of file +VUE_APP_BASE_API = '/projectplan' \ No newline at end of file diff --git a/WebSite/package.json b/WebSite/package.json index 158611b51..326543902 100644 --- a/WebSite/package.json +++ b/WebSite/package.json @@ -17,6 +17,7 @@ "build:jsxy": "vue-cli-service build --mode jsxy", "build:sues": "vue-cli-service build --mode sues", "build:shnu": "vue-cli-service build --mode shnu", + "build:gxzzzy": "vue-cli-service build --mode gxzzzy", "lint": "vue-cli-service lint", "config:dev": "vue-cli-service inspect --mode development >> webpack.config.development.js", "config:prod": "vue-cli-service inspect --mode production >> webpack.config.production.js" diff --git a/WebSite/src/api/deptSP.js b/WebSite/src/api/deptSP.js index 3e27390e5..2f1ea7b98 100644 --- a/WebSite/src/api/deptSP.js +++ b/WebSite/src/api/deptSP.js @@ -27,6 +27,12 @@ export default { model ); }, + queryAllProjectInfoPlanPage(model) { + return request.post( + 'projectPlan/queryAllProjectInfoPlanPage', + model + ); + }, queryProjectInfoPlanPageByCurrentUserRelevantDept(model) { return request.post( diff --git a/WebSite/src/api/projectLibrary.js b/WebSite/src/api/projectLibrary.js index d674c624f..26a99fa75 100644 --- a/WebSite/src/api/projectLibrary.js +++ b/WebSite/src/api/projectLibrary.js @@ -237,6 +237,10 @@ class ProjectLibrary extends Base { static removeProjectLibrary(data) { return request.post(`/projectLibrary/removeProjectLibrary`, data); } + // + static removeProjectInfoPlan(data) { + return request.post(`/projectPlan/removeProjectInfoPlan`, data); + } // 鎷疯礉鍘嗗彶椤圭洰浣滀负鏈勾椤圭洰搴撲俊鎭� static copyHistoryProjectLibrary(data) { return request.post(`/projectLibrary/copyHistoryProjectLibrary`, data); @@ -1007,5 +1011,12 @@ class ProjectLibrary extends Base { static pageFundMatch(data) { return request.post(`/bmbudget/fundArrived/pageFundMatch`, data); } + /** + * 鏈儴闂ㄩ」鐩簱鎷嗗垎 + */ + // 鎷嗗垎鎸夐挳璋冪敤鎺ュ彛 + static splitProject(id, num) { + return request.post(`/projectPlan/splitProject?projectPlanBookId=${id}&quantity=${num}`); + } } export default ProjectLibrary; diff --git a/WebSite/src/main.js b/WebSite/src/main.js index 1077078a8..0f29a95b0 100644 --- a/WebSite/src/main.js +++ b/WebSite/src/main.js @@ -42,7 +42,8 @@ app.component('TableFlow', TableFlow); //娉ㄥ唽鍏ㄥ眬鎸囦护 app.directive('loadmore', directives.loadmore); -app.config.globalProperties.$env = 'sd'; +app.config.globalProperties.$env = 'lg'; +app.config.globalProperties.instanceId = 1; // development // mount instance app.mount('#app'); diff --git a/WebSite/src/router/modules/deptSP.js b/WebSite/src/router/modules/deptSP.js index ec01dafe5..32400e463 100644 --- a/WebSite/src/router/modules/deptSP.js +++ b/WebSite/src/router/modules/deptSP.js @@ -30,6 +30,12 @@ const routes = [ import('@/views/yo-dept-sp/project-fund-approval/SchoolApproval'), name: 'SchoolApproval' }, + { + path: 'approval/project/Personnel', + component: () => + import('@/views/yo-dept-sp/project-fund-approval/Personnel'), + name: 'Personnel' + }, //鍏敤缁忚垂瀹℃壒 { diff --git a/WebSite/src/views/login/components/SelectUser.vue b/WebSite/src/views/login/components/SelectUser.vue index 0a77bbb12..ce8fa3198 100644 --- a/WebSite/src/views/login/components/SelectUser.vue +++ b/WebSite/src/views/login/components/SelectUser.vue @@ -31,6 +31,7 @@ <span class="big" v-if="env == 'jsxy'">涓婃捣甯傛暀甯堟暀鑲插闄�</span> <span class="big" v-if="env == 'sues'">涓婃捣宸ョ▼鎶€鏈ぇ瀛�</span> <span class="big" v-if="env == 'shnu'">涓婃捣甯堣寖澶у</span> + <span class="big" v-if="env == 'gxzzzy'">骞胯タ鍒堕€犲伐绋嬭亴涓氭妧鏈闄�</span> </div> <div v-for="item in transitionList" :key="item.id"> <transition name="fade-transform-bottom"> diff --git a/WebSite/src/views/main/allocation/apply/components/Detail.vue b/WebSite/src/views/main/allocation/apply/components/Detail.vue index 5ecec829a..fe5b0aff8 100644 --- a/WebSite/src/views/main/allocation/apply/components/Detail.vue +++ b/WebSite/src/views/main/allocation/apply/components/Detail.vue @@ -163,6 +163,7 @@ export default { }; const handleSave = () => { console.log('state.form', state.form); + state.form.id = ''; if (!state.form.currentAmountApproved) { return false; } else if (state.env == 'sd') { diff --git a/WebSite/src/views/main/basicSetting/fundsArrive/index.vue b/WebSite/src/views/main/basicSetting/fundsArrive/index.vue index a14782742..b9b50d53d 100644 --- a/WebSite/src/views/main/basicSetting/fundsArrive/index.vue +++ b/WebSite/src/views/main/basicSetting/fundsArrive/index.vue @@ -250,7 +250,7 @@ </template> <script> -import { reactive, toRefs, onMounted } from 'vue'; +import { reactive, toRefs, onMounted, getCurrentInstance } from 'vue'; import ProjectLibrary from '@/api/projectLibrary'; import { ElMessage } from 'element-plus'; import { formatTime, moneyFormat } from '@/utils'; @@ -260,12 +260,13 @@ export default { onMounted(() => { queryList(); }); + const { ctx } = getCurrentInstance(); const state = reactive({ checkInfo: { pageIndex: 1, pageSize: 10, year: Moment(new Date()).format('YYYY'), - instanceId: 1 + instanceId: ctx.instanceId }, total: 0, tableData: [], @@ -283,7 +284,7 @@ export default { luList: {}, formDtable: { year: Moment(new Date()).format('YYYY'), - instanceId: 1, + instanceId: ctx.instanceId, fundArrivedHistoryCmdList: [], fundCode: '', fundName: '', @@ -348,7 +349,8 @@ export default { // 鏂板/缂栬緫淇濆瓨 const onFourSave = () => { state.formDtable.year = Moment(state.formDtable.year).format('YYYY'); - state.formDtable.instanceId = 1; + state.formDtable.instanceId = ctx.instanceId; +; ProjectLibrary.saveFundArrived(state.formDtable).then(() => { if (state.title == '鏂板') { ElMessage.success('鏂板鎴愬姛锛�'); @@ -490,7 +492,8 @@ export default { getSummaries, getSummariesTwo, onFourSave, - queryListNew + queryListNew, + ctx }; } }; diff --git a/WebSite/src/views/main/basicSetting/projectLibrary/components/Detail.vue b/WebSite/src/views/main/basicSetting/projectLibrary/components/Detail.vue index 7a09fc89a..9ae5090bc 100644 --- a/WebSite/src/views/main/basicSetting/projectLibrary/components/Detail.vue +++ b/WebSite/src/views/main/basicSetting/projectLibrary/components/Detail.vue @@ -385,17 +385,17 @@ export default { const handleSave = () => { ruleFormS.value.validate(valid => { if (valid) { - if (state.deptSelect.length === 0) { + if (state.deptSelect && state.deptSelect.length === 0) { state.ruleForm.canUseDeptJson = ''; } else { state.ruleForm.canUseDeptJson = JSON.stringify(state.deptSelect); } - if (state.deptSelectG.length === 0) { + if (state.deptSelectG && state.deptSelectG.length === 0) { state.ruleForm.functionDeptJson = ''; } else { state.ruleForm.functionDeptJson = JSON.stringify(state.deptSelectG); } - if (state.deptSelectS.length === 0) { + if (state.deptSelectS && state.deptSelectS.length === 0) { state.ruleForm.canUseFundJson = ''; } else { state.ruleForm.canUseFundJson = JSON.stringify(state.deptSelectS); diff --git a/WebSite/src/views/main/basicSetting/subjectsSetting/components/Detail.vue b/WebSite/src/views/main/basicSetting/subjectsSetting/components/Detail.vue index ff1baeda6..4ba96091d 100644 --- a/WebSite/src/views/main/basicSetting/subjectsSetting/components/Detail.vue +++ b/WebSite/src/views/main/basicSetting/subjectsSetting/components/Detail.vue @@ -169,7 +169,7 @@ export default { state.deptSelect.splice(index, 1); }; const handleSave = () => { - if (state.deptSelect.length === 0) { + if (state.deptSelect && state.deptSelect.length === 0) { state.ruleForm.functionDeptJson = ''; } else { state.ruleForm.functionDeptJson = JSON.stringify(state.deptSelect); diff --git a/WebSite/src/views/main/basicSetting/subjectsSetting/index.vue b/WebSite/src/views/main/basicSetting/subjectsSetting/index.vue index 21cb1053d..3494654b2 100644 --- a/WebSite/src/views/main/basicSetting/subjectsSetting/index.vue +++ b/WebSite/src/views/main/basicSetting/subjectsSetting/index.vue @@ -97,7 +97,7 @@ export default { } }; const queryFundTree = () => { - ProjectLibrary.queryFundTree({}).then(res => { + ProjectLibrary.queryFundTree({time: new Date()}).then(res => { state.treeData = res.data; if (state.treeData && state.treeData.length > 0) { if (state.oId) { diff --git a/WebSite/src/views/main/project-library/department/components/List.vue b/WebSite/src/views/main/project-library/department/components/List.vue index 3cc7e0159..a9e3cc034 100644 --- a/WebSite/src/views/main/project-library/department/components/List.vue +++ b/WebSite/src/views/main/project-library/department/components/List.vue @@ -119,7 +119,7 @@ v-if="$env == 'lg'" /> <el-table-column label="椤圭洰鍚嶇О" prop="projectName" /> - <el-table-column label="椤圭洰搴�" prop="projectLibraryName"> + <el-table-column label="椤圭洰搴�" prop="projectLibraryName" width="100"> <template #default="scope"> <el-button @click="toDetail(scope.row)" @@ -128,8 +128,12 @@ > </template> </el-table-column> - <!-- <el-table-column label="椤圭洰搴撳鏍哥姸鎬�" prop="projectLibraryState" /> --> - <el-table-column label="涓€涓�" prop="oneUPName"> + <!-- <el-table-column label="" prop="projectLibraryTotalMoney" width="100"> + <template #default="scope"> + <span v-if="$env == 'lg'">{{ moneyFormat(scope.row.projectLibraryTotalMoney, 2, ',') }}</span> + </template> + </el-table-column> --> + <el-table-column label="涓€涓�" prop="oneUPName" width="180"> <template #default="scope"> <el-button v-if="scope.row.oneUPState == 1" @@ -144,25 +148,64 @@ > </template> </el-table-column> - <el-table-column label="浜屼笂" prop="twoUPName"> + <!-- <el-table-column label="" prop="oneUPName" width="100"> <template #default="scope"> - <el-button - v-if="scope.row.twoUPState == 1" - @click="toTwo(scope.row, 1)" - type="primary" - >缂栬緫</el-button - > - <el-button - @click="toTwo(scope.row)" - :type="scope.row.twoUPState == 2 ? 'text' : 'primary'" - >{{ scope.row.twoUPName }}</el-button - > - <el-button - v-if="$env == 'sd'" - @click="toTwoCf(scope.row)" - type="primary" - >鎷嗗垎</el-button - > + <span v-if="$env == 'lg' && scope.row.oneUPName != ''">{{ moneyFormat(scope.row.oneUPTotalMoney, 2, ',') }}</span> + </template> + </el-table-column> --> + <el-table-column label="浜屼笂" prop="twoUPName" width="420"> + <template #default="scope"> + <div v-if="$env != 'lg'"> + <el-button + v-if="scope.row.twoUPState == 1" + @click="toTwo(scope.row, 1)" + type="primary" + >缂栬緫</el-button + > + <el-button + @click="toTwo(scope.row)" + :type="scope.row.twoUPState == 2 ? 'text' : 'primary'" + >{{ scope.row.twoUPName }}</el-button + > + </div> + <div class="newBorder" v-if="$env == 'lg' && scope.row.oneUPName == '瀹℃牳瀹屾垚'" > + <el-table :data="scope.row.splitList" style="width: 100%" fit + :show-header="false" row-class-name="tablecolor" + @selection-change="splitChange" v-if="scope.row.isTableShow"> + <el-table-column prop="splitProjectName" /> + <!-- <el-table-column prop="splitTotalMoney"> + <template #default="scope1"> + <div v-if="scope1.row.splitTotalMoney != ''">{{ moneyFormat(scope1.row.splitTotalMoney, 2, ',') }}</div> + </template> + </el-table-column> --> + <el-table-column prop="twoUPName"> + <template #default="scope1"> + <el-button + v-if="scope1.row.twoUPState == 1" + @click="toTwo(scope1.row, 1)" + type="primary" + >缂栬緫</el-button > + </template> + </el-table-column> + <el-table-column prop="twoUPName"> + <template #default="scope1"> + <el-button + @click="toTwo(scope1.row)" + type="text" + >{{ scope1.row.twoUPName }}</el-button> + </template> + </el-table-column> + <el-table-column prop=""> + <template #default="scope1"> + <el-button + v-if="scope1.row.twoUPState != 0" + @click="toTwoCf(scope1.row, scope1.$index)" + type="primary" + >鎷嗗垎</el-button> + </template> + </el-table-column> + </el-table> + </div> </template> </el-table-column> <el-table-column label="鎵瑰" prop="replyName"> @@ -247,13 +290,14 @@ </span> </template> </el-dialog> + <!-- 鎷嗗垎寮瑰嚭妗� --> <el-dialog v-model="dialogVisibleTwo" - width="30%" + width="40%" :before-close="handleClose" > - <el-row :gutter="20"> - <el-col :span="10">璇烽€夋嫨鎷嗗垎椤圭洰鐨勪釜鏁帮細</el-col> + <el-row :gutter="10"> + <el-col :span="8">璇烽€夋嫨鎷嗗垎椤圭洰鐨勪釜鏁帮細</el-col> <el-col :span="8" ><el-input-number v-model="numberNum" @@ -285,6 +329,7 @@ import { ElMessage, ElMessageBox } from 'element-plus'; import ProjectLibrary from '@/api/projectLibrary'; import Moment from 'moment'; import { Base } from '@/api/base/base'; +import { moneyFormat } from '@/utils'; export default { setup(props, cxt) { const { ctx } = getCurrentInstance(); @@ -314,7 +359,7 @@ export default { switch2: true, projectPlanTypeList: [], checkInfo: { - year: sessionStorage.getItem('year'), //骞翠唤 + year: sessionStorage.getItem('year') ? sessionStorage.getItem('year') : Moment(new Date()).format('YYYY'), //骞翠唤 projectName: '', //椤圭洰鍚嶇О departmentCode: '', typeList: '', @@ -349,6 +394,11 @@ export default { multipleSelectionProject: [], dialogVisibleTwo: false, numberNum: 1, + splitList: [], + toTwoCfId: '', + newRow: {}, + newIndex: '', + newDeleChange: null, }); // 鍒犻櫎 const handleDel = () => { @@ -363,10 +413,10 @@ export default { }) .then(() => { let idList = state.multipleSelection.map(v => v.id); - ProjectLibrary.removeProjectLibrary(idList).then(() => { - ElMessage.success('鍒犻櫎鎴愬姛'); - getDepartPageInfo(); - }); + ProjectLibrary.removeProjectLibrary(idList).then(() => { + ElMessage.success('鍒犻櫎鎴愬姛'); + getDepartPageInfo(); + }); }) .catch(() => { ElMessage.info('宸插彇娑堝垹闄�'); @@ -388,6 +438,13 @@ export default { ProjectLibrary.queryProjectLibraryPageByCurrentUserDept( state.checkInfo ).then(res => { + res.data.forEach(item => { + if (item.splitList && item.splitList.length > 0) { + item.isTableShow = true; + } else { + item.isTableShow = false; + } + }) state.departInfo.tableData = res.data; state.departInfo.total = res.total; }); @@ -457,7 +514,6 @@ export default { } }; const getProjectPlanTypeList = () => { - console.log('4544'); if (ctx.$env == 'dx' || ctx.$env == 'czzx') return; if (ctx.$env == 'yy' || ctx.$env == 'xnzf') { ProjectLibrary.queryProjectPlanType().then(res => { @@ -465,6 +521,7 @@ export default { }); } }; + // 涓€涓� const toOne = (row, index) => { sessionStorage.setItem('checkInfo1', JSON.stringify(state.checkInfo)); // 0 杩涘叆 1 鍙栨秷 2 鏂囧瓧 @@ -498,11 +555,12 @@ export default { } } }; + // 浜屼笂 const toTwo = (row, index) => { sessionStorage.setItem('checkInfo1', JSON.stringify(state.checkInfo)); // 0 杩涘叆 1 鍙栨秷 2 鏂囧瓧 if (row.twoUPState === 0) { - ProjectLibrary.enterProjectPlanType2(row.id).then(() => { + ProjectLibrary.enterProjectPlanType2(row.id ? row.id : row.twoUPBookID).then(() => { getDepartPageInfo(); }); } else if (row.twoUPState === 1) { @@ -515,9 +573,15 @@ export default { cxt.emit('switch-page', 'Detail', true, row.twoUPBookID); } } else { - ProjectLibrary.cancelEnterProjectPlanType2(row.id).then(() => { - getDepartPageInfo(); - }); + if (ctx.$env == 'lg') { + ProjectLibrary.removeProjectInfoPlan([row.twoUPBookID]).then(() => { + getDepartPageInfo(); + }) + } else { + ProjectLibrary.cancelEnterProjectPlanType2(row.id).then(() => { + getDepartPageInfo(); + }); + } } } else { if (row.projectPlanType == 'weichi' && ctx.$env == 'yy') { @@ -529,8 +593,44 @@ export default { } } }; - const toTwoCf = () => { - + // 鎷嗗垎 + const toTwoCf = (row, index) => { + state.dialogVisibleTwo = true; + state.toTwoCfId = row.twoUPBookID; + state.newRow = row; + state.newIndex = index; + state.splitList = row.splitList ? row.splitList : [row]; + }; + // 鎷嗗垎纭畾 + const onSure = () => { + state.dialogVisibleTwo = false; + ProjectLibrary.splitProject(state.toTwoCfId, state.numberNum).then(res => { + console.log(res); + for (let n = 0; n < res.data.length; n++) { + for (let i = 0; i < state.departInfo.tableData.length; i++) { + for (let num = 1; num <= state.numberNum; num++) { + if (state.departInfo.tableData[i].splitList[state.newIndex] == state.newRow) { + state.departInfo.tableData[i].splitList.push({ + splitProjectName: '', + splitTotalMoney: '', + splitName: '鎷嗗垎', + twoUPName: '', + twoUPBookID: res.data[n] + }) + } + } + } + console.log(state.departInfo.tableData); + getDepartPageInfo(); + return; + } + }) + } + // + const splitChange = (row) => { + console.log(1111, row); + row.isDele = true; + state.newDeleChange = row; } // const setTime = () => { // state.checkInfo.year = Moment(state.checkInfo.year).format('YYYY'); @@ -601,10 +701,35 @@ export default { handleAddWork, onHzdy, ctx, - toTwoCf + toTwoCf, + onSure, + moneyFormat, + splitChange }; } }; </script> -<style></style> +<style lang="scss" scoped> +.listyle { + list-style: none; + padding: 0px; +} +.licss { + display: flex; + align-items: center; +} +.lidiv { + margin-left: 5px; +} +::v-deep .el-table__row.tablecolor{ + td { + border: none !important; + } +} +.newBorder { + ::v-deep .el-table::before { + height: 0 !important; + } +} +</style> diff --git a/WebSite/src/views/main/project-library/fundCardNo/index.vue b/WebSite/src/views/main/project-library/fundCardNo/index.vue index bb0f97fad..7b12015d9 100644 --- a/WebSite/src/views/main/project-library/fundCardNo/index.vue +++ b/WebSite/src/views/main/project-library/fundCardNo/index.vue @@ -192,7 +192,7 @@ label="鏍哥畻妯℃澘缂栧彿" prop="model" width="200" - v-if="env != 'sd'" + v-if="env != 'sd' && env != 'jr'" > <template #default="scope"> <el-select diff --git a/WebSite/src/views/main/project-library/inSchool/components/List.vue b/WebSite/src/views/main/project-library/inSchool/components/List.vue index bb51a6318..eb2c6d7af 100644 --- a/WebSite/src/views/main/project-library/inSchool/components/List.vue +++ b/WebSite/src/views/main/project-library/inSchool/components/List.vue @@ -78,25 +78,56 @@ prop="departmentName" sortable="custom" /> - <el-table-column label="椤圭洰搴�" prop="projectLibraryName"> + <el-table-column label="椤圭洰搴�" prop="projectLibraryName" width="150"> <template #default="scope"> <el-button @click="toDetail(scope.row)" type="text">{{ scope.row.projectLibraryName }}</el-button> + <span class="lidiv">{{ moneyFormat(scope.row.projectLibraryTotalMoney, 2, ',') }}</span> </template> </el-table-column> - <el-table-column label="涓€涓�" prop="oneUPName"> + <el-table-column label="涓€涓�" prop="oneUPName" width="150"> <template #default="scope"> <el-button @click="toOne(scope.row)" type="text">{{ scope.row.oneUPName }}</el-button> + <span class="lidiv">{{ moneyFormat(scope.row.oneUPTotalMoney, 2, ',') }}</span> </template> </el-table-column> - <el-table-column label="浜屼笂" prop="twoUPName"> + <el-table-column label="浜屼笂" prop="twoUPName" width="350"> <template #default="scope"> - <el-button @click="toTwo(scope.row)" type="text">{{ - scope.row.twoUPName - }}</el-button> + <div v-if="scope.row.isShows"> + <el-button @click="toTwo(scope.row)" type="text">{{ + scope.row.twoUPName + }}</el-button> + <span class="lidiv">{{ moneyFormat(scope.row.splitTotalMoney, 2, ',') }}</span> + </div> + <div class="newBorder"> + <el-table :data="scope.row.splitList" style="width: 100%" fit + :show-header="false" row-class-name="tablecolor" v-if="scope.row.isTableShow" + @selection-change="splitChange" > + <el-table-column prop="twoUPName" /> + <el-table-column prop="splitTotalMoney"> + {{ moneyFormat(scope.row.splitTotalMoney, 2, ',') }} + </el-table-column> + <el-table-column prop="twoUPName"> + <template #default="scope"> + <el-button + @click="toTwo(scope.row)" + type="text" + >{{ scope.row.twoUPName }}</el-button> + </template> + </el-table-column> + <!-- <el-table-column prop="splitName"> + <template #default="scope"> + <el-button + @click="toTwoCf(scope.row)" + type="primary" + >{{ scope.row.splitName }}</el-button> + </template> + </el-table-column> --> + </el-table> + </div> </template> </el-table-column> <el-table-column label="鎵瑰" prop="replyName"> </el-table-column> @@ -121,6 +152,7 @@ import { reactive, toRefs, onMounted, ref, getCurrentInstance } from 'vue'; import ProjectLibrary from '@/api/projectLibrary'; import Moment from 'moment'; +import { moneyFormat } from '@/utils'; export default { setup(props, cxt) { const { ctx } = getCurrentInstance(); @@ -149,7 +181,8 @@ export default { }, planInfo: [], env: ctx.$env, - projectPlanTypeList: [] + projectPlanTypeList: [], + splitList: [] }); const getDepartPageInfoFirst = () => { if (state.checkInfo.year) { @@ -234,6 +267,15 @@ export default { // state.checkInfo.deptSort = 1; // } ProjectLibrary.queryProjectLibraryPage(state.checkInfo).then(res => { + res.data.forEach(item => { + if (item.splitList && item.splitList.length > 0) { + item.isShows = false; + item.isTableShow = true; + } else { + item.isShows = true; + item.isTableShow = false; + } + }) state.departInfo.tableData = res.data; state.departInfo.total = res.total; // console.log(state.departInfo,'1234') @@ -293,10 +335,25 @@ export default { toTwo, getProjectPlanTypeList, sortChange, - ctx + ctx, + moneyFormat }; } }; </script> -<style></style> +<style lang="scss" scoped> +.lidiv { + margin-left: 5px; +} +::v-deep .el-table__row.tablecolor{ + td { + border: none !important; + } +} +.newBorder { + ::v-deep .el-table::before { + height: 0 !important; + } +} +</style> diff --git a/WebSite/src/views/yo-common/ProjectFundApply/index.vue b/WebSite/src/views/yo-common/ProjectFundApply/index.vue index a2688ad79..e0f4939b9 100644 --- a/WebSite/src/views/yo-common/ProjectFundApply/index.vue +++ b/WebSite/src/views/yo-common/ProjectFundApply/index.vue @@ -1351,7 +1351,8 @@ export default { isShowCancel: false, isShowChart: false, isShowHistory: false - } + }, + functionDeptJson: '' } }; } @@ -2259,7 +2260,6 @@ export default { }); } data.applyInfo = applyInfo; - data.applyInfo.flowCanShowOut.functionDeptJson = props.row.functionDeptJson; console.log('data.applyInfo', data.applyInfo); diff --git a/WebSite/src/views/yo-dept-sp/project-fund-approval/Personnel/components/List.vue b/WebSite/src/views/yo-dept-sp/project-fund-approval/Personnel/components/List.vue new file mode 100644 index 000000000..92772a9e8 --- /dev/null +++ b/WebSite/src/views/yo-dept-sp/project-fund-approval/Personnel/components/List.vue @@ -0,0 +1,83 @@ +<template> + <div class="app-container"> + <el-tabs + v-model="activeTab" + type="border-card" + stretch + @tab-click="handleClick" + > + <el-tab-pane label="椤圭洰搴�" name="XIANGMUKU" lazy> + <page-list + :planType="activeTab" + @switch-page="navToDetail" + :showDepartment="false" + @get-page-list="getPageList" + ></page-list> + </el-tab-pane> + <el-tab-pane label="涓€涓�" name="YISHANG" lazy> + <page-list + :planType="activeTab" + @switch-page="navToDetail" + :showDepartment="false" + @get-page-list="getPageList" + ></page-list> + </el-tab-pane> + <el-tab-pane label="浜屼笂" name="ERSHANG" lazy> + <page-list + :planType="activeTab" + @switch-page="navToDetail" + :showDepartment="false" + @get-page-list="getPageList" + ></page-list> + </el-tab-pane> + </el-tabs> + </div> +</template> + +<script> +import { reactive, toRefs, onMounted } from 'vue'; +import PageList from '@/views/yo-common/ProjectApplyPageList'; +import Api from '@/api'; +export default { + components: { + PageList + }, + emits: ['switch-page'], + setup(props, context) { + onMounted(() => { + if (sessionStorage.getItem('activeTab2')) { + data.activeTab = sessionStorage.getItem('activeTab2'); + } + }); + const data = reactive({ + activeTab: + process.env.NODE_ENV == 'yy' || process.env.NODE_ENV == 'lg' + ? 'XIANGMUKU' + : 'ERSHANG' + }); + const navToDetail = row => { + sessionStorage.setItem('activeTab2', data.activeTab); + if (row.projectPlanType == 'yunzhuan') { + context.emit('switch-page', 'workDetail', false, row); + } else { + context.emit('switch-page', 'Detail', false, row); + } + }; + const getPageList = async (params, callback) => { + const res = await Api.queryAllProjectInfoPlanPage(params); + callback(res); + }; + const handleClick = () => { + console.error('aaa', data.activeTab); + }; + return { + ...toRefs(data), + navToDetail, + handleClick, + getPageList + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-sp/project-fund-approval/Personnel/components/workDetail.vue b/WebSite/src/views/yo-dept-sp/project-fund-approval/Personnel/components/workDetail.vue new file mode 100644 index 000000000..a3d6e6f88 --- /dev/null +++ b/WebSite/src/views/yo-dept-sp/project-fund-approval/Personnel/components/workDetail.vue @@ -0,0 +1,1142 @@ +<template> + <div> + <div + class="step-wrap" + id="step" + style="position: absolute; + left: 20px; + top: 300px;" + > + <el-steps direction="vertical" :space="40" :active="activeStep"> + <el-step + title="鍩烘湰淇℃伅" + class="cp" + @click="scrollToView('baseInfo')" + ></el-step> + <el-step + title="椤圭洰淇℃伅" + class="cp" + @click="scrollToView('projectMessage')" + ></el-step> + <el-step + title="椤圭洰姒傝堪" + class="cp" + @click="scrollToView('projectData')" + ></el-step> + <el-step + v-show="overTen" + title="椤圭洰缁╂晥" + class="cp" + @click="scrollToView('projectAchieve')" + ></el-step> + <el-step + title="涓婁紶闄勪欢" + class="cp" + @click="scrollToView('fileData')" + ></el-step> + </el-steps> + </div> + <div + id="flowWrap" + style="position: absolute; + left: 0px; + top: 0px; width: 100%; z-index: 300;" + > + <el-card> + <Flow + :flowInfo="applyInfo.flowCanShowOut" + @handleBack="handleBack" + @handleSave="handleSave" + @handleSubmit="handleSubmit" + @handleReturn="handleReturn" + @handleCancel="handleCancel" + ></Flow> + </el-card> + </div> + <div class="apply-table-wrap"> + <el-button + style="position: absolute;top:86px" + v-if="applyInfo.id && env == 'yy'" + @click="navToPrint(applyInfo)" + >鎵撳嵃</el-button + > + <h2>{{ applyInfo.year }}骞撮」鐩敵鎶ヨ〃</h2> + <el-form :disabled="!canEdit"> + <el-card id="baseInfo" class="mt-20"> + <template #header> + 鍩烘湰淇℃伅 + </template> + <el-row class="form-item-override" :gutter="20"> + <el-col :xs="8" :sm="8" :md="8" :lg="8"> + <el-form-item label="鐢虫姤閮ㄩ棬锛�"> + <el-select + @change="selectDeptChange" + v-model="applyInfo.departmentCode" + placeholder="璇烽€夋嫨鐢虫姤閮ㄩ棬" + > + <el-option + v-for="item in applyDept" + :key="item.id" + :label="item.name" + :value="item.code" + ></el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :xs="8" :sm="8" :md="8" :lg="8"> + <el-form-item label="椤圭洰鍚嶇О锛�"> + <el-input + v-model="applyInfo.projectName" + placeholder="璇疯緭鍏ラ」鐩悕绉�" + ></el-input> + </el-form-item> + </el-col> + <el-col :xs="8" :sm="8" :md="8" :lg="8"> + <el-form-item label="璐熻矗浜猴細"> + <el-select + @change="selectLeaderChange" + v-model="applyInfo.projectLeaderId" + filterable + remote + popper-class="select-user" + :loading="selectUserLoading" + :remote-method="getLeaderByValue" + @visible-change="selectVisibleChange" + placeholder="璇烽€夋嫨璐熻矗浜�" + > + <el-option + v-for="user in userList" + :key="user.id" + :label="user.name" + :value="user.id" + ></el-option> + </el-select> + <!-- <el-input + v-model="applyInfo.projectLeaderName" + disabled + ></el-input> --> + </el-form-item> + </el-col> + <el-col :xs="8" :sm="8" :md="8" :lg="8" v-if="env == 'yy'"> + <el-form-item label="鏄惁璺ㄥ勾椤圭洰锛�"> + <el-radio-group + v-model="applyInfo.stepYear" + > + <el-radio label="YES">鏄�</el-radio> + <el-radio label="NO">鍚�</el-radio> + </el-radio-group> + </el-form-item> + </el-col> + </el-row> + </el-card> + <el-card id="projectMessage" class="mt-20"> + <template #header> + 椤圭洰淇℃伅<el-button @click="addProject" style="margin-left:10px" + >鏂板</el-button + > + </template> + <el-table + border + :data="projectTable" + show-summary + :summary-method="getSummary" + > + <el-table-column label="椤圭洰鍚嶇О" prop="projectName"> + <template #default="scope"> + <el-select + v-model="scope.row.projectName" + filterable + allow-create + default-first-option + > + <el-option + v-for="item in projectList" + :key="item" + :label="item" + :value="item" + ></el-option> + </el-select> + </template> + </el-table-column> + <el-table-column label="鍗曚环" prop="price"> + <template #default="scope"> + <InputNumber v-model="scope.row.price"> </InputNumber></template + ></el-table-column> + <el-table-column label="鏁伴噺" prop="count" + ><template #default="scope" + ><el-input v-model.number="scope.row.count"> </el-input + ></template> + </el-table-column> + <el-table-column + label="棰勭畻閲戦" + prop="money" + align="right" + header-align="left" + > + <template #default="scope"> + <InputNumber v-model="scope.row.money" :disabled="true"> + </InputNumber> + </template> + </el-table-column> + <el-table-column label="澶囨敞" prop=""> + <template #default="scope"> + <el-input v-model="scope.row.remark"> </el-input> + </template> + </el-table-column> + <el-table-column label="鎿嶄綔" prop=""> + <template #default="scope"> + <el-button @click="deleteProject(scope)">鍒犻櫎</el-button> + </template> + </el-table-column> + </el-table> + </el-card> + <el-card class="mt-20" id="projectData"> + <template #header> + 椤圭洰姒傝堪 + </template> + <el-form + :disabled="!canEdit" + :model="applyInfo.summaryJson" + :rules="isRequired ? rules : []" + ref="formRef" + > + <div> + <el-form-item label="1銆侀」鐩唴瀹规杩板強鍏蜂綋瀹炴柦鍐呭:" prop="basis"> + <el-input + v-model="applyInfo.summaryJson.basis" + type="textarea" + ></el-input> + </el-form-item> + <el-form-item + prop="terminfo" + label="2銆侀」鐩珛椤逛緷鎹紙瑙勫垝璁″垝銆侀儴闂ㄨ亴璐c€佹斂绛栨硶瑙勭瓑锛�:" + > + <el-input + v-model="applyInfo.summaryJson.terminfo" + type="textarea" + ></el-input> + </el-form-item> + <el-form-item + prop="plan" + label="3銆侀」鐩珛椤圭殑蹇呰鎬у強鍙鎬э紙椤圭洰鍩虹鏉′欢鍙婂墠鏈熷伐浣溿€佺鐞嗗埗搴︿笌淇濋殰鎺柦绛夛級:" + > + <el-input + v-model="applyInfo.summaryJson.plan" + type="textarea" + ></el-input> + </el-form-item> + <el-form-item + label="4銆侀」鐩墽琛屽強璧勯噾浣跨敤璁″垝锛堢粏鍖栧埌鏈堜唤锛�:" + prop="budget" + > + <el-input + v-model="applyInfo.summaryJson.budget" + type="textarea" + ></el-input> + </el-form-item> + </div> + </el-form> + </el-card> + <el-card class="mt-20" id="projectAchieve" v-show="overTen"> + <template #header> + 椤圭洰缁╂晥 + </template> + <el-form-item + label="椤圭洰绫诲埆锛�" + style="display: flex; align-items: center;" + > + <el-radio-group + v-model="applyInfo.projectTargetCmd.summaryJson.projectType" + > + <!-- <el-radio :label="1">涓撻」璧勯噾</el-radio> --> + <el-radio :label="2">缁忓父鎬ч」鐩�</el-radio> + <el-radio :label="3">涓€娆℃€ч」鐩�</el-radio> + </el-radio-group> + </el-form-item> + <el-form-item label="鎬荤哗鏁堢洰鏍囧強鍒嗗勾搴︾哗鏁堢洰鏍�"> + <el-input + v-model="applyInfo.projectTargetCmd.summaryJson.yearGoal" + type="textarea" + ></el-input> + </el-form-item> + <el-form-item label="椤圭洰鎬荤洰鏍囷紙璺ㄥ勾椤圭洰锛夛細"> + <el-input + v-model="applyInfo.projectTargetCmd.summaryJson.projectGoal" + type="textarea" + ></el-input> + </el-form-item> + <el-table + border + stripe + :data="applyInfo.projectTargetCmd.subOtherArrayJson" + ref="subOtherTable" + > + <el-table-column label="涓€绾ф寚鏍�"> + <template #default="scope"> + <div class="one-quota"> + <el-popover + v-if="scope.row.content && scope.row.content != ''" + effect="light" + trigger="hover" + placement="top" + :content="scope.row.content" + > + <template #reference> + <div> + <el-cascader + popper-class="cascader-cus" + @change=" + val => { + cascaderChange(scope, val); + } + " + :disabled="scope.row.flag == 'N'" + ref="cascaderRef" + v-model="scope.row.one" + :options="meritsTree" + :props="meritsTreeProps" + style="width: 100%;" + > + <template #default="{node, data}"> + <div v-if="data.children">{{ node.label }}</div> + <div v-else @click="onClickNode(scope, node, data)"> + {{ node.label }} + </div> + </template> + </el-cascader> + </div> + </template> + </el-popover> + <div v-if="!scope.row.content || scope.row.content == ''"> + <el-cascader + popper-class="cascader-cus" + @change=" + val => { + cascaderChange(scope, val); + } + " + ref="cascaderRef" + :disabled="scope.row.flag == 'N'" + v-model="scope.row.one" + :options="meritsTree" + :props="meritsTreeProps" + style="width: 100%;" + > + <template #default="{node, data}"> + <div v-if="data.children">{{ node.label }}</div> + <div v-else @click="onClickNode(scope, node, data)"> + {{ node.label }} + </div> + </template> + </el-cascader> + </div> + <div class="icon-wrap"> + <el-button + plain + type="primary" + icon="el-icon-circle-plus-outline" + circle + @click="addQuota(scope)" + ></el-button> + <el-button + plain + style="margin: 0;" + type="danger" + icon="el-icon-circle-close" + :disabled="scope.row.flag == 'N'" + circle + @click="deleteQuota(scope)" + ></el-button> + </div> + </div> + </template> + </el-table-column> + <el-table-column label="浜岀骇鎸囨爣"> + <template #default="scope"> + <el-input disabled v-model="scope.row.two"></el-input> + </template> + </el-table-column> + <el-table-column label="涓夌骇鎸囨爣"> + <template #default="scope"> + <el-input + v-model="scope.row.three" + v-if="env == 'dx' || env == 'czzx'" + ></el-input> + <el-select + v-model="scope.row.three" + v-if="env != 'dx' && env != 'yy' && env != 'czzx'" + allow-create + filterable + > + <el-option + v-for="item in scope.row.threeProject" + :key="item" + :label="item" + :value="item" + ></el-option> + </el-select> + <el-select + v-model="scope.row.three" + v-if="env == 'yy'" + allow-create + filterable + > + <el-option + v-for="item in scope.row.threeProject" + :key="item" + :label="item" + :value="item" + ></el-option> + </el-select> + </template> + </el-table-column> + <el-table-column label="骞村害鎸囨爣鍊�"> + <template #default="scope"> + <el-input v-model="scope.row.yearTarget"></el-input> + </template> + </el-table-column> + </el-table> + </el-card> + <el-card class="mt-20" id="fileData"> + <template #header> + 涓婁紶闄勪欢 + </template> + <el-button type="primary" plain @click="uploadDialog = true" + >涓婁紶闄勪欢</el-button + > + <div class="fileBox"> + <el-tag + v-for="(item, index) in applyInfo.attachmentInfoOutList" + :key="item.id" + :closable="canEdit" + @click="downloadFile(item.id)" + @close="deleteFile(index)" + >{{ item.fileName }}</el-tag + > + </div> + </el-card> + </el-form> + </div> + <UploadFile + v-model="uploadDialog" + @upload-handler="uploadHandler" + ></UploadFile> + </div> +</template> + +<script> +import { reactive, ref, toRefs, watch, getCurrentInstance } from 'vue'; +// import { ElMessage } from 'element-plus'; +// import UploadFile from '@/components/UploadFile'; +import { absNum, debounce, isEmpty, throttle } from '@/utils'; +import InputNumber from '@/components/AmountInputBox'; +import ProjectLibrary from '@/api/projectLibrary'; +import Api from '@/api'; +import { useStore } from 'vuex'; +import { navToPrint } from '@/utils/navToPrint'; +import { ElMessage } from 'element-plus'; +import { moneyFormatter } from '@/utils/formatter'; +export default { + components: { InputNumber }, + props: { + canEdit: { + type: Boolean, + required: true + }, + row: { + type: Object + }, + projectPlanType: { + type: String + } + }, + setup(props, context) { + const { ctx } = getCurrentInstance(); + const subOtherTable = ref(null); + const store = useStore(); + const data = reactive({ + applyInfo: { + projectPlanType: props.projectPlanType, + year: sessionStorage.getItem('year'), + projectName: '杩愯浆鎬ч」鐩�', + summaryJson: {}, + projectTargetCmd: { + subOtherArrayJson: [{}], + summaryJson: {} + }, + xinghaiProjectJson: [], + attachmentInfoOutList: [], + flowCanShowOut: { + btnStates: { + isShowSave: true, + isShowSubmit: false, + isShowReject: false, + isShowCancel: false, + isShowChart: false, + isShowHistory: false + } + } + }, + isRequired: false, + env: ctx.$env, + meritsTree: [], + meritsTreeProps: { + label: 'targetName', + value: 'id', + expandTrigger: 'hover' + // checkStrictly: true + }, + applyDept: [], + activeStep: 1, + formRef: null, + projectTable: [], + userList: [], + userQuery: { + pageIndex: 1, + pageSize: 10, + total: 0 + }, + uploadDialog: false, + overTen: false, + threeProject: [], + projectList: [ + '缁煎悎涓氬姟璐�', + '鍔炲叕璐�', + '瀛︽牎鎷涘緟璐�', + '鍏姟杞︺€佷笟鍔$敤杞﹀強杩愯缁存姢璐�', + '鏂板啝鐤儏闃叉帶璐�', + '琛屾斂宸梾璐�', + '閭數璐�', + '绉熻溅璐�', + '鍏氬缓缁煎悎涓氬姟璐�', + '鍏氭牎', + '骞查儴鍩硅涓撻」缁忚垂', + '缁熸垬涓氬姟璐�', + '鍔炴缁忚垂', + '娈嬮殰灏变笟淇濋殰', + '浜岃疆鑱樼敤', + '鍏紑鎷涜仒璐�', + '鑱岃瘎鑱岃仒', + '闊虫暀绯绘暀瀛﹀疄涔�', + '浼氳涓氬姟璐�', + '璐㈠姟璁惧缁存姢璐�', + '灏变笟鎸囧涓績缁忚垂', + '鎬濇斂绉戠粡璐�', + '鎻愬彇瀛︾敓濂栧姪鍩洪噾', + '蹇冪悊鍜ㄨ涓績缁忚垂', + '瀛︾敓绠$悊绉戠粡璐�', + '瀛︽牎鏄撶彮缃戝缓璁惧強鎻愬崌', + '璧勫姪涓績缁忚垂', + '缁煎悎涓氬姟璐�', + '鏍¤€冩嫑鐢熻垂', + '姝﹁閮ㄤ笟鍔¤垂', + '瀛︾敓鍐涜璐�', + '鐩戞帶銆佹秷闃层€佷氦閫氱鐞嗙郴缁熺淮鎶よ垂', + '澶у鍩庢牎鍖哄喎姘旇垂', + '澶у鍩庢牎鍖虹墿涓氱鐞嗚垂', + '鍚庡嫟璁炬柦缁翠繚璐�', + '绌虹疆鍏鎴跨閲戙€佺墿涓氱鐞嗚垂鍙婃按鐢电瓑锛堝惈鍛ㄨ浆鎴跨瓑锛�', + '绂婚€€浼戝尰鐤楃粡璐�', + '鍚庡嫟缁翠慨璐�', + '缁垮寲璐�', + '缁胯壊瀛︽牎鍒涘缓鈥斺€斾紶鏌撶梾闃叉帶涓撻」缁忚垂', + '缁胯壊瀛︽牎鍒涘缓鈥斺€斾袱鏍″尯鑺傝兘绠$悊璐�', + '娌欐渤鏍″尯鐗╀笟绠$悊璐�', + '姘寸數璐�', + '鍗敓璐�', + '瀛︾敓鍏瘬绠$悊璐�', + '鍦ㄨ亴浜哄憳鍖荤枟缁忚垂', + '绋庨噾鍙婇檮鍔犺垂鐢�', + '鈥滃叚涓€鈥濆効绔ユ叞闂垂', + '鈥滀笁鍏€濇椿鍔ㄨ垂', + '鈥滀簲鍥涒€濇椿鍔ㄨ垂', + '2022骞寸浜屽崄鍥涘眾杩愬姩浼氭暀 鑱屽伐杩愬姩鏈嶈璐瑰拰濂栭噾', + '绔崍鑺傛叞闂搧', + '宸ヤ細缁忚垂', + '鏁欏笀鑺傛叞闂噾', + '鏁欒亴宸ョ粨濠氥€佹暀鑱屽伐鐢熺梾浣忛櫌銆佸コ鏁欒亴宸ョ敓灏忓鎱伴棶閲�', + '鏁欒亴宸ョ敓鏃ヨ泲绯曞埜', + '鍥伴毦鏁欒亴宸ヨˉ鍔�', + '娣卞寲鎷撳睍娑堣垂甯壎', + '閫€浼戠邯蹇靛搧', + '鍏冩棪鏄ヨ妭鎱伴棶鍝�', + '鑱屽伐鍖荤枟鐢�', + '涓鍥藉簡鑺傛叞闂搧', + '浣忛櫌鍖荤枟缁煎悎锛堜簩娆″尰淇濓級', + '绂婚€€浼戝叕鐢ㄧ粡璐�', + '閲囬璐�', + '瀛︾敓娲诲姩璐�', + '缁煎悎涓氬姟璐�', + '閲囬', + '瀛︾敓娲诲姩璐�', + '鍥介檯鏈鈥�2+2鈥�', + '鍥介檯鏈鈥�3+2鈥�', + '椤圭洰鎴愭湰-鏁欒偛閮ㄧ暀瀛︽湇鍔′腑蹇冪鐞嗚垂鍙婂悎浣滄柟鍒嗘垚', + '骞夸笢鐪佸ぇ瀛︾敓杩愬姩浼�', + '浣撹偛缁存寔璐圭骇姣旇禌缁忚垂', + '瀛︾敓浣撹川娴嬭瘯', + '瀛﹂櫌杩愬姩浼�', + '瀛︾敓姣曚笟鑱氶娲诲姩琛ヨ创', + '瀛︾敓娲诲姩璐�', + '鐮旂┒鐢熸嫑鐢熻垂', + '缁ф暀闄㈤」鐩垚鏈�', + '椤圭洰鎴愭湰-杩涗慨鐝�', + '鏁欒偛缃�200M甯﹀绉熻祦璐�', + '淇℃伅缃戠粶绯荤粺缁存姢璐�', + '鏅烘収鏍″洯骞冲彴缁翠繚鏈嶅姟椤圭洰', + '涓浗鐢典俊500M甯﹀绉熻祦', + '涓浗鑱旈€�500M甯﹀绉熻祦', + '涓浗绉诲姩1G甯﹀绉熻祦' + ], + rules: { + basis: [ + { + required: true, + message: '璇疯緭鍏ラ」鐩唴瀹规杩板強鍏蜂綋瀹炴柦鍐呭', + trigger: 'blur' + } + ], + budget: [ + { + required: true, + message: '璇疯緭鍏ラ」鐩墽琛屽強璧勯噾浣跨敤璁″垝', + trigger: 'blur' + } + ], + terminfo: [ + { + required: true, + message: '璇疯緭鍏ラ」鐩珛椤逛緷鎹�', + trigger: 'blur' + } + ], + plan: [ + { + required: true, + message: '璇疯緭鍏ラ」鐩珛椤圭殑蹇呰鎬у強鍙鎬�', + trigger: 'blur' + } + ] + } + }); + watch( + () => data.projectTable, + val => { + data.overTen = false; + if (val && val.length > 0) { + val.forEach(item => { + item.money = + (item.price ? item.price : 0) * (item.count ? item.count : 0); + if (item.money && item.money >= 100000) { + data.overTen = true; + } + }); + } + }, + { deep: true } + ); + //璁$畻楂樺害锛屽浐瀹氭楠ゆ爮 + const caculateHeight = () => { + const step = document.querySelector('#step'); + const flowWrap = document.querySelector('#flowWrap'); + const scrollWrap = document.querySelector('.app-main'); + step.style.top = 300 + scrollWrap.scrollTop + 'px'; + if (scrollWrap.scrollTop >= 20) { + flowWrap.style.top = scrollWrap.scrollTop - 20 + 'px'; + } else { + flowWrap.style.top = 0 + 'px'; + } + }; + const onClickNode = (scope, node) => { + // scope.row.one = data.parent; + scope.row.oneValue = node.pathLabels[0]; + scope.row.twoValue = node.pathLabels[1]; + scope.row.two = node.label; + if (data.env == 'yy') { + getThreeData(node.pathLabels[0], scope.row.two, scope.$index); + } + }; + const caculateActiveStep = () => { + var windowH = + window.innerHeight || + document.documentElement.clientHeight || + document.body.clientHeight; + const baseInfo = document.getElementById('baseInfo'); + const projectMessage = document.getElementById('projectMessage'); + const projectData = document.getElementById('projectData'); + const projectAchieve = document.getElementById('projectAchieve'); + const fileData = document.getElementById('fileData'); + if ( + baseInfo.getBoundingClientRect().top > 0 && + baseInfo.getBoundingClientRect().top < windowH / 2 + ) { + data.activeStep = 1; + } + if ( + projectMessage.getBoundingClientRect().top > 0 && + projectMessage.getBoundingClientRect().top < windowH / 2 + ) { + data.activeStep = 2; + } + if ( + projectData.getBoundingClientRect().top > 0 && + projectData.getBoundingClientRect().top < windowH / 2 + ) { + data.activeStep = 3; + } + if ( + projectAchieve.getBoundingClientRect().top > 0 && + projectAchieve.getBoundingClientRect().top < windowH / 2 + ) { + data.activeStep = 4; + } + if ( + fileData.getBoundingClientRect().top > 0 && + fileData.getBoundingClientRect().top < windowH / 2 + ) { + data.activeStep = 5; + } + }; + const debonceCaculate = throttle(caculateHeight, 10); + const debonceCaculateStep = debounce(caculateActiveStep, 10); + document.querySelector('.app-main').onscroll = () => { + debonceCaculate(); + // fixFlowWrap(); + debonceCaculateStep(); + }; + //鐐瑰嚮step婊氬姩鍒拌閲庡唴 + const scrollToView = id => { + const dom = document.getElementById(`${id}`); + dom.scrollIntoView({ behavior: 'smooth', block: 'center' }); + }; + //璐熻矗浜轰笅鎷夋杈撳叆妯$硦鏌ヨ + const getLeaderByValue = name => { + data.userQuery.pageIndex = 1; + selectLoadmore(name); + }; + //涓嬫媺妗嗚Е搴曡Е椤跺姞杞� + const selectVisibleChange = visible => { + if (visible) { + // const SELECTWRAP_LIST = document.querySelectorAll('.el-dropdown__popper.el-popper.is-light.is-pure'); + // const domList = Array.from(SELECTWRAP_LIST); + // console.log(domList); + // const SELECTWRAP_ITEM = domList.find(item => { + // console.log(item.getAttribute('aria-hidden')); + // return !item.getAttribute('aria-hidden') || item.getAttribute('aria-hidden') == 'false' + // }) + // console.error(SELECTWRAP_ITEM); + const SELECTWRAP_DOM = document.querySelector( + '.select-user .el-select-dropdown__wrap.el-scrollbar__wrap' + ); + const totalPage = Math.ceil( + absNum(data.userQuery.total, data.userQuery.pageSize, '/') + ); + SELECTWRAP_DOM && + SELECTWRAP_DOM.addEventListener('scroll', () => { + // console.log(SELECTWRAP_DOM.scrollHeight, SELECTWRAP_DOM.scrollTop, SELECTWRAP_DOM.clientHeight); + const down = + SELECTWRAP_DOM.scrollHeight - SELECTWRAP_DOM.scrollTop - 1 <= + SELECTWRAP_DOM.clientHeight; + const up = SELECTWRAP_DOM.scrollTop <= 0; + if (down) { + if (data.userQuery.pageIndex >= totalPage) { + //鏈€鍚庝竴椤� + return; + } + data.userQuery.pageIndex++; //涓嬩竴椤� + SELECTWRAP_DOM.scrollTop = 1; + selectLoadmore(); + } + if (up) { + if (data.userQuery.pageIndex <= 1) { + //绗竴椤� + return; + } + data.userQuery.pageIndex--; //涓嬩竴椤� + SELECTWRAP_DOM.scrollTop = 1; + selectLoadmore(); + } + }); + } + }; + //娣诲姞缁╂晥 + const addQuota = scope => { + data.applyInfo.projectTargetCmd.subOtherArrayJson.splice( + scope.$index + 1, + 0, + { content: '', three: '' } + ); + }; + //鍒犻櫎缁╂晥 + const deleteQuota = scope => { + if (data.applyInfo.projectTargetCmd.subOtherArrayJson.length <= 1) { + data.applyInfo.projectTargetCmd.subOtherArrayJson.forEach(item => { + for (const key in item) { + item[key] = ''; + } + }); + return ElMessage.warning('鑷冲皯淇濈暀涓€琛屾暟鎹�'); + } + data.applyInfo.projectTargetCmd.subOtherArrayJson.splice(scope.$index, 1); + }; + const cascaderChange = scope => { + if (data.env == 'jk') { + if (scope.row.two == '鏁伴噺鎸囨爣') { + scope.row.content = + '璁″垝瀹屾垚鐨勪骇鍝佹垨鏈嶅姟鐨勬暟閲忥紝搴斾笌椤圭洰鍐呭鍜岄绠楁瀯鎴愮浉鍖归厤'; + } + if (scope.row.two == '璐ㄩ噺鎸囨爣') { + scope.row.content = '浜у搧鎴栨湇鍔¤揪鍒扮殑鏍囧噯鍜屾按骞�'; + } + if (scope.row.two == '鏃舵晥鎸囨爣') { + scope.row.content = '瀹屾垚鏃堕棿鎴栧強鏃剁▼搴�'; + } + if (scope.row.two == '绀句細鏁堢泭鎸囨爣') { + scope.row.content = '鍙嶆槧绔嬮」鐩殑銆侀鏈熷姛鑳姐€佺敤閫旀垨褰卞搷'; + } + if (scope.row.two == '鏈嶅姟瀵硅薄婊℃剰搴︽寚鏍�') { + scope.row.content = '鏈嶅姟瀵硅薄銆佺ぞ浼氬叕浼楁垨鍏朵粬鍒╃泭鐩稿叧鑰呯殑婊℃剰绋嬪害'; + } + } + + // scope.row.one = val[0]; + // scope.row.two = val[1]; + // nextTick(() => { + // }); + }; + const selectLeaderChange = leaderId => { + const leader = data.userList.find(item => item.id == leaderId); + data.applyInfo.projectLeaderName = leader.name; + data.applyInfo.projectLeaderCode = leader.code; + data.applyInfo.projectLeaderId = leader.id; + }; + //璐熻矗浜轰笅鎷夋鑾峰彇鏁版嵁 + const selectLoadmore = async name => { + data.selectUserLoading = true; + const params = { + pageIndex: data.userQuery.pageIndex, + pageSize: data.userQuery.pageSize + }; + if (name) { + params.name = name; + } + try { + const res = await Api.projectFundQueryUserList(params); + data.userList = res.data; + data.userQuery.total = res.total; + data.selectUserLoading = false; + } catch (_) { + data.selectUserLoading = false; + } + }; + //娴佺▼閫昏緫浠g爜 + const handleBack = () => { + context.emit('switch-page', 'List'); + }; + const handleSave = async resolve => { + data.applyInfo.planType = 'XIANGMUKU'; + if (data.projectTable.length == 0) { + ElMessage.warning('璇疯緭鍏ラ」鐩俊鎭�'); + return false; + } + const applyInfo = JSON.parse(JSON.stringify(data.applyInfo)); + const dept = data.applyDept.find( + item => item.code == applyInfo.departmentCode + ); + applyInfo.departmentName = dept.name; + applyInfo.xinghaiProjectJson = []; + applyInfo.xinghaiProjectJson = data.projectTable; + applyInfo.summaryJson = JSON.stringify(applyInfo.summaryJson); + applyInfo.projectTargetCmd.summaryJson = JSON.stringify( + applyInfo.projectTargetCmd.summaryJson + ); + applyInfo.projectTargetCmd.subOtherArrayJson = JSON.stringify( + applyInfo.projectTargetCmd.subOtherArrayJson + ); + applyInfo.xinghaiProjectJson = JSON.stringify( + applyInfo.xinghaiProjectJson + ); + applyInfo.attachmentInfoOutList = applyInfo.attachmentInfoOutList.map( + item => { + return item.id; + } + ); + const resData = await ProjectLibrary.saveXingHaiProjectInfoPlan( + applyInfo + ); + const res = await ProjectLibrary.queryProjectInfoPlanById( + resData.data[0] + ); + if (!resolve) { + ElMessage.success('淇濆瓨鎴愬姛'); + } + res.data[0].projectTargetCmd.subOtherArrayJson = JSON.parse( + res.data[0].projectTargetCmd.subOtherArrayJson + ); + res.data[0].projectTargetCmd.summaryJson = JSON.parse( + res.data[0].projectTargetCmd.summaryJson + ); + res.data[0].summaryJson = JSON.parse(res.data[0].summaryJson); + console.log(data.applyInfo.xinghaiProjectJson); + data.projectTable = JSON.parse(applyInfo.xinghaiProjectJson); + data.applyInfo = res.data[0]; + data.planId = res.data[0].id; + return true; + }; + const handleSubmit = async flowOutput => { + data.formRef.validate(valid => { + if (!valid) return ElMessage.warning('璇峰皢淇℃伅琛ュ厖瀹屾暣'); + let { nodeIds, remake } = flowOutput; + let nodeIdArr = []; + nodeIdArr.push(nodeIds); + let actionFlowCmd = { + id: data.planId, + nodeIds: nodeIdArr, + remake + }; + const newApplyInfo = JSON.parse(JSON.stringify(data.applyInfo)); + newApplyInfo.summaryJson = JSON.stringify(newApplyInfo.summaryJson); + newApplyInfo.projectTargetCmd.subOtherArrayJson = JSON.stringify( + newApplyInfo.projectTargetCmd.subOtherArrayJson + ); + newApplyInfo.projectTargetCmd.summaryJson = JSON.stringify( + newApplyInfo.projectTargetCmd.summaryJson + ); + if ( + newApplyInfo.attachmentInfoOutList && + newApplyInfo.attachmentInfoOutList.length > 0 + ) { + newApplyInfo.attachmentInfoOutList = newApplyInfo.attachmentInfoOutList.map( + v => v.id + ); + } + newApplyInfo.planSubjectList.forEach(item => { + item.otherJson = JSON.stringify(item.otherJson); + if (item.subjectDetailList.length <= 0) { + item.subjectDetailList = null; + } else { + item.subjectDetailList.forEach(jtem => { + jtem.otherJson = JSON.stringify(jtem.otherJson); + }); + } + }); + + newApplyInfo.planType = 'XIANGMUKU'; + new Promise((resolve, reject) => { + handleSave(1).then(res => { + if (res) { + resolve(); + } else { + reject(); + } + }); + }) + .then(() => { + ProjectLibrary.submitProjectPlan(actionFlowCmd).then(() => { + ElMessage.success('鎻愪氦鎴愬姛'); + handleBack(); + }); + }) + .catch(() => { + ElMessage.success('鎻愪氦澶辫触'); + }); + }); + }; + const handleReturn = flowOutput => { + let { nodeIds, remake } = flowOutput; + let nodeIdArr = []; + nodeIdArr.push(nodeIds); + let actionFlowCmd = { + id: data.planId, + nodeIds: nodeIdArr, + remake + }; + // this.formLine.actionFlowCmd = actionFlowCmd; + ProjectLibrary.rollBackProjectPlan(actionFlowCmd).then(() => { + ElMessage.success('鍥為€€鎴愬姛'); + handleBack(); + }); + }; + const handleCancel = () => { + ProjectLibrary.reCallProjectPlan(props.oId).then(() => { + ElMessage.success('鍥炴挙鎴愬姛'); + if (props.oId) { + init(); + } + }); + }; + const selectDeptChange = val => { + const dept = data.applyDept.find(item => item.code == val); + data.applyInfo.departmentName = dept.name; + }; + const getThreeData = (oneName, twoName, index) => { + ProjectLibrary.queryTargetAllFundList({ + oneName: oneName, + twoName: twoName + }).then(res => { + data.applyInfo.projectTargetCmd.subOtherArrayJson[index].threeProject = + res.data; + }); + }; + const init = () => { + const leader = store.state.subject.leader; + data.applyInfo.projectLeaderId = leader.id; + data.applyInfo.projectLeaderName = leader.name; + data.applyInfo.projectLeaderCode = leader.code; + selectLoadmore(data.applyInfo.projectLeaderName); + getApplyDept(); + getMeritsTree(); + console.log(props); + if (props.row.id) { + ProjectLibrary.queryProjectInfoPlanById(props.row.id).then(res => { + res.data[0].projectTargetCmd.subOtherArrayJson = JSON.parse( + res.data[0].projectTargetCmd.subOtherArrayJson + ); + res.data[0].projectTargetCmd.summaryJson = JSON.parse( + res.data[0].projectTargetCmd.summaryJson + ); + res.data[0].summaryJson = JSON.parse(res.data[0].summaryJson); + + data.applyInfo = res.data[0]; + data.projectTable = JSON.parse(data.applyInfo.xinghaiProjectJson); + data.planId = res.data[0].id; + data.applyInfo.stepYear = data.applyInfo.stepYear ? res.data[0].stepYear : 'NO'; + }); + } + }; + const getApplyDept = async () => { + const res = await Api.pfApplyDept(); + data.applyDept = res.data; + if (res.data && res.data.length > 0) { + data.applyInfo.departmentCode = data.applyDept[0].code; + } + }; + const getMeritsTree = async () => { + const res = await Api.projectFundTargetTree({ + year: sessionStorage.getItem('year') + // year: "2022" + }); + data.meritsTree = res.data; + }; + //涓婁紶鏂囦欢 + const uploadHandler = fileList => { + const formData = new FormData(); + fileList.forEach(file => { + formData.append('files', file.raw); + }); + ProjectLibrary.uploadAttachmentList(formData).then(res => { + data.applyInfo.attachmentInfoOutList = data.applyInfo.attachmentInfoOutList.concat( + res.data + ); + data.uploadDialog = false; + }); + }; + const addProject = () => { + data.projectTable.push({ money: 0 }); + }; + const deleteProject = scope => { + data.projectTable.splice(scope.$index, 1); + }; + const downloadFile = id => { + ProjectLibrary.downloadTempImport({ id: id }); + }; + const deleteFile = index => { + data.applyInfo.attachmentInfoOutList.splice(index, 1); + }; + const getSummary = () => { + let moneyData = 0; + data.projectTable.map(item => { + moneyData = absNum(moneyData, Number(item.money), '+'); + }); + if (moneyData > 200000) { + data.isRequired = true; + } else { + data.isRequired = false; + } + return ['鍚堣', '', '', moneyFormatter(moneyData, 2, ',')]; + }; + init(); + return { + ...toRefs(data), + //鍩烘湰淇℃伅鍜屾杩� + navToPrint, + store, + isEmpty, + scrollToView, + onClickNode, + addQuota, + deleteQuota, + selectLeaderChange, + handleBack, + handleSave, + handleSubmit, + handleReturn, + handleCancel, + selectDeptChange, + getLeaderByValue, + selectVisibleChange, + uploadHandler, + cascaderChange, + addProject, + deleteProject, + downloadFile, + deleteFile, + subOtherTable, + getSummary, + ctx + }; + } +}; +</script> + +<style scoped lang="scss"> +.color { + color: #409eff; +} +h2 { + text-align: center; +} +.step-wrap { + // position: absolute; + // left: 30px; + // top: 75vh; + /* bottom: 0; */ +} +.apply-table-wrap { + padding: 68px 150px 0; +} +.one-quota { + display: flex; + flex-direction: row; + align-items: center; + .icon-wrap { + font-size: 16px; + margin-left: 4px; + display: flex; + flex-direction: column; + i { + display: block; + } + .add-icon { + cursor: pointer; + color: #409eff; + } + .delete-icon { + cursor: pointer; + color: #f56c6c; + } + .el-button--mini.is-circle { + padding: 5px; + } + .el-button--mini { + min-height: 20px; + } + } +} +.fileBox { + margin-top: 10px; + .el-tag { + margin: 0 10px; + } +} +</style> diff --git a/WebSite/src/views/yo-dept-sp/project-fund-approval/Personnel/index.vue b/WebSite/src/views/yo-dept-sp/project-fund-approval/Personnel/index.vue new file mode 100644 index 000000000..9182f7d70 --- /dev/null +++ b/WebSite/src/views/yo-dept-sp/project-fund-approval/Personnel/index.vue @@ -0,0 +1,46 @@ +<template> + <div class="app-container"> + <transition name="fade-transform" mode="out-in"> + <component + :is="currentComponent" + @switch-page="switchPage" + :canEdit="canEdit" + :row="info" + ></component> + </transition> + </div> +</template> + +<script> +import List from '@/views/yo-dept-sp/project-fund-approval/Personnel/components/List'; +import workDetail from '@/views/yo-dept-sp/project-fund-approval/Personnel/components/workDetail'; +import Detail from '@/views/yo-common/ProjectApplyPageList/detail.vue'; +import { reactive, toRefs } from 'vue'; +export default { + name: 'Personnel', + components: { + List, + Detail, + workDetail + }, + setup() { + const data = reactive({ + currentComponent: 'List', + info: {}, + canEdit: false + }); + + const switchPage = (page, canEdit, row) => { + data.currentComponent = page; + data.canEdit = canEdit; + data.info = row; + }; + return { + ...toRefs(data), + switchPage + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/vue.config.js b/WebSite/vue.config.js index 8ef724f7a..5a2caa172 100644 --- a/WebSite/vue.config.js +++ b/WebSite/vue.config.js @@ -32,8 +32,8 @@ if (process.env.NODE_ENV === 'mock') { // detail: https://cli.vuejs.org/config/#devserver-proxy [process.env.VUE_APP_BASE_API]: { // target: 'http://192.168.2.10/projectplan', - // target: 'http://192.168.1.80/projectplan', //闄や笂澶у鎵€鏈夊叾浠栧鏍¢兘浣跨敤杩欎釜锛屼笂澶х敤涓嬫柟甯hu鐨�(涓婂ぇ鎵撳寘姝e紡鐜璇风敤杩欎釜锛屽苟涓旀鏌�.env.sd鏂囦欢閲岀殑VUE_APP_BASE_API = '/projectplan'鏄惁甯︿笉甯hu) - target: 'http://192.168.1.80/projectplanshu', //涓婂ぇ(濡傛灉鎵撳寘涓婂ぇ鍒版祴璇曠幆澧冪殑璇濓紝璇锋妸.env.sd鏂囦欢閲岀殑VUE_APP_BASE_API = '/projectplan'鏀规垚VUE_APP_BASE_API = '/projectplanshu') + target: 'http://192.168.1.80/projectplan', //闄や笂澶у鎵€鏈夊叾浠栧鏍¢兘浣跨敤杩欎釜锛屼笂澶х敤涓嬫柟甯hu鐨�(涓婂ぇ鎵撳寘姝e紡鐜璇风敤杩欎釜锛屽苟涓旀鏌�.env.sd鏂囦欢閲岀殑VUE_APP_BASE_API = '/projectplan'鏄惁甯︿笉甯hu) + // target: 'http://192.168.1.80/projectplanshu', //涓婂ぇ(濡傛灉鎵撳寘涓婂ぇ鍒版祴璇曠幆澧冪殑璇濓紝璇锋妸.env.sd鏂囦欢閲岀殑VUE_APP_BASE_API = '/projectplan'鏀规垚VUE_APP_BASE_API = '/projectplanshu') // target: 'http://172.28.12.50/', changeOrigin: true, pathRewrite: { -- GitLab From bdc25fe33dee486748734c0107903ed48a37f50c Mon Sep 17 00:00:00 2001 From: lshwy817 <lshwy817@163.com> Date: Fri, 7 Apr 2023 17:28:32 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WebSite/src/assets/images/tupian3.png | Bin 0 -> 37265 bytes WebSite/src/components/Flow/index.vue | 15 ++++---- .../department/components/List.vue | 29 +++++++-------- .../inSchool/components/List.vue | 33 +++++++----------- .../Personnel/components/List.vue | 1 + 5 files changed, 37 insertions(+), 41 deletions(-) create mode 100644 WebSite/src/assets/images/tupian3.png diff --git a/WebSite/src/assets/images/tupian3.png b/WebSite/src/assets/images/tupian3.png new file mode 100644 index 0000000000000000000000000000000000000000..3869e39324a0769f072852128559839b7abc81ff GIT binary patch literal 37265 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 TKkna!v`<Y*>o)G@qZj`l>*lp! literal 0 HcmV?d00001 diff --git a/WebSite/src/components/Flow/index.vue b/WebSite/src/components/Flow/index.vue index 6b21b1413..0523bbb2c 100644 --- a/WebSite/src/components/Flow/index.vue +++ b/WebSite/src/components/Flow/index.vue @@ -60,12 +60,12 @@ </div> <el-dialog v-model="dialogVisible" width="70%" v-if="env == 'lg'"> <div style="display: none">{{ flowInfo }}</div> - <img + <!-- <img src="@/assets/images/tupian.png" style="width: 90%" v-if="flowInfo.functionDeptJson != ''" - /> - <img src="@/assets/images/tupian2.png" style="width: 90%" v-else /> + /> --> + <img src="@/assets/images/tupian3.png" style="width: 90%" /> </el-dialog> <Submit v-if="dialogSubmit.visible" @@ -89,7 +89,7 @@ </template> <script> -import { reactive, toRefs } from 'vue'; +import { reactive, toRefs, getCurrentInstance } from 'vue'; import Submit from './conpoments/Submit'; import Return from './conpoments/Return'; import History from './conpoments/History'; @@ -115,6 +115,7 @@ export default { components: { History, Submit, Return }, setup(props, cxt) { console.log('prop', props.flowInfo); + const { ctx } = getCurrentInstance(); const state = reactive({ dialogSubmit: { visible: false @@ -126,7 +127,7 @@ export default { visible: false }, dialogVisible: false, - env: process.env.NODE_ENV + env: ctx.$env // env: 'lg' }); const handleBack = () => { @@ -152,6 +153,7 @@ export default { cxt.emit('handleCancel'); }; const handleChart = () => { + console.log('232'); if (state.env == 'lg') { state.dialogVisible = true; } @@ -172,7 +174,8 @@ export default { handleSubmit, handleOpenSubmitDialog, handleOpenReturnDialog, - handleOpenHistoryDialog + handleOpenHistoryDialog, + ctx }; } }; diff --git a/WebSite/src/views/main/project-library/department/components/List.vue b/WebSite/src/views/main/project-library/department/components/List.vue index a9e3cc034..cf1d820aa 100644 --- a/WebSite/src/views/main/project-library/department/components/List.vue +++ b/WebSite/src/views/main/project-library/department/components/List.vue @@ -111,6 +111,7 @@ class="mtop20" @selection-change="handleSelectionChange" fit + border > <el-table-column type="selection" width="55" align="center" /> <el-table-column @@ -119,7 +120,7 @@ v-if="$env == 'lg'" /> <el-table-column label="椤圭洰鍚嶇О" prop="projectName" /> - <el-table-column label="椤圭洰搴�" prop="projectLibraryName" width="100"> + <el-table-column label="椤圭洰搴�" prop="projectLibraryName" > <template #default="scope"> <el-button @click="toDetail(scope.row)" @@ -133,7 +134,7 @@ <span v-if="$env == 'lg'">{{ moneyFormat(scope.row.projectLibraryTotalMoney, 2, ',') }}</span> </template> </el-table-column> --> - <el-table-column label="涓€涓�" prop="oneUPName" width="180"> + <el-table-column label="涓€涓�" prop="oneUPName" > <template #default="scope"> <el-button v-if="scope.row.oneUPState == 1" @@ -153,7 +154,7 @@ <span v-if="$env == 'lg' && scope.row.oneUPName != ''">{{ moneyFormat(scope.row.oneUPTotalMoney, 2, ',') }}</span> </template> </el-table-column> --> - <el-table-column label="浜屼笂" prop="twoUPName" width="420"> + <el-table-column label="浜屼笂" prop="twoUPName" width="380" header-align="center"> <template #default="scope"> <div v-if="$env != 'lg'"> <el-button @@ -169,16 +170,16 @@ > </div> <div class="newBorder" v-if="$env == 'lg' && scope.row.oneUPName == '瀹℃牳瀹屾垚'" > - <el-table :data="scope.row.splitList" style="width: 100%" fit + <el-table :data="scope.row.splitList" style="width: 100%" fit :show-header="false" row-class-name="tablecolor" - @selection-change="splitChange" v-if="scope.row.isTableShow"> - <el-table-column prop="splitProjectName" /> + @selection-change="splitChange" v-if="scope.row.isTableShow" > + <el-table-column prop="splitProjectName" width="100" /> <!-- <el-table-column prop="splitTotalMoney"> <template #default="scope1"> <div v-if="scope1.row.splitTotalMoney != ''">{{ moneyFormat(scope1.row.splitTotalMoney, 2, ',') }}</div> </template> </el-table-column> --> - <el-table-column prop="twoUPName"> + <el-table-column prop="twoUPName" > <template #default="scope1"> <el-button v-if="scope1.row.twoUPState == 1" @@ -187,7 +188,7 @@ >缂栬緫</el-button > </template> </el-table-column> - <el-table-column prop="twoUPName"> + <el-table-column prop="twoUPName" width="80"> <template #default="scope1"> <el-button @click="toTwo(scope1.row)" @@ -724,12 +725,12 @@ export default { } ::v-deep .el-table__row.tablecolor{ td { - border: none !important; - } -} -.newBorder { - ::v-deep .el-table::before { - height: 0 !important; + border-right: none !important; } } +// .newBorder { +// ::v-deep .el-table::before { +// height: 0 !important; +// } +// } </style> diff --git a/WebSite/src/views/main/project-library/inSchool/components/List.vue b/WebSite/src/views/main/project-library/inSchool/components/List.vue index eb2c6d7af..42f5eb2f0 100644 --- a/WebSite/src/views/main/project-library/inSchool/components/List.vue +++ b/WebSite/src/views/main/project-library/inSchool/components/List.vue @@ -63,6 +63,7 @@ class="mtop20" fit @sort-change="sortChange" + border > <el-table-column label="骞翠唤" prop="year" /> <el-table-column @@ -78,38 +79,38 @@ prop="departmentName" sortable="custom" /> - <el-table-column label="椤圭洰搴�" prop="projectLibraryName" width="150"> + <el-table-column label="椤圭洰搴�" prop="projectLibraryName" > <template #default="scope"> <el-button @click="toDetail(scope.row)" type="text">{{ scope.row.projectLibraryName }}</el-button> - <span class="lidiv">{{ moneyFormat(scope.row.projectLibraryTotalMoney, 2, ',') }}</span> + <!-- <span class="lidiv">{{ moneyFormat(scope.row.projectLibraryTotalMoney, 2, ',') }}</span> --> </template> </el-table-column> - <el-table-column label="涓€涓�" prop="oneUPName" width="150"> + <el-table-column label="涓€涓�" prop="oneUPName" > <template #default="scope"> <el-button @click="toOne(scope.row)" type="text">{{ scope.row.oneUPName }}</el-button> - <span class="lidiv">{{ moneyFormat(scope.row.oneUPTotalMoney, 2, ',') }}</span> + <!-- <span class="lidiv">{{ moneyFormat(scope.row.oneUPTotalMoney, 2, ',') }}</span> --> </template> </el-table-column> - <el-table-column label="浜屼笂" prop="twoUPName" width="350"> + <el-table-column label="浜屼笂" prop="twoUPName" width="250" header-align="center"> <template #default="scope"> - <div v-if="scope.row.isShows"> + <div v-if="env != 'lg'"> <el-button @click="toTwo(scope.row)" type="text">{{ scope.row.twoUPName }}</el-button> - <span class="lidiv">{{ moneyFormat(scope.row.splitTotalMoney, 2, ',') }}</span> + <!-- <span class="lidiv">{{ moneyFormat(scope.row.splitTotalMoney, 2, ',') }}</span> --> </div> - <div class="newBorder"> + <div class="newBorder" v-if="env == 'lg' && scope.row.oneUPName == '瀹℃牳瀹屾垚'"> <el-table :data="scope.row.splitList" style="width: 100%" fit :show-header="false" row-class-name="tablecolor" v-if="scope.row.isTableShow" @selection-change="splitChange" > - <el-table-column prop="twoUPName" /> - <el-table-column prop="splitTotalMoney"> + <el-table-column prop="splitProjectName" /> + <!-- <el-table-column prop="splitTotalMoney"> {{ moneyFormat(scope.row.splitTotalMoney, 2, ',') }} - </el-table-column> + </el-table-column> --> <el-table-column prop="twoUPName"> <template #default="scope"> <el-button @@ -118,14 +119,6 @@ >{{ scope.row.twoUPName }}</el-button> </template> </el-table-column> - <!-- <el-table-column prop="splitName"> - <template #default="scope"> - <el-button - @click="toTwoCf(scope.row)" - type="primary" - >{{ scope.row.splitName }}</el-button> - </template> - </el-table-column> --> </el-table> </div> </template> @@ -269,10 +262,8 @@ export default { ProjectLibrary.queryProjectLibraryPage(state.checkInfo).then(res => { res.data.forEach(item => { if (item.splitList && item.splitList.length > 0) { - item.isShows = false; item.isTableShow = true; } else { - item.isShows = true; item.isTableShow = false; } }) diff --git a/WebSite/src/views/yo-dept-sp/project-fund-approval/Personnel/components/List.vue b/WebSite/src/views/yo-dept-sp/project-fund-approval/Personnel/components/List.vue index 92772a9e8..fd7319088 100644 --- a/WebSite/src/views/yo-dept-sp/project-fund-approval/Personnel/components/List.vue +++ b/WebSite/src/views/yo-dept-sp/project-fund-approval/Personnel/components/List.vue @@ -64,6 +64,7 @@ export default { } }; const getPageList = async (params, callback) => { + params.state = '浜轰簨澶勫鎵�'; const res = await Api.queryAllProjectInfoPlanPage(params); callback(res); }; -- GitLab