浏览代码

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

zhouyy 3 月之前
父节点
当前提交
f0d46f0cea

+ 9 - 3
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/pageComponents/tasks/addEditor.vue

@@ -181,7 +181,7 @@
 
       <!-- 选择时间 -->
       <van-popup v-model:show="showDateTimePicker" destroy-on-close position="bottom" :style="{ height: '50%' }">
-        <van-time-picker v-model="showDatePickerTimeVal" @confirm="showPickerTimeConfirm" @cancel="showDateTimePicker = false" />
+        <van-time-picker v-model="showDatePickerTimeVal" @confirm="showPickerTimeConfirm" @cancel="showDateTimePicker = false" :filter="filterTimePicker" />
       </van-popup>
     </div>
   </div>
@@ -256,6 +256,13 @@ const contactDisabled = computed(() => {
   return false
 })
 
+function filterTimePicker(type, options) {
+  if (type === 'minute') {
+    return options.filter(option => Number(option.value) % 30 === 0);
+  }
+  return options;
+}
+
 function onSubmit() {
   formFormRef.value.getJsonData().then((res) => {
     let formValue = {
@@ -477,8 +484,7 @@ function initializeData() {
     taskTypeName: fixedFieldTaskType.find(item => item.value == taskType)?.label || '',
     repeatTypeName: fixedFieldRepetitiveType.find(item => item.value == repeatType)?.label || ''
   }
-  console.log(vantFormVal.value, '<========= vantFormVal.value')
-  console.log(row, '<========= vantFormVal.value')
+
   const list = repeatDesignDay && repeatDesignDay.split(',') || []
   customeDate.value = (list || []).map(item => {
     return {

+ 10 - 3
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/pageComponents/tasks/detail.vue

@@ -71,7 +71,7 @@
 
     <!-- 选择时间 -->
     <van-popup v-model:show="showDateTimePicker" destroy-on-close position="bottom" :style="{ height: '50%' }">
-      <van-time-picker v-model="showDatePickerTimeVal" @confirm="showPickerTimeConfirm" @cancel="showDateTimePicker = false" />
+      <van-time-picker v-model="showDatePickerTimeVal" @confirm="showPickerTimeConfirm" @cancel="showDateTimePicker = false" :filter="filterTimePicker" />
     </van-popup>
   </div>
 </template>
@@ -122,6 +122,13 @@ watch(() => props.info, (newValue) => {
   initializeData(newValue.id)
 })
 
+function filterTimePicker(type, options) {
+  if (type === 'minute') {
+    return options.filter(option => Number(option.value) % 30 === 0);
+  }
+  return options;
+}
+
 function showPickerTimeConfirm({ selectedValues }) {
   if(showDateType.value == 'showStartDelayData') {
     showStartDelayData.value = `${showDatePickerVal.value.join('-')} ${selectedValues.join(':')}` 
@@ -153,8 +160,8 @@ function showDatePickerCli(type) {
 }
 
 function restartTask() {
-  showStartDelayData.value = infoData.value.startDate ? infoData.value.startDate : dayjs().format("YYYY-MM-DD HH:mm")
-  showEndtDelayData.value = infoData.value.endDate ? infoData.value.endDate : dayjs().format("YYYY-MM-DD HH:mm")
+  showStartDelayData.value = infoData.value.startDate ? infoData.value.startDate : `${dayjs().format("YYYY-MM-DD HH")}:00`
+  showEndtDelayData.value = infoData.value.endDate ? infoData.value.endDate : `${dayjs().format("YYYY-MM-DD HH")}:00`
   showDelay.value = true
 }
 function delayTimeEvent() {

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

@@ -114,11 +114,11 @@
         </el-form-item> -->
         <el-form-item label="开始时间:" class="w50">
           <el-date-picker v-model="form.startDate" type="datetime" placeholder="选择日期" value-format="YYYY-MM-DD HH:mm" format="YYYY-MM-DD HH:mm"
-            :disabled="disabledList && disabledList.includes('startDate')"  />
+            :disabled="disabledList && disabledList.includes('startDate')" :disabled-minutes="disableMinute" />
         </el-form-item>
         <el-form-item label="截止时间:" class="w50">
           <el-date-picker v-model="form.endDate" type="datetime" placeholder="选择日期" value-format="YYYY-MM-DD HH:mm" format="YYYY-MM-DD HH:mm"
-            :disabled="disabledList && disabledList.includes('endDate')"  />
+            :disabled="disabledList && disabledList.includes('endDate')" :disabled-minutes="disableMinute" />
         </el-form-item>
       </el-form>
       <GenerateForm ref="generateFormRef" :data="generateFormData" :value="form" />

+ 1 - 0
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/biReport/cusReportForm/index.vue

@@ -52,6 +52,7 @@ function previewReport(row: any) {
       rangeFilterData: json.rangeFilterData,
       tableData: json.tableData
     }))
+    sessionStorage.setItem('reportJson', JSON.stringify(json.addEditData))
     router.push('/biReport/reportView')
   })
 }

+ 19 - 9
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/biReport/dragEdit/index.vue

@@ -3,7 +3,7 @@ import { ref, onMounted, reactive, watch, inject } from "vue";
 import { useRouter, useRoute } from 'vue-router'
 import { post, get } from "@/utils/request";
 import { GET_STRUCT_BY_TABLE_NAME, ADD_OR_UPDATE_REPORT_FORM } from "../api"
-import { generateSql, rangeGetSql } from "../function"
+import { generateSql, rangeGetSql, translatingArray } from "../function"
 import { ElMessage, ElMessageBox } from 'element-plus'
 
 import { VueDraggable } from 'vue-draggable-plus'
@@ -90,21 +90,22 @@ function saveReport() {
   
   const { finalSql } = preMethod()
 
-  // 需要转存的 JSON
-  const formJson = {
-    addEditData,
-    tableData: tableData.value,
-    rangeFilterData: rangeFilterData,
-  }
-
   const formFieldHead = tableData.value.map((item: any) => {
     return {
       tableName: item.tableName,
       columnName: item.columnName,
-      columnVal: item.columnComment
+      columnVal: item.columnComment,
+      tableAlias: item.seqPrefix
     }
   })
 
+  // 需要转存的 JSON
+  const formJson = {
+    addEditData,
+    tableData: tableData.value,
+    rangeFilterData: rangeFilterData,
+  }
+
   const { reportFormName, description, userAccessList = [], visibleRangeData = [], parentStoreId, privilege, id } = addEditData.addFormVal
 
   const formVal: any = {
@@ -117,6 +118,7 @@ function saveReport() {
     departmentIds: visibleRangeData.filter((item: any) => !item.isUser).map((item: any) => item.id).join(','),
     formJson: JSON.stringify(formJson),
     formFieldHead: JSON.stringify(formFieldHead),
+    formTransConditionJson: translatingArray(rangeFilterData).length ? JSON.stringify(translatingArray(rangeFilterData)) : '',
   }
 
   if(id) {
@@ -228,6 +230,10 @@ function listOnClone(clonedItem: any) {
 async function getCollapseListData() {
   const { mindMapJSON = {} } = addEditData
   const selectNodes = mindMapJSON?.selectNodes
+  const alphabet = 'abcdefghijklmnopqrstuvwxyz';
+  selectNodes.forEach((obj: any, index: number) => {
+    obj.data.seqPrefix = alphabet[index % 26]; // 通过取余处理
+  });
   allLoading.collapseListLoading = true
   for (let i in selectNodes) {
     console.log(selectNodes, '<===== selectNodes')
@@ -238,6 +244,10 @@ async function getCollapseListData() {
       item.dictCode = dictCode
     });
 
+    res.data.columnList.forEach((obj: any) => {
+      obj.seqPrefix = selectNodes[i].data.seqPrefix
+    });
+
     selectNodes[i].list = res.data
   }
   collapseList.value = selectNodes

+ 25 - 8
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/biReport/dragEdit/previewTable.vue

@@ -5,7 +5,7 @@ import { GET_RES_BY_FORM_JSON } from '../api';
 import type { TableColumnCtx, SummaryMethod  } from 'element-plus'
 
 import rangeFilter from "./rangeFilter.vue";
-import { rangeGetSql } from '../function';
+import { rangeGetSql, translatingArray } from '../function';
 import { formatDate } from '@/utils/times';
 import { dropdownBoxFieldIntegration } from "../list"
 
@@ -84,12 +84,13 @@ function mergeColumns({ row, rowIndex, columnIndex }: { row: any, rowIndex: numb
 function renderingLabel(row: any, item: any) {
   const { filed } = item
   const list = dropdownBoxFieldIntegration.filter(em => `${em.indicate}_${em.fieldName}` == filed)
-  if(list.length) {
-    const childList = list[0].list
-    return childList.find((dd: any) => dd.value == row[item.label])?.label
-  } else {
+  console.log(list, '<==== list')
+  // if(list.length) {
+  //   const childList = list[0].list
+  //   return childList.find((dd: any) => dd.value == row[item.label])?.label
+  // } else {
     return row[item.label]
-  }
+  // }
 }
 
 function determinationOfDataRange() {
@@ -109,8 +110,21 @@ function setDataRange() {
 }
 
 function getData() {
+  const formTransConditionJsonList = translatingArray(dataRangeData.value)
+  const formFieldHead = tableHeader.value.map((item: any) => {
+    return {
+      tableName: item.tableName,
+      columnName: item.columnName,
+      columnVal: item.columnVal,
+      tableAlias: item.seqPrefix
+    }
+  })
   tableLoading.value = true
-  post(GET_RES_BY_FORM_JSON, { formJson: SQLstr.value }).then(res => {
+  post(GET_RES_BY_FORM_JSON, { 
+    formJson: SQLstr.value,
+    formTransConditionJson: formTransConditionJsonList.length ? JSON.stringify(formTransConditionJsonList) : '',
+    formFieldHead: JSON.stringify(formFieldHead)
+  }).then(res => {
     tableData.value = res.data
     setTimeout(() => {
       tableKey.value++
@@ -127,6 +141,10 @@ async function initializedData(SQL: string, rangeFilterList: any[], tableData: a
     filed: `${item.tableName}_${item.columnName}`,
     label: item.columnComment,
     type: item.dataType,
+    seqPrefix: item.seqPrefix,
+    tableName: item.tableName,
+    columnName: item.columnName,
+    columnVal: item.columnComment
   }))
   
   driginalDataTableList.value = tableData
@@ -134,7 +152,6 @@ async function initializedData(SQL: string, rangeFilterList: any[], tableData: a
   dataRangeData.value = rangeFilterList
   SQLstr.value = SQL
 
-  console.log(tableHeader.value, '<==== tableHeader.value')
   getData()
 }
 

+ 24 - 2
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/biReport/function.ts

@@ -78,7 +78,7 @@ export function rangeGetSql(rangeFilterList: any[] = [], addEditData: addEditDat
 
     // 下拉框
     if(item.valueFlag) {
-      sql = `${seqPrefix}.${item.columnName} = '${item.filterValueThree}`
+      sql = `${seqPrefix}.${item.columnName} = '${item.filterValueThree}'`
     }
 
     return {
@@ -87,7 +87,29 @@ export function rangeGetSql(rangeFilterList: any[] = [], addEditData: addEditDat
     }
   })
 
-  return `where ${newList.map((item: any) => item.strSQL).join(' and ')}`
+  return newList.length ? `where ${newList.map((item: any) => item.strSQL).join(' and ')}` : ''
+}
+
+/**
+ * 根据数据范围生成需要转译的(人名,部门)的数组
+ * @param addEditData 新建表单页面数据
+ * @param rangeFilterList 数据范围
+ * @returns Array
+ */
+export function translatingArray(rangeFilterList: any[] = []) {
+  // 只需要过滤出需要转译的(人名,部门)的数组
+  const newRangeFilterList = rangeFilterList.filter(item => item.transType > 0 && item.filterValueThree)
+  // const newRangeFilterList = rangeFilterList
+  const list = newRangeFilterList.map((item: any) => {
+    return {
+      tblName: item.tableName,
+      tblAlias: item.seqPrefix,
+      colName: item.columnName,
+      useVal: item.filterValueThree,
+      transType: item.transType
+    }
+  })
+  return list
 }
 
 /**

+ 14 - 0
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/tasks/index.vue

@@ -187,6 +187,7 @@
               value-format="YYYY-MM-DD HH:mm"
               format="YYYY-MM-DD HH:mm"
               style="width: 300px"
+              :disabled-minutes="disableMinute"
             />
           </el-form-item>
           <div class="text-[#ff4e4e] ml-8">重启任务的时间不能在今天之前</div>
@@ -250,6 +251,19 @@ function viewsSwitching() {
 
 }
 
+function disableMinute() {
+  // 只允许选择 00 和 30 分钟
+  const allowed = [0, 30];
+  const disabled = [];
+  for (let i = 0; i < 60; i++) {
+    if (!allowed.includes(i)) {
+      disabled.push(i);
+    }
+  }
+  // return disabled;
+  return disabled;
+}
+
 function closeTaskModal() {
   taskModalVisible.value = false;
   taskForm.value = null;

+ 4 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue

@@ -4007,7 +4007,9 @@ a {
 
                 console.log(chosenList, '<===== chosenList')
                 // console.log(parentId)
-                this.addForm.deptIds = [...new Set(chosenList.map(item => item.parentId))].filter(item => item != 0);
+                // this.addForm.deptIds = [...new Set(chosenList.map(item => item.parentId))].filter(item => item != 0);
+                this.addForm.deptIds = chosenList.filter(item => !item.isUser).map(item => item.id);
+                console.log(this.addForm.deptIds)
                 this.chooseParticipVisible = false;
             },
 
@@ -5443,6 +5445,7 @@ a {
                                 return;
                             }
                         }
+
                         this.addLoading = true;
                         let formData = new FormData();
                         formData.append("name", this.addForm.name);

+ 4 - 4
fhKeeper/formulahousekeeper/timesheet/src/views/team/index.vue

@@ -367,7 +367,7 @@
         </el-dialog>
 
         <!-- 新增部门 -->
-        <el-dialog :title="depTitle" :visible.sync="departmentVisible" width="500px" >
+        <el-dialog :title="depTitle" :visible.sync="departmentVisible" width="600px" >
             <el-form ref="depForm" :model="depForm" :rules="depRules" label-width="130px">
                 <el-form-item :label="$t('departmentname')" prop="name">
                     <el-input v-model="depForm.name" :placeholder="$t('peaseenterthe')" clearable style="width: 100%" v-if="user.userNameNeedTranslate != '1'"></el-input>
@@ -382,7 +382,7 @@
                           <span style="float: right; color: #8492a6; font-size: 13px">{{ item.jobNumber }}</span>
                         </el-option>
                     </el-select>
-                    <selectCat :size="'medium'" :filterable="true" :clearable="true" :widthStr="'360'" v-if="user.userNameNeedTranslate == '1'" :subject="users" :subjectId="depForm.managerId" :distinction="'3'" @selectCal="selectCal"></selectCat>
+                    <selectCat :size="'medium'" :filterable="true" :clearable="true" :widthStr="'300'" v-if="user.userNameNeedTranslate == '1'" :subject="users" :subjectId="depForm.managerId" :distinction="'3'" @selectCal="selectCal"></selectCat>
                 </el-form-item>
 
                 <!-- 其他负责人 --> 
@@ -393,14 +393,14 @@
                           <span style="float: right; color: #8492a6; font-size: 13px">{{ item.jobNumber }}</span>
                         </el-option>
                     </el-select>
-                    <selectCat :subject="users" :subjectId="depForm.otherManagerIds" :size="'medium'" :filterable="true" :widthStr="'360'" :multiSelect="true" v-if="user.userNameNeedTranslate == '1' && departmentVisible"  :distinction="'4'" :clearable="true" @selectCal="selectCal"></selectCat>
+                    <selectCat :subject="users" :subjectId="depForm.otherManagerIds" :size="'medium'" :filterable="true" :widthStr="'300'" :multiSelect="true" v-if="user.userNameNeedTranslate == '1' && departmentVisible"  :distinction="'4'" :clearable="true" @selectCal="selectCal"></selectCat>
                 </el-form-item>
                 <!-- 直属领导 -->
                 <el-form-item :label="$t('leadership')" prop="reportAuditUserid" v-if="user.timeType.needDeptAudit">
                     <el-select v-model="depForm.reportAuditUserid" v-if="user.userNameNeedTranslate != '1'" filterable  clearable  :placeholder="$t('defaultText.pleaseChoose')" style="width: 100%">
                         <el-option v-for="item in users" :key="item.id" :label="item.name" :value="item.id"></el-option>
                     </el-select>
-                    <selectCat :size="'medium'" :widthStr="'360'" v-if="user.userNameNeedTranslate == '1'" :subject="users" :subjectId="depForm.reportAuditUserid" :distinction="'5'" @selectCal="selectCal"></selectCat>
+                    <selectCat :size="'medium'" :widthStr="'300'" v-if="user.userNameNeedTranslate == '1'" :subject="users" :subjectId="depForm.reportAuditUserid" :distinction="'5'" @selectCal="selectCal"></selectCat>
                 </el-form-item>
                 <!-- 是否推送到SAP -->
                 <el-form-item :label="$t('tuiSongZhiSap')" prop="pushToSap" v-if="user.companyId==3092">