Forráskód Böngészése

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

zhouyy 4 hónapja
szülő
commit
7b0b70bf90

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

@@ -148,7 +148,7 @@ function loginProcessing(data = {}) {
   router.switchTabBar({
     pathName: 'home',
     success: function () {
-      toastSuccess('登成功')
+      toastSuccess('登成功')
       setTimeout(() => {
         getMessageList()
       }, 500)

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

@@ -360,7 +360,7 @@ function claimAndClaim(item) {
 // 删除事件
 function deleteRow(row) {
   const { name = '', searchFiled = {}, deteleFiled = '' } = queryParameters.value
-  const foemVal = { [queryParameters.value.key == 'tasks' ? 'taskIds' : 'ids']: row.id }
+  const foemVal = { [queryParameters.value.key == 'tasks' ? 'taskIds' : queryParameters.value.key == 'contract' ? 'id' : 'ids']: row.id }
   showConfirmDialog({
     title: `删除${name}`,
     message: `确定删除【${row[searchFiled?.search]}】${name}吗?`,

+ 91 - 2
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/pageComponents/tasks/detail.vue

@@ -29,10 +29,44 @@
       <van-cell title="联系人号码" :value="infoData.contactsPhone" v-if="!infoData.clueId" />
     </div>
     <div class="bottomButton">
-      <van-button type="success" class="w-full block" @click="completeTheTask(2)" v-if="infoData.status != 2">完成任务</van-button>
-      <van-button type="primary" class="w-full block" @click="completeTheTask(0)" v-if="infoData.status == 2">重启任务</van-button>
+      <van-button type="success" class="w-full block" @click="completeTheTask(2)"
+        v-if="infoData.status != 2">完成任务</van-button>
+      <!-- <van-button type="primary" class="w-full block" @click="completeTheTask(0)" v-if="infoData.status == 2">重启任务</van-button> -->
+      <van-button type="primary" class="w-full block" @click="restartTask()"
+        v-if="infoData.status == 2">重启任务</van-button>
       <van-button type="danger" class="w-full block" @click="deleteTask">删除任务</van-button>
     </div>
+
+    <van-popup v-model:show="showDelay" closeable position="bottom" round>
+      <div class="newModuleAdded relative">
+        <div class="text-size-large text-[#474A56] absolute topTitle">重启时间</div>
+        <div class="flex flex-col overflow-y-auto h-52">
+          <div class="flex-1">
+            <div class="px-6 py-4 bg-[#F8F8FA] flex justify-between items-center mt-2" @click="showDatePickerCli('showStartDelayData')">
+              <div>选择开始时间</div>
+              <div class="flex items-center">
+                {{ showStartDelayData }}
+                <van-icon name="arrow" size="1.2rem" class="ml-2" />
+              </div>
+            </div>
+          </div>
+          <div class="flex-1">
+            <div class="px-6 py-4 bg-[#F8F8FA] flex justify-between items-center mt-2" @click="showDatePickerCli('showEndtDelayData')">
+              <div>选择结束时间</div>
+              <div class="flex items-center">
+                {{ showEndtDelayData }}
+                <van-icon name="arrow" size="1.2rem" class="ml-2" />
+              </div>
+            </div>
+          </div>
+          <van-button type="primary" :disabled="showEndtDelayData < todaySDate" @click="delayTimeEvent()">重启</van-button>
+        </div>
+      </div>
+    </van-popup>
+
+    <van-popup v-model:show="showDatePicker" destroy-on-close position="bottom" :style="{ height: '50%' }">
+      <van-date-picker v-model="showDatePickerVal" @confirm="showPickerConfirm" @cancel="showDatePicker = false" />
+    </van-popup>
   </div>
 </template>
 
@@ -48,6 +82,7 @@ import { routingInfos } from "@utility/generalVariables"
 import useInfoStore from '@store/useInfoStore'
 import useFixedData from "@store/useFixedData.js"
 import useRouterStore from "@store/useRouterStore.js";
+import dayjs from 'dayjs';
 
 const router = useRouterStore()
 const fixedData = useFixedData()
@@ -63,11 +98,52 @@ const props = defineProps({
 const routingInformation = routingInfos['tasks']
 const infoData = ref(props.info);
 const timeout = ref(null);
+const showDelay = ref(false);
+const showDatePicker = ref(false);
+const showDatePickerVal = ref([])
+const todaySDate = dayjs(new Date()).format('YYYY-MM-DD')
+const showStartDelayData = ref('');
+const showEndtDelayData = ref('');
+const showDateType = ref('');
 
 watch(() => props.info, (newValue) => {
   initializeData(newValue.id)
 })
 
+function showPickerConfirm({ selectedValues }) {
+  const dates = selectedValues.join('-')
+  if(showDateType.value = 'showStartDelayData') {
+    showStartDelayData.value = dates
+  }
+
+  if(showDateType.value = 'showEndtDelayData') {
+    showEndtDelayData.value = dates
+  }
+
+  showDatePicker.value = false
+}
+
+function showDatePickerCli(type) {
+  showDateType.value = type
+  const types = type == 'showStartDelayData' ? showStartDelayData.value : showEndtDelayData.value
+  showDatePickerVal.value = types.split('-')
+  showDatePicker.value = true
+}
+
+function restartTask() {
+  showStartDelayData.value = infoData.value.startDate ? infoData.value.startDate : dayjs().format("YYYY-MM-DD")
+  showEndtDelayData.value = infoData.value.endDate ? infoData.value.endDate : dayjs().format("YYYY-MM-DD")
+  showDelay.value = true
+}
+function delayTimeEvent() {
+  const id = infoData.value.id
+  requests.post(TASK_OPERATION, { id, status: 0, startDate: showStartDelayData.value, endDate: showEndtDelayData.value }).then(({ data }) => {
+    toastSuccess('操作成功')
+    showDelay.value = false
+    getTaskDetails(id)
+  })
+}
+
 function completeTheTask(status) {
   const id = infoData.value.id
   requests.post(TASK_OPERATION, { id, status }).then(({ data }) => {
@@ -139,7 +215,20 @@ useLifecycle({
     margin-bottom: 20px;
   }
 }
+
 .info {
   margin: 8px 14px 30px 14px;
 }
+
+.newModuleAdded {
+  padding: 45px 25px 45px 25px;
+}
+
+.topTitle {
+  top: 14px;
+}
+
+.boxLxr {
+  max-height: 180px;
+}
 </style>

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/pageComponents/thread/threadInfo.vue

@@ -140,7 +140,7 @@ function confirmTransfer() {
     return toastText('请选择要转移的人员')
   }
 
-  requests.post(TRANSFER_CLUES, { ids: props.info.id, inchargerId: dialogSelection.value.value }).then((res) => {
+  requests.post(TRANSFER_CLUES, { id: props.info.id, inchargerId: dialogSelection.value.value }).then((res) => {
     toastSuccess('转移成功')
     showDialog.value = false
     setTimeout(() => {

+ 3 - 3
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/tabbar/home/component/dataSummary.vue

@@ -20,7 +20,7 @@
                 {{ dataSummary?.customDataSummary?.newNum || 0 }}
               </span> 人
             </div>
-            <div class="text-size-small text-[#999]" style="width: 60%">
+            <div class="text-size-small text-[#999]" style="width: 60%" v-if="false">
               转成交客户 <span class="ml-1 text-[#FFBD27]">
                 {{ dataSummary?.closeDealNum?.newNum || 0 }}
               </span> 人
@@ -41,14 +41,14 @@
             </div>
             <div class="text-size-small text-[#999]" style="width: 60%;">
               商机赢单 <span class="ml-1 text-[#51C2FF]">
-                {{ dataSummary?.businessOpportunityDataSummary?.losting || 0 }}
+                {{ dataSummary?.businessOpportunityDataSummary?.winning || 0 }}
               </span> 个
             </div>
           </div>
           <div class="flex mt-2">
             <div class="text-size-small text-[#999]" style="width: 40%;">
               输单商机 <span class="ml-1 text-[#51C2FF]">
-                {{ dataSummary?.businessOpportunityDataSummary?.winning || 0 }}
+                {{ dataSummary?.businessOpportunityDataSummary?.losting || 0 }}
               </span> 个
             </div>
             <div class="text-size-small text-[#999]" style="width: 60%;">

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 2 - 2
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/WeiXinCorpController.java


+ 15 - 3
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/ContractServiceImpl.java

@@ -12,6 +12,7 @@ import com.management.platform.entity.vo.SysRichFunction;
 import com.management.platform.mapper.*;
 import com.management.platform.service.ContractService;
 import com.management.platform.service.ExcelExportService;
+import com.management.platform.service.SysDictService;
 import com.management.platform.util.ExcelUtil;
 import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.MessageUtils;
@@ -84,6 +85,8 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> i
     private ContractTypeSecMapper contractTypeSecMapper;
     @Autowired
     private ContractPayCustomizedMapper contractPayCustomizedMapper;
+    @Resource
+    private SysDictService sysDictService;
 
     @Resource
     private CompanyDingdingMapper companyDingdingMapper;
@@ -1701,9 +1704,18 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> i
         HttpRespMsg respMsg = new HttpRespMsg();
         Contract contract = contractMapper.selectById(id);
         if (contract.getTypeId()!=null){
-            ContractType contractType = contractTypeMapper.selectById(contract.getTypeId());
-            if (contractType!=null){
-                contract.setTypeName(contractType.getTypeName());
+            SysDict dict = sysDictService.getById(contract.getTypeId());
+            if (dict!=null){
+                contract.setTypeName(dict.getName());
+            }
+        }
+        ContractPayment contractPayment = contractPaymentMapper.selectOne(new QueryWrapper<ContractPayment>().eq("is_payed", 0).eq("contract_id", contract.getId()).orderByAsc("id").last(" limit 1"));
+        if (contractPayment!=null){
+            if (contractPayment.getPayDate()!=null){
+                contract.setNextPaymentDate(contractPayment.getPayDate());
+            }
+            if (contractPayment.getAmount()!=null){
+                contract.setNextPaymentAmount(contractPayment.getAmount());
             }
         }
         List<ContractCustom> selectedList = contractCustomMapper.selectList(new QueryWrapper<ContractCustom>().eq("contract_id", contract.getId()));

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 2 - 2
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/UserServiceImpl.java