Просмотр исходного кода

Merge branch 'master' of http://47.100.37.243:10191/wutt/manHourHousekeeper

Min 1 год назад
Родитель
Сommit
0d921f5581

+ 16 - 0
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/analysis/components/Divider.vue

@@ -0,0 +1,16 @@
+<template>
+  <div class="relative">
+    <div class="absolute inset-x-0 border-b border-gray-200" />
+    <div class="relative flex items-center">
+      <span class="absolute bg-white pr-2 text-sm font-medium">{{
+        title
+      }}</span>
+    </div>
+  </div>
+</template>
+
+<script lang="ts" setup>
+defineProps<{
+  title: string;
+}>();
+</script>

+ 11 - 0
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/analysis/components/SimpleCard.vue

@@ -0,0 +1,11 @@
+<template>
+  <div
+    class="bg-gray-200 rounded-sm p-2 flex flex-col gap-1 text-xs text-gray-600"
+  >
+    <span>转成交易</span>
+    <span class="text-gray-900">
+      <span>{{ 1 }}</span>
+      {{ '个' }}
+    </span>
+  </div>
+</template>

+ 29 - 0
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/analysis/components/TrendCard.vue

@@ -0,0 +1,29 @@
+<template>
+  <div class="border-gray-200 border rounded p-3 flex flex-row justify-between">
+    <div class="flex flex-col justify-between text-gray-500 text-xs gap-1">
+      <div class="">{{ title }}</div>
+      <div class="text-gray-800">
+        <span class="text-sm">{{ number }}</span>
+        {{ unit }}
+      </div>
+      <div>
+        <span>较上月 </span>
+        <span class="text-xs text-red-600 inline-flex items-center">
+          <span>100%</span>
+          <el-icon><Top /></el-icon>
+        </span>
+      </div>
+    </div>
+    <div>11</div>
+  </div>
+</template>
+
+<script lang="ts" setup>
+type Props = {
+  title: string;
+  number: number;
+  unit: '个' | '人' | '元';
+};
+
+defineProps<Props>();
+</script>

+ 105 - 13
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/analysis/index.vue

@@ -1,17 +1,109 @@
-<template>
-  <div class="w-full h-full flex items-center justify-center analysis">
-    数据分析页面
-  </div>
-</template>
-
 <script lang="ts" setup>
+import { ref, reactive } from 'vue';
+import TrendCard from './components/TrendCard.vue';
+import SimpleCard from './components/SimpleCard.vue';
+import Divider from './components/Divider.vue';
+import Echarts from '@/components/ReEcharts/index.vue';
+import { EChartsOption } from 'echarts';
 
+const prompt = reactive({ summary: {}, stage: {}, bulletin: {} });
+
+const option: EChartsOption = {
+  grid: { top: 0, bottom: 20, left: 60 },
+  yAxis: {
+    type: 'category',
+    data: ['验证客户', '赢单', '输单']
+  },
+  xAxis: {
+    type: 'value'
+  },
+  series: [
+    {
+      barWidth: 20,
+      data: [0, 20, 40, 60, 80, 100],
+      type: 'bar'
+    }
+  ]
+};
 </script>
 
