|
@@ -0,0 +1,249 @@
|
|
|
|
+<template>
|
|
|
|
+ <div>
|
|
|
|
+
|
|
|
|
+ <!-- 弹窗 -->
|
|
|
|
+ <el-dialog :title="params.title" :visible.sync="dialogVisible" width="60%" append-to-body>
|
|
|
|
+ <div>
|
|
|
|
+ <!-- 搜索栏 -->
|
|
|
|
+ <div class="search-container">
|
|
|
|
+ <div>
|
|
|
|
+ <el-form :inline="true" :model="searchForm" class="demo-form-inline" size="small" >
|
|
|
|
+ <el-form-item label="项目名称" prop="projectName">
|
|
|
|
+ <el-select v-model="searchForm.projectName" placeholder="请选择项目名称" @change="changeProject" clearable >
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in projectList"
|
|
|
|
+ :key="item.id"
|
|
|
|
+ :label="item.projectName"
|
|
|
|
+ :value="item.id">
|
|
|
|
+ </el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="合同段" prop="contractSection">
|
|
|
|
+ <el-select v-model="searchForm.contractSection" placeholder="请选择合同段" clearable >
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in contractList"
|
|
|
|
+ :key="item.id"
|
|
|
|
+ :label="item.contractName"
|
|
|
|
+ :value="item.id">
|
|
|
|
+ </el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item>
|
|
|
|
+ <el-button type="primary" @click="onSearch">搜索</el-button>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-form>
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ <!-- 新增按钮 -->
|
|
|
|
+ <div>
|
|
|
|
+ <el-button type="primary" @click="handleAdd" size="small" >新增</el-button>
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ <!-- 表格 -->
|
|
|
|
+ <el-table :data="tableData" style="width: 100%">
|
|
|
|
+ <el-table-column type="index" label="序号" width="50"></el-table-column>
|
|
|
|
+ <el-table-column prop="elementName" label="元素名称"></el-table-column>
|
|
|
|
+ <el-table-column prop="isGlobal" label="是否全局参数"></el-table-column>
|
|
|
|
+ <el-table-column prop="projectName" label="项目名称"></el-table-column>
|
|
|
|
+ <el-table-column prop="contractSection" label="合同段"></el-table-column>
|
|
|
|
+ <el-table-column prop="creator" label="创始人"></el-table-column>
|
|
|
|
+ <el-table-column prop="createTime" label="创建时间"></el-table-column>
|
|
|
|
+ <el-table-column label="操作" width="150">
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <el-link size="mini" @click="handleEdit(scope.$index, scope.row)" type="primary" >编辑</el-link>
|
|
|
|
+ <el-link size="mini" type="danger" @click="handleDelete(scope.$index, scope.row)" class="mg-l-10">删除</el-link>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ </el-table>
|
|
|
|
+ </div>
|
|
|
|
+ </el-dialog>
|
|
|
|
+
|
|
|
|
+ <!-- 新增弹窗 -->
|
|
|
|
+ <el-dialog title="元素新增" :visible.sync="addDialogVisible" width="30%" append-to-body>
|
|
|
|
+ <el-form :model="form" :rules="rules" ref="formRef">
|
|
|
|
+ <el-form-item label="元素名称" label-width="120px">
|
|
|
|
+ <el-input v-model="form.elementName" :disabled="form.selectedElement.length>0"></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="选择元素" label-width="120px">
|
|
|
|
+ <el-button style="width: 100%;" @click="checkEle" v-if="form.selectedElement.length===0" :disabled="form.elementName.length>0">点击选择元素</el-button>
|
|
|
|
+ <div class="bottom-box" v-else @click="checkEle">
|
|
|
|
+ <el-tag type="info" closable v-for="item in form.selectedElement" :key="id" class="mr-5" @close="handleClose(tag)">{{ item.eName }}</el-tag>
|
|
|
|
+ </div>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="是否全局参数" label-width="120px" prop="isGlobal">
|
|
|
|
+ <el-radio-group v-model="form.isGlobal">
|
|
|
|
+ <el-radio :label="true">是</el-radio>
|
|
|
|
+ <el-radio :label="false">否</el-radio>
|
|
|
|
+ </el-radio-group>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="合同段" prop="contractSection" v-if="form.isGlobal===false" label-width="120px">
|
|
|
|
+
|
|
|
|
+ <el-select v-model="form.projectName" placeholder="请选择项目" @change="changeProject" clearable style="width: 48%;">
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in projectList"
|
|
|
|
+ :key="item.id"
|
|
|
|
+ :label="item.projectName"
|
|
|
|
+ :value="item.id">
|
|
|
|
+ </el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+
|
|
|
|
+ <el-select v-model="form.contractSection" placeholder="请选择合同段" clearable style="width: 48%;margin-left: 5px;" multiple >
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in contractList"
|
|
|
|
+ :key="item.id"
|
|
|
|
+ :label="item.contractName"
|
|
|
|
+ :value="item.id">
|
|
|
|
+ </el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-form>
|
|
|
|
+ <span slot="footer" class="dialog-footer">
|
|
|
|
+ <el-button @click="addDialogVisible = false">取 消</el-button>
|
|
|
|
+ <el-button type="primary" @click="confirmAdd">确 定</el-button>
|
|
|
|
+ </span>
|
|
|
|
+ </el-dialog>
|
|
|
|
+
|
|
|
|
+ <!-- 选择元素弹窗 -->
|
|
|
|
+ <checkEleDialog ref="checkEleDialogRef" @confirmCheck="confirmCheck"></checkEleDialog>
|
|
|
|
+ </div>
|
|
|
|
+</template>
|
|
|
|
+
|
|
|
|
+<script>
|
|
|
|
+import checkEleDialog from './checkEleDialog.vue';
|
|
|
|
+import { getProjectList } from "@/api/manager/projectinfo";
|
|
|
|
+import { findContractByProjectId } from "@/api/manager/contractinfo";
|
|
|
|
+export default {
|
|
|
|
+ components:{
|
|
|
|
+ checkEleDialog
|
|
|
|
+ },
|
|
|
|
+ props:{
|
|
|
|
+ params:Object
|
|
|
|
+ },
|
|
|
|
+ watch: {
|
|
|
|
+ id: {
|
|
|
|
+ handler: function(n) {
|
|
|
|
+ this.params=n
|
|
|
|
+ },
|
|
|
|
+ deep: true,
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+ data() {
|
|
|
|
+ return {
|
|
|
|
+ dialogVisible: false,
|
|
|
|
+ projectList: [],
|
|
|
|
+ contractList: [
|
|
|
|
+ ],
|
|
|
|
+ searchForm: {
|
|
|
|
+ projectName: '',
|
|
|
|
+ contractSection: '',
|
|
|
|
+ textSearch: ''
|
|
|
|
+ },
|
|
|
|
+ tableData: [
|
|
|
|
+ {
|
|
|
|
+ elementName: '元素1',
|
|
|
|
+ isGlobal: '是',
|
|
|
|
+ projectName: '项目A',
|
|
|
|
+ contractSection: '合同段1',
|
|
|
|
+ creator: '张三',
|
|
|
|
+ createTime: '2023-10-01'
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ elementName: '元素2',
|
|
|
|
+ isGlobal: '否',
|
|
|
|
+ projectName: '项目B',
|
|
|
|
+ contractSection: '合同段2',
|
|
|
|
+ creator: '李四',
|
|
|
|
+ createTime: '2023-10-02'
|
|
|
|
+ }
|
|
|
|
+ ],
|
|
|
|
+ addDialogVisible:false,
|
|
|
|
+ form: {
|
|
|
|
+ elementName: '',
|
|
|
|
+ selectedElement: [],
|
|
|
|
+ isGlobal: false
|
|
|
|
+ },
|
|
|
|
+ rules: {
|
|
|
|
+
|
|
|
|
+ isGlobal: [
|
|
|
|
+ { required: true, message: '请选择是否全局参数', trigger: 'change' }
|
|
|
|
+ ]
|
|
|
|
+ }
|
|
|
|
+ };
|
|
|
|
+ },
|
|
|
|
+ methods: {
|
|
|
|
+ show() {
|
|
|
|
+ this.dialogVisible = true;
|
|
|
|
+ this.getProjectListData()
|
|
|
|
+ },
|
|
|
|
+ onSearch() {
|
|
|
|
+ // 实现搜索逻辑
|
|
|
|
+ console.log('搜索条件:', this.searchForm);
|
|
|
|
+ },
|
|
|
|
+ handleAdd() {
|
|
|
|
+ // 实现新增逻辑
|
|
|
|
+ console.log('新增');
|
|
|
|
+ this.addDialogVisible=true;
|
|
|
|
+ },
|
|
|
|
+ handleEdit(index, row) {
|
|
|
|
+ // 实现编辑逻辑
|
|
|
|
+ console.log('编辑:', index, row);
|
|
|
|
+ this.addDialogVisible=true;
|
|
|
|
+ },
|
|
|
|
+ handleDelete(index, row) {
|
|
|
|
+ // 实现删除逻辑
|
|
|
|
+ console.log('删除:', index, row);
|
|
|
|
+ },
|
|
|
|
+ //获取项目列表
|
|
|
|
+ getProjectListData() {
|
|
|
|
+ getProjectList(1, 999).then((res) => {
|
|
|
|
+ this.projectList = res.data.data.records;
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ changeProject(val){
|
|
|
|
+
|
|
|
|
+ //根据项目id获取合同段列表
|
|
|
|
+ findContractByProjectId(val).then((res) => {
|
|
|
|
+ this.contractList = res.data.data;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ confirmAdd(){
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+ //选择元素
|
|
|
|
+ checkEle(){
|
|
|
|
+ this.$refs.checkEleDialogRef.show( this.form.selectedElement)
|
|
|
|
+ },
|
|
|
|
+ confirmCheck(selectedData){
|
|
|
|
+ this.form.selectedElement=selectedData
|
|
|
|
+ console.log('选择的元素1111111111:', selectedData);
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+ handleClose(tag) {
|
|
|
|
+ this.form.selectedElement.splice(this.form.selectedElement.indexOf(tag), 1);
|
|
|
|
+ },
|
|
|
|
+ }
|
|
|
|
+};
|
|
|
|
+</script>
|
|
|
|
+
|
|
|
|
+<style scoped>
|
|
|
|
+
|
|
|
|
+.search-container {
|
|
|
|
+ display: flex;
|
|
|
|
+ justify-content: space-between; /* 使子元素两端对齐 */
|
|
|
|
+ align-items: center; /* 垂直居中对齐 */
|
|
|
|
+}
|
|
|
|
+.bottom-box{
|
|
|
|
+ width: 100%;
|
|
|
|
+ height: 20%;
|
|
|
|
+ border: 1px solid #DBDBDB;
|
|
|
|
+ margin-top: 10px;
|
|
|
|
+ padding: 10px;
|
|
|
|
+}
|
|
|
|
+.mr-5{
|
|
|
|
+ margin-right: 5px;
|
|
|
|
+}
|
|
|
|
+</style>
|