Преглед изворни кода

Merge branch 'develop/iscs' of http://192.168.0.253:3000/bozzysadmb/ISCS_Standard_front into develop/iscs

wyn пре 2 месеци
родитељ
комит
a372ec2229

+ 2 - 2
src/api/basic/mapconfig/index.ts

@@ -21,8 +21,8 @@ export interface PageParam {
 export const getIsMapPage = async (params: PageParam) => {
   return await request.get({ url: '/iscs/map/getMapPage', params })
 }
-export const getNotUsedMap = async (mapId:number) => {
-  return await request.get({ url: '/iscs/map/getNotUsedMap',params: { mapId } })
+export const getNotUsedMap = async () => {
+  return await request.get({ url: '/iscs/map/getNotUsedMap' })
 }
 // 查询地图参数详细
 export const selectIsMapById = async (id: number) => {

+ 1 - 2
src/api/material/doorException/index.ts

@@ -16,8 +16,7 @@ export interface DoorExceptionQuery {
 //  (传递参数exceptionType是1就是柜门异常)
 export const doorExceptionPage = async (params: DoorExceptionQuery) => {
   return await request.get({
-    // url: '/iscs/cabinet-open-record/getCabinetOpenRecordPage',
-    url: '/iscs/exception/getExceptionPage',
+    url: '/iscs/cabinet-open-record/getCabinetOpenRecordPage',
     params
   })
 }

+ 1 - 2
src/api/material/exception/index.ts

@@ -15,8 +15,7 @@ export interface ExceptionQuery {
 // 查询物资异常列表 (传递参数exceptionType是1就是柜门异常 现在是归还异常)
 export const returnExceptionPage = async (params: ExceptionQuery) => {
   return await request.get({
-    // url: '/iscs/exception/getExceptionPage',
-    url: '/iscs/exception-misplace/getExceptionMisplacePage',
+    url: '/iscs/exception/getExceptionPage',
     params
   })
 }

+ 1 - 1
src/api/material/manualException/index.ts

@@ -47,7 +47,7 @@ export const listManualException = async (params: ManualExceptionQuery) => {
 
 // 查询人工传入异常详情
 export const getExceptionInfo = async (id: number) => {
-  return await request.get({ url: '/iscs/exception/selectExceptionById', params: { id: id } })
+  return await request.get({ url: '/iscs/exception/selectExceptionById', params: { exceptionId: id } })
 }
 
 // 新增人工传入异常

+ 11 - 25
src/layout/components/ToolHeader.vue

@@ -14,9 +14,8 @@ import TenantVisit from '@/layout/components/TenantVisit/index.vue'
 import { useAppStore } from '@/store/modules/app'
 import { useDesign } from '@/hooks/web/useDesign'
 import { checkPermi } from '@/utils/permission'
-import * as Agent from '@/api/system/notify/agent/index'
 // 先导入图片
-import todoIcon from '../../assets/images/topTodo.png'
+import todoIcon from '../../assets/images/topTodo.png';
 
 const { getPrefixCls, variables } = useDesign()
 
@@ -59,21 +58,6 @@ export default defineComponent({
     // 代办数量
     const router = useRouter()
     const documentTodos = ref(0)
-    const queryParams = reactive({
-      pageNum: 1,
-      pageSize: -1,
-      queryType: '0', // 默认全部
-      startTime: '',
-      endTime: ''
-    })
-    onMounted(() => {
-      getAgentNum()
-    })
-    const getAgentNum = async () => {
-      const agentData = await Agent.getMyAgent(queryParams)
-      documentTodos.value = agentData.handleAgent.length
-      console.log(agentData, 'agentData')
-    }
     // 代办:处理跳转逻辑
     const handleNewPageJump = () => {
       router.push({ name: 'Agent' })
@@ -97,11 +81,11 @@ export default defineComponent({
           </div>
         ) : undefined}
         <div class="h-full flex items-center">
-          {hasTenantVisitPermission.value ? <TenantVisit /> : undefined}
+          {hasTenantVisitPermission.value ? <TenantVisit/> : undefined}
           {screenfull.value ? (
             <Screenfull class="custom-hover" color="var(--top-header-text-color)"></Screenfull>
           ) : undefined}
-          {search.value ? <RouterSearch isModal={false} /> : undefined}
+          {search.value ? <RouterSearch isModal={false}/> : undefined}
           {size.value ? (
             <SizeDropdown class="custom-hover" color="var(--top-header-text-color)"></SizeDropdown>
           ) : undefined}
@@ -114,9 +98,14 @@ export default defineComponent({
           {message.value ? (
             <Message class="custom-hover" color="var(--top-header-text-color)"></Message>
           ) : undefined}
-          <div class="custom-hover p-2 cursor-pointer" onClick={handleNewPageJump} title="待办">
+          <div
+            class="custom-hover p-2 cursor-pointer"
+            onClick={handleNewPageJump}
+            title="待办"
+          >
             {documentTodos.value > 0 ? (
-              <ElBadge value={documentTodos.value} max={10} class="itemAgent" badge-style="">
+              <ElBadge value={documentTodos.value} max={10} class="item">
+                // 然后在模板中使用
                 <img
                   src={todoIcon}
                   style="width: 1.2em; height: 1.2em; vertical-align: middle;"
@@ -124,6 +113,7 @@ export default defineComponent({
                 />
               </ElBadge>
             ) : (
+              // 然后在模板中使用
               <img
                 src={todoIcon}
                 style="width: 1.2em; height: 1.2em; vertical-align: middle;"
@@ -150,8 +140,4 @@ $prefix-cls: #{$namespace}-tool-header;
   margin-top: 10px;
   margin-right: 40px;
 }
-.itemAgent {
-  margin-top: -8px;
-  margin-right: 30px;
-}
 </style>

+ 40 - 59
src/views/Exceptions/Exception/index.vue

@@ -42,7 +42,12 @@
         />
       </el-form-item>
       <el-form-item label="状态" prop="status">
-        <el-select v-model="queryParams.status" placeholder="请选择状态" clearable class="!w-240px">
+        <el-select
+          v-model="queryParams.status"
+          placeholder="请选择状态"
+          clearable
+          class="!w-240px"
+        >
           <el-option
             v-for="dict in getIntDictOptions(DICT_TYPE.MATERIAL_EXCEPTION_STATUS)"
             :key="dict.value"
@@ -60,9 +65,8 @@
           range-separator="-"
           start-placeholder="开始日期"
           end-placeholder="结束日期"
-          class="!w-240px"
-          @clear="handleClearTime(createTime)"
         />
+
       </el-form-item>
       <el-form-item label="异常解除时间">
         <el-date-picker
@@ -73,27 +77,22 @@
           range-separator="-"
           start-placeholder="开始日期"
           end-placeholder="结束日期"
-          class="!w-240px"
-          @clear="handleClearTime2(handleTime)"
         />
       </el-form-item>
       <el-form-item>
-        <el-button @click="handleQuery">
-          <Icon icon="ep:search" class="mr-5px" />
-          搜索
-        </el-button>
-        <el-button @click="resetQuery">
-          <Icon icon="ep:refresh" class="mr-5px" />
-          重置
-        </el-button>
+        <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
+        <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
       </el-form-item>
     </el-form>
   </ContentWrap>
 
   <!-- 列表 -->
   <ContentWrap>
-    <el-table v-loading="loading" :data="exceptionList">
-      <el-table-column label="编号" align="center" prop="id" />
+    <el-table
+      v-loading="loading"
+      :data="exceptionList"
+    >
+      <el-table-column label="编号" align="center" prop="misplaceId" />
       <el-table-column label="物资柜" align="center" prop="loanFromName" />
       <el-table-column label="物资名称" align="center" prop="materialsName" />
       <el-table-column label="归还柜" align="center" prop="restitutionToName" />
@@ -103,16 +102,8 @@
           <dict-tag :type="DICT_TYPE.MATERIAL_EXCEPTION_STATUS" :value="scope.row.status" />
         </template>
       </el-table-column>
-      <el-table-column
-        label="异常发生时间"
-        align="center"
-        prop="occurTime"
-      />
-      <el-table-column
-        label="异常解除时间"
-        align="center"
-        prop="handleTime"
-      />
+      <el-table-column label="异常发生时间" align="center" prop="occurTime" :formatter="dateFormatter" />
+      <el-table-column label="异常解除时间" align="center" prop="handleTime" :formatter="dateFormatter" />
     </el-table>
     <Pagination
       v-model:total="total"
@@ -125,10 +116,10 @@
 
 <script lang="ts" setup>
 import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
-import { dateFormatter,getDateRange } from '@/utils/formatTime'
+import { dateFormatter } from '@/utils/formatTime'
 import * as ExceptionApi from '@/api/material/exception'
 import * as CabinetApi from '@/api/material/information'
-import { returnExceptionPage } from '@/api/material/exception'
+import {returnExceptionPage} from "@/api/material/exception";
 
 defineOptions({ name: 'MaterialException' })
 
@@ -164,19 +155,13 @@ const getList = async () => {
   loading.value = true
   try {
     // 处理时间范围
-    // if (createTime.value?.length == 2) {
-    //   queryParams.startTime = getDateRange(createTime.value[0])
-    //   queryParams.endTime = getDateRange(createTime.value[1])
-    // }
-    if (Array.isArray(createTime.value) && createTime.value.length == 2) {
-      const [startTime, endTime] = getDateRange(createTime.value[0], createTime.value[1])
-      queryParams.startTime = startTime
-      queryParams.endTime = endTime
+    if (createTime.value?.length === 2) {
+      queryParams.startTime = dateFormatter(createTime.value[0])
+      queryParams.endTime = dateFormatter(createTime.value[1])
     }
-    if (Array.isArray(handleTime.value) && handleTime.value?.length == 2) {
-      const [startTime, endTime] = getDateRange(handleTime.value[0], handleTime.value[1])
-      queryParams.handleStartTime = startTime
-      queryParams.handleEndTime = endTime
+    if (handleTime.value?.length === 2) {
+      queryParams.handleStartTime = dateFormatter(handleTime.value[0])
+      queryParams.handleEndTime = dateFormatter(handleTime.value[1])
     }
     const data = await ExceptionApi.returnExceptionPage(queryParams)
     exceptionList.value = data.list
@@ -190,7 +175,7 @@ const getList = async () => {
 const getCabinetList = async () => {
   const data = await CabinetApi.getMaterialsCabinets({ pageNo: 1, pageSize: -1 })
   if (data?.list) {
-    cabinets.value = data.list.map((item) => ({
+    cabinets.value = data.list.map(item => ({
       value: item.id,
       label: item.cabinetName
     }))
@@ -207,29 +192,25 @@ const handleQuery = () => {
 const resetQuery = () => {
   createTime.value = null
   handleTime.value = null
-  queryParams.startTime = undefined
-  queryParams.endTime = undefined
-  queryParams.handleStartTime = undefined
-  queryParams.handleEndTime = undefined
   queryFormRef.value?.resetFields()
   handleQuery()
 }
 
-/** 清空时间范围 */
-const handleClearTime = (value: [Date, Date] | null) => {
-  if (!value) {
-    queryParams.startTime = undefined
-    queryParams.endTime = undefined
-  }
-}
-
-/** 清空处理时间范围 */
-const handleClearTime2 = (value: [Date, Date] | null) => {
-  if (!value) {
-    queryParams.handleStartTime = undefined
-    queryParams.handleEndTime = undefined
-  }
-}
+// /** 清空时间范围 */
+// const handleClearTime = (value: [Date, Date] | null) => {
+//   if (!value) {
+//     queryParams.startTime = undefined
+//     queryParams.endTime = undefined
+//   }
+// }
+//
+// /** 清空处理时间范围 */
+// const handleClearTime2 = (value: [Date, Date] | null) => {
+//   if (!value) {
+//     queryParams.handleStartTime = undefined
+//     queryParams.handleEndTime = undefined
+//   }
+// }
 
 /** 初始化 */
 onMounted(async () => {

+ 30 - 38
src/views/Exceptions/doorException/index.vue

@@ -47,7 +47,6 @@
           range-separator="-"
           start-placeholder="开始日期"
           end-placeholder="结束日期"
-          @clear="handleClearTime(createTime)"
           class="!w-290px"
         />
       </el-form-item>
@@ -60,7 +59,6 @@
           range-separator="-"
           start-placeholder="开始日期"
           end-placeholder="结束日期"
-          @clear="handleClearTime2(handleTime)"
           class="!w-290px"
         />
       </el-form-item>
@@ -77,15 +75,15 @@
       v-loading="loading"
       :data="exceptionList"
     >
-      <el-table-column label="编号" align="center" prop="id" />
-      <el-table-column label="物资柜" align="center" prop="exceptionCategoryName" />
+      <el-table-column label="编号" align="center" prop="misplaceId" />
+      <el-table-column label="物资柜" align="center" prop="loanFromName" />
       <el-table-column label="状态" align="center" prop="status">
         <template #default="scope">
           <dict-tag :type="DICT_TYPE.MATERIAL_EXCEPTION_STATUS" :value="scope.row.status" />
         </template>
       </el-table-column>
-      <el-table-column label="异常发生时间" align="center" prop="raiseTime" />
-      <el-table-column label="异常解除时间" align="center" prop="handleTime" />
+      <el-table-column label="异常发生时间" align="center" prop="occurTime" :formatter="dateFormatter" />
+      <el-table-column label="异常解除时间" align="center" prop="handleTime" :formatter="dateFormatter" />
     </el-table>
     <Pagination
       v-model:total="total"
@@ -98,7 +96,7 @@
 
 <script lang="ts" setup>
 import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
-import { dateFormatter,getDateRange } from '@/utils/formatTime'
+import { dateFormatter } from '@/utils/formatTime'
 import * as doorExceptionApi from '@/api/material/doorException'
 import * as CabinetApi from '@/api/material/information'
 import {doorExceptionPage} from "@/api/material/doorException";
@@ -153,10 +151,10 @@ const queryParams = reactive({
   exceptionType: '1',
   loanFromId: undefined,
   status: undefined,
-  startRaiseTime: undefined,
-  endRaiseTime: undefined,
-  startHandleTime: undefined,
-  endHandleTime: undefined
+  startTime: undefined,
+  endTime: undefined,
+  handleStartTime: undefined,
+  handleEndTime: undefined
 })
 
 const queryFormRef = ref() // 搜索的表单
@@ -166,15 +164,13 @@ const getList = async () => {
   loading.value = true
   try {
     // 处理时间范围
-    if (Array.isArray(createTime.value) && createTime.value?.length == 2) {
-      const [startTime, endTime] = getDateRange(createTime.value[0], createTime.value[1])
-      queryParams.startRaiseTime = startTime
-      queryParams.endRaiseTime = endTime
+    if (createTime.value?.length === 2) {
+      queryParams.startTime = dateFormatter(createTime.value[0])
+      queryParams.endTime = dateFormatter(createTime.value[1])
     }
-    if (Array.isArray(handleTime.value) && handleTime.value?.length == 2) {
-      const [startTime, endTime] = getDateRange(handleTime.value[0], handleTime.value[1])
-      queryParams.startHandleTime = startTime
-      queryParams.endHandleTime = endTime
+    if (handleTime.value?.length === 2) {
+      queryParams.handleStartTime = dateFormatter(handleTime.value[0])
+      queryParams.handleEndTime = dateFormatter(handleTime.value[1])
     }
     const data = await doorExceptionApi.doorExceptionPage(queryParams)
     exceptionList.value = data.list
@@ -205,29 +201,25 @@ const handleQuery = () => {
 const resetQuery = () => {
   createTime.value = null
   handleTime.value = null
-  queryParams.startRaiseTime = undefined
-  queryParams.endRaiseTime = undefined
-  queryParams.startHandleTime = undefined
-  queryParams.endHandleTime = undefined
   queryFormRef.value?.resetFields()
   handleQuery()
 }
 
-/** 清空时间范围 */
-const handleClearTime = (value: [Date, Date] | null) => {
-  if (!value) {
-    queryParams.startRaiseTime = undefined
-    queryParams.endRaiseTime = undefined
-  }
-}
-
-/** 清空处理时间范围 */
-const handleClearTime2 = (value: [Date, Date] | null) => {
-  if (!value) {
-    queryParams.startHandleTime = undefined
-    queryParams.endHandleTime = undefined
-  }
-}
+// /** 清空时间范围 */
+// const handleClearTime = (value: [Date, Date] | null) => {
+//   if (!value) {
+//     queryParams.startTime = undefined
+//     queryParams.endTime = undefined
+//   }
+// }
+//
+// /** 清空处理时间范围 */
+// const handleClearTime2 = (value: [Date, Date] | null) => {
+//   if (!value) {
+//     queryParams.handleStartTime = undefined
+//     queryParams.handleEndTime = undefined
+//   }
+// }
 
 /** 初始化 */
 onMounted(async () => {

+ 37 - 61
src/views/Exceptions/manualException/index.vue

@@ -79,8 +79,8 @@
           :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
           start-placeholder="开始日期"
           end-placeholder="结束日期"
-          class="!w-240px"
-          @clear="handleClearTime(raiseTime)"
+
+
         />
       </el-form-item>
       <el-form-item label="异常解除时间">
@@ -92,19 +92,12 @@
           range-separator="-"
           start-placeholder="开始日期"
           end-placeholder="结束日期"
-          class="!w-240px"
-          @clear="handleClearTime2(handleTime)"
+
         />
       </el-form-item>
       <el-form-item>
-        <el-button @click="handleQuery">
-          <Icon icon="ep:search" class="mr-5px" />
-          搜索
-        </el-button>
-        <el-button @click="resetQuery">
-          <Icon icon="ep:refresh" class="mr-5px" />
-          重置
-        </el-button>
+        <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
+        <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
       </el-form-item>
     </el-form>
   </ContentWrap>
@@ -117,14 +110,14 @@
       <el-radio-button label="third">已处理</el-radio-button>
     </el-radio-group>
 
-    <el-table v-loading="loading" :data="exceptionList">
-      <el-table-column label="编号" align="center" prop="id" />
+    <el-table
+      v-loading="loading"
+      :data="exceptionList"
+    >
+      <el-table-column label="编号" align="center" prop="exceptionId" />
       <el-table-column label="异常分类" align="center" prop="exceptionCategory">
         <template #default="scope">
-          <dict-tag
-            :type="DICT_TYPE.CLASSIFICATION_OF_EXCEPTIONS"
-            :value="scope.row.exceptionCategory"
-          />
+          <dict-tag :type="DICT_TYPE.CLASSIFICATION_OF_EXCEPTIONS" :value="scope.row.exceptionCategory" />
         </template>
       </el-table-column>
       <el-table-column label="异常来源" align="center" prop="sourceName" />
@@ -136,18 +129,8 @@
           <dict-tag :type="DICT_TYPE.MANUAL_STATUS" :value="scope.row.status" />
         </template>
       </el-table-column>
-      <el-table-column
-        label="异常发生时间"
-        align="center"
-        prop="raiseTime"
-
-      />
-      <el-table-column
-        label="异常解除时间"
-        align="center"
-        prop="handleTime"
-
-      />
+      <el-table-column label="异常发生时间" align="center" prop="raiseTime" :formatter="dateFormatter" />
+      <el-table-column label="异常解除时间" align="center" prop="handleTime" :formatter="dateFormatter" />
       <el-table-column label="操作" align="center">
         <template #default="scope">
           <el-button link type="primary" @click="handleCheck(scope.row)">查看</el-button>
@@ -168,10 +151,10 @@
 
 <script lang="ts" setup>
 import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
-import { dateFormatter,getDateRange } from '@/utils/formatTime'
+import { dateFormatter } from '@/utils/formatTime'
 import * as ExceptionApi from '@/api/material/manualException'
 import ExceptionDetail from './ExceptionDetail.vue'
-import { listManualException } from '@/api/material/manualException'
+import {listManualException} from "@/api/material/manualException";
 
 defineOptions({ name: 'MaterialManualException' })
 
@@ -235,8 +218,7 @@ const queryParams = reactive({
   endHandleTime: undefined,
   startRaiseTime: undefined,
   endRaiseTime: undefined,
-  status: undefined,
-  isUpload:1 //区分人工异常喝物资柜门异常,1是人工
+  status: undefined
 })
 
 const queryFormRef = ref() // 搜索的表单
@@ -253,15 +235,13 @@ const getList = async () => {
   loading.value = true
   try {
     // 处理时间范围
-    if (Array.isArray(raiseTime.value) && raiseTime.value?.length == 2) {
-      const [startTime, endTime] = getDateRange(raiseTime.value[0], raiseTime.value[1])
-      queryParams.startRaiseTime = startTime
-      queryParams.endRaiseTime = endTime
+    if (raiseTime.value?.length === 2) {
+      queryParams.startRaiseTime = dateFormatter(raiseTime.value[0])
+      queryParams.endRaiseTime = dateFormatter(raiseTime.value[1])
     }
-    if (Array.isArray(handleTime.value) && handleTime.value?.length == 2) {
-      const [startTime, endTime] = getDateRange(handleTime.value[0], handleTime.value[1])
-      queryParams.startHandleTime = startTime
-      queryParams.endHandleTime = endTime
+    if (handleTime.value?.length === 2) {
+      queryParams.startHandleTime = dateFormatter(handleTime.value[0])
+      queryParams.endHandleTime = dateFormatter(handleTime.value[1])
     }
     const data = await ExceptionApi.listManualException(queryParams)
     exceptionList.value = data.list
@@ -281,29 +261,25 @@ const handleQuery = () => {
 const resetQuery = () => {
   raiseTime.value = null
   handleTime.value = null
-  queryParams.startRaiseTime = undefined
-  queryParams.endRaiseTime = undefined
-  queryParams.startHandleTime = undefined
-  queryParams.endHandleTime = undefined
   queryFormRef.value?.resetFields()
   handleQuery()
 }
 
-/** 清空时间范围 */
-const handleClearTime = (value: [Date, Date] | null) => {
-  if (!value) {
-    queryParams.startRaiseTime = undefined
-    queryParams.endRaiseTime = undefined
-  }
-}
-
-/** 清空处理时间范围 */
-const handleClearTime2 = (value: [Date, Date] | null) => {
-  if (!value) {
-    queryParams.startHandleTime = undefined
-    queryParams.endHandleTime = undefined
-  }
-}
+// /** 清空时间范围 */
+// const handleClearTime = (value: [Date, Date] | null) => {
+//   if (!value) {
+//     queryParams.startRaiseTime = undefined
+//     queryParams.endRaiseTime = undefined
+//   }
+// }
+//
+// /** 清空处理时间范围 */
+// const handleClearTime2 = (value: [Date, Date] | null) => {
+//   if (!value) {
+//     queryParams.startHandleTime = undefined
+//     queryParams.endHandleTime = undefined
+//   }
+// }
 
 /** 查看详情 */
 const handleCheck = (row: any) => {

+ 4 - 5
src/views/dv/lotoStation/LotoStationForm.vue

@@ -73,7 +73,7 @@ import * as MapconfigApi from '@/api/basic/mapconfig/index'
 import * as  HardwareApi from '@/api/hw/hardware/information/index'
 import * as  MarsDeptApi from '@/api/system/marsdept'
 import {  handleTree } from '@/utils/tree'
-
+import {getNotUsedMap} from "@/api/basic/mapconfig/index";
 defineOptions({ name: 'LotoStationForm' })
 
 const { t } = useI18n() // 国际化
@@ -97,8 +97,7 @@ const formData = ref({
 
 const formRules = reactive({
   lotoName: [{ required: true, message: '锁定站名称不能为空', trigger: 'blur' }],
-  workstationId: [{ required: true, message: '岗位不能为空', trigger: 'blur' }],
-  mapId:[{required:true,message:'地图名称不能为空',trigger:'blur'}],
+  workstationId: [{ required: true, message: '岗位不能为空', trigger: 'blur' }]
 })
 
 const formRef = ref() // 表单 Ref
@@ -107,7 +106,7 @@ const mapOptions = ref([]) // 地图选项
 const hardWareList = ref([]) // 硬件列表
 
 /** 打开弹窗 */
-const open = async (type: string, id?: number,mapId?:number) => {
+const open = async (type: string, id?: number) => {
   dialogVisible.value = true
   dialogTitle.value = t('action.' + type)
   formType.value = type
@@ -126,7 +125,7 @@ const open = async (type: string, id?: number,mapId?:number) => {
   marsOptions.value = handleTree(deptRes.list)
 
   // 获取地图数据 (getNotUsedMap这个接口可以筛选已经被使用的就不再出现 未被使用的才出现)
-  const mapRes = await MapconfigApi.getNotUsedMap(mapId)
+  const mapRes = await MapconfigApi.getNotUsedMap()
   mapOptions.value = mapRes
 
   // 获取硬件数据

+ 3 - 3
src/views/dv/lotoStation/index.vue

@@ -85,7 +85,7 @@
           <el-button
             link
             type="primary"
-            @click="openForm('update', scope.row.id,scope.row.mapId)"
+            @click="openForm('update', scope.row.id)"
             v-hasPermi="['iscs:station:update']"
           >
             修改
@@ -173,8 +173,8 @@ const resetQuery = () => {
 
 /** 添加/修改操作 */
 const formRef = ref()
-const openForm = (type: string, id?: number,mapId?:number) => {
-  formRef.value.open(type, id,mapId)
+const openForm = (type: string, id?: number) => {
+  formRef.value.open(type, id)
 }
 
 /** 删除按钮操作 */

+ 4 - 0
src/views/hw/hardware/lockset/LocksetForm.vue

@@ -213,7 +213,11 @@ const getLockTypeList = async () => {
 const getMaterialList = async () => {
   const data = { pageNo: 1, pageSize: -1 }
   const response = await MaterialApi.listMaterials(data)
+<<<<<<< HEAD
+
+=======
   console.log(response,'数据是什么')
+>>>>>>> 44f8079758c8a632e239da8fd6422e3f2e6be805
   materialsOptions.value = response.list.map(item => ({
     value: item.id,
     label: item.materialsName

+ 14 - 20
src/views/hw/hardware/padLocks/PadLockForm.vue

@@ -77,7 +77,7 @@
       <el-form-item label="状态" prop="exStatus">
         <el-radio-group v-model="formData.exStatus">
           <el-radio
-            v-for="dict in getStrDictOptions(DICT_TYPE.PADLOCK_STATUS)"
+            v-for="dict in getIntDictOptions(DICT_TYPE.PADLOCK_STATUS)"
             :key="dict.value"
             :label="dict.value"
           >
@@ -102,7 +102,7 @@
 
 <script lang="ts" setup>
 import { ref, reactive } from 'vue'
-import {DICT_TYPE, getIntDictOptions, getStrDictOptions} from '@/utils/dict'
+import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
 import { handleTree } from '@/utils/tree'
 import * as PadLockApi from '@/api/hw/hardware/padLock/index'
 import * as HardwareApi from '@/api/hw/hardware/information/index'
@@ -188,27 +188,21 @@ const submitForm = async () => {
 
 /** 重置表单 */
 const resetForm = () => {
-  formRef.value?.resetFields()
-
+  formData.value = {
+    lockId: undefined,
+    hardwareId: undefined,
+    lockTypeId: undefined,
+    lockCode: '',
+    lockName: '',
+    lockNfc: '',
+    lockSpec: '',
+    exStatus: '1',
+    exRemark: ''
+  }
   autoGenFlag.value = false
+  formRef.value?.resetFields()
 }
 
-// const resetForm = () => {
-//   formData.value = {
-//     lockId: undefined,
-//     hardwareId: undefined,
-//     lockTypeId: undefined,
-//     lockCode: '',
-//     lockName: '',
-//     lockNfc: '',
-//     lockSpec: '',
-//     exStatus: '1',
-//     exRemark: ''
-//   }
-//   autoGenFlag.value = false
-//   formRef.value?.resetFields()
-// }
-
 /** 自动生成编码 */
 // const handleAutoGenChange = async (value: boolean) => {
 //   if (value) {

+ 3 - 3
src/views/hw/lockCabinet/LockCabinetForm.vue

@@ -64,7 +64,7 @@
       <el-form-item label="是否在线" prop="isOnline">
         <el-radio-group v-model="formData.isOnline">
           <el-radio
-            v-for="dict in getStrDictOptions(DICT_TYPE.ISONLINE_STATUS)"
+            v-for="dict in getIntDictOptions(DICT_TYPE.ISONLINE_STATUS)"
             :key="dict.value"
             :label="dict.value"
           >
@@ -75,7 +75,7 @@
       <el-form-item label="状态" prop="status">
         <el-radio-group v-model="formData.status">
           <el-radio
-            v-for="dict in getStrDictOptions(DICT_TYPE.CANBINET_STATUS)"
+            v-for="dict in getIntDictOptions(DICT_TYPE.CABINET_STATUS)"
             :key="dict.value"
             :label="dict.value"
           >
@@ -122,7 +122,7 @@
 
 <script lang="ts" setup>
 import { ref, reactive } from 'vue'
-import { DICT_TYPE, getIntDictOptions,getStrDictOptions} from '@/utils/dict'
+import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
 import { handleTree } from '@/utils/tree'
 import * as LockCabinetApi from '@/api/hw/hardware/lockCabinet/index'
 import * as HardwareApi from '@/api/hw/hardware/information/index'

+ 3 - 4
src/views/material/Inspectionrecords/index.vue

@@ -70,8 +70,7 @@
           start-placeholder="开始日期"
           end-placeholder="结束日期"
           :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
-          @clear="handleClearTime(checkDate)"
-          class="!w-240px"
+
         />
       </el-form-item>
       <el-form-item label="检查结果" prop="status">
@@ -125,7 +124,7 @@
       <el-table-column label="物资编号" align="center" prop="materialsId" />
       <el-table-column label="物资名称" align="center" prop="materialsName" />
       <el-table-column label="物资类型" align="center" prop="materialsTypeName" />
-      <el-table-column label="物资图片" align="center" prop="materialsTypePicture"  width="85">
+      <el-table-column label="物资图片" align="center" prop="materialsTypePicture">
         <template #default="scope">
           <UploadImg
             v-if="scope.row.materialsTypePicture"
@@ -343,7 +342,7 @@ const handleViewRecord = (row: any) => {
     emit('recordId', row.recordId)
   } else {
     router.push({
-      path: '/material/material/replacementrecords',
+      path: '/material/replacementrecords',
       query: {
         recordId: row.recordId
       }

+ 5 - 19
src/views/material/coll/index.vue

@@ -58,8 +58,7 @@
           range-separator="-"
           start-placeholder="开始日期"
           end-placeholder="结束日期"
-          value-format="YYYY-MM-DD HH:mm:ss"
-          :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
+          :default-time="['00:00:00', '23:59:59']"
           @change="handleClearLoanTime"
           class="!w-240px"
         />
@@ -80,8 +79,7 @@
           range-separator="-"
           start-placeholder="开始日期"
           end-placeholder="结束日期"
-          value-format="YYYY-MM-DD HH:mm:ss"
-          :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
+          :default-time="['00:00:00', '23:59:59']"
           @change="handleClearRestitutionTime"
           class="!w-240px"
         />
@@ -89,7 +87,7 @@
       <el-form-item label="状态" prop="status">
         <el-select v-model="queryParams.status" placeholder="请选择状态" class="!w-240px">
           <el-option
-            v-for="dict in getStrDictOptions(DICT_TYPE.RECORD_OF_COLLECTION)"
+            v-for="dict in getIntDictOptions(DICT_TYPE.RECORD_OF_COLLECTION)"
             :key="dict.value"
             :label="dict.label"
             :value="dict.value"
@@ -129,7 +127,7 @@
       <el-table-column label="领取时间" align="center" prop="loanTime" />
       <el-table-column label="归还人" align="center" prop="restitutionUserName" />
       <el-table-column label="归还时间" align="center" prop="actualRestitutionTime" />
-      <el-table-column label="借出时长" align="center" prop="loanDuration" :formatter="formatLoanDuration"/>
+      <el-table-column label="借出时长" align="center" prop="loanDuration" />
       <el-table-column label="状态" align="center" prop="status">
         <template #default="scope">
           <dict-tag :type="DICT_TYPE.RECORD_OF_COLLECTION" :value="scope.row.status" />
@@ -147,7 +145,7 @@
 </template>
 
 <script lang="ts" setup>
-import { DICT_TYPE, getIntDictOptions,getStrDictOptions } from '@/utils/dict'
+import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
 import { handleTree } from '@/utils/tree'
 import * as LoanApi from '@/api/material/loan/index'
 import * as CabinetApi from '@/api/material/lockers/index'
@@ -222,14 +220,6 @@ const getList = async () => {
     loading.value = false
   }
 }
-const formatLoanDuration = (row) => {
-  const duration = row.loanDuration || ''
-  // 假设返回格式是 "0小时 18分 54秒"
-  return duration
-    .replace(/^0小时\s*/, '')   // 去掉开头的 "0小时"
-    .replace(/^0分\s*/, '')     // 如果有 "0分" 在最前面也去掉
-    .trim()
-}
 
 /** 获取物资柜列表 */
 const getCabinets = async () => {
@@ -265,10 +255,6 @@ const resetQuery = () => {
   loanTime.value = null
   restitutionTime.value = null
   queryFormRef.value?.resetFields()
-  queryParams.loanTimeStart = null
-  queryParams.loanTimeEnd = null
-  queryParams.restitutionTimeStart = null
-  queryParams.restitutionTimeEnd = null
   handleQuery()
 }
 

+ 10 - 15
src/views/material/information/MaterialForm.vue

@@ -16,7 +16,6 @@
               clearable
               placeholder="请选择绑定物资柜"
               class="!w-348px"
-              @clear="handleClearCabinet"
             >
               <el-option
                 v-for="dict in cabinets"
@@ -89,12 +88,12 @@
 <!--              <h3>{{ property.propertyName }}</h3>-->
               <div class="property-values">
                 <div
-                  v-for="value in PropertyValueList.filter((v) => v.propertyId == property.id)"
+                  v-for="value in PropertyValueList.filter((v) => v.propertyId === property.id)"
                   :key="value.id"
                   :class="[
                     'property-value',
                     {
-                      selected: selectedValues[property.id] == value.id
+                      selected: selectedValues[property.id] === value.id
                     }
                   ]"
                   @click="selectValue(property.id, value.id)"
@@ -270,17 +269,13 @@ onMounted(async () => {
   const data = await MaterialTypeApi.listType(params)
   materialtypeOptions.value = handleTree(data.list, 'id', 'parentId')
   const cabinet = await MaterialCabinetApi.listMaterialsCabinet(params)
-  cabinets.value = cabinet.list.map((cabinet) => ({
-    value: cabinet.id,
-    label: cabinet.cabinetName
-  })).concat({ value: 0, label: '空' })
+  cabinets.value = cabinet.list.map((cabinet) => {
+    return {
+      value: cabinet.id,
+      label: cabinet.cabinetName
+    }
+  })
 })
-
-// 清空时执行
-const handleClearCabinet = () => {
-  formData.value.materialsCabinetId = 0
-}
-
 // 监听物资类型变化
 watch(
   () => formData.value.materialsTypeId,
@@ -339,8 +334,8 @@ const selectValue = (propertyId: string, recordId: string) => {
         (v) => v.id == recordId // 使用 id 字段
       )
       return {
-        propertyId: String(propertyId),
-        recordId: String(recordId),
+        propertyId,
+        recordId,
         valueName: value.valueName,
         propertyName: property.propertyName
       }

+ 9 - 13
src/views/material/information/index.vue

@@ -110,7 +110,6 @@
           end-placeholder="结束日期"
           :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
           :picker-options="pickerOptions"
-          @clear="handleClearTime(createTime)"
           class="!w-240px"
         />
       </el-form-item>
@@ -346,7 +345,6 @@ const queryParams = reactive({
   supplier: undefined,
   expirationDate: undefined,
   recordId: undefined,
-  status: undefined,
   propertyId: undefined
 })
 
@@ -404,7 +402,7 @@ const filteredPropertyValues = computed(() => {
     return []
   }
   return PropertyValueList.value.filter(
-    (value) => value.propertyId == queryParams.propertyId
+    (value) => value.propertyId === queryParams.propertyId
   )
 })
 const route=useRoute()
@@ -425,7 +423,7 @@ const setInitialCabinetId = () => {
     queryParams.materialsCabinetId = Number(route.query.cabinetId)
     visibleSelect.value = true
   } else {
-    queryParams.materialsCabinetId = ''
+    queryParams.materialsCabinetId = 1
   }
 }
 // 查询物资柜
@@ -478,7 +476,6 @@ const getTreeselect = async () => {
   const propertyData = await PropertyApi.PropertyPage({ pageSize: -1, pageNo: 1 })
   PropertyList.value = propertyData.list
   const propertyValueData = await PropertyValueApi.PropertyValuePage({ pageSize: -1, pageNo: 1 })
-  console.log(propertyValueData,'propertyValueData')
   PropertyValueList.value = propertyValueData.list
 }
 
@@ -519,7 +516,6 @@ const resetQuery = () => {
   queryParams.supplier = undefined
   queryParams.propertyId = undefined
   queryParams.recordId = undefined
-  queryParams.status = undefined
   handleQuery()
 }
 
@@ -564,11 +560,11 @@ const handlePropertyChange = () => {
   queryParams.recordId = undefined
 }
 
-/** 日期清空处理 */
-const handleClearTime = (value: any) => {
-  if (value == null) {
-    queryParams.startExpirationDate = undefined
-    queryParams.endExpirationDate = undefined
-  }
-}
+// /** 日期清空处理 */
+// const handleClearTime = (value: any) => {
+//   if (value == null) {
+//     queryParams.startExpirationDate = undefined
+//     queryParams.endExpirationDate = undefined
+//   }
+// }
 </script>

+ 3 - 6
src/views/material/inspectionplan/index.vue

@@ -37,12 +37,11 @@
         <el-date-picker
           v-model="createTime"
           type="datetimerange"
-          value-format="YYYY-MM-DD HH:mm:ss"
           range-separator="-"
           start-placeholder="开始日期"
           end-placeholder="结束日期"
-          :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
-          @change="handleClearTime(createTime)"
+          :default-time="['00:00:00', '23:59:59']"
+          @change="handleClearTime"
           class="!w-240px"
         />
       </el-form-item>
@@ -405,8 +404,6 @@ const handleQuery = () => {
 const resetQuery = () => {
   createTime.value = null
   queryFormRef.value?.resetFields()
-  queryParams.startTime = null
-  queryParams.endTime = null
   handleQuery()
 }
 
@@ -448,7 +445,7 @@ const handleViewRecord = (row: any) => {
     })
   } else {
     router.push({
-      path: '/material/material/Inspectionrecords',
+      path: '/material/Inspectionrecords',
       query: {
         planId: row.id,
         planName: row.planName

+ 5 - 5
src/views/material/instructions/index.vue

@@ -82,11 +82,11 @@
           <el-button link type="primary" @click="handlePreview(scope.row)">查看</el-button>
         </template>
       </el-table-column>
-<!--      <el-table-column label="详情" align="center">-->
-<!--        <template #default="scope">-->
-<!--          <el-button link type="primary" @click="handleDetail(scope.row)">查看</el-button>-->
-<!--        </template>-->
-<!--      </el-table-column>-->
+      <el-table-column label="详情" align="center">
+        <template #default="scope">
+          <el-button link type="primary" @click="handleDetail(scope.row)">查看</el-button>
+        </template>
+      </el-table-column>
       <el-table-column label="添加时间" align="center" prop="createTime" :formatter="dateFormatter" />
       <el-table-column label="操作" align="center" width="150">
         <template #default="scope">

+ 9 - 15
src/views/material/replacementrecords/index.vue

@@ -36,10 +36,9 @@
       <el-form-item label="原物资编号" prop="oldMaterialsId">
         <el-input
           v-model="queryParams.oldMaterialsId"
-          placeholder="请输入原物资编号(数字格式)"
+          placeholder="请输入原物资编号"
           clearable
           @keyup.enter="handleQuery"
-          @input="val => queryParams.oldMaterialsId = val.replace(/\D/g, '')"
           class="!w-240px"
         />
       </el-form-item>
@@ -55,10 +54,9 @@
       <el-form-item label="新物资编号" prop="newMaterialsId">
         <el-input
           v-model="queryParams.newMaterialsId"
-          placeholder="请输入新物资编号(数字格式)"
+          placeholder="请输入新物资编号"
           clearable
           @keyup.enter="handleQuery"
-          @input="val => queryParams.newMaterialsId = val.replace(/\D/g, '')"
           class="!w-240px"
         />
       </el-form-item>
@@ -88,8 +86,8 @@
           start-placeholder="开始日期"
           end-placeholder="结束日期"
           :shortcuts="dateShortcuts"
-          @change="handleClearTime(createTime)"
           class="!w-240px"
+          @change="handleClearTime"
         />
       </el-form-item>
       <el-form-item>
@@ -111,7 +109,7 @@
           </template>
         </el-table-column>
         <el-table-column label="物资类型" align="center" prop="materialsTypeName" />
-        <el-table-column label="物资图片" align="center" prop="materialsTypePicture"  width="85">
+        <el-table-column label="物资图片" align="center" prop="materialsTypePicture">
           <template #default="scope">
             <UploadImg
               v-if="scope.row.materialsTypePicture"
@@ -151,8 +149,9 @@
 import * as ReplaceApi from '@/api/material/replace/index'
 import * as lockerApi from '@/api/material/lockers/index'
 import * as TypeApi from '@/api/material/type'
-import { getDateRange} from '@/utils/formatTime'
+import { dateFormatter } from '@/utils/formatTime'
 import { handleTree } from '@/utils/tree'
+import router from "@/router";
 defineOptions({ name: 'MaterialReplaceRecord' })
 
 const { t } = useI18n() // 国际化
@@ -222,12 +221,10 @@ const getList = async () => {
   loading.value = true
   try {
     // 格式化日期
-    if (Array.isArray(createTime.value) && createTime.value.length == 2) {
-      const [startTime, endTime] = getDateRange(createTime.value[0], createTime.value[1])
-      queryParams.startTime = startTime
-      queryParams.endTime = endTime
+    if (Array.isArray(createTime.value) && createTime.value.length === 2) {
+      queryParams.startTime = dateFormatter(createTime.value[0])
+      queryParams.endTime = dateFormatter(createTime.value[1])
     }
-
     if(props.cabinetId||props.recordId){
       queryParams.cabinetId = Number(props.cabinetId)
       if(props.recordId){
@@ -246,7 +243,6 @@ const getList = async () => {
     if (route.query.cabinetId || props.cabinetId) {
       visibleSelect.value = true
     }
-    console.log(queryParams,'查询参数')
     const data = await ReplaceApi.listChangeRecord(queryParams)
     changeRecordList.value = data.list
     total.value = data.total
@@ -279,8 +275,6 @@ const queryFormRef=ref()
 /** 重置按钮操作 */
 const resetQuery = () => {
   createTime.value = []
-  queryParams.startTime = undefined
-  queryParams.endTime = undefined
   queryFormRef.value?.resetFields()
   handleQuery()
 }

+ 168 - 255
src/views/sopm/sop/ExecutePlan.vue

@@ -15,198 +15,186 @@
       </div>
     </div>
     <div class="tab-content">
-      <el-form
-        ref="formRef"
-        :model="sopExcuteData"
-        :rules="formRules"
-        label-width="120px"
-      >
-        <!-- 启用执行计划 -->
-        <el-form-item label="启用执行计划" prop="enableExecutionPlan">
-          <el-switch
-            v-model="sopExcuteData.enableExecutionPlan"
-            size="small"
-            :active-value="1"
-            :inactive-value="0"
-            @change="handleExecutionPlanChange"
+      <section>
+        <span>启用执行计划:</span>
+        <el-switch
+          v-model="sopExcuteData.enableExecutionPlan"
+          size="small"
+          :active-value="1"
+          :inactive-value="0"
+          @change="handleExecutionPlanChange"
+        />
+      </section>
+      <section>
+        <span>执行频率单位:</span>
+        <el-radio-group v-model="sopExcuteData.frequencyUnit" @change="handlefrequencyUnitChange">
+          <el-radio label="day" :value="3">天</el-radio>
+          <el-radio label="week" :value="2">周</el-radio>
+          <el-radio label="month" :value="1">月</el-radio>
+          <el-radio label="year" :value="0">年</el-radio>
+        </el-radio-group>
+      </section>
+
+      <!-- 天 -->
+      <section v-if="sopExcuteData.frequencyUnit == 3">
+        <span> 执行频率:</span>每
+        <el-input-number
+          v-model="sopExcuteData.frequency"
+          :min="1"
+          :max="3650"
+          class="mx-4"
+          controls-position="right"
+        />
+        天
+      </section>
+
+      <!-- 周 -->
+      <section v-else-if="sopExcuteData.frequencyUnit == 2">
+        <span>执行频率:</span> 每
+        <el-input-number
+          v-model="sopExcuteData.frequency"
+          :min="1"
+          :max="520"
+          class="mx-4"
+          controls-position="right"
+        />
+        周 &nbsp;&nbsp;&nbsp;&nbsp; 在 &nbsp;&nbsp;
+        <el-select v-model="sopExcuteData.timePoint" placeholder="选择星期" style="width: 115px">
+          <el-option label="星期一" value="星期一" />
+          <el-option label="星期二" value="星期二" />
+          <el-option label="星期三" value="星期三" />
+          <el-option label="星期四" value="星期四" />
+          <el-option label="星期五" value="星期五" />
+          <el-option label="星期六" value="星期六" />
+          <el-option label="星期日" value="星期日" />
+        </el-select>
+      </section>
+
+      <!-- 月 -->
+      <section v-else-if="sopExcuteData.frequencyUnit == 1">
+        <span>执行频率:</span> 每
+        <el-input-number
+          v-model="sopExcuteData.frequency"
+          :min="1"
+          :max="120"
+          class="mx-4"
+          controls-position="right"
+        />
+        月 第
+        <el-input-number
+          v-model="sopExcuteData.timePoint"
+          :min="1"
+          :max="3650"
+          class="mx-4"
+          controls-position="right"
+          @change="handleTimePointChange"
+        />
+        日
+      </section>
+
+      <!-- 年 -->
+      <section v-else-if="sopExcuteData.frequencyUnit == 0">
+        <span>执行频率:</span> 每
+        <el-input-number
+          v-model="sopExcuteData.frequency"
+          :min="1"
+          :max="10"
+          class="mx-4"
+          controls-position="right"
+        />
+        年 第
+        <el-input-number
+          v-model="sopExcuteData.timePoint"
+          :min="1"
+          :max="3650"
+          class="mx-4"
+          controls-position="right"
+          @change="handleTimePointChange"
+        />
+        天
+      </section>
+      <section
+        ><span>作业开始时间:</span>
+        <el-time-picker
+          v-model="sopExcuteData.startTime"
+          placeholder="请选择"
+          :picker-options="{
+            selectableRange: '00:00:00 - 23:59:59'
+          }"
+          format="HH:mm:ss"
+          value-format="HH:mm:ss"
+        />
+      </section>
+      <section>
+        <span>作业预估时长:</span>
+        <el-time-picker
+          v-model="sopExcuteData.duration"
+          placeholder="请选择"
+          :picker-options="{
+            selectableRange: '00:00:00 - 23:59:59'
+          }"
+          format="HH:mm:ss"
+          value-format="HH:mm:ss"
+        />
+      </section>
+      <section>
+        <span> 计划终止:</span>
+        <el-select v-model="sopExcuteData.endType" placeholder="" style="width: 115px">
+          <el-option
+            v-for="dict in getStrDictOptions(DICT_TYPE.SOP_PLAN_TERMINATE_TYPE)"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
           />
-        </el-form-item>
-
-        <!-- 执行频率单位 -->
-        <el-form-item label="执行频率单位" prop="frequencyUnit">
-          <el-radio-group v-model="sopExcuteData.frequencyUnit" @change="handlefrequencyUnitChange">
-            <el-radio :value="3">天</el-radio>
-            <el-radio :value="2">周</el-radio>
-            <el-radio :value="1">月</el-radio>
-            <el-radio :value="0">年</el-radio>
-          </el-radio-group>
-        </el-form-item>
-
-        <!-- 天 -->
-        <el-form-item v-if="sopExcuteData.frequencyUnit == 3" label="执行频率" prop="frequency">
-          每
+        </el-select>
+        <el-date-picker
+          style="margin-left: 15px"
+          v-if="sopExcuteData.endType == 0 && sopExcuteData.endType !== '' "
+          v-model="sopExcuteData.endValue"
+          type="date"
+          format="YYYY-MM-DD"
+          value-format="YYYY-MM-DD"
+          placeholder="请选择"
+        />
+        <div v-if="sopExcuteData.endType == 2">
           <el-input-number
-            v-model="sopExcuteData.frequency"
+            v-model="sopExcuteData.endValue"
             :min="1"
-            :max="3650"
+            :max="10"
             class="mx-4"
             controls-position="right"
-          /> 天
-        </el-form-item>
-
-        <!-- 周 -->
-        <div v-else-if="sopExcuteData.frequencyUnit == 2" style="display:flex">
-          <el-form-item label="执行频率" prop="frequency">
-            每
-            <el-input-number
-              v-model="sopExcuteData.frequency"
-              :min="1"
-              :max="520"
-              class="mx-4"
-              controls-position="right"
-            /> 周
-          </el-form-item>
-          <el-form-item label="在" prop="timePoint">
-            <el-select v-model="sopExcuteData.timePoint" placeholder="选择星期" style="width: 115px">
-              <el-option label="星期一" value="星期一" />
-              <el-option label="星期二" value="星期二" />
-              <el-option label="星期三" value="星期三" />
-              <el-option label="星期四" value="星期四" />
-              <el-option label="星期五" value="星期五" />
-              <el-option label="星期六" value="星期六" />
-              <el-option label="星期日" value="星期日" />
-            </el-select>
-          </el-form-item>
-        </div>
-
-        <!-- 月 -->
-        <div v-else-if="sopExcuteData.frequencyUnit == 1" style="display:flex">
-          <el-form-item label="执行频率" prop="frequency">
-            每
-            <el-input-number
-              v-model="sopExcuteData.frequency"
-              :min="1"
-              :max="120"
-              class="mx-4"
-              controls-position="right"
-            /> 月
-          </el-form-item>
-          <el-form-item label="第" prop="timePoint">
-            <el-input-number
-              v-model="sopExcuteData.timePoint"
-              :min="1"
-              :max="31"
-              class="mx-4"
-              controls-position="right"
-            /> 日
-          </el-form-item>
-        </div>
-
-        <!-- 年 -->
-        <div v-else-if="sopExcuteData.frequencyUnit == 0"  style="display:flex">
-          <el-form-item label="执行频率" prop="frequency">
-            每
-            <el-input-number
-              v-model="sopExcuteData.frequency"
-              :min="1"
-              :max="10"
-              class="mx-4"
-              controls-position="right"
-            /> 年
-          </el-form-item>
-          <el-form-item label="第" prop="timePoint">
-            <el-input-number
-              v-model="sopExcuteData.timePoint"
-              :min="1"
-              :max="365"
-              class="mx-4"
-              controls-position="right"
-            /> 天
-          </el-form-item>
-        </div>
-
-        <!-- 作业开始时间 -->
-        <el-form-item label="作业开始时间" prop="startTime">
-          <el-time-picker
-            v-model="sopExcuteData.startTime"
-            placeholder="请选择"
-            format="HH:mm:ss"
-            value-format="HH:mm:ss"
-          />
-        </el-form-item>
-
-        <!-- 作业预估时长 -->
-        <el-form-item label="作业预估时长" prop="duration">
-          <el-time-picker
-            v-model="sopExcuteData.duration"
-            placeholder="请选择"
-            format="HH:mm:ss"
-            value-format="HH:mm:ss"
           />
-        </el-form-item>
-
-        <!-- 计划终止 -->
-        <div style="display:flex">
-          <el-form-item label="计划终止" prop="endType">
-            <el-select v-model="sopExcuteData.endType" style="width: 115px" @change="handleEndTypeChange">
-              <el-option v-for="dict in getStrDictOptions(DICT_TYPE.SOP_PLAN_TERMINATE_TYPE)"
-                         :key="dict.value"
-                         :label="dict.label"
-                         :value="dict.value"
-              />
-            </el-select>
-          </el-form-item>
-          <el-form-item v-if="sopExcuteData.endType == 0" label="终止日期" prop="endValue">
-            <el-date-picker
-              v-model="sopExcuteData.endValue"
-              type="date"
-              format="YYYY-MM-DD"
-              value-format="YYYY-MM-DD"
-              placeholder="请选择"
-              :disabled-date="disabledBeforeToday"
-            />
-          </el-form-item>
-          <el-form-item v-if="sopExcuteData.endType == 2" label="执行次数" prop="endValue">
-            <el-input-number
-              v-model="sopExcuteData.endValue"
-              :min="1"
-              :max="10"
-              class="mx-4"
-              controls-position="right"
-            /> 次后
-          </el-form-item>
+          次后
         </div>
-
-
-        <!-- 非工作日 -->
-        <div style="display:flex">
-        <el-form-item label="非工作日" prop="nonWorkDay">
-          <el-select v-model="sopExcuteData.nonWorkDay" style="width: 115px">
-            <el-option v-for="dict in getIntDictOptions(DICT_TYPE.SOP_PLAN_NOWORKING)"
-                       :key="dict.value"
-                       :label="dict.label"
-                       :value="dict.value"
-            />
-          </el-select>
-        </el-form-item>
-        <el-form-item v-if="sopExcuteData.nonWorkDay == 2 || sopExcuteData.nonWorkDay == 3" label="顺延天数" prop="nonWorkMoveDay">
+      </section>
+      <section>
+        <span>非工作日:</span>
+        <el-select v-model="sopExcuteData.nonWorkDay" placeholder="" style="width: 115px" @change="handlenonWorkMoveDayChange()">
+          <el-option
+            v-for="dict in getIntDictOptions(DICT_TYPE.SOP_PLAN_NOWORKING)"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+        <div v-if="sopExcuteData.nonWorkDay == 2 || sopExcuteData.nonWorkDay == 3">
           <el-input-number
             v-model="sopExcuteData.nonWorkMoveDay"
             :min="1"
             :max="10"
             class="mx-4"
             controls-position="right"
-          /> 工作日
-        </el-form-item>
-        </div>
-
-        <!-- 按钮 -->
-        <div class="btnstyle">
-          <el-button plain v-if="ExcuteplanVisible == false" @click="submit">修改</el-button>
-          <el-button type="primary" plain v-if="ExcuteplanVisible == true" @click="submit">新建</el-button>
-          <el-button plain @click="goBack">取消</el-button>
+          />
+          工作日
         </div>
-      </el-form>
+      </section>
+      <div class="btnstyle">
+        <el-button plain v-if="ExcuteplanVisible == false" @click="submit">修改</el-button>
+        <el-button type="primary" plain @click="submit" v-if="ExcuteplanVisible == true"
+          >新建</el-button
+        >
+        <el-button plain @click="goBack">取消</el-button>
+      </div>
     </div>
   </ContentWrap>
   <!--  预览计划-->
@@ -240,7 +228,6 @@ const router = useRouter()
 const route = useRoute()
 const message = useMessage() // 消息弹窗
 const tableData = ref([])
-const formRef = ref(null)
 const sopExcuteData = reactive({
   sopId: route.query.id,
   frequencyUnit: 3,
@@ -254,61 +241,6 @@ const sopExcuteData = reactive({
   nonWorkMoveDay: '',
   enableExecutionPlan:0,
 })
-// 校验规则
-const formRules = {
-  // enableExecutionPlan: [{ required: true, message: '请选择是否启用执行计划', trigger: 'change' }],
-  frequencyUnit: [{ required: true, message: '请选择执行频率单位', trigger: 'change' }],
-  frequency: [{ required: true, message: '请输入执行频率', trigger: 'blur' }],
-  timePoint: [
-    {
-      required: true,
-      message: '请输入时间点',
-      trigger: 'change',
-      validator: (rule, value, callback) => {
-        if ((sopExcuteData.frequencyUnit == 2 || sopExcuteData.frequencyUnit == 1 || sopExcuteData.frequencyUnit == 0) && !value) {
-          callback(new Error('请输入时间点'))
-        } else {
-          callback()
-        }
-      }
-    }
-  ],
-  startTime: [{ required: true, message: '请选择作业开始时间', trigger: 'change' }],
-  duration: [{ required: true, message: '请选择作业预估时长', trigger: 'change' }],
-  endType: [{ required: true, message: '请选择计划终止方式', trigger: 'change' }],
-  endValue: [
-    {
-      required: true,
-      message: '请输入终止值',
-      trigger: 'blur',
-      validator: (rule, value, callback) => {
-        if (sopExcuteData.endType == 0 && !value) {
-          callback(new Error('请选择终止日期'))
-        } else if (sopExcuteData.endType == 2 && !value) {
-          callback(new Error('请输入执行次数'))
-        } else {
-          callback()
-        }
-      }
-    }
-  ],
-  nonWorkDay: [{ required: true, message: '请选择非工作日处理方式', trigger: 'change' }],
-  nonWorkMoveDay: [
-    {
-      required: true,
-      message: '请输入顺延天数',
-      trigger: 'blur',
-      validator: (rule, value, callback) => {
-        if ((sopExcuteData.nonWorkDay == 2 || sopExcuteData.nonWorkDay == 3) && !value) {
-          callback(new Error('请输入顺延天数'))
-        } else {
-          callback()
-        }
-      }
-    }
-  ]
-}
-
 
 const ExcuteplanVisible = ref(false) // 判断sop执行计划是新增还是修改
 // 添加初始化标志位
@@ -397,31 +329,12 @@ const handlenonWorkMoveDayChange=()=>{
   }
 }
 
-// 计划终止切换时清空后面日期数据
-const handleEndTypeChange = (val) => {
-  // 切换到 0(终止日期)或 2(执行次数)时,清空 endValue
-  if (val == 0 || val == 2) {
-    sopExcuteData.endValue = ''
-  }
-}
-
-// 计划执行日期当前日期之前时间不可选条件判断
-const disabledBeforeToday = (time) => {
-  const today = new Date()
-  today.setHours(0, 0, 0, 0) // 清零时分秒
-  return time.getTime() < today.getTime() // 小于今天的禁用
-}
-
-
 // 创建按钮事件
 const submit = async () => {
   try {
-    // 先做表单校验
-    await formRef.value.validate()
-
-    // 新增执行计划
     let data
     let successMessage
+    // 新增执行计划
     if (sopExcuteData.frequencyUnit == '3') {
       sopExcuteData.timePoint = 0
     }
@@ -444,7 +357,7 @@ const submit = async () => {
       message.success(successMessage)
     }
   } catch (error) {
-    // console.error('保存失败:', error)
+    console.error('保存失败:', error)
     message.error('保存失败')
   }
 }

+ 2 - 9
src/views/sopm/sop/NotificationRules.vue

@@ -189,16 +189,9 @@ const getNotifyData = async () => {
       //   .join('<br/>')  // ✅ 多行显示,用 <br/> 拼接
 
       const detailDisplay = (item.notifyConfigDetailRespVOList || [])
-        .filter(d => d.status == 1) // 过滤当事人
+        .filter(d => d.isClient == 1) // 过滤当事人
         .map(d => {
-          // const role = `${d.roleName || '未知角色'}(当事人)`; // 这里就直接拼接了
-          // return `${role}:${d.notifyTemplateName || '-'}`;
-          let role;
-          if (d.isClient == 1) {
-            role = `${d.roleName || '未知角色'}(当事人)`;
-          } else {
-            role = `${d.roleName || '未知角色'}`;
-          }
+          const role = `${d.roleName || '未知角色'}(当事人)`; // 这里就直接拼接了
           return `${role}:${d.notifyTemplateName || '-'}`;
         })
         .join('<br/>');

+ 111 - 92
src/views/sopm/sop/NotificationUpdate.vue

@@ -4,78 +4,109 @@
       <span class="tab-title">添加规则</span>
     </div>
     <div class="checkContent">
-      <el-form :model="noticeData" :rules="rules" ref="noticeForm" label-width="110px">
-        <el-form-item label="通知规则种类" prop="type">
-          <el-select v-model="noticeData.type" placeholder="请选择" style="width: 260px">
-            <el-option
-              v-for="dict in getIntDictOptions(DICT_TYPE.NOTICE_RULES_TYPE)"
-              :key="dict.value"
-              :label="dict.label"
-              :value="dict.value"
-            />
-          </el-select>
-        </el-form-item>
-
-        <el-form-item label="规则" prop="rule">
-          <el-select v-model="noticeData.rule" placeholder="请选择" style="width: 260px">
-            <el-option
-              v-show="noticeData.type == 1"
-              v-for="dict in getStrDictOptions(DICT_TYPE.JOB_NOTICE_RULES)"
-              :key="dict.value"
-              :label="dict.label"
-              :value="dict.value"
-            />
-            <el-option
-              v-show="noticeData.type == 3"
-              v-for="dict in getIntDictOptions(DICT_TYPE.ACTION_NOTICE_RULES)"
-              :key="dict.value"
-              :label="dict.label"
-              :value="dict.value"
-            />
-            <el-option
-              v-show="noticeData.type == 0"
-              v-for="dict in getIntDictOptions(DICT_TYPE.ADVANCE_NOTICE_RULES)"
-              :key="dict.value"
-              :label="dict.label"
-              :value="dict.value"
-            />
-            <el-option
-              v-for="item in actionNoticeList"
-              :key="item.id"
-              :label="item.stepTitleShort"
-              :value="item.id"
-              v-show="noticeData.type == 2"
-            />
-          </el-select>
-        </el-form-item>
-
-        <el-form-item label="通知时间" prop="notifyTimeType">
-          <el-select v-model="noticeData.notifyTimeType" placeholder="请选择" style="width: 260px">
-            <el-option
-              v-for="dict in getIntDictOptions(DICT_TYPE.NOTICE_TIME_TYPE)"
-              :key="dict.value"
-              :label="dict.label"
-              :value="dict.value"
-            />
-          </el-select>
-          <template v-if="noticeData.notifyTimeType == 0 || noticeData.notifyTimeType == 2">
-            <el-input-number v-model="timeParts.day" :min="0" :max="10" class="mx-4" style="width: 100px" /> 天
-            <el-input-number v-model="timeParts.hour" :min="0" :max="23" class="mx-4" style="width: 100px" /> 时
-            <el-input-number v-model="timeParts.minute" :min="0" :max="59" class="mx-4" style="width: 100px" /> 分
-            <el-input-number v-model="timeParts.second" :min="0" :max="59" class="mx-4" style="width: 100px" /> 秒
-          </template>
-        </el-form-item>
-
-        <el-form-item label="通知区域" prop="workstationId">
-          <el-tree-select
-            style="width: 260px"
-            v-model="noticeData.workstationId"
-            :data="workstationOptions"
-            :props="{ label: 'label', children: 'children', value: 'id' }"
-            placeholder="请选择岗位"
+      <section>
+        <span>通知规则种类: </span>
+        <el-select v-model="noticeData.type" placeholder="请选择" style="width: 260px">
+          <el-option
+            v-for="dict in getIntDictOptions(DICT_TYPE.NOTICE_RULES_TYPE)"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
           />
-        </el-form-item>
-      </el-form>
+        </el-select>
+      </section>
+      <section>
+        <span>规则:</span>
+        <el-select v-model="noticeData.rule" placeholder="请选择" style="width: 260px">
+          <!--          作业通知-->
+          <el-option
+            v-show="noticeData.type == 1"
+            v-for="dict in getStrDictOptions(DICT_TYPE.JOB_NOTICE_RULES)"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+          <!--          操作通知-->
+          <el-option
+            v-show="noticeData.type == 3"
+            v-for="dict in getIntDictOptions(DICT_TYPE.ACTION_NOTICE_RULES)"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+          <!--    提前通知-->
+          <el-option
+            v-show="noticeData.type == 0"
+            v-for="dict in getIntDictOptions(DICT_TYPE.ADVANCE_NOTICE_RULES)"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+          <!--   步骤通知-->
+          <el-option
+            v-for="item in actionNoticeList"
+            :key="item.id"
+            :label="item.stepTitleShort"
+            :value="item.id"
+            v-show="noticeData.type == 2"
+          />
+        </el-select>
+      </section>
+      <section>
+        <span>通知时间:</span>
+        <el-select v-model="noticeData.notifyTimeType" placeholder="请选择" style="width: 260px">
+          <el-option
+            v-for="dict in getIntDictOptions(DICT_TYPE.NOTICE_TIME_TYPE)"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+        <i v-if="noticeData.notifyTimeType == 0 || noticeData.notifyTimeType == 2">
+          <el-input-number
+            v-model="timeParts.day"
+            :min="0"
+            :max="10"
+            class="mx-4"
+            controls-position="right"
+          />
+          天
+          <el-input-number
+            v-model="timeParts.hour"
+            :min="0"
+            :max="23"
+            class="mx-4"
+            controls-position="right"
+          />
+          时
+          <el-input-number
+            v-model="timeParts.minute"
+            :min="0"
+            :max="59"
+            class="mx-4"
+            controls-position="right"
+          />
+          分
+          <el-input-number
+            v-model="timeParts.second"
+            :min="0"
+            :max="59"
+            class="mx-4"
+            controls-position="right"
+          />
+          秒
+        </i>
+      </section>
+      <section>
+        <span>通知区域:</span>
+        <el-tree-select
+          style="width: 260px"
+          v-model="noticeData.workstationId"
+          :data="workstationOptions"
+          :props="{ label: 'label', children: 'children', value: 'id' }"
+          placeholder="请选择岗位"
+        />
+      </section>
     </div>
   </ContentWrap>
   <!--  通知角色与通知模板-->
@@ -92,7 +123,7 @@
           <el-radio label="showNotice" :value="1">仅显示通知</el-radio>
         </el-radio-group>
       </p>
-      <el-table v-loading="loading" :data="filteredTableData" border style="width: 80%;">
+      <el-table v-loading="loading" :data="filteredTableData" border style="width: 80%">
         <el-table-column prop="roleName" label="角色" width="180" />
         <el-table-column label="是否通知" align="center" width="100">
           <template #default="scope">
@@ -101,7 +132,7 @@
         </el-table-column>
         <el-table-column label="仅通知当事人" align="center" width="110">
           <template #default="scope">
-            <el-switch v-model="scope.row.isClient" :active-value="1" :inactive-value="0" :disabled="scope.row.status !== 1"/>
+            <el-switch v-model="scope.row.isClient" :active-value="1" :inactive-value="0" />
           </template>
         </el-table-column>
         <el-table-column label="通知模板" align="center">
@@ -109,8 +140,7 @@
             <span>{{ scope.row.notifyTemplateName }}</span>
             <i
               style="margin-left: 8px; color: #409eff; cursor: pointer; font-style: normal"
-              :style="{ color: scope.row.status !== 1 ? '#ccc' : '#409eff', pointerEvents: scope.row.status !== 1 ? 'none' : 'auto' }"
-              @click="scope.row.status == 1 && changeTemplate(scope.row)"
+              @click="changeTemplate(scope.row)"
             >
               {{ scope.row.notifyTemplateName ? '更换' : '选择' }}
             </i>
@@ -308,14 +338,6 @@ const filteredTableData = computed(() => {
   if (status.value == 0) return tableData.value
   return tableData.value.filter((item) => item.status == 1)
 })
-const noticeForm = ref(null)
-const rules = {
-  type: [{ required: true, message: '请选择通知规则种类', trigger: 'change' }],
-  rule: [{ required: true, message: '请选择规则', trigger: 'change' }],
-  notifyTimeType: [{ required: true, message: '请选择通知时间', trigger: 'change' }],
-  workstationId: [{ required: true, message: '请选择通知区域', trigger: 'change' }],
-}
-
 
 onMounted(() => {
   getActionNoticeData() //步骤操作的规则数据
@@ -460,9 +482,11 @@ const changeTemplate = async (row) => {
 // 新增确认
 const submit = async () => {
   try {
-    // 先做表单校验
-    await noticeForm .value.validate()
     let data
+    // let successMessage
+    //   新增
+    console.log(route.query.type, 'ggggdata')
+
     // 如果是类型 0 或 2,需要做时间转换
     if (noticeData.notifyTimeType == 0 || noticeData.notifyTimeType == 2) {
       const totalSeconds =
@@ -510,8 +534,6 @@ const submit = async () => {
 
 // 修改确认
 const submitUpdate = async () => {
-  // 先做表单校验
-  await noticeForm .value.validate()
   if (noticeData.notifyTimeType == 0 || noticeData.notifyTimeType == 2) {
     const totalSeconds =
       timeParts.day * 86400 + timeParts.hour * 3600 + timeParts.minute * 60 + timeParts.second
@@ -533,13 +555,11 @@ const submitUpdate = async () => {
       id: item.notifyConfigId // 有id则为修改,无id则为新增
     }))
   }
-
   // const data = await NotificationRules.updateNotifyConfig(payload)
   const data = await NotificationRules.insertNotifyConfig(payload)
 
   if (data) {
     ElMessage.success('更新成功')
-    goBack()
   }
 }
 
@@ -591,7 +611,7 @@ const resetQuery = () => {
 
 .checkContent {
   width: 95%;
-  height:200px;
+  height: 200px;
   margin: 10px auto;
 
   section {
@@ -615,9 +635,8 @@ const resetQuery = () => {
 
 .tableCon {
   width: 95%;
-  max-height: 460px;
+  min-height: 300px;
   margin: auto;
-  overflow-y: auto;
 
   p {
     margin: 20px 0;

+ 3 - 3
src/views/system/notify/agent/index.vue

@@ -79,7 +79,7 @@
               v-if="queryParams.queryType == 3"
               v-model="customDateRange"
               type="daterange"
-              value-format="YYYY-MM-DD HH:mm:ss"
+              value-format="yyyy-MM-dd HH:mm:ss"
               range-separator="To"
               start-placeholder="开始日期"
               end-placeholder="结束日期"
@@ -113,7 +113,7 @@ import * as JobApi from '@/api/job/index'
 
 const router = useRouter()
 // const route = useRoute()
-const activeName = ref('second')
+const activeName = ref('first')
 // 查询参数
 const queryParams = reactive({
   pageNum: 1,
@@ -162,7 +162,7 @@ const handleQueryTypeChange = () => {
 
 // 处理自定义日期选择
 const handleCustomDateChange = (val) => {
-  if (val && val.length == 2) {
+  if (val && val.length === 2) {
     queryParams.startTime = dayjs(val[0]).format('YYYY-MM-DD HH:mm:ss')
     queryParams.endTime = dayjs(val[1]).format('YYYY-MM-DD HH:mm:ss')
     getAgentData()

+ 1 - 1
src/views/system/notify/template/NotifyTemplateSendForm.vue

@@ -5,7 +5,7 @@
       v-loading="formLoading"
       :model="formData"
       :rules="formRules"
-      label-width="200px"
+      label-width="140px"
     >
       <el-form-item label="模板内容" prop="content">
         <el-input