-<style lang="scss" scoped>
-.analysis {
-  font-size: 40px;
-  color: #999;
-  font-weight: bold;
-}
-</style>
+<template>
+  <div
+    class="m-5 bg-white min-h-full p-4 rounded relative flex gap-12 items-start"
+  >
+    <section class="flex-[4]">
+      <div class="flex gap-3 mb-4">
+        <div class="w-40">
+          <el-select size="small"></el-select>
+        </div>
+        <div class="w-40">
+          <el-select size="small"></el-select>
+        </div>
+      </div>
+      <div class="border-gray-200 border rounded p-3">
+        <div class="flex gap-1.5 items-center mb-3">
+          <div class="text-sm font-medium">销售简报</div>
+          <el-icon><QuestionFilled class="text-gray-500 text-sm" /></el-icon>
+        </div>
+        <div class="grid xl:grid-cols-4 lg:grid-cols-3 grid-cols-2 gap-4">
+          <TrendCard title="新增客户" :number="4" unit="人" />
+          <TrendCard title="新增联系人" :number="4" unit="人" />
+          <TrendCard title="新增商机" :number="4" unit="个" />
+          <TrendCard title="新增销售订单" :number="4" unit="个" />
+          <TrendCard title="销售订单金额" :number="4" unit="元" />
+          <TrendCard title="商机金额" :number="4" unit="元" />
+          <TrendCard title="新增线索" :number="4" unit="个" />
+        </div>
+      </div>
+      <div class="my-8 flex gap-4 items-start">
+        <div class="border-gray-200 border rounded p-3 flex-1">
+          <div class="text-sm font-medium">数据汇总</div>
+          <div class="flex gap-3 mb-8 mt-2">
+            <div class="w-40">
+              <el-select size="small"></el-select>
+            </div>
+            <div class="w-40">
+              <el-select size="small"></el-select>
+            </div>
+          </div>
+          <Divider title="客户汇总" />
+          <div class="my-6 grid grid-cols-4 gap-2">
+            <SimpleCard />
+            <SimpleCard />
+            <SimpleCard />
+            <SimpleCard />
+          </div>
+          <Divider title="商机汇总" />
+          <div class="my-6 grid grid-cols-4 gap-2">
+            <SimpleCard />
+            <SimpleCard />
+            <SimpleCard />
+            <SimpleCard />
+          </div>
+          <Divider title="线索汇总" />
+          <div class="my-6 grid grid-cols-4 gap-2">
+            <SimpleCard />
+            <SimpleCard />
+            <SimpleCard />
+            <SimpleCard />
+          </div>
+        </div>
+        <div class="border-gray-200 border rounded p-3 flex-1">
+          <div class="text-sm font-medium">商机阶段</div>
+          <div class="flex gap-3 mb-8 mt-2">
+            <div class="w-40">
+              <el-select size="small"></el-select>
+            </div>
+            <div class="w-40">
+              <el-select size="small"></el-select>
+            </div>
+          </div>
+          <div class="h-60">
+            <Echarts :option="option"></Echarts>
+          </div>
+        </div>
+      </div>
+    </section>
+    <nav class="bg-green-200 flex-1 min-w-60 sticky right-0 top-8">222</nav>
+  </div>
+</template>

+ 67 - 4
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/corpreport/index.vue

@@ -1,11 +1,74 @@
 <template>
-  <div>
-    corpreport
+  <div class="m-5 bg-white h-full p-4 rounded">
+    <div class="flex justify-start">
+      <span class="mr-12 font-bold text-gray-900">客户总量分析</span>
+      <el-form class="flex gap-4">
+        <el-form-item class="w-52">
+          <el-select>
+            <el-option
+              v-for="date in dateOptions"
+              :key="date.value"
+              :label="date.label"
+              :value="date.value"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item class="w-52">
+          <el-select>
+            <el-option label="按部门" value="1" />
+            <el-option label="按员工" value="2" />
+          </el-select>
+        </el-form-item>
+        <el-form-item class="w-52">
+          <el-select></el-select>
+        </el-form-item>
+        <el-button type="primary">搜索</el-button>
+      </el-form>
+    </div>
+    <el-table :data="dataSource">
+      <el-table-column prop="date" label="员工姓名" />
+      <el-table-column prop="date" label="新增客户数" />
+      <el-table-column prop="date" label="成交客户数" />
+      <el-table-column prop="date" label="客户成交率(%)" />
+      <el-table-column prop="date" label="合同总金额" />
+      <el-table-column prop="date" label="回款金额" />
+    </el-table>
   </div>
 </template>
 
 <script lang="ts" setup>
-
+const dateOptions = [
+  { label: '今天', value: '1' },
+  { label: '昨天', value: '2' },
+  { label: '本周', value: '3' },
+  { label: '上周', value: '4' },
+  { label: '本月', value: '5' },
+  { label: '上月', value: '6' },
+  { label: '本季度', value: '7' },
+  { label: '上季度', value: '8' }
+];
+const dataSource = [
+  {
+    date: '2016-05-03',
+    name: 'Tom',
+    address: 'No. 189, Grove St, Los Angeles'
+  },
+  {
+    date: '2016-05-02',
+    name: 'Tom',
+    address: 'No. 189, Grove St, Los Angeles'
+  },
+  {
+    date: '2016-05-04',
+    name: 'Tom',
+    address: 'No. 189, Grove St, Los Angeles'
+  },
+  {
+    date: '2016-05-01',
+    name: 'Tom',
+    address: 'No. 189, Grove St, Los Angeles'
+  }
+];
 </script>
 
