Merge pull request 'dj' (#357) from dj into master

Reviewed-on: http://git.feashow.cn/clay/mosr-web/pulls/357
This commit is contained in:
2024-06-18 15:55:54 +00:00
9 changed files with 111 additions and 66 deletions

View File

@@ -161,8 +161,6 @@ const show = () => {
getList() getList()
}; };
const handleChange = (data, checked) => { const handleChange = (data, checked) => {
// 左侧有选择框
// if (props.showCheckbox) {
// 左侧有选择框 + 多选 // 左侧有选择框 + 多选
if (props.multiple) { if (props.multiple) {
//不添加重复的数据到右边 //不添加重复的数据到右边
@@ -197,7 +195,6 @@ const handleChange = (data, checked) => {
tree.value.setCheckedKeys([]); tree.value.setCheckedKeys([]);
} }
} }
// }
}; };
const handle = (node, check) => { const handle = (node, check) => {
if (check.isLeaf !== false) { if (check.isLeaf !== false) {

View File

@@ -4,10 +4,12 @@
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="前置流程" :required="preProcessRequired" prop="requestName"> <el-form-item label="前置流程" :required="preProcessRequired" prop="requestName">
<a :href="localFormData.preProcess?.baseUrl" target="_blank" <div v-for="item in localFormData.preProcess" :key="item.requestId">
style="color: #2a99ff;margin-right: 10px;cursor: pointer">{{ localFormData.preProcess?.requestName }}</a> <a :href="item.baseUrl" target="_blank"
style="color: #2a99ff;margin-right: 10px;cursor: pointer">{{ item.requestName }}</a>
</div>
<el-button color="#DED0B2" @click="handleShowPreTable"> <el-button color="#DED0B2" @click="handleShowPreTable">
{{ localFormData.preProcess?.requestName ? '更改' : '请选择' }} {{ localFormData.preProcess ? '更改' : '请选择' }}
</el-button> </el-button>
</el-form-item> </el-form-item>
</el-col> </el-col>
@@ -32,29 +34,30 @@
</div> </div>
</div> </div>
<div class="process"> <div class="process">
<operation-render v-if="mode === 'resubmit'&&!changeDiagram" :operation-list="data.operationList" :state="data.state"/> <operation-render v-if="mode === 'resubmit'&&!changeDiagram" :operation-list="data.operationList"
:state="data.state"/>
<process-diagram-viewer mode="view" :idName="title" v-if="processDiagramViewer&&changeDiagram"/> <process-diagram-viewer mode="view" :idName="title" v-if="processDiagramViewer&&changeDiagram"/>
</div> </div>
</div> </div>
</div> </div>
<!-- <div v-if="changeDiagram">--> <!-- <div v-if="changeDiagram">-->
<!-- <div class="approval-record">--> <!-- <div class="approval-record">-->
<!-- <div class="approval-title">--> <!-- <div class="approval-title">-->
<!-- <baseTitle title="流程图"></baseTitle>--> <!-- <baseTitle title="流程图"></baseTitle>-->
<!-- <div class="diagram">--> <!-- <div class="diagram">-->
<!--&lt;!&ndash; <div class="base-title">流程图</div>&ndash;&gt;--> <!--&lt;!&ndash; <div class="base-title">流程图</div>&ndash;&gt;-->
<!--&lt;!&ndash; <el-switch&ndash;&gt;--> <!--&lt;!&ndash; <el-switch&ndash;&gt;-->
<!--&lt;!&ndash; v-model="changeDiagram"&ndash;&gt;--> <!--&lt;!&ndash; v-model="changeDiagram"&ndash;&gt;-->
<!--&lt;!&ndash; style="&#45;&#45;el-switch-on-color: #13ce66; &#45;&#45;el-switch-off-color:#BEA266"&ndash;&gt;--> <!--&lt;!&ndash; style="&#45;&#45;el-switch-on-color: #13ce66; &#45;&#45;el-switch-off-color:#BEA266"&ndash;&gt;-->
<!--&lt;!&ndash; />&ndash;&gt;--> <!--&lt;!&ndash; />&ndash;&gt;-->
<!-- </div>--> <!-- </div>-->
<!-- </div>--> <!-- </div>-->
<!-- </div>--> <!-- </div>-->
<!-- <div class="process">--> <!-- <div class="process">-->
<!-- <process-diagram-viewer mode="view" :idName="title" v-if="processDiagramViewer"/>--> <!-- <process-diagram-viewer mode="view" :idName="title" v-if="processDiagramViewer"/>-->
<!-- </div>--> <!-- </div>-->
<!-- </div>--> <!-- </div>-->
<div class="oper-page-btn"> <div class="oper-page-btn">
<el-button color="#DED0B2" v-if="mode === 'submit'" @click="handleSubmit">提交</el-button> <el-button color="#DED0B2" v-if="mode === 'submit'" @click="handleSubmit">提交</el-button>
<el-button color="#DED0B2" v-else-if="mode === 'resubmit'" @click="handleSubmit">重新提交</el-button> <el-button color="#DED0B2" v-else-if="mode === 'resubmit'" @click="handleSubmit">重新提交</el-button>
@@ -71,7 +74,9 @@
<el-button @click="handleReset">重置</el-button> <el-button @click="handleReset">重置</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-table :data="preProcessList" stripe v-loading="loading"> <el-table :data="preProcessList" stripe v-loading="loading"
@select="handleSelect" row-key="requestId">
<el-table-column type="selection" width="55" :reserve-selection="true"/>
<el-table-column prop="requestId" label="请求id"></el-table-column> <el-table-column prop="requestId" label="请求id"></el-table-column>
<el-table-column prop="requestName" label="请求名称"></el-table-column> <el-table-column prop="requestName" label="请求名称"></el-table-column>
<el-table-column prop="lastOperatorName" label="最后操作人名称"></el-table-column> <el-table-column prop="lastOperatorName" label="最后操作人名称"></el-table-column>
@@ -81,15 +86,17 @@
<el-table-column prop="createTime" label="创建时间"></el-table-column> <el-table-column prop="createTime" label="创建时间"></el-table-column>
<el-table-column label="操作" align="center"> <el-table-column label="操作" align="center">
<template #default="scope"> <template #default="scope">
<div style="display: flex;align-items: center"> <!-- <el-button type="primary" @click="choosePreProcess(scope.row)" link>选择</el-button>-->
<el-button type="primary" @click="chooseProProcess(scope.row)" link>选择</el-button> <a :href="scope.row.baseUrl" target="_blank" style="color: #2a99ff;margin-left: 10px">查看流程</a>
<a :href="scope.row.baseUrl" target="_blank" style="color: #2a99ff;margin-left: 10px">查看流程</a>
</div>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<paging :current-page="pageInfo.pageNum" :page-size="pageInfo.pageSize" :page-sizes="[10, 20, 30, 40,50]" <paging :current-page="pageInfo.pageNum" :page-size="pageInfo.pageSize" :page-sizes="[10, 20, 30, 40,50]"
:total="total" @changeSize="handleSizeChange" @goPage="handleCurrentChange"/> :total="total" @changeSize="handleSizeChange" @goPage="handleCurrentChange"/>
<div class="oper">
<el-button color="#DED0B2" @click="choosePreProcess">确定</el-button>
<el-button @click="handleCancel">取消</el-button>
</div>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
@@ -163,11 +170,13 @@ const tagsViewStore = useTagsView()
const processStore = useProcessStore() const processStore = useProcessStore()
const otherFileList = ref([]) const otherFileList = ref([])
const localFormData = ref({ const localFormData = ref({
preProcess: { preProcess: [
requestId: null, // {
requestName: '', // requestId: null,
baseUrl: '' // requestName: '',
} // baseUrl: ''
// }
]
}) })
const attachment = ref() const attachment = ref()
const deploymentData = ref({}) const deploymentData = ref({})
@@ -177,7 +186,24 @@ const loading = ref(false)
const processDiagramViewer = ref(false) const processDiagramViewer = ref(false)
const name = ref(router.currentRoute.value.name) const name = ref(router.currentRoute.value.name)
const deploymentId = ref() const deploymentId = ref()
const selectRows = ref([])
const projectId = ref(route.query.projectId) const projectId = ref(route.query.projectId)
const getPreProcessUrl = (list) => {
// list.map(item => {
// item.baseUrl = getPreProcessUrl(item.preProcess)
// })
// let baseUrl=
// list.forEach(item => {
// baseUrl=item.baseUrl
// })
// return baseUrl
}
const handleSelect = async (selection) => {
selectRows.value = selection
}
const handleCancel = () => {
showPreTable.value = false
}
const searchPreProcess = () => { const searchPreProcess = () => {
getPreProcessList() getPreProcessList()
@@ -207,12 +233,19 @@ const getPreProcessList = () => {
preProcessList.value = currentList.value.slice(0, 10) preProcessList.value = currentList.value.slice(0, 10)
}) })
} }
const chooseProProcess = (item) => { const choosePreProcess = () => {
localFormData.value.preProcess = { let preProcessObj = {}
requestId: item.requestId, let preProcessArray = []
requestName: item.requestName, selectRows.value.forEach((item) => {
baseUrl: item.baseUrl preProcessObj = {
} requestId: item.requestId,
requestName: item.requestName,
baseUrl: item.baseUrl
}
preProcessArray.push(preProcessObj)
})
localFormData.value.preProcess = preProcessArray
console.log('localFormData.value.preProcess', localFormData.value.preProcess)
showPreTable.value = false showPreTable.value = false
} }
@@ -252,11 +285,11 @@ const compositeParam = (item) => {
} }
} }
const getAttachment = (val) => { const getAttachment = (val) => {
console.log('上传文件getAttachment', val) // console.log('上传文件getAttachment', val)
localFormData.value.singleFile = compositeParam(val) localFormData.value.singleFile = compositeParam(val)
} }
const getOtherFile = (val) => { const getOtherFile = (val) => {
console.log('上传文件getOtherFile', val) // console.log('上传文件getOtherFile', val)
showTable.value = false showTable.value = false
let fileObj = compositeParam(val) let fileObj = compositeParam(val)
otherFileList.value.push(fileObj) otherFileList.value.push(fileObj)
@@ -271,7 +304,7 @@ const getFileParam = (item) => {
} }
} }
const handleSubmit = async () => { const handleSubmit = async () => {
if(deploymentData.value.deploymentName==='重大项目立项'||deploymentData.value.deploymentName==='重大项目验收'){ if (deploymentData.value.deploymentName === '重大项目立项' || deploymentData.value.deploymentName === '重大项目验收') {
if (localFormData.value.preProcess === undefined) { if (localFormData.value.preProcess === undefined) {
ElNotification({ ElNotification({
title: '提示', title: '提示',
@@ -377,7 +410,7 @@ const init = async () => {
let data = res.data let data = res.data
deploymentId.value = data.deploymentId deploymentId.value = data.deploymentId
deploymentData.value = data deploymentData.value = data
preProcessRequired.value = data.deploymentName === '重大项目立项'||data.deploymentName === '重大项目验收'; preProcessRequired.value = data.deploymentName === '重大项目立项' || data.deploymentName === '重大项目验收';
processStore.setDesign(data) processStore.setDesign(data)
processStore.runningList.value = data.runningList; processStore.runningList.value = data.runningList;
processStore.endList.value = data.endList; processStore.endList.value = data.endList;
@@ -406,5 +439,9 @@ onMounted(async () => {
</script> </script>
<style scoped> <style scoped>
.oper {
margin-top: 20px;
display: flex;
justify-content: flex-end;
}
</style> </style>

View File

@@ -47,11 +47,11 @@ const searchConfig = reactive([
} }
}, },
{ {
label: '项目阶段', label: '研发阶段',
prop: 'researchStage', prop: 'researchStage',
component: shallowRef(fvSelect), component: shallowRef(fvSelect),
props: { props: {
placeholder: '请选择项目阶段查询', placeholder: '请选择研发阶段查询',
clearable: true, clearable: true,
filterable: true, filterable: true,
checkStrictly: true, checkStrictly: true,
@@ -115,7 +115,7 @@ const tableConfig = reactive({
}, },
{ {
prop: 'researchStage', prop: 'researchStage',
label: '项目阶段', label: '研发阶段',
align: 'center', align: 'center',
showOverflowTooltip: false, showOverflowTooltip: false,
currentRender: ({row, index}) => { currentRender: ({row, index}) => {

View File

@@ -102,7 +102,7 @@ const tableConfig = reactive({
}, },
{ {
prop: 'researchStage', prop: 'researchStage',
label: '项目阶段', label: '研发阶段',
align: 'center', align: 'center',
currentRender: ({row, index}) => { currentRender: ({row, index}) => {
if (row.researchStage&&row.researchStage !== null&&row.researchStage!==undefined) { if (row.researchStage&&row.researchStage !== null&&row.researchStage!==undefined) {

View File

@@ -34,8 +34,9 @@
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="所属公司" prop="companyIds" class="tree-select"> <el-form-item label="所属公司" prop="companyIds" class="tree-select">
<div>{{ getName(companyList) }}</div> <div v-if="route.query.id">{{selectedCompanyList}}</div>
<el-button color="#DED0B2" @click="showCompany">{{ companyList.length === 0 ? '请选择所属公司' : '更改' }} <div v-else>{{ getName(selectedCompanyList) }}</div>
<el-button color="#DED0B2" @click="showCompany">{{ selectedCompanyList.length === 0 ? '请选择所属公司' : '更改' }}
</el-button> </el-button>
<!-- <el-tree-select v-model="formData.companyIds" :data="companyOption"--> <!-- <el-tree-select v-model="formData.companyIds" :data="companyOption"-->
<!-- filterable clearable :check-strictly="true" multiple/>--> <!-- filterable clearable :check-strictly="true" multiple/>-->
@@ -96,7 +97,7 @@
<el-button color="#DED0B2" v-else @click="handleResubmit">重新提交</el-button> <el-button color="#DED0B2" v-else @click="handleResubmit">重新提交</el-button>
<el-button @click="handleBack">返回</el-button> <el-button @click="handleBack">返回</el-button>
</div> </div>
<company-picker :multiple="true" ref="companyRef" title="请选择所属公司" v-model:value="companyList" @ok="selected"/> <company-picker :multiple="true" ref="companyRef" title="请选择所属公司" @ok="selected"/>
</div> </div>
</template> </template>
@@ -119,11 +120,13 @@ import {getSubCompOpt} from '@/api/user/user.js'
import {useTagsView} from '@/stores/tagsview.js' import {useTagsView} from '@/stores/tagsview.js'
import {getFundOption} from "@/api/special-fund"; import {getFundOption} from "@/api/special-fund";
import CompanyPicker from "@/components/DetailComponent/CompanyPicker.vue"; import CompanyPicker from "@/components/DetailComponent/CompanyPicker.vue";
import {matterTree} from "@/utils/matterTree";
import {useCacheStore} from '@/stores/cache.js' import {useCacheStore} from '@/stores/cache.js'
const cacheStore = useCacheStore() const cacheStore = useCacheStore()
const companyRef = ref() const companyRef = ref()
const companyList = ref([]) const selectedCompanyList = ref([])
// const companyList = ref([])
const changeDiagram = ref(false) const changeDiagram = ref(false)
const tagsViewStore = useTagsView() const tagsViewStore = useTagsView()
const authStore = useAuthStore() const authStore = useAuthStore()
@@ -152,6 +155,7 @@ const showTable = ref(true)
const processStore = useProcessStore() const processStore = useProcessStore()
const processInstanceData = ref() const processInstanceData = ref()
const formPermMap = ref(new Map()); const formPermMap = ref(new Map());
const companyNameArray = ref([])
const rules = reactive({ const rules = reactive({
requirementName: [{required: true, message: '请输入征集名称', trigger: 'blur'}], requirementName: [{required: true, message: '请输入征集名称', trigger: 'blur'}],
companyIds: [{required: true, message: '请选择所属公司', trigger: 'blur'}], companyIds: [{required: true, message: '请选择所属公司', trigger: 'blur'}],
@@ -203,6 +207,15 @@ const tableConfig = reactive({
} }
] ]
}) })
const getCompanyOptionItem = (val) => {
if (val !== undefined) {
val.forEach(item => {
matterTree(companyNameArray.value, companyOption.value, item)
})
}
return companyNameArray.value.join('');
}
const getName = (list) => { const getName = (list) => {
return list.map(item => item.label).join('') return list.map(item => item.label).join('')
} }
@@ -210,12 +223,10 @@ const showCompany = () => {
companyRef.value.show() companyRef.value.show()
} }
const selected = (select) => { const selected = (select) => {
let companyInfoList = []
for (let val of select) { for (let val of select) {
companyInfoList.push(val)
formData.value.companyIds.push(val.value) formData.value.companyIds.push(val.value)
} }
companyList.value = companyInfoList selectedCompanyList.value = select
} }
const checkFormPrem = (formKey) => { const checkFormPrem = (formKey) => {
if (formPermMap.value.hasOwnProperty(formKey)) { if (formPermMap.value.hasOwnProperty(formKey)) {
@@ -306,7 +317,6 @@ const init = async () => {
}) })
} }
const submitParam = (item) => { const submitParam = (item) => {
console.log('item..', item.companyIds)
if (item.companyIds.length === 0) { if (item.companyIds.length === 0) {
ElNotification({ ElNotification({
title: '提示', title: '提示',
@@ -373,6 +383,7 @@ const handleResubmit = () => {
const getDetailInfo = async () => { const getDetailInfo = async () => {
getFormInfo(route.query.id).then(res => { getFormInfo(route.query.id).then(res => {
if (res.code === 1000) { if (res.code === 1000) {
selectedCompanyList.value = getCompanyOptionItem(res.data.companyIds)
formData.value = res.data formData.value = res.data
showTinymce.value = false showTinymce.value = false
showTable.value = false showTable.value = false

View File

@@ -60,11 +60,11 @@ const searchConfig = reactive([
} }
}, },
{ {
label: '项目阶段', label: '研发阶段',
prop: 'researchStage', prop: 'researchStage',
component: shallowRef(fvSelect), component: shallowRef(fvSelect),
props: { props: {
placeholder: '请选择项目阶段查询', placeholder: '请选择研发阶段查询',
clearable: true, clearable: true,
filterable: true, filterable: true,
checkStrictly: true, checkStrictly: true,
@@ -123,7 +123,7 @@ const tableConfig = reactive({
}, },
{ {
prop: 'researchStage', prop: 'researchStage',
label: '项目阶段', label: '研发阶段',
align: 'center', align: 'center',
showOverflowTooltip: false, showOverflowTooltip: false,
currentRender: ({row, index}) => { currentRender: ({row, index}) => {

View File

@@ -183,7 +183,7 @@ const tableConfig = reactive({
}, },
{ {
prop: 'researchStage', prop: 'researchStage',
label: '项目阶段', label: '研发阶段',
align: 'center', align: 'center',
showOverflowTooltip: false, showOverflowTooltip: false,
currentRender: ({row, index}) => { currentRender: ({row, index}) => {

View File

@@ -31,10 +31,10 @@
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="researchStage" label="项目阶段"> <el-table-column prop="researchStage" label="研发阶段">
<template #default="scope"> <template #default="scope">
<el-form-item prop="researchStage" :rules="scope.row.researchStage?'1':rules.researchStage"> <el-form-item prop="researchStage" :rules="scope.row.researchStage?'1':rules.researchStage">
<el-select v-model="scope.row.researchStage" placeholder="请选择项目阶段" clearable filterable> <el-select v-model="scope.row.researchStage" placeholder="请选择研发阶段" clearable filterable>
<el-option <el-option
v-for="item in cacheStore.getDict('fee_stage')" v-for="item in cacheStore.getDict('fee_stage')"
:key="item.value" :key="item.value"
@@ -115,7 +115,7 @@ const baseForm = ref()
const rules = reactive({ const rules = reactive({
time: [{required: true, message: '请选择时间', trigger: 'blur'}], time: [{required: true, message: '请选择时间', trigger: 'blur'}],
projectCost: [{required: true, message: '请输入项目费用', trigger: 'blur'}], projectCost: [{required: true, message: '请输入项目费用', trigger: 'blur'}],
researchStage: [{required: true, message: '请输入项目阶段', trigger: 'blur'}], researchStage: [{required: true, message: '请输入研发阶段', trigger: 'blur'}],
digest: [{required: true, message: '请输入摘要', trigger: 'blur'}], digest: [{required: true, message: '请输入摘要', trigger: 'blur'}],
afterTax: [{required: true, message: '请输入税后余额', trigger: 'blur'}] afterTax: [{required: true, message: '请输入税后余额', trigger: 'blur'}]
}) })

View File

@@ -5,7 +5,7 @@
<div class="picker"> <div class="picker">
<div class="candidate" v-loading="loading"> <div class="candidate" v-loading="loading">
<el-input v-model="filterText" @change="getList(1)" <el-input v-model="filterText" @change="getList(1)"
clearable placeholder="输入部门/昵称进行搜索"> clearable placeholder="输入昵称进行搜索">
<template #append> <template #append>
<el-button @click="getList(1)">搜索</el-button> <el-button @click="getList(1)">搜索</el-button>
</template> </template>
@@ -20,7 +20,7 @@
<template #default="{ node, data }"> <template #default="{ node, data }">
<div class="tree-node"> <div class="tree-node">
<div v-if="data.type === 0" style="display: flex;align-items: center;padding: 3px 0"> <div v-if="data.type === 0" style="display: flex;align-items: center;padding: 3px 0">
<el-icon> <el-icon :color="data.accountType==='1'?'#95d475':'#409eff'">
<UserFilled/> <UserFilled/>
</el-icon> </el-icon>
{{ node.label }}-{{ data.companyName }} {{ node.label }}-{{ data.companyName }}