| | |
| | | return http.get('/sccg/equipment_bayonet/query', params); |
| | | }, |
| | | exportBayonetList: (params) => { |
| | | return http.downloadFile('/sccg/equipment_bayonet/export', params); |
| | | return http.post('/sccg/equipment_bayonet/export', params); |
| | | }, |
| | | addBayonet: (params) => { |
| | | return http.post('/sccg/equipment_bayonet/addition', params); |
| | |
| | | <template> |
| | | <div class="create"> |
| | | <el-form ref="device" label-position="right" label-width="120px" :model="bayonet" :rules="rules"> |
| | | <el-form |
| | | ref="device" |
| | | label-position="right" |
| | | label-width="120px" |
| | | :model="bayonet" |
| | | :rules="rules" |
| | | > |
| | | <!-- 卡口名称 --> |
| | | <div class="device-item"> |
| | | <div class="item-left"> |
| | | <el-form-item label="卡口名称:" prop="bayonetName"> |
| | | <el-input v-model="bayonet.bayonetName" placeholder="请填写卡口名称"></el-input> |
| | | <el-form-item label="卡口名称:" prop="name"> |
| | | <el-input |
| | | v-model="bayonet.name" |
| | | placeholder="请填写卡口名称" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="item-right"></div> |
| | |
| | | <div class="device-item"> |
| | | <div class="item-left"> |
| | | <el-form-item label="经纬度位置:" prop="longitude"> |
| | | <el-input v-model="bayonet.longitude" placeholder="请填写经度位置"></el-input> |
| | | <el-input |
| | | v-model="bayonet.longitude" |
| | | placeholder="请填写经度位置" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item prop="latitude"> |
| | | <el-input v-model="bayonet.latitude" placeholder="请填写纬度位置"></el-input> |
| | | <el-input |
| | | v-model="bayonet.latitude" |
| | | placeholder="请填写纬度位置" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="item-right"></div> |
| | |
| | | <div class="device-item"> |
| | | <div class="item-left"> |
| | | <el-form-item label="所属区域:" prop="belongArea"> |
| | | <el-input v-model="bayonet.belongArea" placeholder="请填写区域名称"></el-input> |
| | | <el-input |
| | | v-model="bayonet.belongArea" |
| | | placeholder="请填写区域名称" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="item-right"></div> |
| | |
| | | <div class="device-item"> |
| | | <div class="item-left"> |
| | | <el-form-item label="域名/IP:" prop="ipAddress"> |
| | | <el-input v-model="bayonet.ipAddress" placeholder="请填写域名或者IP"></el-input> |
| | | <el-input |
| | | v-model="bayonet.ipAddress" |
| | | placeholder="请填写域名或者IP" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="item-right"></div> |
| | |
| | | <div class="device-item"> |
| | | <div class="item-left"> |
| | | <el-form-item label="端口号:" prop="port"> |
| | | <el-input v-model="bayonet.port" placeholder="请输入端口号"></el-input> |
| | | <el-input |
| | | v-model="bayonet.port" |
| | | placeholder="请输入端口号" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="item-right"></div> |
| | |
| | | <!-- 前端类型 --> |
| | | <div class="device-item"> |
| | | <div class="item-left"> |
| | | <el-form-item label="前端类型:" prop="frontEndType"> |
| | | <el-input v-model="bayonet.frontEndType" placeholder="请输入前端类型"></el-input> |
| | | <el-form-item class="optionItem" label="前端类型:" prop="role"> |
| | | <el-select |
| | | v-model="bayonet.frontEndType" |
| | | placeholder="请输入前端类型" |
| | | collapse-tags |
| | | > |
| | | <el-option |
| | | v-for="item in frontEndTypeList" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="item-right"></div> |
| | |
| | | <!-- 出入城类型 --> |
| | | <div class="device-item"> |
| | | <div class="item-left"> |
| | | <el-form-item label="出入城类型:" prop="inOutCityType"> |
| | | <el-input v-model="bayonet.inOutCityType" placeholder="出城/入城"></el-input> |
| | | <el-form-item class="optionItem" label="出入城类型:" prop="role"> |
| | | <el-select |
| | | v-model="bayonet.inOutCityType" |
| | | placeholder="请输入出入城类型" |
| | | collapse-tags |
| | | > |
| | | <el-option |
| | | v-for="item in inOutTypeList" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="item-right"></div> |
| | |
| | | <div class="device-item"> |
| | | <div class="item-left"> |
| | | <el-form-item label="描述:" prop="description"> |
| | | <el-input type="textarea" :rows='5' maxlength="200" v-model="bayonet.description" placeholder="请输入描述内容200字以内"></el-input> |
| | | <el-input |
| | | type="textarea" |
| | | :rows="5" |
| | | maxlength="200" |
| | | v-model="bayonet.description" |
| | | placeholder="请输入描述内容200字以内" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="item-right"></div> |
| | |
| | | </template> |
| | | <script> |
| | | import bayonet from "@/api/system/bayonet"; |
| | | import { deepClone } from "@/utils/helper"; |
| | | import { deepClone, getTypeList } from "@/utils/helper"; |
| | | |
| | | export default { |
| | | props: { |
| | | originalBayonet: { |
| | | type: Object, |
| | | default: () => {} |
| | | default: () => {}, |
| | | }, |
| | | isEdit: { |
| | | type: Boolean, |
| | | default: () => false |
| | | } |
| | | default: () => false, |
| | | }, |
| | | }, |
| | | |
| | | data() { |
| | | return { |
| | | bayonet: { |
| | | bayonetName: '', |
| | | latitude: '', |
| | | longitude: '', |
| | | belongArea: '', |
| | | ipAddress: '', |
| | | port: '', |
| | | frontEndType: '', |
| | | inOutCityType: '', |
| | | description: '' |
| | | name: "", |
| | | latitude: "", |
| | | longitude: "", |
| | | belongArea: "", |
| | | ipAddress: "", |
| | | port: "", |
| | | frontEndType: "", |
| | | inOutCityType: "", |
| | | description: "", |
| | | }, |
| | | rules: { |
| | | bayonetName: [{ required: true, trigger: 'blur', message: '请填写卡口名称' }], |
| | | latitude: [{ required: true, trigger: ['blur', 'change'], message: '请填写纬度位置' }], |
| | | longitude: [{ required: true, trigger: ['blur', 'change'], message: '请填写经度位置' }], |
| | | belongArea: [{ required: true, trigger: ['blur', 'change'], message: '请填写区域名称' }], |
| | | ipAddress: [{ required: true, trigger: ['blur', 'change'], message: '请填写域名或者IP' }], |
| | | port: [{ required: true, trigger: ['blur', 'change'], message: '请输入端口号' }], |
| | | frontEndType: [{ required: true, trigger: ['blur', 'change'], message: '请输入前端类型' }], |
| | | inOutCityType: [{ required: true, trigger: ['blur', 'change'], message: '请填写出城/入城' }], |
| | | description: [{ required: true, trigger: ['blur', 'change'], message: '请输入描述内容' }] |
| | | } |
| | | } |
| | | name: [{ required: true, trigger: "blur", message: "请填写卡口名称" }], |
| | | latitude: [ |
| | | { |
| | | required: true, |
| | | trigger: ["blur", "change"], |
| | | message: "请填写纬度位置", |
| | | }, |
| | | |
| | | ], |
| | | longitude: [ |
| | | { |
| | | required: true, |
| | | trigger: ["blur", "change"], |
| | | message: "请填写经度位置", |
| | | }, |
| | | ], |
| | | belongArea: [ |
| | | { |
| | | required: true, |
| | | trigger: ["blur", "change"], |
| | | message: "请填写区域名称", |
| | | }, |
| | | ], |
| | | ipAddress: [ |
| | | { |
| | | required: true, |
| | | trigger: ["blur", "change"], |
| | | message: "请填写域名或者IP", |
| | | }, |
| | | ], |
| | | port: [ |
| | | { |
| | | required: true, |
| | | trigger: ["blur", "change"], |
| | | message: "请输入端口号", |
| | | }, |
| | | ], |
| | | frontEndType: [ |
| | | { |
| | | required: true, |
| | | trigger: ["blur", "change"], |
| | | message: "请输入前端类型", |
| | | }, |
| | | ], |
| | | inOutCityType: [ |
| | | { |
| | | required: true, |
| | | trigger: ["blur", "change"], |
| | | message: "请填写出城/入城", |
| | | }, |
| | | ], |
| | | }, |
| | | frontEndTypeList: [], |
| | | inOutTypeList: [], |
| | | }; |
| | | }, |
| | | beforeCreate() {}, |
| | | created() { |
| | | this.bayonet = deepClone(this.originalBayonet); |
| | | this.getInOutCityTypeList(); |
| | | this.getFrontEndTypeList(); |
| | | if (this.originalBayonet) { |
| | | this.bayonet.bayonetName = this.originalBayonet.name; |
| | | this.bayonet = this.originalBayonet; |
| | | } |
| | | }, |
| | | |
| | | methods: { |
| | | onSubmit() { |
| | | this.$refs.device.validate(valid => { |
| | | this.$refs.device.validate((valid) => { |
| | | if (valid) { |
| | | this.bayonet.longitude = Number(this.bayonet.longitude); |
| | | this.bayonet.latitude = Number(this.bayonet.latitude); |
| | | this.bayonet.inOutCityType = Number(this.bayonet.inOutCityType); |
| | | this.bayonet.belongArea = Number(this.bayonet.belongArea); |
| | | const copyBayonet = deepClone(this.bayonet); |
| | | delete copyBayonet.id; |
| | | if (!this.isEdit) { |
| | | bayonet.addBayonet(this.bayonet) |
| | | bayonet |
| | | .addBayonet(this.bayonet) |
| | | .then(() => { |
| | | this.$message({ type: 'success', message: '操作成功' }); |
| | | this.$emit('closeDialog'); |
| | | this.$message({ type: "success", message: "操作成功" }); |
| | | this.$emit("closeDialog"); |
| | | }) |
| | | .catch(err => { |
| | | this.$message({ type: 'error', message: err }); |
| | | }) |
| | | .catch((err) => { |
| | | this.$message({ type: "error", message: err }); |
| | | }); |
| | | } else { |
| | | bayonet.updateBayonet(copyBayonet) |
| | | bayonet |
| | | .updateBayonet(copyBayonet) |
| | | .then(() => { |
| | | this.$message({ type: 'success', message: '操作成功' }); |
| | | this.$emit('closeDialog'); |
| | | this.$message({ type: "success", message: "操作成功" }); |
| | | this.$emit("closeDialog"); |
| | | }) |
| | | .catch(err => { |
| | | this.$message({ type: 'error', message: err }); |
| | | }) |
| | | .catch((err) => { |
| | | this.$message({ type: "error", message: err }); |
| | | }); |
| | | } |
| | | } else { |
| | | this.$message({ type: 'warning', message: '请检查必填项' }); |
| | | this.$message({ type: "warning", message: "请检查必填项" }); |
| | | } |
| | | }); |
| | | }, |
| | | async getInOutCityTypeList() { |
| | | this.inOutTypeList = await getTypeList(1, "14"); |
| | | }, |
| | | |
| | | async getFrontEndTypeList() { |
| | | this.frontEndTypeList = await getTypeList(1, "13"); |
| | | }, |
| | | closeDialog() { |
| | | this.$emit('closeDialog'); |
| | | } |
| | | } |
| | | |
| | | } |
| | | this.$emit("closeDialog"); |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | .create { |
| | |
| | | <div class="header-content"> |
| | | <div class="search"> |
| | | <span style="padding-right:20px">筛选条件:</span> |
| | | <el-select v-model="context" placeholder="请选择" @change="getBayonetListData"> |
| | | <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> |
| | | <el-select |
| | | v-model="context" |
| | | placeholder="请选择" |
| | | @change="getBayonetListData" |
| | | > |
| | | <el-option |
| | | v-for="item in options" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | |
| | | <main> |
| | | <div class="main-content"> |
| | | <div class="main-title"> |
| | | <el-button class="el-icon-plus" type="primary" @click="showDialog(false, null)">添加</el-button> |
| | | <el-button |
| | | class="el-icon-plus" |
| | | type="primary" |
| | | @click="showDialog(false, null)" |
| | | >添加</el-button |
| | | > |
| | | <el-button @click="handleExport">导出卡口</el-button> |
| | | </div> |
| | | <!-- 数据展示 --> |
| | | <MyTable |
| | | :tableOption="tableOption" |
| | | :tableData="list" |
| | | :pageShow="false"> |
| | | <MyTable :tableOption="tableOption" :tableData="list" :pageShow="false"> |
| | | <template #operation="info"> |
| | | <el-link :underline="false" style="color:#4b9bb7" @click="showDialog(true, info)">编辑</el-link> |
| | | <el-link |
| | | :underline="false" |
| | | style="color: #4b9bb7" |
| | | @click="showDialog(true, info)" |
| | | >编辑</el-link |
| | | > |
| | | |
| | | <span class="line">|</span> |
| | | <el-link |
| | | :underline="false" |
| | | style="color: #4b9bb7" |
| | | @click="handleDelete(info)" |
| | | >删除</el-link |
| | | > |
| | | </template> |
| | | </MyTable> |
| | | </div> |
| | | </main> |
| | | <footer> |
| | | <!-- 添加卡口 --> |
| | | <el-dialog :destroy-on-close="true" :title="getDialogTitle" :visible.sync="isShowDialog" width="60%" :before-close="handleClose"> |
| | | <MyCreate v-if="isShowDialog" @closeDialog="closeDialog" :originalBayonet="originalBayonet" :isEdit="isEdit"></MyCreate> |
| | | <el-dialog |
| | | :destroy-on-close="true" |
| | | :title="getDialogTitle" |
| | | :visible.sync="isShowDialog" |
| | | width="60%" |
| | | :before-close="handleClose" |
| | | > |
| | | <MyCreate |
| | | v-if="isShowDialog" |
| | | @closeDialog="closeDialog" |
| | | :originalBayonet="originalBayonet" |
| | | :isEdit="isEdit" |
| | | ></MyCreate> |
| | | </el-dialog> |
| | | </footer> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import MyCreate from './create' |
| | | import MyTable from '@/components/Table' |
| | | import MyCreate from "./create"; |
| | | import MyTable from "@/components/Table"; |
| | | import bayonet from "@/api/system/bayonet"; |
| | | import { downloadFile } from "@/utils/helper"; |
| | | |
| | | export default { |
| | | components: { |
| | | MyCreate, MyTable, |
| | | MyCreate, |
| | | MyTable, |
| | | }, |
| | | data() { |
| | | return { |
| | | isShowDialog: false, |
| | | context: null, |
| | | context: 0, |
| | | options: [ |
| | | { |
| | | value: 0, |
| | | label: '离线', |
| | | label: "离线", |
| | | }, |
| | | { |
| | | value: 1, |
| | | label: '在线', |
| | | } |
| | | label: "在线", |
| | | }, |
| | | ], |
| | | list: [], |
| | | current: 1, |
| | |
| | | tableOption: { |
| | | group: [ |
| | | { |
| | | label: '卡口名称', |
| | | type: 'text', |
| | | prop: 'bayonetName', |
| | | label: "卡口名称", |
| | | type: "text", |
| | | prop: "name", |
| | | }, |
| | | { |
| | | label: '经纬度位置', |
| | | type: 'text', |
| | | prop: 'latitude', |
| | | label: "域名/IP", |
| | | type: "text", |
| | | prop: "ipAddress", |
| | | }, |
| | | { |
| | | label: '域名/IP', |
| | | type: 'text', |
| | | prop: 'ipAddress', |
| | | label: "端口号", |
| | | type: "text", |
| | | prop: "port", |
| | | }, |
| | | { |
| | | label: '端口号', |
| | | type: 'text', |
| | | prop: 'port', |
| | | label: "前端类型", |
| | | type: "text", |
| | | prop: "frontEndTypeName", |
| | | }, |
| | | { |
| | | label: '前端类型', |
| | | type: 'text', |
| | | prop: 'frontEndType', |
| | | label: "出入城类型", |
| | | type: "text", |
| | | prop: "inOutCityTypeName", |
| | | }, |
| | | { |
| | | label: '出入城类型', |
| | | type: 'text', |
| | | prop: 'inOutCityType', |
| | | label: "操作", |
| | | type: "operation", |
| | | prop: "operation", |
| | | }, |
| | | { |
| | | label: '操作', |
| | | type: 'operation', |
| | | prop: 'operation', |
| | | }, |
| | | ] |
| | | ], |
| | | }, |
| | | originalBayonet: null, |
| | | isEdit: false |
| | | } |
| | | isEdit: false, |
| | | }; |
| | | }, |
| | | |
| | | computed: { |
| | | getDialogTitle() { |
| | | return this.isEdit ? '编辑卡口' : '新建卡口'; |
| | | return this.isEdit ? "编辑卡口" : "新建卡口"; |
| | | }, |
| | | }, |
| | | created() { |
| | |
| | | }, |
| | | methods: { |
| | | getBayonetListData() { |
| | | bayonet.getBayonetList({ bayonetName: this.context, current: this.current, size: this.size }) |
| | | bayonet |
| | | .getBayonetList({ |
| | | bayonetName: "", |
| | | current: this.current, |
| | | size: this.size, |
| | | }) |
| | | .then(({ records }) => { |
| | | this.list = records; |
| | | }) |
| | | .catch(err => { |
| | | this.$message({ type: 'error', message: err }); |
| | | }) |
| | | .catch((err) => { |
| | | this.$message({ type: "error", message: err }); |
| | | }); |
| | | }, |
| | | // 弹窗关闭 |
| | | handleClose(done) { |
| | | this.$confirm('确认关闭?') |
| | | .then(_ => { |
| | | this.$confirm("确认关闭?").then((_) => { |
| | | done(); |
| | | }) |
| | | }); |
| | | }, |
| | | |
| | | closeDialog() { |
| | |
| | | }, |
| | | |
| | | handleExport() { |
| | | bayonet.exportBayonetList({ bayonetName: this.context, current: this.current, size: this.size }) |
| | | .then(res => { |
| | | bayonet |
| | | .exportBayonetList({ |
| | | bayonetName: this.context, |
| | | current: this.current, |
| | | size: this.size, |
| | | }) |
| | | .then((res) => { |
| | | downloadFile(res); |
| | | this.$message({ type: 'success', message: '操作成功' }); |
| | | this.$message({ type: "success", message: "操作成功" }); |
| | | }) |
| | | .catch(err => { |
| | | this.$message({ type: 'error', message: err }); |
| | | }) |
| | | .catch((err) => { |
| | | this.$message({ type: "error", message: err }); |
| | | }); |
| | | }, |
| | | handleDelete(data) { |
| | | this.$confirm("确认删除?").then((_) => { |
| | | bayonet.deleteBayonet(data.info.row.id).then((res) => { |
| | | this.$message({ |
| | | type: "success", |
| | | message: "删除成功!", |
| | | }); |
| | | this.getBayonetListData(); |
| | | }); |
| | | }); |
| | | }, |
| | | showDialog(isEdit, data) { |
| | | this.isShowDialog = true; |
| | | this.isEdit = isEdit; |
| | | this.originalBayonet = data.info.row; |
| | | } |
| | | } |
| | | } |
| | | this.originalBayonet = data ? data.info.row : null; |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | .userList { |
| | |
| | | border: 1px solid #17324c; |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | |
| | | color: #4b9bb7; |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | .pagination { |
| | |
| | | justify-content: center; |
| | | |
| | | .el-pagination { |
| | | |
| | | &::v-deep li, |
| | | &::v-deep .btn-prev, |
| | | &::v-deep .btn-next { |
| | |
| | | color: #4b9bb7; |
| | | font-size: 10px; |
| | | |
| | | .operation { |
| | | .cell { |
| | | display: flex; |
| | | |
| | | .line { |
| | | &::v-deep .line { |
| | | padding: 0 5px; |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | } |
| | | .line { |
| | | padding: 0 5px; |
| | | } |
| | | </style> |