-<style lang="scss" scoped></style>
+<style lang="scss" scoped></style>

+ 3 - 3
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/home.vue

@@ -16,7 +16,7 @@
 </template>
 
 <script lang="ts" setup>
-import Header from '@/pages/header/header.vue'
+import Header from '@/pages/header/header.vue';
 import { nextTick, onMounted, ref } from 'vue';
 const isLoading = ref(true);
 
@@ -30,7 +30,7 @@ onMounted(async () => {
 .el-main {
   padding: 0;
   flex: 1;
-  overflow: hidden;
+  overflow: auto;
   background: $backColor;
 }
-</style>
+</style>

+ 244 - 0
fhKeeper/formulahousekeeper/timesheet/src/components/vueMultipleDept.vue

@@ -0,0 +1,244 @@
+<template>
+    <div>
+        <div class="bionicClass" @mouseenter="handleMouse(true)" @mouseleave="handleMouse(false)">
+            <div @click.stop="showVisible(true)">
+                <div class="bionicClassText" v-if="selectedDept.length <= 0">全部部门</div>
+                <div v-else>
+                    <el-tag @click.stop="" type="info" size="small" closable @close="deteleItem(0)">{{ selectedDeptLabel[0]
+                    }}</el-tag>
+                    <el-tag @click.stop="" type="info" size="small" v-if="selectedDeptLabel.length > 1">+ {{
+                        selectedDeptLabel.length - 1 }}</el-tag>
+                </div>
+            </div>
+            <div class="bionicClassIcon" v-if="showIocn && clearable">
+                <el-link icon="el-icon-circle-close" type="info" :underline="false" @click.stop="clearItem()"></el-link>
+            </div>
+        </div>
+
+        <el-dialog title="选择部门" :visible.sync="deptVisible" width="700px" top="60px" append-to-body
+            :before-close="handleClose">
+            <div class="selectDepartment">
+                <el-input placeholder="请输入部门" v-model.trim="filterText" clearable @clear="echartDepartment(false)" @keyup.enter.native="echartDepartment(filterText ? true : false)">
+                    <el-button slot="append" icon="el-icon-search" @click="echartDepartment(true)"></el-button>
+                </el-input>
+                <div class="flex1 padding1">
+                    <el-tree class="filter-tree" node-key="id" :data="treeData" :props="defaultProps" show-checkbox
+                        :filter-node-method="treeDatafilterNode" default-expand-all @check-change="handleCheckChange"
+                        ref="treeDataComtent">
+                        <span class="custom-tree-node" slot-scope="{ node, data }">
+                            <span v-if="node.data.children">
+                                <TranslationOpenDataText type='departmentName' :openid='node.label'>
+                                </TranslationOpenDataText>
+                            </span>
+                            <span v-else>
+                                <TranslationOpenDataText type='userName' :openid='node.label'></TranslationOpenDataText>
+                            </span>
+                        </span>
+                    </el-tree>
+                </div>
+            </div>
+            <span slot="footer" class="dialog-footer">
+                <el-button @click="deptVisible = false">取 消</el-button>
+                <el-button type="primary" @click="determineDept()">确 定</el-button>
+            </span>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+export default {
+    name: '',
+    components: {},
+    props: {
+        modelValue: {
+            type: Array,
+            default: () => []
+        },
+        defaultProps: {
+            children: 'children',
+            label: 'label'
+        },
+        selectType: { // 0 人员/部门, 1 人员搜索  2部门搜索
+            type: String,
+            default: () => '0'
+        },
+        clearable: {
+            type: Boolean,
+            default: () => true
+        },
+    },
+    data() {
+        return {
+            user: JSON.parse(sessionStorage.getItem("user")),
+            selectedDept: [],
+            selectedDeptValue: [],
+            selectedDeptLabel: [],
+            filterText: '',
+            filterKeyNode: [],
+            treeData: [],
+            treeDataCopy: [],
+            deptVisible: false,
+            treeDataLoading: false,
+            showIocn: false
+        }
+    },
+    computed: {},
+    watch: {},
+    created() { },
+    mounted() {
+        this.getDeptData()
+    },
+    model: {
+        prop: 'modelValue',
+        event: 'getValue'
+    },
+    methods: {
+        determineDept() {
+            const dataNodes = this.$refs.treeDataComtent.getCheckedNodes()
+            this.selectedDept = dataNodes
+            this.selectedDeptValue = dataNodes.map(item => item.id)
+            this.selectedDeptLabel = dataNodes.map(item => item.label)
+            this.updateModelValue()
+            this.showVisible(false)
+        },
+        deteleItem(index, flag = false) {
+            const deteleNumber = flag ? this.selectedDept.length : 1
+            this.selectedDept.splice(index, deteleNumber)
+            this.selectedDeptValue.splice(index, deteleNumber)
+            this.selectedDeptLabel.splice(index, deteleNumber)
+            this.updateModelValue()
+        },
+        clearItem() {
+            this.selectedDept = []
+            this.selectedDeptValue = []
+            this.selectedDeptLabel = []
+            this.updateModelValue()
+        },
+        echartDepartment(flag = true) {
+            if (this.user.userNameNeedTranslate != '1') {
+                this.$refs.treeDataComtent.filter(this.filterText);
+                return
+            }
+
+            if (flag) { // 清空
+                this.filterKeyNode = this.$refs.treeDataComtent.getCheckedKeys()
+            }
+            this.getDeptData(true)
+        },
+        setTreeDataKeyNode(array) {
+            setTimeout(() => {
+                this.$refs.treeDataComtent.setCheckedKeys(array);
+            }, 300)
+        },
+        updateModelValue() {
+            this.$emit('getValue', this.selectedDeptValue);
+            this.$emit('change', this.selectedDeptValue);
+        },
+        treeDatafilterNode(value, data) {
+            if (!value) return true;
+            return data.label.indexOf(value) !== -1;
+        },
+        showVisible(flag) {
+            this.deptVisible = flag
+            if (flag) {
+                this.setTreeDataKeyNode(this.modelValue || []);
+            }
+        },
+        handleCheckChange() {
+            let keys = this.$refs.treeDataComtent.getCheckedKeys()
+            if (keys.length > 0) {
+                this.filterKeyNode = [...this.filterKeyNode, keys[keys.length - 1]]
+            }
+        },
+        getDeptData(flag = false, str) {
+            this.treeDataLoading = true
+            this.http.post("/department/listAllMemb", {
+                queryType: this.selectType,
+                keyword: this.filterText,
+                cursor: ''
+            }, res => {
+                this.treeDataLoading = false
+                this.treeData = JSON.parse(JSON.stringify(res.data.data || res.data))
+                this.treeDataCopy = JSON.parse(JSON.stringify(res.data.data || res.data))
+                flag ? this.$refs.treeDataComtent.setCheckedKeys(this.filterKeyNode) : ''
+            }, err => {
+                this.treeDataLoading = false
+            })
+        },
+        handleMouse(flag) {
+            this.showIocn = flag
+        },
+    },
+}
+</script>
+<style scoped lang='scss'>
+.selectDepartment {
+    height: 56vh;
+    display: flex;
+    flex-direction: column;
+
+    .flex1 {
+        flex: 1;
+        overflow: auto;
+    }
+
+    .padding1 {
+        margin: 10px;
+    }
+}
+
+.bionicClass {
+    background-color: #FFF;
+    background-image: none;
+    border-radius: 4px;
+    border: 1px solid #DCDFE6;
+    box-sizing: border-box;
+    color: #606266;
+    display: inline-block;
+    height: 40px;
+    line-height: 40px;
+    outline: 0;
+    padding: 0 15px;
+    -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1);
+    transition: border-color .2s cubic-bezier(.645, .045, .355, 1);
+    width: 350px;
+    position: relative;
+    cursor: pointer;
+
+    .bionicClassIcon {
+        position: absolute;
+        top: 50%;
+        right: 15px;
+        transform: translateY(-50%);
+        color: "#606266";
+        z-index: 10;
+    }
+
+    .bionicClassText {
+        color: #C0C4CC;
+    }
+}
+
+.el-dialog {
+    display: flex;
+    flex-direction: column;
+    margin: 0 !important;
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    transform: translate(-50%, -50%);
+    max-height: calc(100% - 200px);
+    max-width: calc(100% - 30px);
+}
+
+.el-dialog .el-dialog__body {
+    flex: 1;
+    overflow: auto;
+}
+</style>
+
+<style>
+.bionicClassIcon .el-icon-circle-close {
+    color: #C0C4CC !important;
+}
+</style>

+ 29 - 4
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

@@ -1177,8 +1177,9 @@
                     </el-select>
                 </el-form-item>
                 <el-form-item prop="departmentId" :label="$t('other.selectdepartment')" v-if="permissions.reportsCompany">
-                    <el-cascader v-if="user.userNameNeedTranslate != 1" v-model="exportParam.departmentId" :placeholder="$t('other.allDepartments')" :options="departmentList" :props="{ checkStrictly: true, value: 'id' }" clearable style="width: 350px;"></el-cascader>
-                    <vueCascader :size="'medium'" :widthStr="'350'" :clearable="true" :subjectId="exportParam.departmentId" :subject="option" :radios="true" :distinction="'1'" @vueCasader="vueCasader" v-if="user.userNameNeedTranslate == 1" :selectNameChuan="$t('other.allDepartments')"></vueCascader>
+                    <!-- <el-cascader v-if="user.userNameNeedTranslate != 1" v-model="exportParam.departmentId" :placeholder="$t('other.allDepartments')" :options="departmentList" :props="{ checkStrictly: true, value: 'id' }" clearable style="width: 350px;"></el-cascader>
+                    <vueCascader :size="'medium'" :widthStr="'350'" :clearable="true" :subjectId="exportParam.departmentId" :subject="option" :radios="true" :distinction="'1'" @vueCasader="vueCasader" v-if="user.userNameNeedTranslate == 1" :selectNameChuan="$t('other.allDepartments')"></vueCascader> -->
+                    <vueMultipleDept v-model="exportParam.departmentId" :selectType="'0'"></vueMultipleDept>
                 </el-form-item>
                 <el-form-item prop="projectId" :label="$t('time.dateRange')">
                     <el-date-picker
@@ -2139,6 +2140,7 @@
 
      // 引入自定义级联组件
     import vueCascader from "@/components/cascader.vue"
+    import vueMultipleDept from "@/components/vueMultipleDept.vue"
 
     // 重庆物奇定制组件
     import WeeklyCustomization from "./weeklyCustomization.vue"
@@ -2150,7 +2152,8 @@
         components: {
             selectCat,
             vueCascader,
-            WeeklyCustomization
+            WeeklyCustomization,
+            vueMultipleDept
         },
         data() {
             return {
@@ -5763,7 +5766,8 @@
                     param.projectId = this.exportParam.projectId;
                 }
                 if (this.exportParam.departmentId != null) {
-                    param.departmentId = this.exportParam.departmentId[this.exportParam.departmentId.length - 1]
+                    // param.departmentId = this.exportParam.departmentId[this.exportParam.departmentId.length - 1]
+                    param.departmentIds = this.exportParam.departmentId.join(',')
                 }
                 param.stateKey = this.stateKey
                 // param.departmentId = this.user.departmentId
@@ -8963,6 +8967,27 @@
 </style>
 
 <style lang="scss" scoped>
+    .bionicClass {
+        -webkit-appearance: none;
+        background-color: #FFF;
+        background-image: none;
+        border-radius: 4px;
+        border: 1px solid #DCDFE6;
+        box-sizing: border-box;
+        color: #606266;
+        display: inline-block;
+        height: 40px;
+        line-height: 40px;
+        outline: 0;
+        padding: 0 15px;
+        -webkit-transition: border-color .2s cubic-bezier(.645,.045,.355,1);
+        transition: border-color .2s cubic-bezier(.645,.045,.355,1);
+        width: 350px;
+        cursor: pointer;
+        .bionicClassText {
+            color: #C0C4CC;
+        }
+    }
     // 加班样式
     .overtime {
         display: inline-block;

+ 4 - 4
fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/index.vue

@@ -78,8 +78,8 @@
                     </van-field>
 
                     <!-- <div>请选择投入项目</div> -->
-                    <van-field readonly name="projectId" clickable :value="item.projectName"
-                        :label="user.companyId == 781 ? '工作任务' : '投入项目'" :disabled="!item.canEdit"
+                    <van-field readonly name="projectId" clickable :value="item.projectName" type="textarea" autosize
+                        :label="user.companyId == 781 ? '工作任务' : '投入项目'" :disabled="!item.canEdit" rows="1"
                         :placeholder="user.companyId == 781 ? '请选择工作任务' : '请选择项目'" @click="clickPicker(index, item)"
                         :rules="[{ required: true, message: user.companyId == 781 ? '请选择任务' : '请选择项目' }]" />
                     <!--昱众不显示子项目-->
@@ -526,7 +526,7 @@
 
                     <div v-for="(item, index) in integrationProjectList" :key="index" class="popupItem paddingDiv"
                         @click="fZr(item, index)">
-                        <p class="popupItemOne" v-if="item.projectName">{{ item.projectName }}</p>
+                        <div class="popupItemOne" v-if="item.projectName">{{ item.projectName }}</div>
                         <p class="popupItemTwo" v-if="item.projectCode">{{ item.projectCode }}</p>
                     </div>
 
@@ -534,7 +534,7 @@
 
                     <div v-for="(item, index) in projectss" :key="item.id" class="popupItem paddingDiv"
                         @click="fZr(item, index)">
-                        <p class="popupItemOne" v-if="item.projectName">{{ item.projectName }}</p>
+                        <div class="popupItemOne" v-if="item.projectName">{{ item.projectName }}</div>
                         <p class="popupItemTwo" v-if="item.projectCode">{{ item.projectCode }}</p>
                     </div>
 

+ 2 - 2
fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/weekEdit-01.vue

@@ -369,14 +369,14 @@
                     <div class="popupTitle">近期选择项目</div>
 
                     <div v-for="(item, index) in integrationProjectList" :key="index" class="popupItem paddingDiv" @click="fZr(item, index)">
-                        <p class="popupItemOne" v-if="item.projectName">{{item.projectName}}</p>
+                        <div class="popupItemOne" v-if="item.projectName">{{item.projectName}}</div>
                         <p class="popupItemTwo" v-if="item.projectCode">{{item.projectCode}}</p> 
                     </div>
 
                     <div class="popupTitle marginTop">全部项目</div>
 
                     <div v-for="(item, index) in projectss" :key="item.id" class="popupItem paddingDiv" @click="fZr(item, index)">
-                        <p class="popupItemOne" v-if="item.projectName">{{item.projectName}}</p>
+                        <div class="popupItemOne" v-if="item.projectName">{{item.projectName}}</div>
                         <p class="popupItemTwo" v-if="item.projectCode">{{item.projectCode}}</p> 
                     </div>
                 </div>

+ 3 - 3
fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/weekEdit.vue

@@ -68,7 +68,7 @@
                         <!-- <div>请选择投入项目</div> -->
                         <!--按周填报的项目改成非必填-->
                         <van-field  readonly  name="projectId" clickable :value="item.projectName" :label="user.companyId==781?'工作任务':'投入项目'" :placeholder="user.companyId==781?'请选择工作任务':'请选择项目'" 
-                            @click="clickPicker(index, item)" :disabled="item.state<=1" />
+                            @click="clickPicker(index, item)" :disabled="item.state<=1" type="textarea" autosize rows="1" />
                         <van-field  readonly  name="subProjectId" v-if="item.subProjectList != null && item.subProjectList.length > 0 && user.timeType.mainProjectState != 1" clickable 
                             :value="item.subProjectName" label="子项目" placeholder="请选择子项目"  :disabled="item.state<=1"
                         @click="clickPickSubProject(index, item)" />
@@ -465,14 +465,14 @@
                     <div class="popupTitle">近期选择项目</div>
 
                     <div v-for="(item, index) in integrationProjectList" :key="index" class="popupItem paddingDiv" @click="fZr(item, index)">
-                        <p class="popupItemOne" v-if="item.projectName">{{item.projectName}}</p>
+                        <div class="popupItemOne" v-if="item.projectName">{{item.projectName}}</div>
                         <p class="popupItemTwo" v-if="item.projectCode">{{item.projectCode}}</p> 
                     </div>
 
                     <div class="popupTitle marginTop">全部项目</div>
 
                     <div v-for="(item, index) in projectss" :key="item.id" class="popupItem paddingDiv" @click="fZr(item, index)">
-                        <p class="popupItemOne" v-if="item.projectName">{{item.projectName}}</p>
+                        <div class="popupItemOne" v-if="item.projectName">{{item.projectName}}</div>
                         <p class="popupItemTwo" v-if="item.projectCode">{{item.projectCode}}</p> 
                     </div>
                 </div>