| | |
| | | # 烟花爆竹批发企业仓库安全监测预警/开发环境 |
| | | |
| | | #贺哥 |
| | | VITE_APP_BASE_API = 'http://192.168.2.11:8100' |
| | | VITE_APP_BASE_API = 'http://192.168.2.58:8100' |
| | | |
| | | #线上 |
| | | #VITE_APP_BASE_API = 'http://47.108.222.15:8185/signature' |
| | |
| | | method: 'get', |
| | | params: params |
| | | }) |
| | | } |
| | | } |
| | | |
对比新文件 |
| | |
| | | import request from '@/utils/request' |
| | | import {getToken} from "@/utils/auth"; |
| | | |
| | | export function getAlarm(params) { |
| | | return request({ |
| | | url: '/originalAlarm/pageList', |
| | | method: 'post', |
| | | data: params |
| | | }) |
| | | } |
| | | |
| | | export function editAlarm(params) { |
| | | return request({ |
| | | url: '/originalAlarm/editAlarmInfo', |
| | | method: 'get', |
| | | params: params |
| | | }) |
| | | } |
对比新文件 |
| | |
| | | import request from '@/utils/request' |
| | | import {getToken} from "@/utils/auth"; |
| | | |
| | | export function getPeople(params) { |
| | | return request({ |
| | | url: '/originalPerson/pageList', |
| | | method: 'post', |
| | | data: params |
| | | }) |
| | | } |
| | | |
| | | |
| | | |
| | | export function addPeople(data) { |
| | | return request({ |
| | | url: '/originalPerson/addOrUpdate', |
| | | method: 'post', |
| | | data: data |
| | | }) |
| | | } |
| | | |
| | | |
| | | |
| | | export function delPeople(data) { |
| | | return request({ |
| | | url: `/originalPerson/delete`, |
| | | method: 'post', |
| | | params: data |
| | | }) |
| | | } |
对比新文件 |
| | |
| | | import request from '@/utils/request' |
| | | import {getToken} from "@/utils/auth"; |
| | | |
| | | export function getPeopleCar(params) { |
| | | return request({ |
| | | url: '/originalPerson/selectOriginalPersonCar', |
| | | method: 'post', |
| | | data: params |
| | | }) |
| | | } |
| | | |
| | | |
| | | |
| | | export function addPeopleCar(data) { |
| | | return request({ |
| | | url: '/originalPerson/addOrUpdateCar', |
| | | method: 'post', |
| | | data: data |
| | | }) |
| | | } |
| | | |
| | | |
| | | |
| | | export function delPeopleCar(data) { |
| | | return request({ |
| | | url: `/originalPerson/delOriginalCarPerson`, |
| | | method: 'post', |
| | | params: data |
| | | }) |
| | | } |
对比新文件 |
| | |
| | | import request from '@/utils/request' |
| | | import {getToken} from "@/utils/auth"; |
| | | |
| | | export function getWarning(params) { |
| | | return request({ |
| | | url: '/originalAlarm/earlyPushPageList', |
| | | method: 'post', |
| | | data: params |
| | | }) |
| | | } |
| | | |
| | | export function pushWarning(params) { |
| | | return request({ |
| | | url: '/originalAlarm/editEarlyPush', |
| | | method: 'post', |
| | | data: params |
| | | }) |
| | | } |
| | | |
| | | export function delWarning(data) { |
| | | return request({ |
| | | url: `/originalAlarm/delEarlyPush`, |
| | | method: 'post', |
| | | params: data |
| | | }) |
| | | } |
| | |
| | | const identity = userInfo.identity |
| | | return new Promise( (resolve, reject) => { |
| | | login(username, password).then( async res => { |
| | | setToken(res.token) |
| | | setToken(res.result.token) |
| | | this.token = res.token |
| | | const user = res.result |
| | | const avatar = (user.avatar == "" || user.avatar == null) ? defAva : import.meta.env.VITE_APP_BASE_API + user.avatar; |
| | |
| | | } else if (code != 200 && code != 100) { |
| | | ElNotification.error({ title: msg }) |
| | | return Promise.reject('error') |
| | | } else { |
| | | } else if(msg == '用户不存在'){ |
| | | ElNotification.error({ title: msg }) |
| | | return Promise.reject('error') |
| | | } |
| | | else { |
| | | return Promise.resolve(res.data) |
| | | } |
| | | }, |
| | |
| | | <script setup> |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | |
| | | <div class="app-container"> |
| | | <div style="display: flex;justify-content: space-between;margin-bottom: 10px"> |
| | | <el-form :inline="true" style="display: flex;align-items: center;flex-wrap: wrap;" > |
| | | <el-form-item> |
| | | <el-date-picker |
| | | v-model="data.dateRange" |
| | | value-format="YYYY-MM-DD" |
| | | type="daterange" |
| | | range-separator="-" |
| | | start-placeholder="开始日期" |
| | | end-placeholder="结束日期" |
| | | style="width: 300px" |
| | | ></el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="状态:" > |
| | | <el-select |
| | | v-model="data.queryParams.filter.alarmStatus" |
| | | placeholder="请选择" |
| | | style="width: 100%" |
| | | > |
| | | <el-option |
| | | v-for="item in data.statusList" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item > |
| | | <el-button |
| | | type="primary" |
| | | @click="getList" |
| | | >查询</el-button> |
| | | <el-button |
| | | type="primary" |
| | | plain |
| | | @click="reset" |
| | | >重置</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <!-- 表格数据 --> |
| | | <el-table v-loading="loading" :data="dataList" :border="true"> |
| | | <el-table-column label="序号" type="index" align="center" width="80" /> |
| | | <el-table-column label="企业" prop="companyName" align="center" /> |
| | | <el-table-column label="仓库" prop="storeName" align="center" /> |
| | | <el-table-column label="库房" prop="storeroomName" align="center" /> |
| | | <el-table-column label="报警类型" prop="alarmType" align="center" > |
| | | <template #default="scope"> |
| | | <span>{{scope.row.alarmType == 1 ? '超员作业' : scope.row.alarmType == 2?'堵塞通道':scope.row.alarmType == 3?'超高超量':scope.row.alarmType == 4?'非法入侵':scope.row.alarmType == 5?'摄像头遮挡偏移':scope.row.alarmType == 6?'温度':scope.row.alarmType == 7?'湿度':'--'}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="报警状态" prop="alarmStatus" align="center" > |
| | | <template #default="scope"> |
| | | <span>{{scope.row.alarmStatus == 1 ? '已消警' : '未消警'}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="报警图片" prop="alarmFile" align="center" > |
| | | <template #default="scope"> |
| | | <div class="demo-image__preview" v-if="scope.row.alarmFile"> |
| | | <el-image |
| | | style="width: 100px; height: 100px" |
| | | :src="scope.row.alarmFile" |
| | | :zoom-rate="1.2" |
| | | :max-scale="7" |
| | | :min-scale="0.2" |
| | | :preview-src-list="[scope.row.alarmFile]" |
| | | :initial-index="0" |
| | | fit="cover" |
| | | :preview-teleported= true |
| | | /> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="报警时间" prop="warningDate" align="center" width="120" /> |
| | | <el-table-column label="消警时间" prop="clearDate" align="center" width="120" > |
| | | <template #default="scope"> |
| | | <span v-if="scope.row.clearDate">{{scope.row.clearDate}}</span> |
| | | <span v-else>—</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="操作" align="center" class-name="small-padding fixed-width" > |
| | | <template #default="scope"> |
| | | <el-button link type="primary" v-if="scope.row.alarmStatus == 0" @click="handelAlarm(scope.row)">消警</el-button> |
| | | <span v-else>—</span> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <pagination |
| | | v-show="total > 0" |
| | | :total="total" |
| | | v-model:page="queryParams.pageIndex" |
| | | v-model:limit="queryParams.pageSize" |
| | | @pagination="getList" |
| | | /> |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped lang="scss"> |
| | | <script setup> |
| | | import {getCurrentInstance, onMounted, onUnmounted, reactive, ref, toRefs} from "vue"; |
| | | import {ElMessage, ElMessageBox} from "element-plus"; |
| | | import {delTemplate, getTemplate} from "@/api/signAgreement/template"; |
| | | import {editAlarm, getAlarm} from "@/api/company/alarm"; |
| | | import Cookies from "js-cookie"; |
| | | const { proxy } = getCurrentInstance(); |
| | | const loading = ref(false); |
| | | const dialogRef = ref(); |
| | | const createSignRef = ref(); |
| | | const data = reactive({ |
| | | queryParams: { |
| | | pageIndex: 1, |
| | | pageSize: 10, |
| | | filter: { |
| | | alarmStartTime: '', |
| | | alarmEndTime: '', |
| | | alarmStatus: null, |
| | | companyCode: '', |
| | | } |
| | | }, |
| | | total: 0, |
| | | dataList: [], |
| | | statusList: [ |
| | | { |
| | | id: 1, |
| | | name: '已消警' |
| | | }, |
| | | { |
| | | id: 0, |
| | | name: '未消警' |
| | | }, |
| | | ], |
| | | dateRange:[] |
| | | }); |
| | | |
| | | </style> |
| | | const { queryParams, total, dataList } = toRefs(data); |
| | | const classHourRef = ref(); |
| | | onMounted(()=>{ |
| | | const info = JSON.parse(Cookies.get('userInfo')) |
| | | data.queryParams.filter.companyCode = info.companynumber |
| | | getList() |
| | | }) |
| | | |
| | | onUnmounted(()=>{ |
| | | |
| | | }) |
| | | |
| | | const addProject = (type,value) => { |
| | | dialogRef.value.openDialog(type,value) |
| | | } |
| | | |
| | | const getList = async () => { |
| | | loading.value = true |
| | | data.queryParams.filter.alarmStartTime = data.dateRange[0] |
| | | data.queryParams.filter.alarmEndTime = data.dateRange[1] |
| | | const res = await getAlarm(data.queryParams) |
| | | if(res.code == 200){ |
| | | data.dataList = res.result.records |
| | | // .map(item => { |
| | | // return { |
| | | // ...item, |
| | | // alarmFile: '' |
| | | // } |
| | | // }) |
| | | data.total = res.result.total |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | loading.value = false |
| | | } |
| | | |
| | | |
| | | |
| | | /** 重置新增的表单以及其他数据 */ |
| | | function reset() { |
| | | data.queryParams = { |
| | | pageIndex: 1, |
| | | pageSize: 10, |
| | | filter: { |
| | | alarmStartTime: '', |
| | | alarmEndTime: '', |
| | | alarmStatus: null, |
| | | companyCode: '', |
| | | } |
| | | } |
| | | data.dateRange = [] |
| | | getList() |
| | | } |
| | | const handleDelete = (val) => { |
| | | ElMessageBox.confirm( |
| | | '确定删除此条数据?', |
| | | '提示', |
| | | { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning', |
| | | }) |
| | | .then( async() => { |
| | | const res = await delTemplate(val.id) |
| | | if(res.code == 200){ |
| | | ElMessage.success('数据删除成功') |
| | | await getList() |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | const handelAlarm = (val) => { |
| | | ElMessageBox.confirm( |
| | | '确定对此条数据消警?', |
| | | '提示', |
| | | { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning', |
| | | }) |
| | | .then( async() => { |
| | | const param = { |
| | | id: val.id |
| | | } |
| | | const res = await editAlarm(param) |
| | | if(res.code == 200){ |
| | | ElMessage.success('消警成功') |
| | | await getList() |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | |
| | | const getRowKeys = (row) => { |
| | | return row.name |
| | | } |
| | | </script> |
对比新文件 |
| | |
| | | <template> |
| | | <div class="notice"> |
| | | <el-dialog |
| | | v-model="dialogVisible" |
| | | title="历史记录" |
| | | width="50%" |
| | | :before-close="handleClose" |
| | | :close-on-press-escape="false" |
| | | :close-on-click-modal="false" |
| | | > |
| | | <el-table v-loading="loading" :data="state.tableList" :border="true"> |
| | | <el-table-column label="序号" type="index" align="center" width="80" /> |
| | | <el-table-column label="探测器" prop="createTime" align="center" /> |
| | | <el-table-column label="浓度值" prop="basicName" align="center" /> |
| | | <el-table-column label="状态" prop="tabooBasicName" align="center" /> |
| | | <el-table-column label="属性" prop="tabooBasicName" align="center" /> |
| | | <el-table-column label="时间" prop="updateBy" align="center" /> |
| | | |
| | | </el-table> |
| | | <pagination |
| | | v-show="total > 0" |
| | | :total="total" |
| | | v-model:page="queryParams.pageNum" |
| | | v-model:limit="queryParams.pageSize" |
| | | @pagination="getList" |
| | | /> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | <script setup> |
| | | import {reactive, ref, toRefs} from "vue"; |
| | | |
| | | const dialogVisible = ref(false); |
| | | const emit = defineEmits(["getList"]); |
| | | const loading = ref(false) |
| | | const state = reactive({ |
| | | tableList: [], |
| | | total: 0, |
| | | queryParams: { |
| | | pageNum: 1, |
| | | pageSize: 5, |
| | | }, |
| | | |
| | | }) |
| | | const { queryParams, total } = toRefs(state); |
| | | const openDialog = async (type,value) => { |
| | | dialogVisible.value = true; |
| | | } |
| | | const getList = async () => { |
| | | // loading.value = true |
| | | // const res = await getAvoidInfoPage(state.queryParams) |
| | | // if(res.code == 200){ |
| | | // state.tableList = res.data.list |
| | | // state.total = res.data.total |
| | | // }else{ |
| | | // ElMessage.warning(res.message) |
| | | // } |
| | | // loading.value = false |
| | | } |
| | | const handleClose = () => { |
| | | dialogVisible.value = false; |
| | | emit("getList") |
| | | } |
| | | defineExpose({ |
| | | openDialog |
| | | }); |
| | | |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | |
| | | </style> |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <!-- 表格部分--> |
| | | <!-- <div style="font-weight: 600;font-size: 20px;">最近报警记录</div>--> |
| | | <div style="margin-top: 10px"> |
| | | <el-table v-loading="loading" :data="state.tableList" :border="true"> |
| | | <el-table-column label="序号" type="index" align="center" width="80" /> |
| | | <el-table-column label="仓库" prop="createTime" align="center" /> |
| | | <el-table-column label="库房" prop="basicName" align="center" /> |
| | | <el-table-column label="温度值" prop="tabooBasicName" align="center" /> |
| | | <el-table-column label="同步时间" prop="updateBy" align="center" /> |
| | | <el-table-column label="湿度值" prop="tabooBasicName" align="center" /> |
| | | <el-table-column label="同步时间" prop="updateBy" align="center" /> |
| | | </el-table> |
| | | <pagination |
| | | v-show="total > 0" |
| | | :total="total" |
| | | v-model:page="queryParams.pageNum" |
| | | v-model:limit="queryParams.pageSize" |
| | | @pagination="getListAll" |
| | | /> |
| | | </div> |
| | | <!-- 卡片部分--> |
| | | <el-scrollbar max-height="420px" style="padding-right: 10px;overflow-x: hidden;" v-if="state.dataList && state.dataList.length >0"> |
| | | <!-- <el-row :gutter="20" style="margin-top: 5px;margin-left: 5px">--> |
| | | <!-- <el-col v-for="(item,index) in state.dataList" :key="index" :span="8">--> |
| | | <div style="display: flex;align-items: center;flex-wrap: wrap"> |
| | | <div v-for="(item,index) in state.dataList" :key="index" style="width: 350px;margin: 20px 30px"> |
| | | <el-card class="card-item " shadow="always"> |
| | | <div style="display: flex;flex-direction: column"> |
| | | <div style="font-size: 18px;font-weight: 700;margin-bottom: 15px">{{item.room}}—{{item.stock}}—{{item.device}}</div> |
| | | <div style="display: flex;align-items: center"> |
| | | <img src="@/assets/images/device.png" /> |
| | | <div style="display: flex;flex-direction: column"> |
| | | <div style="display: flex;justify-content: space-between;margin-bottom: 10px"> |
| | | <span>温度:{{item.warm}}</span> |
| | | <el-button type="primary" plain style="margin-left: 15px" @click="openData('温度',item)">历史数据</el-button> |
| | | </div> |
| | | <div style="display: flex;justify-content: space-between"> |
| | | <span>湿度:{{item.humidity}}</span> |
| | | <el-button type="primary" plain style="margin-left: 15px" @click="openData('湿度',item)">历史数据</el-button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </el-card> |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- </el-col>--> |
| | | <!-- </el-row>--> |
| | | </el-scrollbar> |
| | | <el-empty v-else></el-empty> |
| | | <d-dialog ref="dialogRef" @getList="getListAll"></d-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup> |
| | | import {onMounted, reactive, ref, toRefs} from "vue"; |
| | | import {ElMessage} from "element-plus"; |
| | | import dDialog from './components/dataDialog.vue' |
| | | |
| | | const dialogRef = ref(null) |
| | | const state = reactive({ |
| | | queryParams: { |
| | | pageNum: 1, |
| | | pageSize: 5, |
| | | warningType: '' |
| | | }, |
| | | cardQueryParams: { |
| | | warningType: '' |
| | | }, |
| | | total: 0, |
| | | dataList: [ |
| | | { |
| | | id: 1, |
| | | room: '仓库名称', |
| | | stock: '库存名称', |
| | | device: '设备1', |
| | | humidity: '18%RH', |
| | | warm: '18°' |
| | | }, |
| | | { |
| | | id: 1, |
| | | room: '仓库名称', |
| | | stock: '库存名称', |
| | | device: '设备1', |
| | | humidity: '18%RH', |
| | | warm: '18°' |
| | | }, |
| | | { |
| | | id: 1, |
| | | room: '仓库名称', |
| | | stock: '库存名称', |
| | | device: '设备1', |
| | | humidity: '18%RH', |
| | | warm: '18°' |
| | | }, |
| | | { |
| | | id: 1, |
| | | room: '仓库名称', |
| | | stock: '库存名称', |
| | | device: '设备1', |
| | | humidity: '18%RH', |
| | | warm: '18°' |
| | | }, |
| | | { |
| | | id: 1, |
| | | room: '仓库名称', |
| | | stock: '库存名称', |
| | | device: '设备1', |
| | | humidity: '18%RH', |
| | | warm: '18°' |
| | | }, |
| | | ], |
| | | tableList: [] |
| | | }); |
| | | const { queryParams,cardQueryParams, total, dataList } = toRefs(state); |
| | | const loading = ref(false); |
| | | onMounted(()=>{ |
| | | getListPage() |
| | | getList() |
| | | }) |
| | | const getListPage = async () => { |
| | | // loading.value = true |
| | | // const res = await getAvoidInfoPage(state.queryParams) |
| | | // if(res.code == 200){ |
| | | // state.tableList = res.data.list |
| | | // state.total = res.data.total |
| | | // }else{ |
| | | // ElMessage.warning(res.message) |
| | | // } |
| | | // loading.value = false |
| | | } |
| | | const getList = async () => { |
| | | // const res = await getAvoidList(state.cardQueryParams) |
| | | // if(res.code == 200){ |
| | | // state.dataList = res.data |
| | | // }else{ |
| | | // ElMessage.warning(res.message) |
| | | // } |
| | | } |
| | | const openData = (type,val) => { |
| | | dialogRef.value.openDialog(type,val); |
| | | |
| | | } |
| | | |
| | | const getListAll = () => { |
| | | getListPage() |
| | | getList() |
| | | } |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | |
| | | </template> |
| | | |
| | | <style scoped lang="scss"> |
| | | .app-container{ |
| | | .card-item{ |
| | | //height: 160px; |
| | | margin-bottom: 10px; |
| | | //min-width: 300px; |
| | | } |
| | | .title-font{ |
| | | display:flex; |
| | | align-items: center; |
| | | padding: 3px 15px; |
| | | font-size: 14px; |
| | | margin-right: 10px; |
| | | border-radius: 5px |
| | | } |
| | | .card-item-red{ |
| | | cursor: pointer; |
| | | color: #f56c6c; |
| | | background-color: rgb(254, 240.3, 240.3); |
| | | border: 1px solid rgb(253, 225.6, 225.6); |
| | | } |
| | | .card-item-red-title{ |
| | | cursor: pointer; |
| | | color: #f56c6c; |
| | | background-color: rgb(254, 240.3, 240.3); |
| | | border: 1px solid rgb(253, 225.6, 225.6); |
| | | } |
| | | .card-item-red-titleChoose{ |
| | | color: #f6d1d1; |
| | | background-color: #f55d5d; |
| | | } |
| | | .card-item-yellow{ |
| | | color: #e6a23c; |
| | | background-color: rgb(252.5, 245.7, 235.5); |
| | | border: 1px solid rgb(250, 236.4, 216); |
| | | } |
| | | .card-item-yellow-title{ |
| | | cursor: pointer; |
| | | color: #f1950b; |
| | | background-color: rgb(252.5, 245.7, 235.5); |
| | | border: 1px solid rgb(250, 236.4, 216); |
| | | } |
| | | .card-item-yellow-titleChoose{ |
| | | color: #f6e7d1; |
| | | background-color: #f1a902; |
| | | } |
| | | .card-item-blue-title{ |
| | | cursor: pointer; |
| | | color: #409eff; |
| | | background-color: rgb(235.9, 245.3, 255); |
| | | border: 1px solid rgb(216.8, 235.6, 255); |
| | | } |
| | | .card-item-blue-titleChoose{ |
| | | color: #d7e6f6; |
| | | background-color: #2da0ef; |
| | | } |
| | | :deep(.is-horizontal) { |
| | | height: 0; |
| | | left: 0; |
| | | display: none; |
| | | } |
| | | |
| | | :deep(.el-scrollbar__wrap) { |
| | | overflow-x: hidden; |
| | | } |
| | | } |
| | | </style> |
对比新文件 |
| | |
| | | <template> |
| | | <div class="notice"> |
| | | <el-dialog |
| | | v-model="dialogVisible" |
| | | :title="title" |
| | | width="500px" |
| | | :before-close="handleClose" |
| | | :close-on-press-escape="false" |
| | | :close-on-click-modal="false" |
| | | > |
| | | <el-form :model="state.form" size="default" ref="busRef" :rules="state.formRules" label-width="150px" > |
| | | <el-form-item label="姓名:" prop="personName" > |
| | | <el-input v-model="state.form.personName" placeholder="请输入姓名"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="人员类型:" prop="personType"> |
| | | <el-select |
| | | v-model="state.form.personType" |
| | | placeholder="请选择" |
| | | style="width: 100%" |
| | | > |
| | | <el-option |
| | | v-for="item in state.typeList" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="联系方式:" prop="mb" > |
| | | <el-input v-model="state.form.mb" placeholder="请输入联系方式"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | <template #footer> |
| | | <span class="dialog-footer"> |
| | | <el-button @click="handleClose" size="default">取 消</el-button> |
| | | <el-button type="primary" @click="onSubmit" size="default" v-preReClick>确认</el-button> |
| | | </span> |
| | | </template> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | <script setup> |
| | | import {onMounted, reactive, ref, toRefs} from 'vue' |
| | | import {ElMessage} from "element-plus"; |
| | | import {listDept} from "@/api/system/dept"; |
| | | import {listUser} from "@/api/system/user"; |
| | | import {addTemplate, editTemplate} from "@/api/signAgreement/template"; |
| | | import {addType, editType, getSignType} from "@/api/signAgreement/signType"; |
| | | import {getInfo} from "@/api/login"; |
| | | import {getToken} from "@/utils/auth"; |
| | | import {verifyPhone} from "@/utils/validate"; |
| | | import Cookies from "js-cookie"; |
| | | import {addPeople} from "@/api/company/people"; |
| | | |
| | | const uploadFileUrl = ref(import.meta.env.VITE_APP_BASE_API + "/common/upload"); // 上传文件服务器地址 |
| | | const { proxy } = getCurrentInstance(); |
| | | const dialogVisible = ref(false); |
| | | const title = ref(""); |
| | | const busRef = ref(); |
| | | const length = ref() |
| | | const emit = defineEmits(["getList"]); |
| | | const startPhone = ref(''); |
| | | const validateUserPhone = (rule, value, callback)=>{ |
| | | if(value === ''){ |
| | | callback(new Error('请输入手机号')) |
| | | }else if(state.title == '编辑' && value == startPhone.value){ |
| | | callback() |
| | | } else{ |
| | | if(!verifyPhone(value)){ |
| | | callback(new Error('手机号格式有误')) |
| | | }else{ |
| | | callback() |
| | | } |
| | | } |
| | | } |
| | | const state = reactive({ |
| | | form: { |
| | | id: '', |
| | | personName: '', |
| | | companyCode: '', |
| | | personType:null, |
| | | mb: '', |
| | | }, |
| | | typeList: [ |
| | | { |
| | | id: 1, |
| | | name: '法定代表人' |
| | | }, |
| | | { |
| | | id: 2, |
| | | name: '主要负责人' |
| | | }, |
| | | { |
| | | id: 3, |
| | | name: '安全负责人' |
| | | }, |
| | | { |
| | | id: 4, |
| | | name: '保管员' |
| | | }, |
| | | { |
| | | id: 5, |
| | | name: '守护员' |
| | | }, |
| | | ], |
| | | formRules:{ |
| | | personName: [{ required: true, trigger: "blur", message:'请输入姓名' }], |
| | | mb: [{ required: true, trigger: "blur", validator: validateUserPhone }], |
| | | personType: [{ required: true, trigger: "blur", message:'请选择人员类型' }], |
| | | }, |
| | | }) |
| | | onMounted(()=>{ |
| | | |
| | | }) |
| | | |
| | | |
| | | const openDialog = async (type,value) => { |
| | | title.value = type === 'add' ? '新增' : '编辑' |
| | | const info = JSON.parse(Cookies.get('userInfo')) |
| | | state.form.companyCode = info.companynumber |
| | | if(type === 'edit') { |
| | | const data = JSON.parse(JSON.stringify(value)) |
| | | Object.keys(state.form).forEach(key => { |
| | | if(data[key]){ |
| | | state.form[key] = data[key] |
| | | } |
| | | }) |
| | | startPhone.value = value.phone |
| | | } |
| | | dialogVisible.value = true; |
| | | } |
| | | |
| | | const onSubmit = async () => { |
| | | console.log('form',state.form) |
| | | const valid = await busRef.value.validate(); |
| | | if(valid){ |
| | | if(title.value === '新增'){ |
| | | const {id, ...data} = JSON.parse(JSON.stringify(state.form)) |
| | | const res = await addPeople(data) |
| | | if(res.code == 200){ |
| | | ElMessage({ |
| | | type: 'success', |
| | | message: '新增成功' |
| | | }); |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | emit("getList") |
| | | busRef.value.clearValidate(); |
| | | reset(); |
| | | dialogVisible.value = false; |
| | | }else if(title.value === '编辑'){ |
| | | const {...data} = JSON.parse(JSON.stringify(state.form)) |
| | | const res = await addPeople(data) |
| | | if(res.code == 200){ |
| | | ElMessage({ |
| | | type: 'success', |
| | | message: '编辑成功' |
| | | }); |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | emit("getList") |
| | | busRef.value.clearValidate(); |
| | | reset(); |
| | | dialogVisible.value = false; |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | const handleClose = () => { |
| | | busRef.value.clearValidate(); |
| | | reset(); |
| | | dialogVisible.value = false; |
| | | emit("getList") |
| | | } |
| | | const reset = () => { |
| | | state.form = { |
| | | id: '', |
| | | personName: '', |
| | | companyCode: '', |
| | | personType:null, |
| | | mb: '', |
| | | } |
| | | } |
| | | defineExpose({ |
| | | openDialog |
| | | }); |
| | | |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | .notice{ |
| | | :deep(.el-form .el-form-item__label) { |
| | | font-size: 15px; |
| | | } |
| | | :deep(.el-form-item__content) { |
| | | width: 100%; |
| | | } |
| | | .file { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: flex-start; |
| | | } |
| | | .custom-iframe { |
| | | border: 1px solid #9b9999; |
| | | /* 隐藏原生滚动条 */ |
| | | overflow: hidden; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <script setup> |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <div>1</div> |
| | | <div class="app-container"> |
| | | <div style="display: flex;justify-content: space-between;margin-bottom: 10px"> |
| | | <el-form :inline="true" style="display: flex;align-items: center;flex-wrap: wrap;" > |
| | | <el-form-item> |
| | | <el-button |
| | | type="primary" |
| | | plain |
| | | icon="Plus" |
| | | @click="addProject('add',{})" |
| | | > |
| | | 新增 |
| | | </el-button> |
| | | </el-form-item> |
| | | <el-form-item label="姓名:" > |
| | | <el-input v-model="data.queryParams.filter.companyName" placeholder="请输入姓名"></el-input> |
| | | </el-form-item> |
| | | <el-form-item > |
| | | <el-button |
| | | type="primary" |
| | | @click="getList" |
| | | >查询</el-button> |
| | | <el-button |
| | | type="primary" |
| | | plain |
| | | @click="reset" |
| | | >重置</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <!-- 表格数据 --> |
| | | <el-table v-loading="loading" :data="dataList" :border="true"> |
| | | <el-table-column label="序号" type="index" align="center" width="80" /> |
| | | <el-table-column label="姓名" prop="personName" align="center" /> |
| | | <el-table-column label="人员类型" prop="personType" align="center" > |
| | | <template #default="scope"> |
| | | <span>{{scope.row.personType == 1 ? '法定代表人' : scope.row.personType == 2?'主要负责人':scope.row.personType == 3?'安全负责人':scope.row.personType == 4?'保管员':scope.row.personType == 5?'守护员':''}}</span> |
| | | |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="联系方式" prop="mb" align="center" /> |
| | | <el-table-column label="创建人" prop="createBy" align="center" /> |
| | | <el-table-column label="修改人" prop="updateBy" align="center" /> |
| | | <el-table-column label="创建时间" prop="createDate" align="center" width="110" /> |
| | | <el-table-column label="修改时间" prop="updateDate" align="center" width="110"/> |
| | | <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="250" > |
| | | <template #default="scope"> |
| | | <el-button link type="primary" @click="addProject('edit',scope.row)">编辑</el-button> |
| | | <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <pagination |
| | | v-show="total > 0" |
| | | :total="total" |
| | | v-model:page="queryParams.pageIndex" |
| | | v-model:limit="queryParams.pageSize" |
| | | @pagination="getList" |
| | | /> |
| | | <peopleDialog ref="dialogRef" @getList="getList"></peopleDialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped lang="scss"> |
| | | <script setup> |
| | | import {getCurrentInstance, onMounted, onUnmounted, reactive, ref, toRefs} from "vue"; |
| | | import {ElMessage, ElMessageBox} from "element-plus"; |
| | | import peopleDialog from './components/peopleDialog.vue' |
| | | import Cookies from "js-cookie"; |
| | | import {delTemplate, getTemplate} from "@/api/signAgreement/template"; |
| | | import {delPeople, getPeople} from "@/api/company/people"; |
| | | const { proxy } = getCurrentInstance(); |
| | | const loading = ref(false); |
| | | const dialogRef = ref(); |
| | | const createSignRef = ref(); |
| | | const data = reactive({ |
| | | queryParams: { |
| | | pageIndex: 1, |
| | | pageSize: 10, |
| | | filter: { |
| | | companyName: '', |
| | | companyCode: '' |
| | | } |
| | | }, |
| | | total: 0, |
| | | dataList: [] |
| | | }); |
| | | |
| | | </style> |
| | | const { queryParams, total, dataList } = toRefs(data); |
| | | const classHourRef = ref(); |
| | | onMounted(()=>{ |
| | | const info = JSON.parse(Cookies.get('userInfo')) |
| | | data.queryParams.filter.companyCode = info.companynumber |
| | | getList() |
| | | }) |
| | | |
| | | onUnmounted(()=>{ |
| | | |
| | | }) |
| | | |
| | | const addProject = (type,value) => { |
| | | dialogRef.value.openDialog(type,value) |
| | | } |
| | | const getList = async () => { |
| | | loading.value = true |
| | | const res = await getPeople(data.queryParams) |
| | | if(res.code == 200){ |
| | | data.dataList = res.result.records |
| | | data.total = res.result.total |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | loading.value = false |
| | | } |
| | | |
| | | /** 重置新增的表单以及其他数据 */ |
| | | function reset() { |
| | | data.queryParams = { |
| | | pageIndex: 1, |
| | | pageSize: 10, |
| | | filter: { |
| | | companyName: '', |
| | | companyCode: '' |
| | | } |
| | | } |
| | | getList() |
| | | } |
| | | const handleDelete = (val) => { |
| | | ElMessageBox.confirm( |
| | | '确定删除此条数据?', |
| | | '提示', |
| | | { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning', |
| | | }) |
| | | .then( async() => { |
| | | const param = { |
| | | id:val.id |
| | | } |
| | | const res = await delPeople(param) |
| | | if(res.code == 200){ |
| | | ElMessage.success('数据删除成功') |
| | | await getList() |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | |
| | | |
| | | const getRowKeys = (row) => { |
| | | return row.name |
| | | } |
| | | </script> |
对比新文件 |
| | |
| | | <template> |
| | | <div class="notice"> |
| | | <el-dialog |
| | | v-model="dialogVisible" |
| | | :title="title" |
| | | width="500px" |
| | | :before-close="handleClose" |
| | | :close-on-press-escape="false" |
| | | :close-on-click-modal="false" |
| | | > |
| | | <el-form :model="state.form" size="default" ref="busRef" :rules="state.formRules" label-width="150px" > |
| | | <el-form-item label="人员数量:" prop="personCount" > |
| | | <el-input v-model="state.form.personCount" placeholder="请输入人员数量" @input="state.form.personCount= state.form.personCount.replace(/[^\d]/g,'')"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="车辆数量:" prop="carCount" > |
| | | <el-input v-model="state.form.carCount" placeholder="请输入车辆数量" @input="state.form.carCount= state.form.carCount.replace(/[^\d]/g,'')"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | <template #footer> |
| | | <span class="dialog-footer"> |
| | | <el-button @click="handleClose" size="default">取 消</el-button> |
| | | <el-button type="primary" @click="onSubmit" size="default" v-preReClick>确认</el-button> |
| | | </span> |
| | | </template> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | <script setup> |
| | | import {onMounted, reactive, ref, toRefs} from 'vue' |
| | | import {ElMessage} from "element-plus"; |
| | | import {listDept} from "@/api/system/dept"; |
| | | import {listUser} from "@/api/system/user"; |
| | | import {addTemplate, editTemplate} from "@/api/signAgreement/template"; |
| | | import {addType, editType, getSignType} from "@/api/signAgreement/signType"; |
| | | import {getInfo} from "@/api/login"; |
| | | import {getToken} from "@/utils/auth"; |
| | | import {verifyPhone} from "@/utils/validate"; |
| | | import Cookies from "js-cookie"; |
| | | import {addPeople} from "@/api/company/people"; |
| | | import {addPeopleCar} from "@/api/company/peopleCar"; |
| | | |
| | | const uploadFileUrl = ref(import.meta.env.VITE_APP_BASE_API + "/common/upload"); // 上传文件服务器地址 |
| | | const { proxy } = getCurrentInstance(); |
| | | const dialogVisible = ref(false); |
| | | const title = ref(""); |
| | | const busRef = ref(); |
| | | const length = ref() |
| | | const emit = defineEmits(["getList"]); |
| | | const startPhone = ref(''); |
| | | |
| | | const state = reactive({ |
| | | form: { |
| | | id: '', |
| | | carCount: null, |
| | | companyCode: '', |
| | | personCount:null, |
| | | }, |
| | | |
| | | formRules:{ |
| | | carCount: [{ required: true, trigger: "blur", message:'请输入车辆数量' }], |
| | | personCount: [{ required: true, trigger: "blur", message:'请选择人员数量' }], |
| | | }, |
| | | }) |
| | | onMounted(()=>{ |
| | | |
| | | }) |
| | | |
| | | |
| | | const openDialog = async (type,value) => { |
| | | title.value = type === 'add' ? '新增' : '编辑' |
| | | const info = JSON.parse(Cookies.get('userInfo')) |
| | | state.form.companyCode = info.companynumber |
| | | if(type === 'edit') { |
| | | const data = JSON.parse(JSON.stringify(value)) |
| | | Object.keys(state.form).forEach(key => { |
| | | if(data[key]){ |
| | | state.form[key] = data[key] |
| | | } |
| | | }) |
| | | startPhone.value = value.phone |
| | | } |
| | | dialogVisible.value = true; |
| | | } |
| | | |
| | | const onSubmit = async () => { |
| | | console.log('form',state.form) |
| | | const valid = await busRef.value.validate(); |
| | | if(valid){ |
| | | if(title.value === '新增'){ |
| | | const {id, ...data} = JSON.parse(JSON.stringify(state.form)) |
| | | const res = await addPeopleCar(data) |
| | | if(res.code == 200){ |
| | | ElMessage({ |
| | | type: 'success', |
| | | message: '新增成功' |
| | | }); |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | emit("getList") |
| | | busRef.value.clearValidate(); |
| | | reset(); |
| | | dialogVisible.value = false; |
| | | }else if(title.value === '编辑'){ |
| | | const {...data} = JSON.parse(JSON.stringify(state.form)) |
| | | const res = await addPeopleCar(data) |
| | | if(res.code == 200){ |
| | | ElMessage({ |
| | | type: 'success', |
| | | message: '编辑成功' |
| | | }); |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | emit("getList") |
| | | busRef.value.clearValidate(); |
| | | reset(); |
| | | dialogVisible.value = false; |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | const handleClose = () => { |
| | | busRef.value.clearValidate(); |
| | | reset(); |
| | | dialogVisible.value = false; |
| | | emit("getList") |
| | | } |
| | | const reset = () => { |
| | | state.form = { |
| | | id: '', |
| | | carCount: null, |
| | | companyCode: '', |
| | | personCount:null, |
| | | } |
| | | } |
| | | defineExpose({ |
| | | openDialog |
| | | }); |
| | | |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | .notice{ |
| | | :deep(.el-form .el-form-item__label) { |
| | | font-size: 15px; |
| | | } |
| | | :deep(.el-form-item__content) { |
| | | width: 100%; |
| | | } |
| | | .file { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: flex-start; |
| | | } |
| | | .custom-iframe { |
| | | border: 1px solid #9b9999; |
| | | /* 隐藏原生滚动条 */ |
| | | overflow: hidden; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <script setup> |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | |
| | | <div class="app-container"> |
| | | <div style="display: flex;justify-content: space-between;margin-bottom: 10px"> |
| | | <el-form :inline="true" style="display: flex;align-items: center;flex-wrap: wrap;" > |
| | | <el-form-item> |
| | | <el-button |
| | | type="primary" |
| | | plain |
| | | icon="Plus" |
| | | @click="addProject('add',{})" |
| | | > |
| | | 新增 |
| | | </el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <!-- 表格数据 --> |
| | | <el-table v-loading="loading" :data="dataList" :border="true"> |
| | | <el-table-column label="序号" type="index" align="center" width="80" /> |
| | | <el-table-column label="企业" prop="companyName" align="center" /> |
| | | <el-table-column label="人员数量" prop="personCount" align="center" /> |
| | | <el-table-column label="车辆数量" prop="carCount" align="center" /> |
| | | <el-table-column label="数据采集时间" prop="collectTime" align="center" /> |
| | | <el-table-column label="创建人" prop="createBy" align="center" /> |
| | | <el-table-column label="修改人" prop="updateBy" align="center" /> |
| | | <el-table-column label="创建时间" prop="createDate" align="center" width="110" /> |
| | | <el-table-column label="修改时间" prop="updateDate" align="center" width="110"/> |
| | | <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="250" > |
| | | <template #default="scope"> |
| | | <el-button link type="primary" @click="addProject('edit',scope.row)">编辑</el-button> |
| | | <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <pagination |
| | | v-show="total > 0" |
| | | :total="total" |
| | | v-model:page="queryParams.pageIndex" |
| | | v-model:limit="queryParams.pageSize" |
| | | @pagination="getList" |
| | | /> |
| | | <peopleDialog ref="dialogRef" @getList="getList"></peopleDialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped lang="scss"> |
| | | <script setup> |
| | | import {getCurrentInstance, onMounted, onUnmounted, reactive, ref, toRefs} from "vue"; |
| | | import {ElMessage, ElMessageBox} from "element-plus"; |
| | | import peopleDialog from './components/peopleCarDialog.vue' |
| | | import Cookies from "js-cookie"; |
| | | import {delTemplate, getTemplate} from "@/api/signAgreement/template"; |
| | | import {delPeople, getPeople} from "@/api/company/people"; |
| | | import {delPeopleCar, getPeopleCar} from "@/api/company/peopleCar"; |
| | | const { proxy } = getCurrentInstance(); |
| | | const loading = ref(false); |
| | | const dialogRef = ref(); |
| | | const createSignRef = ref(); |
| | | const data = reactive({ |
| | | queryParams: { |
| | | pageIndex: 1, |
| | | pageSize: 10, |
| | | filter: { |
| | | companyName: '', |
| | | companyCode: '' |
| | | } |
| | | }, |
| | | total: 0, |
| | | dataList: [] |
| | | }); |
| | | |
| | | </style> |
| | | const { queryParams, total, dataList } = toRefs(data); |
| | | const classHourRef = ref(); |
| | | onMounted(()=>{ |
| | | const info = JSON.parse(Cookies.get('userInfo')) |
| | | data.queryParams.filter.companyCode = info.companynumber |
| | | getList() |
| | | }) |
| | | |
| | | onUnmounted(()=>{ |
| | | |
| | | }) |
| | | |
| | | const addProject = (type,value) => { |
| | | dialogRef.value.openDialog(type,value) |
| | | } |
| | | const getList = async () => { |
| | | loading.value = true |
| | | const res = await getPeopleCar(data.queryParams) |
| | | if(res.code == 200){ |
| | | data.dataList = res.result.records |
| | | data.total = res.result.total |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | loading.value = false |
| | | } |
| | | |
| | | /** 重置新增的表单以及其他数据 */ |
| | | function reset() { |
| | | data.queryParams = { |
| | | pageIndex: 1, |
| | | pageSize: 10, |
| | | filter: { |
| | | companyName: '', |
| | | companyCode: '' |
| | | } |
| | | } |
| | | getList() |
| | | } |
| | | const handleDelete = (val) => { |
| | | ElMessageBox.confirm( |
| | | '确定删除此条数据?', |
| | | '提示', |
| | | { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning', |
| | | }) |
| | | .then( async() => { |
| | | const param = { |
| | | id:val.id |
| | | } |
| | | const res = await delPeopleCar(param) |
| | | if(res.code == 200){ |
| | | ElMessage.success('数据删除成功') |
| | | await getList() |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | |
| | | |
| | | const getRowKeys = (row) => { |
| | | return row.name |
| | | } |
| | | </script> |
| | |
| | | <style scoped lang="scss"> |
| | | |
| | | </style> |
| | | |
对比新文件 |
| | |
| | | <template> |
| | | <div class="notice"> |
| | | <el-dialog |
| | | v-model="dialogVisible" |
| | | width="900px" |
| | | :before-close="handleClose" |
| | | :close-on-press-escape="false" |
| | | :close-on-click-modal="false" |
| | | > |
| | | <template #header> |
| | | <div style="text-align: center; width: 100%;font-size: 18px;font-weight: 600"> |
| | | <span>{{title}}仓库</span> |
| | | </div> |
| | | </template> |
| | | <el-form :model="state.form" size="default" ref="busRef" :rules="state.formRules" label-width="117px" > |
| | | <el-form-item> |
| | | <div style="font-size: 16px;font-weight: 600;margin-top: -25px;margin-left: -110px;margin-bottom: -15px">仓库基本信息</div> |
| | | </el-form-item> |
| | | <el-row :gutter="24"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="仓库名称:" prop="name" > |
| | | <el-input v-model="state.form.name" placeholder="请输入仓库名称"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="仓库面积:" prop="name" > |
| | | <el-input v-model="state.form.name" placeholder="请输入仓库面积"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="24"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="仓库编号:" prop="name" > |
| | | <el-input v-model="state.form.name" placeholder="请输入仓库编号"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="核定药量:" prop="name" > |
| | | <el-input v-model="state.form.name" placeholder="请输入核定药量"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="24"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="危险等级:" prop="name" > |
| | | <el-select |
| | | v-model="state.form.typeId" |
| | | placeholder="请选择" |
| | | style="width: 100%" |
| | | > |
| | | <el-option |
| | | v-for="item in state.typeList" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="核定人员数量:" prop="name" > |
| | | <el-input v-model="state.form.name" placeholder="请输入核定人员数量"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | <div style="display: flex;align-items: center"> |
| | | <div style="font-size: 16px;font-weight: 600;margin: 10px">库房列表</div> |
| | | <el-button style="margin-left: 10px" type="primary" @click="addRoom">新增库房</el-button> |
| | | </div> |
| | | <el-table :data="state.storeroomList" style="width: 100%;margin-top: 15px" border> |
| | | <el-table-column label="序号" type="index" align="center" width="80" /> |
| | | <el-table-column prop="name" label="库房名称" align="center"> |
| | | <template #default="{ row }"> |
| | | <el-form :model="row" :rules="rules"> |
| | | <el-form-item prop="name"> |
| | | <el-input |
| | | v-model="row.name" |
| | | /> |
| | | </el-form-item> |
| | | </el-form> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="code" label="库房编号" align="center"> |
| | | <template #default="{ row }"> |
| | | <el-form :model="row" :rules="rules"> |
| | | <el-form-item prop="code"> |
| | | <el-input |
| | | v-model="row.code" |
| | | /> |
| | | </el-form-item> |
| | | </el-form> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="area" label="面积" align="center"> |
| | | <template #default="{ row }"> |
| | | <el-form :model="row" :rules="rules"> |
| | | <el-form-item prop="area"> |
| | | <el-input |
| | | v-model="row.area" |
| | | /> |
| | | </el-form-item> |
| | | </el-form> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="level" label="危险等级" align="center"> |
| | | <template #default="{ row }"> |
| | | <el-form :model="row" :rules="rules"> |
| | | <el-form-item prop="level"> |
| | | <el-input |
| | | v-model="row.level" |
| | | /> |
| | | </el-form-item> |
| | | </el-form> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="level" label="核定药量" align="center"> |
| | | <template #default="{ row }"> |
| | | <el-form :model="row" :rules="rules"> |
| | | <el-form-item prop="level"> |
| | | <el-input |
| | | v-model="row.level" |
| | | /> |
| | | </el-form-item> |
| | | </el-form> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="num" label="核定人员" align="center"> |
| | | <template #default="{ row }"> |
| | | <el-form :model="row" :rules="rules" > |
| | | <el-form-item prop="num" > |
| | | <el-input |
| | | v-model="row.num" |
| | | |
| | | /> |
| | | </el-form-item> |
| | | </el-form> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="操作" align="center" class-name="small-padding fixed-width" > |
| | | <template #default="scope"> |
| | | <el-button link type="danger" @click="delRoom(scope.row)">删除</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <template #footer> |
| | | <span class="dialog-footer"> |
| | | <el-button @click="handleClose" size="default">取 消</el-button> |
| | | <el-button type="primary" @click="onSubmit" size="default" v-preReClick>确认</el-button> |
| | | </span> |
| | | </template> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | <script setup> |
| | | import {reactive, ref, toRefs} from 'vue' |
| | | import {ElMessage} from "element-plus"; |
| | | import {listDept} from "@/api/system/dept"; |
| | | import {listUser} from "@/api/system/user"; |
| | | import {addTemplate, editTemplate} from "@/api/signAgreement/template"; |
| | | import {addType, editType, getSignType} from "@/api/signAgreement/signType"; |
| | | import {getInfo} from "@/api/login"; |
| | | import {getToken} from "@/utils/auth"; |
| | | import {verifyPhone} from "@/utils/validate"; |
| | | |
| | | const uploadFileUrl = ref(import.meta.env.VITE_APP_BASE_API + "/common/upload"); // 上传文件服务器地址 |
| | | const { proxy } = getCurrentInstance(); |
| | | const dialogVisible = ref(false); |
| | | const title = ref(""); |
| | | const busRef = ref(); |
| | | const length = ref() |
| | | const emit = defineEmits(["getList"]); |
| | | const startPhone = ref(''); |
| | | const validateUserPhone = (rule, value, callback)=>{ |
| | | if(value === ''){ |
| | | callback(new Error('请输入手机号')) |
| | | }else if(state.title == '编辑' && value == startPhone.value){ |
| | | callback() |
| | | } else{ |
| | | if(!verifyPhone(value)){ |
| | | callback(new Error('手机号格式有误')) |
| | | } |
| | | } |
| | | } |
| | | const state = reactive({ |
| | | form: { |
| | | id: '', |
| | | name: '', |
| | | typeId:null, |
| | | phone: '', |
| | | }, |
| | | typeList: [ |
| | | { |
| | | id: 1, |
| | | name: '法定代表人' |
| | | }, |
| | | { |
| | | id: 2, |
| | | name: '主要负责人' |
| | | }, |
| | | { |
| | | id: 3, |
| | | name: '安全负责人' |
| | | }, |
| | | { |
| | | id: 4, |
| | | name: '保管员' |
| | | }, |
| | | { |
| | | id: 5, |
| | | name: '守护员' |
| | | }, |
| | | ], |
| | | storeroomList: [], |
| | | formRules:{ |
| | | name: [{ required: true, trigger: "blur", message:'请输入姓名' }], |
| | | phone: [{ required: true, trigger: "blur", validator: validateUserPhone }], |
| | | typeId: [{ required: true, trigger: "blur", message:'请选择人员类型' }], |
| | | }, |
| | | }) |
| | | const rules = { |
| | | name: [ |
| | | { required: true, message: "姓名不能为空", trigger: "blur" }, |
| | | ], |
| | | }; |
| | | |
| | | |
| | | |
| | | const openDialog = async (type,value) => { |
| | | title.value = type === 'add' ? '新增' : '编辑' |
| | | if(type === 'edit') { |
| | | state.form = JSON.parse(JSON.stringify(value)) |
| | | startPhone.value = value.phone |
| | | } |
| | | dialogVisible.value = true; |
| | | } |
| | | |
| | | const onSubmit = async () => { |
| | | console.log('form',state.form) |
| | | const valid = await busRef.value.validate(); |
| | | |
| | | if(valid){ |
| | | if(title.value === '新增'){ |
| | | const {id,fileList, ...data} = JSON.parse(JSON.stringify(state.form)) |
| | | // const res = await addTemplate(data) |
| | | // if(res.code === 200){ |
| | | // ElMessage({ |
| | | // type: 'success', |
| | | // message: '新增成功' |
| | | // }); |
| | | // }else{ |
| | | // ElMessage.warning(res.message) |
| | | // } |
| | | emit("getList") |
| | | busRef.value.clearValidate(); |
| | | reset(); |
| | | dialogVisible.value = false; |
| | | }else if(title.value === '编辑'){ |
| | | const {...data} = JSON.parse(JSON.stringify(state.form)) |
| | | const res = await editTemplate(data) |
| | | // if(res.code === 200){ |
| | | // ElMessage({ |
| | | // type: 'success', |
| | | // message: '编辑成功' |
| | | // }); |
| | | // }else{ |
| | | // ElMessage.warning(res.message) |
| | | // } |
| | | emit("getList") |
| | | busRef.value.clearValidate(); |
| | | reset(); |
| | | dialogVisible.value = false; |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | const addRoom = () => { |
| | | state.storeroomList.push({}) |
| | | } |
| | | |
| | | const delRoom = (val) => { |
| | | console.log('val',val) |
| | | if(Object.keys(val).length === 0){ |
| | | const index = state.storeroomList.findIndex(item => Object.keys(item).length === 0) |
| | | if(index != -1){ |
| | | state.storeroomList.splice(index,1) |
| | | } |
| | | }else { |
| | | const index = state.storeroomList.findIndex(item => item == val) |
| | | if(index != -1){ |
| | | state.storeroomList.splice(index,1) |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | const handleClose = () => { |
| | | busRef.value.clearValidate(); |
| | | reset(); |
| | | dialogVisible.value = false; |
| | | emit("getList") |
| | | } |
| | | const reset = () => { |
| | | state.form = { |
| | | id: '', |
| | | name: '', |
| | | typeId:null, |
| | | phone: '', |
| | | } |
| | | state.storeroomList = [] |
| | | } |
| | | defineExpose({ |
| | | openDialog |
| | | }); |
| | | |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | .notice{ |
| | | :deep(.el-form .el-form-item__label) { |
| | | font-size: 15px; |
| | | } |
| | | :deep(.el-form-item__content) { |
| | | width: 100%; |
| | | } |
| | | .file { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: flex-start; |
| | | } |
| | | .custom-iframe { |
| | | border: 1px solid #9b9999; |
| | | /* 隐藏原生滚动条 */ |
| | | overflow: hidden; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <script setup> |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | |
| | | <div class="app-container"> |
| | | <div style="display: flex;justify-content: space-between;"> |
| | | <el-form :inline="true" style="display: flex;align-items: center;flex-wrap: wrap;" > |
| | | <el-form-item> |
| | | <el-button |
| | | type="primary" |
| | | plain |
| | | icon="Plus" |
| | | @click="addProject('add',{})" |
| | | > |
| | | 新增 |
| | | </el-button> |
| | | </el-form-item> |
| | | <!-- <el-form-item label="姓名:" >--> |
| | | <!-- <el-input v-model="data.queryParams.name" placeholder="请输入姓名"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item >--> |
| | | <!-- <el-button--> |
| | | <!-- type="primary"--> |
| | | <!-- @click="getList"--> |
| | | <!-- >查询</el-button>--> |
| | | <!-- <el-button--> |
| | | <!-- type="primary"--> |
| | | <!-- plain--> |
| | | <!-- @click="reset"--> |
| | | <!-- >重置</el-button>--> |
| | | <!-- </el-form-item>--> |
| | | </el-form> |
| | | </div> |
| | | <!-- 表格数据 --> |
| | | <el-table v-loading="loading" :data="dataList" :border="true"> |
| | | <el-table-column label="序号" type="index" align="center" width="80" /> |
| | | <el-table-column label="仓库名称" prop="name" align="center" /> |
| | | <el-table-column label="仓库编号" prop="type" align="center" /> |
| | | <el-table-column label="面积" prop="phone" align="center" /> |
| | | <el-table-column label="危险等级" prop="createBy" align="center" /> |
| | | <el-table-column label="核定药量" prop="createBy" align="center" /> |
| | | <el-table-column label="核定人员" prop="updateBy" align="center" /> |
| | | <el-table-column label="创建人" prop="createTime" align="center" /> |
| | | <el-table-column label="创建时间" prop="updateTime" align="center" /> |
| | | <el-table-column label="修改人" prop="updateBy" align="center" /> |
| | | <el-table-column label="修改时间" prop="updateTime" align="center" /> |
| | | <el-table-column label="操作" align="center" class-name="small-padding fixed-width" > |
| | | <template #default="scope"> |
| | | <el-button link type="primary" @click="addProject('edit',scope.row)">编辑</el-button> |
| | | <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <pagination |
| | | v-show="total > 0" |
| | | :total="total" |
| | | v-model:page="queryParams.pageIndex" |
| | | v-model:limit="queryParams.pageSize" |
| | | @pagination="getList" |
| | | /> |
| | | <warehouseDialog ref="dialogRef" @getList="getList"></warehouseDialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped lang="scss"> |
| | | <script setup> |
| | | import {getCurrentInstance, onMounted, onUnmounted, reactive, ref, toRefs} from "vue"; |
| | | import {ElMessage, ElMessageBox} from "element-plus"; |
| | | import warehouseDialog from './components/warehouseDialog.vue' |
| | | import {delTemplate, getTemplate} from "@/api/signAgreement/template"; |
| | | import {getWarning} from "@/api/company/warning"; |
| | | import Cookies from "js-cookie"; |
| | | const { proxy } = getCurrentInstance(); |
| | | const loading = ref(false); |
| | | const dialogRef = ref(); |
| | | const createSignRef = ref(); |
| | | const data = reactive({ |
| | | queryParams: { |
| | | pageIndex: 1, |
| | | pageSize: 10, |
| | | filter: { |
| | | companyName: '', |
| | | companyCode: '' |
| | | } |
| | | }, |
| | | total: 0, |
| | | dataList: [] |
| | | }); |
| | | |
| | | </style> |
| | | const { queryParams, total, dataList } = toRefs(data); |
| | | const classHourRef = ref(); |
| | | onMounted(()=>{ |
| | | const info = JSON.parse(Cookies.get('userInfo')) |
| | | data.queryParams.filter.companyCode = info.companynumber |
| | | getList() |
| | | }) |
| | | |
| | | onUnmounted(()=>{ |
| | | |
| | | }) |
| | | |
| | | const addProject = (type,value) => { |
| | | dialogRef.value.openDialog(type,value) |
| | | } |
| | | const getList = async () => { |
| | | loading.value = true |
| | | const res = await getWarning(data.queryParams) |
| | | if(res.code == 200){ |
| | | data.dataList = res.result.records |
| | | data.total = res.result.total |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | loading.value = false |
| | | } |
| | | |
| | | /** 重置新增的表单以及其他数据 */ |
| | | function reset() { |
| | | data.queryParams = { |
| | | pageIndex: 1, |
| | | pageSize: 10, |
| | | filter: { |
| | | companyName: '', |
| | | companyCode: '' |
| | | } |
| | | } |
| | | getList() |
| | | } |
| | | const handleDelete = (val) => { |
| | | ElMessageBox.confirm( |
| | | '确定删除此条数据?', |
| | | '提示', |
| | | { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning', |
| | | }) |
| | | .then( async() => { |
| | | const res = await delTemplate(val.id) |
| | | if(res.code == 200){ |
| | | ElMessage.success('数据删除成功') |
| | | await getList() |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | |
| | | |
| | | const getRowKeys = (row) => { |
| | | return row.name |
| | | } |
| | | </script> |
对比新文件 |
| | |
| | | <template> |
| | | <div class="notice"> |
| | | <el-dialog |
| | | v-model="dialogVisible" |
| | | title="提交反馈" |
| | | width="500px" |
| | | :before-close="handleClose" |
| | | :close-on-press-escape="false" |
| | | :close-on-click-modal="false" |
| | | > |
| | | <el-form :model="state.form" size="default" ref="busRef" :rules="state.formRules" label-width="77px" > |
| | | <el-form-item label="企业名:" prop="name" > |
| | | <span>{{ state.form.companyName }}</span> |
| | | </el-form-item> |
| | | <!-- <el-row :gutter="12">--> |
| | | <!-- <el-col :span="10">--> |
| | | <!-- <el-form-item label="仓库:" prop="name" >--> |
| | | <!-- <span>{{ state.form.companyName }}</span>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | <!-- <el-col :span="12">--> |
| | | <!-- <el-form-item label="库房:" prop="name" >--> |
| | | <!-- <span>{{ state.form.companyName }}</span>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | <!-- </el-row>--> |
| | | <el-form-item label="风险等级:" prop="phone" > |
| | | <span>{{ state.form.riskLevel == 1 ? '重大' : state.form.riskLevel == 2?'较大': state.form.riskLevel == 3?'一般': state.form.riskLevel == 4 ? '低': ''}}</span> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div> |
| | | <span style="font-size: 15px;font-weight: 700;">反馈意见:</span> |
| | | <el-input v-model='state.form.feedBack' type="textarea" :rows="5" style="margin-top: 10px"></el-input> |
| | | </div> |
| | | <template #footer> |
| | | <span class="dialog-footer"> |
| | | <el-button @click="handleClose" size="default">取 消</el-button> |
| | | <el-button type="primary" @click="onSubmit" size="default" v-preReClick>确认</el-button> |
| | | </span> |
| | | </template> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | <script setup> |
| | | import {reactive, ref, toRefs} from 'vue' |
| | | import {ElMessage} from "element-plus"; |
| | | import {listDept} from "@/api/system/dept"; |
| | | import {listUser} from "@/api/system/user"; |
| | | import {addTemplate, editTemplate} from "@/api/signAgreement/template"; |
| | | import {addType, editType, getSignType} from "@/api/signAgreement/signType"; |
| | | import {getInfo} from "@/api/login"; |
| | | import {getToken} from "@/utils/auth"; |
| | | import {verifyPhone} from "@/utils/validate"; |
| | | import {pushWarning} from "@/api/company/warning"; |
| | | |
| | | const { proxy } = getCurrentInstance(); |
| | | const dialogVisible = ref(false); |
| | | const title = ref(""); |
| | | const busRef = ref(); |
| | | const length = ref() |
| | | const emit = defineEmits(["getList"]); |
| | | |
| | | const state = reactive({ |
| | | form: { |
| | | id: '', |
| | | feedBack: '', |
| | | |
| | | }, |
| | | formRules:{ |
| | | feedBack: [{ required: true, trigger: "blur", message:'请输入反馈内容' }], |
| | | }, |
| | | }) |
| | | |
| | | |
| | | |
| | | const openDialog = async (type,value) => { |
| | | if(type === 'edit') { |
| | | state.form = JSON.parse(JSON.stringify(value)) |
| | | } |
| | | dialogVisible.value = true; |
| | | } |
| | | |
| | | const onSubmit = async () => { |
| | | const valid = await busRef.value.validate(); |
| | | if(valid){ |
| | | if(!state.form.feedBack){ |
| | | ElMessage.warning('请输入反馈意见') |
| | | return |
| | | } |
| | | const { ...data} = JSON.parse(JSON.stringify(state.form)) |
| | | const param = { |
| | | id: data.id, |
| | | feedBack: data.feedBack |
| | | } |
| | | const res = await pushWarning(param) |
| | | if(res.code == 200){ |
| | | ElMessage({ |
| | | type: 'success', |
| | | message: '提交成功' |
| | | }); |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | emit("getList") |
| | | busRef.value.clearValidate(); |
| | | reset(); |
| | | dialogVisible.value = false; |
| | | } |
| | | } |
| | | |
| | | const handleClose = () => { |
| | | busRef.value.clearValidate(); |
| | | reset(); |
| | | dialogVisible.value = false; |
| | | emit("getList") |
| | | } |
| | | const reset = () => { |
| | | state.form = { |
| | | id: '', |
| | | feedBack: '', |
| | | } |
| | | } |
| | | defineExpose({ |
| | | openDialog |
| | | }); |
| | | |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | .notice{ |
| | | :deep(.el-form .el-form-item__label) { |
| | | font-size: 15px; |
| | | } |
| | | :deep(.el-form-item__content) { |
| | | width: 100%; |
| | | } |
| | | .file { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: flex-start; |
| | | } |
| | | .custom-iframe { |
| | | border: 1px solid #9b9999; |
| | | /* 隐藏原生滚动条 */ |
| | | overflow: hidden; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <script setup> |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | |
| | | <div class="app-container"> |
| | | <div style="display: flex;justify-content: space-between;"> |
| | | <el-form :inline="true" style="display: flex;align-items: center;flex-wrap: wrap;" > |
| | | <el-form-item> |
| | | <el-date-picker |
| | | v-model="data.dateRange" |
| | | value-format="YYYY-MM-DD" |
| | | type="daterange" |
| | | range-separator="-" |
| | | start-placeholder="开始日期" |
| | | end-placeholder="结束日期" |
| | | style="width: 300px" |
| | | ></el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="状态:" > |
| | | <el-select |
| | | v-model="data.queryParams.filter.pushType" |
| | | placeholder="请选择" |
| | | style="width: 100%" |
| | | > |
| | | <el-option |
| | | v-for="item in data.statusList" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item > |
| | | <el-button |
| | | type="primary" |
| | | @click="getList" |
| | | >查询</el-button> |
| | | <el-button |
| | | type="primary" |
| | | plain |
| | | @click="reset" |
| | | >重置</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <!-- 表格数据 --> |
| | | <el-table v-loading="loading" :data="dataList" :border="true"> |
| | | <el-table-column label="序号" type="index" align="center" width="80" /> |
| | | <el-table-column label="企业名称" prop="companyName" align="center" /> |
| | | <el-table-column label="市(地、州)" prop="type" align="center" width="120" > |
| | | <template #default="scope"> |
| | | <span>{{scope.row.provinceName}}-{{scope.row.cityName}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="区县" prop="areaName" align="center" /> |
| | | <el-table-column label="风险等级" prop="riskLevel" align="center" > |
| | | <template #default="scope"> |
| | | <span>{{scope.row.riskLevel == 1 ? '重大' :scope.row.riskLevel == 2?'较大':scope.row.riskLevel == 3?'一般':scope.row.riskLevel == 4 ? '低': ''}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="推送状态" prop="pushType" align="center" > |
| | | <template #default="scope"> |
| | | <span>{{scope.row.pushType == 0 ? '未下发' :scope.row.pushType == 1 ? '已下发' : '已反馈' }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="推送内容" prop="pushContent" align="center" /> |
| | | <el-table-column label="反馈意见" prop="feedback" align="center" > |
| | | <template #default="scope"> |
| | | <span v-if="scope.row.feedback">{{scope.row.feedback}}</span> |
| | | <span v-else>--</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="创建时间" prop="createDate" align="center" width="120" /> |
| | | <el-table-column label="创建人" prop="createBy" align="center" /> |
| | | <el-table-column label="更新时间" prop="updateDate" align="center" width="120" /> |
| | | <el-table-column label="更新者" prop="updateBy" align="center" /> |
| | | <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="150" > |
| | | <template #default="scope"> |
| | | <el-button link type="primary" v-if="scope.row.pushType != 2" @click="addProject('edit',scope.row)">提交反馈</el-button> |
| | | <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <pagination |
| | | v-show="total > 0" |
| | | :total="total" |
| | | v-model:page="queryParams.pageIndex" |
| | | v-model:limit="queryParams.pageSize" |
| | | @pagination="getList" |
| | | /> |
| | | <feedback ref="dialogRef" @getList="getList"></feedback> |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped lang="scss"> |
| | | <script setup> |
| | | import {getCurrentInstance, onMounted, onUnmounted, reactive, ref, toRefs} from "vue"; |
| | | import {ElMessage, ElMessageBox} from "element-plus"; |
| | | import feedback from './components/feedbackDialog.vue' |
| | | import {delTemplate, getTemplate} from "@/api/signAgreement/template"; |
| | | import {delWarning, getWarning} from "@/api/company/warning"; |
| | | import Cookies from "js-cookie"; |
| | | const { proxy } = getCurrentInstance(); |
| | | const loading = ref(false); |
| | | const dialogRef = ref(); |
| | | const createSignRef = ref(); |
| | | const data = reactive({ |
| | | queryParams: { |
| | | pageIndex: 1, |
| | | pageSize: 10, |
| | | filter: { |
| | | companyName: '', |
| | | companyCode: '', |
| | | createDateStart: '', |
| | | createDateEnd: '', |
| | | pushType: null, |
| | | } |
| | | }, |
| | | total: 0, |
| | | dataList: [], |
| | | dateRange: [], |
| | | statusList: [ |
| | | { |
| | | id: 1, |
| | | name: '已下发' |
| | | }, |
| | | { |
| | | id: 2, |
| | | name: '已反馈' |
| | | }, |
| | | |
| | | </style> |
| | | ], |
| | | }); |
| | | |
| | | const { queryParams, total, dataList } = toRefs(data); |
| | | const classHourRef = ref(); |
| | | onMounted(()=>{ |
| | | const info = JSON.parse(Cookies.get('userInfo')) |
| | | data.queryParams.filter.companyCode = info.companynumber |
| | | getList() |
| | | }) |
| | | |
| | | onUnmounted(()=>{ |
| | | |
| | | }) |
| | | |
| | | const addProject = (type,value) => { |
| | | dialogRef.value.openDialog(type,value) |
| | | } |
| | | const getList = async () => { |
| | | loading.value = true |
| | | data.queryParams.filter.alarmStartTime = data.dateRange[0] |
| | | data.queryParams.filter.alarmEndTime = data.dateRange[1] |
| | | const res = await getWarning(data.queryParams) |
| | | if(res.code == 200){ |
| | | data.dataList = res.result.records |
| | | data.total = res.result.total |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | loading.value = false |
| | | } |
| | | |
| | | /** 重置新增的表单以及其他数据 */ |
| | | function reset() { |
| | | data.queryParams = { |
| | | pageIndex: 1, |
| | | pageSize: 10, |
| | | filter: { |
| | | companyName: '', |
| | | companyCode: '', |
| | | createDateStart: '', |
| | | createDateEnd: '', |
| | | pushType: null, |
| | | } |
| | | } |
| | | data.dateRange = [] |
| | | getList() |
| | | } |
| | | const handleDelete = (val) => { |
| | | ElMessageBox.confirm( |
| | | '确定删除此条数据?', |
| | | '提示', |
| | | { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning', |
| | | }) |
| | | .then( async() => { |
| | | const param = { |
| | | id:val.id |
| | | } |
| | | const res = await delWarning(param) |
| | | if(res.code == 200){ |
| | | ElMessage.success('数据删除成功') |
| | | await getList() |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | |
| | | |
| | | const getRowKeys = (row) => { |
| | | return row.name |
| | | } |
| | | </script> |