Lijy 1 month ago
parent
commit
96095ee960
16 changed files with 263 additions and 151 deletions
  1. 2 1
      fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/moduleList/moduleList.vue
  2. 3 2
      fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/pageComponents/business/businessInfo.vue
  3. 54 50
      fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/pageComponents/tasks/addEditor.vue
  4. 20 6
      fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/pageComponents/tasks/detail.vue
  5. 33 6
      fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/tabbar/home/component/salesBriefings.vue
  6. 2 1
      fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/tabbar/home/component/workbench.vue
  7. 2 2
      fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/tabbar/home/index.vue
  8. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm-h5/vite.config.js
  9. 30 25
      fhKeeper/formulahousekeeper/customerBuler-crm/src/components/TaskModal/index.vue
  10. 77 42
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/business/api.ts
  11. 2 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/business/component/kanbanView.vue
  12. 2 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/business/index.vue
  13. 4 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/customer/component/deteleTables.vue
  14. 6 3
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/customer/index.vue
  15. 1 0
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/login.vue
  16. 24 9
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/tasks/index.vue

+ 2 - 1
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/moduleList/moduleList.vue

@@ -99,7 +99,7 @@
                               <div class="text-[#B9B9B9] text-size-small w-2/5 truncate">
                                 {{ item.businessName || item.orderName || item.clueName || item.customName }}
                               </div>
-                              <div class="text-[#B9B9B9] text-size-small w-2/5 truncate text-right">优先级:
+                              <div class="text-[#B9B9B9] text-size-small w-2/5 truncate text-right" v-if="user.company.isSimple != 1">优先级:
                                 {{ fixedFieldPriority.find(subItem => subItem.value == item.priority)?.label || '' }}
                               </div>
                             </div>
@@ -255,6 +255,7 @@ const { toastSuccess, toastFail, toastText } = useShowToast()
 const router = useRouterStore()
 const fixedData = useFixedData()
 const userInfo = useInfoStore()
+const user = userInfo.userInfo
 const searchVal = ref()
 const queryParameters = ref({})
 const loadingList = ref(false)

+ 3 - 2
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/pageComponents/business/businessInfo.vue

@@ -3,7 +3,7 @@
     <div class="bg-white info flex-1 overflow-y-auto cellnormall">
       <van-cell :title="`${businessLabel}名称`" :value="infoData.name" />
       <van-cell title="客户名称" :value="infoData.customerName" />
-      <van-cell title="联系人姓名" :value="infoData.contactsName" />
+      <van-cell title="联系人姓名" :value="infoData.contactsName" v-if="user.company.isSimple != 1" />
       <van-cell :title="`${businessLabel}金额`">
         <template #default>
           <span class="text-[#FF8B32]" v-if="infoData.amountOfMoney">¥ {{ infoData.amountOfMoney }}</span>
@@ -19,7 +19,7 @@
       <van-cell title="备注" :value="infoData.remark" />
     </div>
     <div class="bottomButton">
-      <van-button type="primary" class="w-full block" v-if="!infoData.contactsName"
+      <van-button type="primary" class="w-full block" v-if="!infoData.contactsName && user.company.isSimple != 1"
         @click="shoContactDialag()">关联联系人</van-button>
       <van-button type="warning" class="w-full block" v-if="infoData.inchargerName"
         @click="showDialogCli()">转移{{ businessLabel }}</van-button>
@@ -76,6 +76,7 @@ import { routingInfos } from "@utility/generalVariables"
 const router = useRouterStore()
 const fixedData = useFixedData()
 const userInfo = useInfoStore()
