zhouwx
2024-11-21 a6a8e49af8c8172f4209dd94e65f53f17825cc44
src/views/safetyReview/projectManage/components/basicInfo.vue
@@ -22,7 +22,7 @@
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item prop="projectName" label="项目预计时间区间">
          <el-form-item prop="projectDateStart" label="项目预计时间区间">
            <el-date-picker
                v-model="searchTime"
                type="daterange"
@@ -36,9 +36,9 @@
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item prop="unit" label="被检查/对接单位">
          <el-form-item prop="companyName" label="被检查/对接单位">
            <el-input
                v-model.trim="state.formData.unit"
                v-model.trim="state.formData.companyName"
                size="large"
                placeholder="请输入被检查/对接单位"
            >
@@ -46,9 +46,9 @@
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item prop="place" label="项目地点">
          <el-form-item prop="projectAddress" label="项目地点">
            <el-input
                v-model.trim="state.formData.place"
                v-model.trim="state.formData.projectAddress"
                size="large"
                placeholder="请输入项目地点"
            >
@@ -58,9 +58,9 @@
      </el-row>
      <el-row :gutter="24">
        <el-col :span="6">
          <el-form-item prop="people" label="处室带队人员">
          <el-form-item prop="deptUserName" label="处室带队人员">
            <el-input
                v-model.trim="state.formData.projectName"
                v-model.trim="state.formData.deptUserName"
                size="large"
                placeholder="请输入处室带队人员"
            >
@@ -70,11 +70,11 @@
      </el-row>
      <el-row :gutter="24">
        <el-col :span="24">
          <el-form-item prop="description" label="概况描述">
          <el-form-item prop="remark" label="概况描述">
            <el-input
                type="textarea"
                :rows="6"
                v-model.trim="state.formData.description"
                v-model.trim="state.formData.remark"
                size="large"
                placeholder="请输入概况描述"
            >
@@ -87,49 +87,116 @@
</template>
<script setup>
import {reactive, ref} from "vue";
import {onMounted, reactive, ref} from "vue";
import Cookies from "js-cookie";
import {addProject, getProjectInfo, getProjectList} from "@/api/projectManage";
import {ElMessage} from "element-plus";
const searchTime = ref([]);
const emit = defineEmits(["getNextStatus"]);
const state = reactive({
  formData: {
    deptName:'危险化学品监督管理处',
    id:null,
    deptId: null,
    deptName:'',
    projectName: '',
    startTime: '',
    endTime: '',
    unit: '',
    place: '',
    people: '',
    description: ''
    projectDateStart: '',
    projectDateEnd: '',
    companyName: '',
    projectAddress: '',
    deptUserName: '',
    remark: ''
  },
  rules: {
    projectName: [{ required: true, message: "项目名称不能为空", trigger: "blur" }],
    projectDateStart: [{ required: true, message: "项目预计时间不能为空", trigger: "change" }],
    projectAddress: [{ required: true, message: "项目地点不能为空", trigger: "blur" }],
    deptUserName: [{ required: true, message: "处室带队人员不能为空", trigger: "blur" }],
    remark: [{ required: true, message: "概况描述不能为空", trigger: "blur" }],
  }
})
const searchTime = ref([]);
const formRef = ref();
const userInfo = ref()
onMounted(() => {
  userInfo.value = JSON.parse(Cookies.get('userInfo'))
  state.formData.deptName = userInfo.value.dept.deptName
  state.formData.deptId = userInfo.value.deptId
})
const riskOpen = async (type,val) => {
  console.log("type",type,val)
  let valid = null
  if(type === 'add' || type === 'clickEdit'){
    valid = await formRef.value.validate();
  }
  if(type === 'add'){
    state.formData.startTime = searchTime.value[0]
    state.formData.endTime = searchTime.value[1]
    //保存按钮
    //成功后自动到下一步 项目id
    emit('getNextStatus', 1);
    reset()
    if(valid){
      //保存按钮
      const {id,...data} = state.formData
      const res = await addProject(data);
      if(res.code == 200){
        ElMessage.success('新增成功')
        emit('getNextStatus', res.data);
        reset()
      }else{
        ElMessage.warning(res.message)
      }
    }
  }else if(type === 'clickEdit'){
    //变更按钮
    if(valid){
      //变更按钮
      const {...data} = state.formData
      const res = await addProject(data);
      if(res.code == 200){
        ElMessage.success('修改成功')
      }else{
        ElMessage.warning(res.message)
      }
    }
  }else if(type === 'detail'){
    console.log("view111111111111111",type,val)
    const res = await getProjectInfo(val)
    if(res.code == 200){
      if(res.data) {
        const val = res.data
        for(let i in state.formData) {
          if (validKey(i, val)) {
            state.formData[i] = val[i]
          }
        }
        searchTime.value = [res.data.projectDateStart,res.data.projectDateEnd]
      }
    }else{
      ElMessage.warning(res.message)
    }
  }
}
const validKey=(key,obj)=>{
  return key in obj
}
const reset = () => {
  state.formData =  {
    id:null,
    deptId: null,
    deptName:'',
    projectName: '',
    projectDateStart: '',
    projectDateEnd: '',
    companyName: '',
    projectAddress: '',
    deptUserName: '',
    remark: ''
  }
  searchTime.value = [];
}
const changeTime=(value)=>{
  if(!value){
    state.formData.startTime = ""
    state.formData.endTime = ""
    state.formData.projectDateStart = ""
    state.formData.projectDateEnd = ""
  }else {
    state.formData.projectDateStart = searchTime.value[0]
    state.formData.projectDateEnd = searchTime.value[1]
  }
}
defineExpose({