From 8c9f4f20341274df1c2326a1ce7fbc59770afc65 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期日, 02 三月 2025 23:45:41 +0800
Subject: [PATCH] Merge branch 'dev'
---
src/views/flowable/task/form/index.vue | 1
src/components/Process/panel/formPanel.vue | 68 +++++++++++--
src/views/engineering/index.vue | 208 +++++++++++++++++++++++++++++++++--------
src/views/projectProcess/index.vue | 1
4 files changed, 225 insertions(+), 53 deletions(-)
diff --git a/src/components/Process/panel/formPanel.vue b/src/components/Process/panel/formPanel.vue
index d5016c2..4de7efc 100644
--- a/src/components/Process/panel/formPanel.vue
+++ b/src/components/Process/panel/formPanel.vue
@@ -1,23 +1,39 @@
<template>
<div>
<el-form label-width="80px" size="small" @submit.native.prevent>
- <el-form-item label="娴佺▼琛ㄥ崟">
- <el-select v-model="bpmnFormData.formKey" clearable class="m-2" placeholder="鎸傝浇鑺傜偣琛ㄥ崟" @clear="updateElementFormKey(null)" @change="updateElementFormKey">
- <el-option
- v-for="item in formList"
- :key="item.formId"
- :label="item.formName"
- :value="item.formId"
- />
- </el-select>
- </el-form-item>
+ <el-form-item label="娴佺▼琛ㄥ崟">
+ <el-select v-model="bpmnFormData.formKey" clearable class="m-2" placeholder="鎸傝浇鑺傜偣琛ㄥ崟" @clear="updateElementFormKey(null)" @change="updateElementFormKey">
+ <el-option
+ v-for="item in formList"
+ :key="item.formId"
+ :label="item.formName"
+ :value="item.formId"
+ />
+ </el-select>
+ <el-button
+ style="margin-left: 10px"
+ size="mini"
+ type="text"
+ icon="el-icon-view"
+ :disabled="checkState"
+ @click="handleDetail()"
+ >棰勮
+ </el-button>
+ </el-form-item>
+
</el-form>
+
+ <!--琛ㄥ崟璇︽儏-->
+ <el-dialog :title="formTitle" :visible.sync="formRenderOpen" width="60%" append-to-body>
+ <v-form-render :form-data="formData" ref="vFormRef"/>
+ </el-dialog>
+
</div>
</template>
<script>
-import { listAllForm } from '@/api/flowable/form'
+import { listAllForm, getForm} from '@/api/flowable/form'
import {StrUtil} from "@/utils/StrUtil";
export default {
name: "FormPanel",
@@ -30,11 +46,21 @@
},
data() {
return {
+ formTitle: "",
+ formOpen: false,
+ formRenderOpen: false,
+ formData: {},
formList: [], // 琛ㄥ崟鏁版嵁
- bpmnFormData: {}
+ bpmnFormData: {
+ formKey:null
+ },
}
},
-
+ computed:{
+ checkState(){
+ return this.bpmnFormData.formKey === null || this.bpmnFormData.formKey === undefined;
+ }
+ },
/** 浼犲�肩洃鍚� */
watch: {
id: {
@@ -59,7 +85,23 @@
resetFlowForm() {
this.bpmnFormData.formKey = this.modelerStore.element.businessObject.formKey;
},
+ handleDetail() {
+ getForm(this.bpmnFormData.formKey).then(res =>{
+ this.formRenderOpen = true;
+ this.formTitle = "琛ㄥ崟璇︽儏";
+ this.$nextTick(() => {
+ // 鍥炴樉鏁版嵁
+ this.$refs.vFormRef.setFormJson(JSON.parse(res.data.formContent))
+ this.$nextTick(() => {
+ // 琛ㄥ崟绂佺敤
+ this.$refs.vFormRef.disableForm();
+ })
+ })
+ })
+
+
+ },
updateElementFormKey(val) {
this.init()
if (StrUtil.isBlank(val)) {
diff --git a/src/views/engineering/index.vue b/src/views/engineering/index.vue
index 3dfc4a5..de2f87c 100644
--- a/src/views/engineering/index.vue
+++ b/src/views/engineering/index.vue
@@ -58,45 +58,54 @@
v-hasPermi="['code:engineering:add']"
>鏂板</el-button>
</el-col>
- <el-col :span="1.5">
- <el-button
- type="success"
- plain
- icon="el-icon-edit"
- size="mini"
- :disabled="single"
- @click="handleUpdate"
- v-hasPermi="['code:engineering:edit']"
- >淇敼</el-button>
- </el-col>
- <el-col :span="1.5">
- <el-button
- type="danger"
- plain
- icon="el-icon-delete"
- size="mini"
- :disabled="multiple"
- @click="deleteByIds"
- v-hasPermi="['code:engineering:remove']"
- >鍒犻櫎</el-button>
- </el-col>
- <el-col :span="1.5">
- <el-button
- type="warning"
- plain
- icon="el-icon-download"
- size="mini"
- @click="handleExport"
- v-hasPermi="['code:engineering:export']"
- >瀵煎嚭</el-button>
- </el-col>
+<!-- <el-col :span="1.5">-->
+<!-- <el-button-->
+<!-- type="success"-->
+<!-- plain-->
+<!-- icon="el-icon-edit"-->
+<!-- size="mini"-->
+<!-- :disabled="single"-->
+<!-- @click="handleUpdate"-->
+<!-- v-hasPermi="['code:engineering:edit']"-->
+<!-- >淇敼</el-button>-->
+<!-- </el-col>-->
+<!-- <el-col :span="1.5">-->
+<!-- <el-button-->
+<!-- type="danger"-->
+<!-- plain-->
+<!-- icon="el-icon-delete"-->
+<!-- size="mini"-->
+<!-- :disabled="multiple"-->
+<!-- @click="deleteByIds"-->
+<!-- v-hasPermi="['code:engineering:remove']"-->
+<!-- >鍒犻櫎</el-button>-->
+<!-- </el-col>-->
+<!-- <el-col :span="1.5">-->
+<!-- <el-button-->
+<!-- type="warning"-->
+<!-- plain-->
+<!-- icon="el-icon-download"-->
+<!-- size="mini"-->
+<!-- @click="handleExport"-->
+<!-- v-hasPermi="['code:engineering:export']"-->
+<!-- >瀵煎嚭</el-button>-->
+<!-- </el-col>-->
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
- <el-table v-loading="loading" :data="engineeringList" @selection-change="handleSelectionChange">
- <el-table-column type="selection" width="55" align="center" />
- <el-table-column label="宸ョ▼鍚嶇О" align="center" prop="projectName" />
- <el-table-column label="涓婚」鐩悕绉�" align="center" prop="projectInfoName" />
+ <el-table
+ ref="elTable"
+ v-loading="loading"
+ style="margin-top: 20px"
+ :data="engineeringList"
+ height="100%"
+ sortable="custom"
+ row-key="id"
+ border
+ default-expand-all
+ :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
+ :show-overflow-tooltip="true">
+ <el-table-column label="椤圭洰鍚嶇О" align="center" prop="projectName" />
<el-table-column label="椤圭洰鎺ㄨ繘绫诲瀷" align="center" prop="projectType">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_project_type" :value="scope.row.projectType"/>
@@ -108,21 +117,35 @@
<dict-tag :options="dict.type.sys_project_status" :value="scope.row.status"/>
</template>
</el-table-column>
+ <el-table-column label="涓荤閮ㄩ棬" align="center" prop="departmentName">
+
+ </el-table-column>
+ <el-table-column label="涓氫富鍗曚綅" align="center" prop="unitName">
+ </el-table-column>
+ <el-table-column label="骞翠唤" align="center" prop="year">
+ <template slot-scope="scope">
+ {{ scope.row.year ? scope.row.year.split('-')[0] + '骞�' : '' }}
+ </template>
+ </el-table-column>
<el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
+ icon="el-icon-plus"
+ @click="handleadd(scope.row)"
+ >娣诲姞瀛愬伐绋�</el-button>
+ <el-button
+ size="mini"
+ type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
- v-hasPermi="['code:engineering:edit']"
>淇敼</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="deleteById(scope.row)"
- v-hasPermi="['code:engineering:remove']"
>鍒犻櫎</el-button>
</template>
</el-table-column>
@@ -183,6 +206,20 @@
></el-option>
</el-select>
</el-form-item>
+ <el-form-item label="涓荤閮ㄩ棬" prop="department">
+ <treeselect v-model="form.department" @input="getCompetentDepartmentInfo" noChildrenText="鏃犲尮閰嶆暟鎹�" :options="approvalList" :normalizer="normalizer" placeholder="璇烽�夋嫨涓荤閮ㄩ棬">
+ </treeselect>
+ </el-form-item>
+ <el-form-item label="涓氫富鍗曚綅" prop="unit">
+ <treeselect v-model="form.unit" @input="getProjectOwnerUnit" noChildrenText="鏃犲尮閰嶆暟鎹�" :options="selectOptions" :normalizer="normalizer" placeholder="閫夋嫨鍗曚綅" />
+ </el-form-item>
+ <el-form-item label="骞翠唤" prop="year">
+ <el-date-picker v-model="form.year "
+ placeholder="閫夋嫨鏃堕棿"
+ style="width: 100%"
+ type="date"
+ value-format="yyyy-MM-dd HH:mm:ss"/>
+ </el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
@@ -195,9 +232,15 @@
<script>
import { getProjectEngineerings, getProjectEngineeringById, deleteProjectEngineeringByIds, deleteProjectEngineeringById, editProjectEngineering, addProjectEngineering } from "@/api/projectEngineering/projectEngineering";
import {list} from "@/api/projectEngineering/projectInfo";
+import Treeselect from '@riophae/vue-treeselect'
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+
+import {approvalList,listDept} from "@/api/system/dept";
+
export default {
name: "Engineering",
+ components: { Treeselect },
dicts: ['sys_project_type', 'sys_project_status'],
data() {
return {
@@ -220,6 +263,10 @@
title: "",
// 鏄惁鏄剧ず寮瑰嚭灞�
open: false,
+ //涓荤閮ㄩ棬
+ approvalList: [],
+ //涓氫富鍗曚綅
+ selectOptions: [],
// 鏌ヨ鍙傛暟
queryParams: {
currentPage: 1,
@@ -229,6 +276,7 @@
projectType: null,
status: null,
},
+ addId:null,
// 琛ㄥ崟鍙傛暟
form: {},
// 琛ㄥ崟鏍¢獙
@@ -238,6 +286,10 @@
investmentAmount: [{required: true, message: '璇疯緭鍏ユ姇璧勯', trigger: 'change'}],
projectType: [{required: true, message: '璇烽�夋嫨娴佺▼鎺ㄨ繘绫诲瀷', trigger: 'change'}],
status: [{required: true, message: '璇烽�夋嫨寮�宸ョ姸鎬�', trigger: 'change'}],
+ department: [{required: true, message: '璇烽�夋嫨涓荤閮ㄩ棬', trigger: 'change'}],
+ unit: [{required: true, message: '璇烽�夋嫨椤圭洰涓氫富鍗曚綅', trigger: 'change'}],
+ year: [{required: true, message: '璇烽�夋嫨璁″垝寮�宸ユ椂闂�', trigger: 'change'}],
+ parent: [{required: false, message: '璇烽�夋嫨鐖跺伐绋�', trigger: 'change'}],
}
};
},
@@ -245,7 +297,60 @@
this.getList();
this.getProjectList();
},
+ mounted() {
+ //鍒濆鍖栦富绠¢儴闂ㄤ笅鎷夋
+ this.getApprovalList();
+ //鍗曚綅
+ this.getDeptList();
+ },
methods: {
+ getProjectOwnerUnit(unitId) {
+ console.log(unitId)
+ // if (deptId) {
+ // this.projectForm.unit = deptId
+ // } else {
+ // this.projectForm.unit = ''
+ // }
+ },
+ getCompetentDepartmentInfo(deptId) {
+ console.log(deptId)
+ // if (deptId) {
+ // if (this.projectForm.department != deptId) {
+ // this.projectForm.competentDepartmentPerson = ""
+ // this.projectForm.competentDepartmentPhone = ""
+ // }
+ // this.projectForm.department = deptId
+ // this.getCompetentDepartmentPeople(deptId)
+ // } else {
+ // this.projectForm.department = ''
+ // this.deptPersonList = [];
+ // }
+ },
+ getDeptList(){
+ listDept().then(response => {
+ console.log(response.data)
+ this.selectOptions = this.handleTree(response.data, "deptId");
+ this.selectOptions.push({deptId: '', deptName: '鏃�', children: []})
+ });
+ },
+ getApprovalList() {
+ approvalList().then(res => {
+ this.approvalList = this.handleTree(res.data, "deptId");
+ this.approvalList.push({deptId: '', deptName: '鏃�', children: []})
+ console.log(this.approvalList)
+ });
+ },
+ /** 杞崲閮ㄩ棬鏁版嵁缁撴瀯 */
+ normalizer(node) {
+ if (node.children && !node.children.length) {
+ delete node.children;
+ }
+ return {
+ id: node.deptId,
+ label: node.deptName,
+ children: node.children
+ };
+ },
getProjectList() {
list().then(res => {
this.projectList = res.data
@@ -256,6 +361,7 @@
this.loading = true;
getProjectEngineerings(this.queryParams).then(res => {
this.engineeringList = res.data;
+ console.log(this.engineeringList)
this.total = res.total;
this.loading = false;
});
@@ -276,10 +382,16 @@
status: null,
gmtCreate: null,
gmtUpdate: null,
- deleted: null
+ deleted: null,
+ department:null,
+ unit:null,
+ year:null,
+ parent:null,
};
+ this.addId = null;
this.resetForm("form");
},
+
/** 鎼滅储鎸夐挳鎿嶄綔 */
handleQuery() {
this.queryParams.pageNum = 1;
@@ -295,6 +407,12 @@
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.multiple = !selection.length
+ },
+ handleadd(row){
+ this.reset();
+ this.open = true;
+ this.title = "娣诲姞宸ョ▼";
+ this.addId = row.id;
},
/** 鏂板鎸夐挳鎿嶄綔 */
handleAdd() {
@@ -316,13 +434,23 @@
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
+ if (this.addId != null){
+ this.form.parent = this.addId;
+ addProjectEngineering(this.form).then(response => {
+ this.$modal.msgSuccess("鏂板鎴愬姛");
+ this.open = false;
+ this.getList();
+ });
+ return;
+ }
+ //淇敼
if (this.form.id != null) {
editProjectEngineering(this.form).then(response => {
this.$modal.msgSuccess("淇敼鎴愬姛");
this.open = false;
this.getList();
});
- } else {
+ } else {//涓嶅瓨鍦╝ddId鐖跺伐绋嬫柊澧�
addProjectEngineering(this.form).then(response => {
this.$modal.msgSuccess("鏂板鎴愬姛");
this.open = false;
diff --git a/src/views/flowable/task/form/index.vue b/src/views/flowable/task/form/index.vue
index c9084bc..cec7852 100644
--- a/src/views/flowable/task/form/index.vue
+++ b/src/views/flowable/task/form/index.vue
@@ -208,6 +208,7 @@
this.formList = response.rows;
this.total = response.total;
this.loading = false;
+
});
},
// 琛ㄥ崟閲嶇疆
diff --git a/src/views/projectProcess/index.vue b/src/views/projectProcess/index.vue
index 93aafd2..355ffda 100644
--- a/src/views/projectProcess/index.vue
+++ b/src/views/projectProcess/index.vue
@@ -467,6 +467,7 @@
this.loading = true;
getProjectProcess(this.queryParams).then(response => {
this.projectInfoList = response.data;
+ console.log(this.projectInfoList)
this.total = response.total;
this.loading = false;
});
--
Gitblit v1.8.0