+const user = userInfo.userInfo
 const { toastSuccess, toastLoading, toastFail, toastText, clearToast } = useShowToast()
 const props = defineProps({
   info: {

+ 54 - 50
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/pageComponents/tasks/addEditor.vue

@@ -5,63 +5,65 @@
         class="bg-white" @submit="onSubmit">
         <van-field v-model.trim="vantFormVal.taskName" name="taskName" rows="2" label="任务名称" maxlength="100" required
           show-word-limit type="textarea" placeholder="请输入" />
-        <van-field v-model="vantFormVal.priority" name="priority" label="优先级" placeholder="请选择" is-link readonly
-          required @click="showSelectionBox('priority', fixedFieldPriority)">
-          <template #input v-if="vantFormVal.priority || vantFormVal.priority == 0">
-            {{ vantFormVal.priorityName }}
-          </template>
-        </van-field>
-        <van-field v-model="vantFormVal.taskType" name="taskType" label="任务类型" placeholder="请选择" is-link readonly
-          @click="showSelectionBox('taskType', fixedFieldTaskType)" class="resetStyles">
-          <template #input v-if="vantFormVal.taskType || vantFormVal.taskType == 0">
-            {{ vantFormVal.taskTypeName }}
-          </template>
-        </van-field>
-        <!-- 客户选择 -->
-        <template v-if="vantFormVal.taskType == 0">
-          <van-field v-model="vantFormVal.customId" name="customId" label="客户" placeholder="请选择" is-link readonly
-            @click="showSelectionBox('customId', allCustomersList)" class="resetStyles">
-            <template #input v-if="vantFormVal.customId">
-              {{ vantFormVal.customIdName }}
-            </template>
-          </van-field>
-        </template>
-        <!-- 商机选择 -->
-        <template v-if="vantFormVal.taskType == 1">
-          <van-field v-model="vantFormVal.businessOpportunityId" name="businessOpportunityId" :label="`${businessLabel}`"
-            placeholder="请选择" is-link readonly class="resetStyles"
-            @click="showSelectionBox('businessOpportunityId', allBusinessOpportunities)">
-            <template #input v-if="vantFormVal.businessOpportunityId">
-              {{ vantFormVal.businessOpportunityIdName }}
+        <template v-if="userInfo?.company?.isSimple != 1">
+          <van-field v-model="vantFormVal.priority" name="priority" label="优先级" placeholder="请选择" is-link readonly
+            required @click="showSelectionBox('priority', fixedFieldPriority)">
+            <template #input v-if="vantFormVal.priority || vantFormVal.priority == 0">
+              {{ vantFormVal.priorityName }}
             </template>
           </van-field>
-        </template>
-        <!-- 销售订单选择 -->
-        <template v-if="vantFormVal.taskType == 2">
-          <van-field v-model="vantFormVal.orderId" name="orderId" label="销售订单" placeholder="请选择" is-link readonly
-            class="resetStyles" @click="showSelectionBox('orderId', allSalesOrdersList)">
-            <template #input v-if="vantFormVal.orderId">
-              {{ vantFormVal.orderIdName }}
+          <van-field v-model="vantFormVal.taskType" name="taskType" label="任务类型" placeholder="请选择" is-link readonly
+            @click="showSelectionBox('taskType', fixedFieldTaskType)" class="resetStyles">
+            <template #input v-if="vantFormVal.taskType || vantFormVal.taskType == 0">
+              {{ vantFormVal.taskTypeName }}
             </template>
           </van-field>
-        </template>
-        <!-- 线索选择 -->
-        <template v-if="vantFormVal.taskType == 3">
-          <van-field v-model="vantFormVal.clueId" name="clueId" label="线索" placeholder="请选择" is-link readonly
-            class="resetStyles" @click="showSelectionBox('clueId', allCluesList)">
-            <template #input v-if="vantFormVal.clueId">
-              {{ vantFormVal.clueIdName }}
+          <!-- 客户选择 -->
+          <template v-if="vantFormVal.taskType == 0">
+            <van-field v-model="vantFormVal.customId" name="customId" label="客户" placeholder="请选择" is-link readonly
+              @click="showSelectionBox('customId', allCustomersList)" class="resetStyles">
+              <template #input v-if="vantFormVal.customId">
+                {{ vantFormVal.customIdName }}
+              </template>
+            </van-field>
+          </template>
+          <!-- 商机选择 -->
+          <template v-if="vantFormVal.taskType == 1">
+            <van-field v-model="vantFormVal.businessOpportunityId" name="businessOpportunityId" :label="`${businessLabel}`"
+              placeholder="请选择" is-link readonly class="resetStyles"
+              @click="showSelectionBox('businessOpportunityId', allBusinessOpportunities)">
+              <template #input v-if="vantFormVal.businessOpportunityId">
+                {{ vantFormVal.businessOpportunityIdName }}
+              </template>
+            </van-field>
+          </template>
+          <!-- 销售订单选择 -->
+          <template v-if="vantFormVal.taskType == 2">
+            <van-field v-model="vantFormVal.orderId" name="orderId" label="销售订单" placeholder="请选择" is-link readonly
+              class="resetStyles" @click="showSelectionBox('orderId', allSalesOrdersList)">
+              <template #input v-if="vantFormVal.orderId">
+                {{ vantFormVal.orderIdName }}
+              </template>
+            </van-field>
+          </template>
+          <!-- 线索选择 -->
+          <template v-if="vantFormVal.taskType == 3">
+            <van-field v-model="vantFormVal.clueId" name="clueId" label="线索" placeholder="请选择" is-link readonly
+              class="resetStyles" @click="showSelectionBox('clueId', allCluesList)">
+              <template #input v-if="vantFormVal.clueId">
+                {{ vantFormVal.clueIdName }}
+              </template>
+            </van-field>
+          </template>
+          <van-field v-model="vantFormVal.contactsId" name="contactsId" label="联系人" placeholder="请选择" is-link readonly
+            :disabled="contactDisabled"
+            v-if="fixedFieldTaskType.find(v => v.value == (vantFormVal.taskType || '1'))?.show" class="resetStyles"
+            @click="showSelectionBox('contactsId', allContactsList)">
+            <template #input v-if="vantFormVal.contactsId">
+              {{ vantFormVal.contactsIdName }}
             </template>
           </van-field>
         </template>
-        <van-field v-model="vantFormVal.contactsId" name="contactsId" label="联系人" placeholder="请选择" is-link readonly
-          :disabled="contactDisabled"
-          v-if="fixedFieldTaskType.find(v => v.value == (vantFormVal.taskType || '1'))?.show" class="resetStyles"
-          @click="showSelectionBox('contactsId', allContactsList)">
-          <template #input v-if="vantFormVal.contactsId">
-            {{ vantFormVal.contactsIdName }}
-          </template>
-        </van-field>
         <van-field v-model="vantFormVal.executorId" name="executorId" label="执行人" placeholder="请选择" is-link readonly
           class="resetStyles" @click="showSelectionToBox('executorId')">
           <template #input v-if="vantFormVal.executorIdName && vantFormVal.executorIdName.length > 0">
@@ -200,7 +202,9 @@ import CustomerForm from '@components/common/formForm/formView.vue'
 import TranslationComponent from '@components/common/translationComponent.vue';
 import useRouterStore from "@store/useRouterStore.js";
 import commonUtil from "@utility/commonUtil"
+import useInfoStore from '@store/useInfoStore'
 
+const userInfo = useInfoStore().userInfo
 const router = useRouterStore()
 const { toastText, toastSuccess, toastFail, toastLoading } = useToast()
 const props = defineProps({

+ 20 - 6
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/pageComponents/tasks/detail.vue

@@ -2,7 +2,7 @@
   <div class="w-full h-full flex flex-col">
     <div class="bg-white info flex-1 overflow-y-auto">
       <van-cell title="任务名称" :value="infoData.taskName" />
-      <van-cell title="优先级">
+      <van-cell title="优先级" v-if="user.company.isSimple != 1">
         <template #default>
           {{ fixedFieldPriority.find(subItem => subItem.value == infoData.priority)?.label || '' }}
         </template>
@@ -22,11 +22,24 @@
       <van-cell title="开始时间" :value="infoData.startDate" />
       <van-cell title="截至时间" :value="infoData.endDate" />
       <van-cell title="客户名称" :value="infoData.customName" v-if="infoData.customName" />
-      <van-cell :title="`${businessLabel}名称`" :value="infoData.businessName" v-if="infoData.businessName" />
-      <van-cell title="销售订单" :value="infoData.orderName" v-if="infoData.orderName" />
-      <van-cell title="线索名称" :value="infoData.clueName" v-if="infoData.clueName" />
-      <van-cell title="联系人名称" :value="infoData.contactsName" v-if="!infoData.clueId" />
-      <van-cell title="联系人号码" :value="infoData.contactsPhone" v-if="!infoData.clueId" />
+      <template v-if="user.company.isSimple != 1">
+        <van-cell :title="`${businessLabel}名称`" :value="infoData.businessName" v-if="infoData.businessName" />
+        <van-cell title="销售订单" :value="infoData.orderName" v-if="infoData.orderName" />
+        <van-cell title="线索名称" :value="infoData.clueName" v-if="infoData.clueName" />
+        <van-cell title="联系人名称" :value="infoData.contactsName" v-if="!infoData.clueId" />
+      </template>
+      <template v-if="user.company.isSimple == 1">
+        <van-cell title="联系人号码" :value="infoData.contactsPhone" />
+        <van-cell title="客户类型" :value="infoData.customTypeName" v-if="infoData.customType" />
+        <van-cell title="预约工作内容" :value="infoData.appointContent" />
+        <van-cell title="预约金额" :value="infoData.appointMoney" />
+        <van-cell title="实际工作" :value="infoData.reallyContent" />
+        <van-cell title="实际金额" :value="infoData.reallyMoney" />
+        <van-cell title="付款状态" :value="infoData.payTypeName" />
+        <van-cell title="付款方式" :value="infoData.payWayName" />
+        <van-cell title="用户反馈" :value="infoData.userBack" />
+        <van-cell title="备注" :value="infoData.remark" />
+      </template>
     </div>
     <div class="bottomButton">
       <van-button type="success" class="w-full block" @click="completeTheTask(2)"
@@ -93,6 +106,7 @@ import dayjs from 'dayjs';
 const router = useRouterStore()
 const fixedData = useFixedData()
 const userInfo = useInfoStore()
+const user = userInfo.userInfo
 const { toastSuccess, toastLoading, toastFail, toastText, clearToast } = useShowToast()
 const props = defineProps({
   info: {

+ 33 - 6
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/tabbar/home/component/salesBriefings.vue

@@ -9,8 +9,8 @@
     </div>
 
     <div class="content overflow-hidden transitionEffect"
-      :style="`height: ${expandAndCollapse ? usePxToVwView(298) : '0'}`">
-      <div class="flex items-center w-full">
+      :style="`height: ${expandAndCollapse ? usePxToVwView(user.company.isSimple == 1 ? 180 : 298) : '0'}`">
+      <div class="flex items-center w-full" >
         <div class="item">
           <img src="/src/assets/image/salesKitkehu.png" class="item-img" />
           <div class="flex flex-col justify-center text=[#999999]">
@@ -22,7 +22,7 @@
             </div>
           </div>
         </div>
-        <div class="item">
+        <div class="item" v-if="user.company.isSimple != 1">
           <img src="/src/assets/image/salesKitlianxir.png" class="item-img" />
           <div class="flex flex-col justify-center text=[#999999]">
             <div>新增联系人</div>
@@ -33,9 +33,21 @@
             </div>
           </div>
         </div>
+
+        <div class="item" v-if="user.company.isSimple == 1">
+          <img src="/src/assets/image/salesKitlishi.png" class="item-img" />
+          <div class="flex flex-col justify-center text=[#999999]">
+            <div>新增{{ businessLabel }}</div>
+            <div class="flex items-end">
+              <span class="text-[#F3893C] text-size-in font-bold mr-1">
+                {{ salesBriefings?.businessOpportunity?.businessOpportunityCount || 0 }}
+              </span>个
+            </div>
+          </div>
+        </div>
       </div>
 
-      <div class="flex items-center w-full">
+      <div class="flex items-center w-full" v-if="user.company.isSimple != 1">
         <div class="item">
           <img src="/src/assets/image/salesKitlishi.png" class="item-img" />
           <div class="flex flex-col justify-center text=[#999999]">
@@ -61,7 +73,7 @@
       </div>
 
       <div class="flex items-center w-full">
-        <div class="item">
+        <div class="item" v-if="user.company.isSimple != 1">
           <img src="/src/assets/image/salesKitjer.png" class="item-img" />
           <div class="flex flex-col justify-center text=[#999999]">
             <div>销售订单金额</div>
@@ -83,9 +95,21 @@
             </div>
           </div>
         </div>
+
+        <div class="item" v-if="user.company.isSimple == 1">
+          <img src="/src/assets/image/salesKitxianshuo.png" class="item-img" />
+          <div class="flex flex-col justify-center text=[#999999]">
+            <div>新增线索</div>
+            <div class="flex items-end">
+              <span class="text-[#F44873] text-size-in font-bold mr-1">
+                {{ salesBriefings?.clue?.clueCount || 0 }}
+              </span>个
+            </div>
+          </div>
+        </div>
       </div>
 
-      <div class="flex items-center w-full">
+      <div class="flex items-center w-full" v-if="user.company.isSimple != 1">
         <div class="item">
           <img src="/src/assets/image/salesKitxianshuo.png" class="item-img" />
           <div class="flex flex-col justify-center text=[#999999]">
@@ -114,6 +138,7 @@ import { ref, computed } from 'vue';
 import { useLifecycle } from '@hooks/useCommon.js';
 import { GET_SALES_BRIEFINGS } from '@hooks/useApi.js';
 import { fixedFieldPermissionOptions, fixedFieldDateOptions } from '@utility/defaultData.js';
+import useInfoStore from "@store/useInfoStore.js";
 
 import requests from "@common/requests"
 import usePxToVwView from "@hooks/usePxTransform.js";
@@ -127,6 +152,8 @@ const filterCriteria = ref({
   dateSelection: 0,
   customTime: []
 })
+const useInfo = useInfoStore()
+const user = useInfo.userInfo
 const isExistBusiness = sessionStorage.getItem("isExistBusiness");
 const businessLabel = isExistBusiness === "1" ? "商机" : "项目"; 
 const scopeText = computed(() => {

+ 2 - 1
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/tabbar/home/component/workbench.vue

@@ -62,7 +62,7 @@
                       {{ taskStatus[item.status]?.label }}
                     </div>
                   </div>
-                  <div class="w-full flex items-center justify-between mt-4">
+                  <div class="w-full flex items-center justify-between mt-4" v-if="user.company.isSimple != 1">
                     <div class="text-[#505050]" style="width: 100%;">优先级: {{ ['低','中','高'][item.priority] }}</div>
                   </div>
                   <div class="w-full flex items-center justify-between mt-4">
@@ -222,6 +222,7 @@ const taskStatus = [
 
 const router = useRouterStore()
 const useInfo = useInfoStore()
+const user = useInfo.userInfo
 const { toastText, toastSuccess, toastFail, toastLoading } = useToast()
 const expandAndCollapse = ref(true)
 const calendarHeight = ref(0)

+ 2 - 2
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/tabbar/home/index.vue

@@ -63,12 +63,12 @@ import Workbench from "./component/workbench.vue";
 import DataAnalysis from "./component/dataAnalysis.vue";
 import requests from "@common/requests"
 
-
 const userInfo = useInfoStore()
+const modulListss = userInfo.modularList.filter(item => item.path != '/biReport')
 const router = useRouterStore()
 const homepageType = ref('workbench')
 const showModule = ref(false)
-const moduleList = ref(userInfo.modularList)
+const moduleList = ref(modulListss)
 
 function toAddEditor(rows) {
   const jumpTo = routingInfos[rows.path.replace('/', '')]

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm-h5/vite.config.js

@@ -6,7 +6,7 @@ import { VantResolver } from "unplugin-vue-components/resolvers";
 import { postcssConfig } from "./postcss.config.js";
 
 // const target = 'http://192.168.2.40:10099';
-const target = 'http://192.168.2.40:10010';
+const target = 'http://192.168.2.5:10010';
 // const target = 'http://1.94.62.58:10014';
 // const target = 'http://192.168.2.17:10010';
 

+ 30 - 25
fhKeeper/formulahousekeeper/customerBuler-crm/src/components/TaskModal/index.vue

@@ -18,33 +18,35 @@
           <el-input v-model="form.taskName" type="textarea" placeholder="请输入任务名称" clearable maxlength="100"
             show-word-limit :disabled="disabledList && disabledList.includes('taskName')" />
         </el-form-item>
-        <el-form-item prop="priority" label="优先级:" required>
-          <el-select v-model="form.priority" placeholder="请选择" clearable
-            :disabled="disabledList && disabledList.includes('priority')">
-            <el-option v-for="item in PRIORITY " :key="item.value" :value="item.value" :label="item.label" />
-          </el-select>
-        </el-form-item>
-        <el-form-item :label="form.taskType">
-          <template #label>
-            <el-select v-model="form.taskType" class="border resetSelect" style="width: 100px" @change="changeTaskType"
-              :disabled="disabledList && disabledList.includes('taskType')">
-              <el-option v-for="item in TASK_TYPE" :key="item.value" :value="item.value" :label="item.label" />
+        <template v-if="userInfo.company.isSimple != 1">
+          <el-form-item prop="priority" label="优先级:" required >
+            <el-select v-model="form.priority" placeholder="请选择" clearable
+              :disabled="disabledList && disabledList.includes('priority')">
+              <el-option v-for="item in PRIORITY " :key="item.value" :value="item.value" :label="item.label" />
             </el-select>
-          </template>
-          <template v-for="item in TASK_TYPE_FIELD">
-            <el-select v-model="form[item.field]" v-if="form.taskType == item.type" placeholder="请选择" clearable
-              filterable :disabled="disabledList && disabledList.includes(item.field)" @change="(e: any) => {taskFormChange(e, item.field)}">
-              <el-option v-for="v in taskTypeValueData" :key="v.id" :value="v[item.valueIndex]"
-                :label="v[item.labelIndex]" />
+          </el-form-item>
+          <el-form-item :label="form.taskType">
+            <template #label>
+              <el-select v-model="form.taskType" class="border resetSelect" style="width: 100px" @change="changeTaskType"
+                :disabled="disabledList && disabledList.includes('taskType')">
+                <el-option v-for="item in TASK_TYPE" :key="item.value" :value="item.value" :label="item.label" />
+              </el-select>
+            </template>
+            <template v-for="item in TASK_TYPE_FIELD">
+              <el-select v-model="form[item.field]" v-if="form.taskType == item.type" placeholder="请选择" clearable
+                filterable :disabled="disabledList && disabledList.includes(item.field)" @change="(e: any) => {taskFormChange(e, item.field)}">
+                <el-option v-for="v in taskTypeValueData" :key="v.id" :value="v[item.valueIndex]"
+                  :label="v[item.labelIndex]" />
+              </el-select>
+            </template>
+          </el-form-item>
+          <el-form-item label="联系人:" v-if="TASK_TYPE.find(v => v.value == (form.taskType || '1'))?.show">
+            <el-select v-model="form.contactsId" placeholder="请选择" clearable filterable
+              :disabled="(disabledList && disabledList.includes('contactsId')) || !form[TASK_TYPE_FIELD[form.taskType].field]">
+              <el-option v-for="item in contactValueData" :key="item.id" :value="item.id" :label="item.name" />
             </el-select>
-          </template>
-        </el-form-item>
-        <el-form-item label="联系人:" v-if="TASK_TYPE.find(v => v.value == (form.taskType || '1'))?.show">
-          <el-select v-model="form.contactsId" placeholder="请选择" clearable filterable
-            :disabled="(disabledList && disabledList.includes('contactsId')) || !form[TASK_TYPE_FIELD[form.taskType].field]">
-            <el-option v-for="item in contactValueData" :key="item.id" :value="item.id" :label="item.name" />
-          </el-select>
-        </el-form-item>
+          </el-form-item>
+        </template>
         <el-form-item label="执行人:">
           <!-- <el-select v-model="form.executorId" placeholder="请选择" clearable multiple filterable
             :disabled="disabledList && disabledList.includes('executorId')">
@@ -150,6 +152,9 @@ import { Props, Emits } from './type';
 import { URL_GETALL } from '@/pages/contacts/api';
 import personnelSearch from '@/components/translationComponent/personnelSearch/personnelSearch.vue';
 
+import { useStore } from "../../store/index"
+const { userInfo } = useStore()
+
 const props = defineProps<Props>()
 const emits = defineEmits<Emits>();
 watch(() => props.saveLoading, (val) => {

+ 77 - 42
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/business/api.ts

@@ -3,54 +3,89 @@ export const MODURL = "Business";
 export const prefix = "/clue";
 export const GETSYSFILED = "/sys-dict/getListByCode";
 export const GETPERSONNEL = "/user/getSimpleActiveUserList";
-export const GETGENERATEFOEM = `/sys-form/getListByCode${MOD}`
-export const GETBUSINESSLIST = `/business-opportunity/list`
-export const UPDATEINSET = `/business-opportunity/insertAndUpdate`
-export const BUSINESSDETELE = `/business-opportunity/delete`
-export const BATCHTRANSFER = `/business-opportunity/claim`
-export const BUSIESS_DETELELIST = `/business-opportunity/deleterList`
-export const BUSIESS_ROWBACK = `/business-opportunity/rollBack`
-export const BUSIESS_PERDETELE = `/business-opportunity/deleterDelete`
-export const BUSIESS_GETSATE = `/business-opportunity/getStage`
-export const BUSIESS_SAVESAIE = `/business-opportunity/saveStage`
-export const BUSIESS_ALL = `/business-opportunity/getAll`
-export const BUSIESS_INFO = `/business-opportunity/getInfo`
-export const DETELEFILEFILE = `/business-opportunity/deleteFile`
-export const REFIENAMEFILE = `/business-opportunity/reFileName`
-export const UPLOADFILEFILE = `/business-opportunity/uploadFile`
-export const URL_IMPOERBUSINESS = `/business-opportunity/importData`
-export const URL_DETELESTAGE = `/business-opportunity/deleteStage`
-export const URL_SAVECONTACT = `/business-opportunity/saveContactsId`
-export const URL_STAGEIDNEXT = `/business-opportunity/saveStageId`
-export const URL_SAVEREASON = `/business-opportunity/saveReason`
-export const URL_EXPORTBUSINESS = `/business-opportunity/exportData`
-export const PANEL_MOBILE_DATA = `/business-opportunity/changeOrder`
+export const GETGENERATEFOEM = `/sys-form/getListByCode${MOD}`;
+export const GETBUSINESSLIST = `/business-opportunity/list`;
+export const UPDATEINSET = `/business-opportunity/insertAndUpdate`;
+export const BUSINESSDETELE = `/business-opportunity/delete`;
+export const BATCHTRANSFER = `/business-opportunity/claim`;
+export const BUSIESS_DETELELIST = `/business-opportunity/deleterList`;
+export const BUSIESS_ROWBACK = `/business-opportunity/rollBack`;
+export const BUSIESS_PERDETELE = `/business-opportunity/deleterDelete`;
+export const BUSIESS_GETSATE = `/business-opportunity/getStage`;
+export const BUSIESS_SAVESAIE = `/business-opportunity/saveStage`;
+export const BUSIESS_ALL = `/business-opportunity/getAll`;
+export const BUSIESS_INFO = `/business-opportunity/getInfo`;
+export const DETELEFILEFILE = `/business-opportunity/deleteFile`;
+export const REFIENAMEFILE = `/business-opportunity/reFileName`;
+export const UPLOADFILEFILE = `/business-opportunity/uploadFile`;
+export const URL_IMPOERBUSINESS = `/business-opportunity/importData`;
+export const URL_DETELESTAGE = `/business-opportunity/deleteStage`;
+export const URL_SAVECONTACT = `/business-opportunity/saveContactsId`;
+export const URL_STAGEIDNEXT = `/business-opportunity/saveStageId`;
+export const URL_SAVEREASON = `/business-opportunity/saveReason`;
+export const URL_EXPORTBUSINESS = `/business-opportunity/exportData`;
+export const PANEL_MOBILE_DATA = `/business-opportunity/changeOrder`;
 
 // 看板视图
-export const OBTAIN_KANBAN_VIEW_DATA = `/business-opportunity/getAllByStage`
+export const OBTAIN_KANBAN_VIEW_DATA = `/business-opportunity/getAllByStage`;
 
 // 看板类型
-export const TABLE_VIEW = 'table'
-export const KANBAN_VIEW = 'view'
-
+export const TABLE_VIEW = "table";
+export const KANBAN_VIEW = "view";
 
 export const stageStatus = [
-    { id: 1, name: "赢单", progress: "100%" },
-    { id: 2, name: "输单", progress: "0%" },
-    { id: 3, name: "无效", progress: "0%" }
-]
+  { id: 1, name: "赢单", progress: "100%" },
+  { id: 2, name: "输单", progress: "0%" },
+  { id: 3, name: "无效", progress: "0%" },
+];
 
 const isExistBusiness = sessionStorage.getItem("isExistBusiness");
-const businessLabel = isExistBusiness === "1" ? "商机" : "项目"; 
+const businessLabel = isExistBusiness === "1" ? "商机" : "项目";
+const isSimple = sessionStorage.getItem("isSimple");
 
-export const tableColumn: businessTableColumnInterface[] = [
-    { prop: "name", label: `${businessLabel}名称`, width: "180", eventName: "toClueTableDetail" },
-    { prop: "customerName", label: "客户名称", width: "180" },
-    { prop: "contactsName", label: "联系人", width: "180", eventName: "showName" },
-    { prop: "amountOfMoney", label: `${businessLabel}金额`, width: "180" },
-    { prop: "expectedTransactionDate", label: "预计成交时间", width: "180" },
-    { prop: "stageValue", label: `${businessLabel}阶段`, width: "180" },
-    { prop: "inchargerName", label: "负责人", width: "180" },
-    { prop: "creatorName", label: "创建人", width: "180" },
-    { prop: "createTime", label: "创建时间", width: "180" }
-]
+export const tableColumn: businessTableColumnInterface[] =
+  isSimple == "1"
+    ? [
+        {
+          prop: "name",
+          label: `${businessLabel}名称`,
+          width: "180",
+          eventName: "toClueTableDetail",
+        },
+        { prop: "customerName", label: "客户名称", width: "180" },
+        { prop: "amountOfMoney", label: `${businessLabel}金额`, width: "180" },
+        {
+          prop: "expectedTransactionDate",
+          label: "预计成交时间",
+          width: "180",
+        },
+        { prop: "stageValue", label: `${businessLabel}阶段`, width: "180" },
+        { prop: "inchargerName", label: "负责人", width: "180" },
+        { prop: "creatorName", label: "创建人", width: "180" },
+        { prop: "createTime", label: "创建时间", width: "180" },
+      ]
+    : [
+        {
+          prop: "name",
+          label: `${businessLabel}名称`,
+          width: "180",
+          eventName: "toClueTableDetail",
+        },
+        { prop: "customerName", label: "客户名称", width: "180" },
+        {
+          prop: "contactsName",
+          label: "联系人",
+          width: "180",
+          eventName: "showName",
+        },
+        { prop: "amountOfMoney", label: `${businessLabel}金额`, width: "180" },
+        {
+          prop: "expectedTransactionDate",
+          label: "预计成交时间",
+          width: "180",
+        },
+        { prop: "stageValue", label: `${businessLabel}阶段`, width: "180" },
+        { prop: "inchargerName", label: "负责人", width: "180" },
+        { prop: "creatorName", label: "创建人", width: "180" },
+        { prop: "createTime", label: "创建时间", width: "180" },
+      ];

+ 2 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/business/component/kanbanView.vue

@@ -9,6 +9,7 @@ import { post, get, uploadFile } from "@/utils/request";
 import SvgIcon from "@/components/svgIcon/index.vue";
 import { formatDate, formatDateTime } from "@/utils/times";
 
+const isSimple = sessionStorage.getItem("isSimple");
 const emit = defineEmits()
 const router = useRouter()
 const viewList = ref<viewListInterface[]>([])
@@ -176,7 +177,7 @@ defineExpose({
                 <SvgIcon name="kehu" :size="20" class="mr-2" />
                 {{ subItem.customerName }}
               </div>
-              <div class="flex items-center mt-4">
+              <div class="flex items-center mt-4" v-if="isSimple != '1'">
                 <SvgIcon name="lianxiren" :size="20" color="#606266" class="mr-2" />
                 {{ subItem.contactsName }}
               </div>

+ 2 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/business/index.vue

@@ -15,7 +15,7 @@
             <el-form-item label="客户名称">
               <el-input v-model="businessOpportunityForm.customerName" clearable placeholder="请输入"></el-input>
             </el-form-item>
-            <el-form-item label="联系人">
+            <el-form-item label="联系人" v-if="isSimple != '1'">
               <el-input v-model="businessOpportunityForm.contactsName" clearable placeholder="请输入"></el-input>
             </el-form-item>
             <el-form-item label="产品">
@@ -225,6 +225,7 @@ import kanbanView from "./component/kanbanView.vue";
 
 const isExistBusiness = sessionStorage.getItem("isExistBusiness");
 const businessLabel = isExistBusiness === "1" ? "商机" : "项目"; 
+const isSimple = sessionStorage.getItem("isSimple");
 const router = useRouter()
 const globalPopup = inject<GlobalPopup>('globalPopup')
 const businessTableRef = ref<InstanceType<typeof ElTable>>() // 商机table dom

+ 4 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/customer/component/deteleTables.vue

@@ -20,7 +20,7 @@
                     <el-table-column type="selection" width="55" />
                     <el-table-column prop="customName" label="客户名称" width="180"></el-table-column>
                     <el-table-column prop="customSourceValue" label="客户来源" width="180"></el-table-column>
-                    <el-table-column prop="companyPhone" label="公司电话" width="180"></el-table-column>
+                    <el-table-column prop="companyPhone" :label="isSimpleLabel" width="180"></el-table-column>
                     <el-table-column prop="email" label="邮箱" width="200"></el-table-column>
                     <el-table-column prop="customerIndustryValue" label="客户行业" width="180"></el-table-column>
                     <el-table-column prop="customerLevelValue" label="客户级别" width="180"></el-table-column>
@@ -63,6 +63,9 @@ import { formatDate } from '@/utils/times';
 
 type operationType = '恢复' | '删除'
 
+const isSimple = sessionStorage.getItem("isSimple");
+const isSimpleLabel = isSimple == "1" ? "联系人电话" : "公司电话"; 
+
 const emits = defineEmits(['closeVisible']);
 const globalPopup = inject<GlobalPopup>('globalPopup')
 const deteleBusinessTable = ref([])

+ 6 - 3
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/customer/index.vue

@@ -3,7 +3,7 @@
     <div class="p-5 w-80 pr-0">
       <div class="bg-white w-full h-full shadow-md rounded-md flex flex-col">
         <div class="flex-1 p-3 overflow-y-auto">
-          <el-form :model="customerCriteriaForm" label-width="70px" style="max-width: 600px">
+          <el-form :model="customerCriteriaForm" label-width="90px" style="max-width: 600px">
             <el-form-item label="客户名称">
               <el-input v-model="customerCriteriaForm.customName" clearable placeholder="请输入"></el-input>
             </el-form-item>
@@ -12,7 +12,7 @@
                 <el-option v-for="item in fixedData.CustomSources" :key="item.id" :label="item.name" :value="item.id" />
               </el-select>
             </el-form-item>
-            <el-form-item label="公司号码">
+            <el-form-item :label="isSimpleLabel">
               <el-input v-model="customerCriteriaForm.companyPhone" clearable placeholder="请输入"></el-input>
             </el-form-item>
             <el-form-item label="邮箱">
@@ -76,7 +76,7 @@
               </template>
             </el-table-column>
             <el-table-column prop="customSourceValue" label="客户来源" width="180"></el-table-column>
-            <el-table-column prop="companyPhone" label="公司电话" width="180"></el-table-column>
+            <el-table-column prop="companyPhone" :label="isSimpleLabel" width="180"></el-table-column>
             <el-table-column prop="email" label="邮箱" width="200"></el-table-column>
             <el-table-column prop="customerIndustryValue" label="客户行业" width="180"></el-table-column>
             <el-table-column prop="customerLevelValue" label="客户级别" width="180" sortable="custom"></el-table-column>
@@ -231,6 +231,9 @@ interface customerCriteriaFormType { // 线索筛选条件类型
   pageFrom: string | number
 }
 
+const isSimple = sessionStorage.getItem("isSimple");
+const isSimpleLabel = isSimple == "1" ? "联系人电话" : "公司电话"; 
+
 // 定义变量
 const router = useRouter()
 const globalPopup = inject<GlobalPopup>('globalPopup')

+ 1 - 0
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/login.vue

@@ -148,6 +148,7 @@ const loginLogic = (data: any) => {
   })
   data.moduleList = data.moduleList.filter((item: any) => item.path != '/corpreport')
   sessionStorage.setItem('isExistBusiness', data.company.isExistBusiness || 0)
+  sessionStorage.setItem('isSimple', data.company.isSimple || 0)
   sessionStorage.setItem('token', data.id)
   localStorage.setItem('SUPERSONIC_TOKEN', data.supersonicToken)
   setValue(data, 'userInfo')

+ 24 - 9
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/tasks/index.vue

@@ -7,7 +7,7 @@
             <el-form-item label="任务名称:" label-width="7em" prop="taskName">
               <el-input v-model="searchForm.taskName" placeholder="请输入" />
             </el-form-item>
-            <el-form-item label="优先级:" label-width="7em" prop="priority">
+            <el-form-item label="优先级:" label-width="7em" prop="priority" v-if="userInfo.company.isSimple != 1">
               <el-select v-model="searchForm.priority" placeholder="请选择">
                 <el-option v-for="item in PRIORITY" :key="item.value" :value="item.value" :label="item.label" />
               </el-select>
@@ -27,7 +27,7 @@
             <el-form-item label="销售订单:" label-width="7em" prop="orderName">
               <el-input v-model="searchForm.orderName" placeholder="请输入" />
             </el-form-item>
-            <el-form-item label="线索名称:" label-width="7em" prop="clueName">
+            <el-form-item label="线索名称:" label-width="7em" prop="clueName" v-if="userInfo.company.isSimple != 1">
               <el-input v-model="searchForm.clueName" placeholder="请输入" />
             </el-form-item>
             <el-form-item label="任务状态:" label-width="7em" prop="status">
@@ -75,7 +75,7 @@
               <el-table-column prop="taskName" label="任务名称" header-align="center" align="center" show-overflow-tooltip
                 width="200" />
               <el-table-column prop="priority" label="优先级" width="100" :sortable="true" header-align="center"
-                align="center">
+                align="center" v-if="userInfo.company.isSimple != 1">
                 <template #default="scope">
                   {{ PRIORITY.find(item => item.value == scope.row.priority)?.label }}
                 </template>
@@ -111,7 +111,7 @@
                   </el-link>
                 </template>
               </el-table-column>
-              <el-table-column prop="businessName" :label="`${businessLabel}名称`" header-align="center" align="center" width="200">
+              <el-table-column prop="businessName" :label="`${businessLabel}名称`" header-align="center" align="center" width="200" v-if="userInfo.company.isSimple != 1">
                 <template #default="scope">
                   <el-link :underline="false" type="primary"
                     @click="goDetail(scope.row, 'business', 'businessOpportunityId')">
@@ -119,29 +119,43 @@
                   </el-link>
                 </template>
               </el-table-column>
-              <el-table-column prop="orderName" label="销售订单" header-align="center" align="center" width="200">
+              <el-table-column prop="orderName" label="销售订单" header-align="center" align="center" width="200" v-if="userInfo.company.isSimple != 1">
                 <template #default="scope">
                   <el-link :underline="false" type="primary" @click="goDetail(scope.row, 'order', 'orderId')">
                     {{ scope.row.orderName }}
                   </el-link>
                 </template>
               </el-table-column>
-              <el-table-column prop="clueName" label="线索名称" header-align="center" align="center" width="200">
+              <el-table-column prop="clueName" label="线索名称" header-align="center" align="center" width="200" v-if="userInfo.company.isSimple != 1">
                 <template #default="scope">
                   <el-link :underline="false" type="primary" @click="goDetail(scope.row, 'thread', 'clueId')">
                     {{ scope.row.clueName }}
                   </el-link>
                 </template>
               </el-table-column>
-              <el-table-column prop="contactsName" label="联系人名称" header-align="center" align="center" width="120">
+              <el-table-column prop="contactsName" label="联系人名称" header-align="center" align="center" width="120" v-if="userInfo.company.isSimple != 1">
                 <template #default="scope">
                   <el-link :underline="false" type="primary" @click="goDetail(scope.row, 'contacts', 'contactsId')">
                     {{ scope.row.contactsName }}
                   </el-link>
                 </template>
               </el-table-column>
-              <el-table-column prop="contactsTel" label="联系人号码" header-align="center" align="center" width="140" />
+              <template v-if="userInfo.company.isSimple == 1">
+                <el-table-column prop="contactsTel" label="联系人号码" header-align="center" align="center" width="140" />
+                <el-table-column prop="appointContent" label="预约工作内容" header-align="center" align="center" width="140" />
+                <el-table-column prop="appointMoney" label="预约金额" header-align="center" align="center" width="140" />
   
+                <el-table-column prop="reallyContent" label="实际工作内容" header-align="center" align="center" width="140" />
+                <el-table-column prop="reallyMoney" label="实际金额" header-align="center" align="center" width="140" />
+                <el-table-column prop="payType" label="付款状态" header-align="center" align="center" width="140">
+                  <template #default="scope">
+                    <el-text :type="scope.row.payType == 1 ? 'success' : 'danger'">
+                      {{ scope.row.payType == 1 ? '已付款' : '未付款' }}
+                    </el-text>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="userBack" label="用户反馈" header-align="center" align="center" width="180" />
+              </template>
               <el-table-column fixed="right" label="操作" header-align="center" align="center" width="160" v-permission="['tasksEdit']">
   
                 <template #default="scope">
@@ -226,7 +240,7 @@ import { getFromValue, confirmAction, downloadFile, createTaskFromType } from '@
 import { tableShowOverflowTooltip } from '@/utils/globalVariables'
 import { pushMap } from './type';
 const router = useRouter()
-const { getFunctionList } = useStore()
+const { getFunctionList, userInfo } = useStore()
 const globalPopup = inject<GlobalPopup>('globalPopup')
 const pagePermission = ref<any[]>();
 const taskModalVisible = ref(false);
@@ -284,6 +298,7 @@ function submitForm(data: any, isClose: boolean) {
     }
   }
   delete params.taskLogs
+  delete params.taskExecutors
   taskLoading.value = "2";
   let url = isEdit.value ? UPDATE_TASK : ADD_TASK
   let msg = isEdit.value ? "修改成功" : "新建成功"