123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360 |
- <!--一体机配置-->
- <template>
- <div class="public-config-page integrationConfig">
- <el-form class="public-form-box scrollbar-box" :model="form" ref="form" :inline="true" :rules="rules" label-width="160px">
- <div class="form-max-box">
- <el-form-item label="信息牌模块:" prop="isStart">
- <el-radio-group v-model="form.isStart" style="margin-top:4px;">
- <el-radio :label="1" style="margin-right:30px;">启用</el-radio>
- <el-radio :label="0">停用</el-radio>
- </el-radio-group>
- </el-form-item>
- </div>
- <div class="form-max-box">
- <el-form-item label="物联控制权限:" prop="lotControl">
- <el-checkbox-group v-model="form.lotControl">
- <el-checkbox v-for="item in citiesList" :label="item.id" :key="item.id" style="margin-right:20px;margin-top:2px;">{{item.name}}</el-checkbox>
- </el-checkbox-group>
- </el-form-item>
- </div>
- <div class="form-max-box">
- <el-form-item class="time-input-box" label="自动返回时间:" prop="returnTime">
- <el-input-number :controls="false" :min="30" :max="600" placeholder="请输入内容" v-model="form.returnTime" style="width:500px;"/>
- <span>秒</span>
- </el-form-item>
- </div>
- <div class="form-max-box">
- <el-form-item class="time-input-box" label="自动注销时间:" prop="logoutTime">
- <el-input-number :controls="false" :min="30" :max="600" placeholder="请输入内容" v-model="form.logoutTime" style="width:500px;"/>
- <span>秒</span>
- </el-form-item>
- </div>
- <div class="form-max-box">
- <el-form-item label="视频封面:" prop="videoCover">
- <el-upload
- class="certificate-avatar-uploader"
- :action="uploadImgUrl"
- :show-file-list="false"
- accept="image/jpeg,image/gif,image/png"
- :on-success="(res)=>handleAvatarSuccess(res,'videoCover')"
- :headers="headers"
- :before-upload="beforeAvatarUpload">
- <img v-if="form.videoCover" :src="form.videoCover" class="avatar" >
- <i v-if="!form.videoCover" class="el-icon-plus avatar-uploader-icon">上传</i>
- </el-upload>
- <i v-if="form.videoCover" class="el-icon-view" @click="fullScreenViewClick(form.videoCover)"
- style="position: absolute;top:0;right:0;z-index:999;border-radius:3px;cursor:pointer;width:20px;
- height:20px;line-height:20px;text-align: center;background: rgba(0,0,0,0.2);color:#fff;"></i>
- </el-form-item>
- </div>
- <div class="form-max-box">
- <el-form-item label="签到/离开示意图:" prop="signMap">
- <el-upload
- class="certificate-avatar-uploader"
- :action="uploadImgUrl"
- :show-file-list="false"
- accept="image/jpeg,image/gif,image/png"
- :on-success="(res)=>handleAvatarSuccess(res,'signMap')"
- :headers="headers"
- :before-upload="beforeAvatarUpload">
- <img v-if="form.signMap" :src="form.signMap" class="avatar">
- <i v-if="!form.signMap" class="el-icon-plus avatar-uploader-icon" >上传</i>
- </el-upload>
- <i v-if="form.signMap" class="el-icon-view" @click="lookImg(form.signMap)"
- style="position: absolute;top:0;right:0;z-index:999;border-radius:3px;cursor:pointer;width:20px;
- height:20px;line-height:20px;text-align: center;background: rgba(0,0,0,0.2);color:#fff;"></i>
- </el-form-item>
- </div>
- <div class="form-max-box">
- <el-form-item label="操作指南:" prop="operationGuide">
- <el-upload
- class="certificate-avatar-uploader"
- :action="uploadImgUrl"
- :show-file-list="false"
- accept="image/jpeg,image/gif,image/png"
- :on-success="(res)=>handleAvatarSuccess(res,'operationGuide')"
- :headers="headers"
- :before-upload="beforeAvatarUpload">
- <img v-if="form.operationGuide" :src="form.operationGuide" class="avatar">
- <i v-if="!form.operationGuide" class="el-icon-plus avatar-uploader-icon">上传</i>
- </el-upload>
- <i v-if="form.operationGuide" class="el-icon-view" @click="lookImg(form.operationGuide)"
- style="position: absolute;top:0;right:0;z-index:999;border-radius:3px;cursor:pointer;width:20px;
- height:20px;line-height:20px;text-align: center;background: rgba(0,0,0,0.2);color:#fff;"></i>
- </el-form-item>
- </div>
- </el-form>
- <div class="page-bottom-button-box" v-hasPermiRouter="['system:conf:edit']">
- <p class="page-bottom-button-null-p"></p>
- <p class="page-bottom-button-submit-p" @click="addOrUpdate">保存</p>
- <p class="page-bottom-button-null-p"></p>
- </div>
- <!--全屏图片预览-->
- <fullScreenView :fullScreenViewProps="fullScreenViewProps" ref="fullScreenView"></fullScreenView>
- </div>
- </template>
- <script>
- import { getToken } from "@/utils/auth";
- import { getConfigByType } from "@/api/commonality/permission";
- import { addOrUpdate } from "@/api/systemManagement/index";
- import fullScreenView from "@/components/fullScreenView/fullScreenView.vue";
- export default {
- name: "publicConfig",
- components: {
- fullScreenView,
- },
- data() {
- return {
- uploadImgUrl: this.uploadUrl(), // 上传的图片服务器地址
- headers: {
- Authorization:getToken(),
- },
- configId:null,
- form:{
- lotControl:[],
- userType:[],
- expandType:[],
- isStart:1,
- returnTime:60,
- logoutTime:120,
- },
- rules: {
- lotControl:[
- { required: true, message: "请选择物联控制权限", trigger: "blur" }
- ],
- videoCover: [
- { required: true, message: "视频封面不能为空", trigger: "blur" }
- ],
- signMap: [
- { required: true, message: "签到/离开示意图不能为空", trigger: "blur" }
- ],
- operationGuide: [
- { required: true, message: "操作指南不能为空", trigger: "blur" }
- ],
- isStart:[
- { required: true, message: "请选择信息牌模块", trigger: "blur" }
- ],
- returnTime:[
- { required: true, message: "请输入自动返回时间", trigger: "blur" }
- ],
- logoutTime:[
- { required: true, message: "请输入自动注销时间", trigger: "blur" }
- ],
- },
- //物联控制权限
- lotControl:[],
- citiesList:[
- //物联控制 1.实验室负责人,2.安全责任人,3.安全准入人员,4.白名单,-1.全部
- {
- id:'1',
- name:"实验室负责人"
- },
- {
- id:'2',
- name:"安全责任人"
- },
- {
- id:'3',
- name:"安全准入人员"
- },
- {
- id:'4',
- name:"白名单"
- },
- {
- id:'-1',
- name:"全部人员"
- },
- ],
- fullScreenViewProps:[],
- };
- },
- created() {
- },
- mounted(){
- this.getConfigByType();
- },
- methods: {
- /** 提交按钮 */
- addOrUpdate: function() {
- let self = this;
- this.$refs["form"].validate(valid => {
- if (valid) {
- if(this.form.returnTime == this.form.logoutTime){
- this.msgError('自动返回时间与自动注销时间不能重复');
- return
- }
- let configValue = {
- videoCover:this.form.videoCover,
- signMap:this.form.signMap,
- operationGuide:this.form.operationGuide,
- isStart:this.form.isStart,
- returnTime:this.form.returnTime,
- logoutTime:this.form.logoutTime,
- };
- let num = 0;
- for(let i=0;i<self.form.lotControl.length;i++){
- if(self.form.lotControl[i] == '-1'){
- num++
- }
- }
- if(num == 0){
- configValue.lotControl = self.form.lotControl+'';
- }else{
- configValue.lotControl = '-1';
- }
- let obj = {
- id:this.configId,
- configName: "一体机配置",
- category:2,
- configKey:2,
- configValue : JSON.stringify(configValue),
- }
- addOrUpdate(obj).then(response => {
- this.msgSuccess(response.message);
- this.getConfigByType();
- });
- }
- });
- },
- fullScreenViewClick(url){
- this.$set(this,'fullScreenViewProps',[url]);
- this.$refs['fullScreenView'].initialize();
- },
- //获取数据
- getConfigByType(){
- getConfigByType({ category: 2, configType: 2 }).then(response => {
- this.$set(this,'configId',response.data.id);
- let obj = JSON.parse(response.data.configValue)
- localStorage.setItem('videoCover',obj.videoCover)
- if(!obj.returnTime){
- obj.returnTime = 60;
- }
- if(!obj.logoutTime){
- obj.logoutTime = 120;
- }
- this.$set(this,'form',obj)
- if(obj.lotControl){
- let list = obj.lotControl.split(",");
- this.$set(this.form,'lotControl',list);
- }else{
- this.$set(this.form,'lotControl',['1','2','3','4']);
- }
- });
- },
- //上传
- handleAvatarSuccess(res,type) {
- if(type == 'videoCover'){
- this.$set(this.form,'videoCover',res.data.url);
- }else if(type == 'signMap'){
- this.$set(this.form,'signMap',res.data.url);
- }else if(type == 'operationGuide'){
- this.$set(this.form,'operationGuide',res.data.url);
- }
- this.$forceUpdate()
- },
- beforeAvatarUpload(file) {
- let type = false;
- console.log('file',file);
- if (file.type == 'image/png' || file.type == 'image/jpeg' || file.type == 'image/gif') {
- type = true;
- }else{
- this.$message.error('只能上传png/jpeg/gif格式图片');
- type = false;
- }
- return type;
- },
- },
- };
- </script>
- <style scoped lang="scss">
- .public-config-page{
- flex:1;
- display: flex;
- flex-direction: column;
- overflow: hidden;
- .public-form-box{
- flex:1;
- overflow-y: scroll;
- overflow-x: hidden;
- }
- /*底部按钮弹框*/
- .sub_btn{
- display: flex;
- background: #fff;
- height: 112px;
- .null-p{
- flex:1;
- }
- .inquire-button-one{
- cursor:pointer;
- display: inline-block;
- text-align: center;
- width: 70px;
- height: 40px;
- border-radius: 6px;
- border: 1px solid #0045af;
- color:#ffffff;
- background:#0045af;
- margin:36px 10px 0 0;
- }
- }
- .title-box{
- border-bottom:1px solid #dedede;
- p{
- margin-left:40px;
- color:#0045af;
- line-height:60px;
- }
- }
- .form-max-box{
- margin-top:20px;
- margin-left: 100px;
- }
- .avatar-uploader-icon{
- width: 200px;
- height: 120px;
- line-height: 120px;
- font-size: 16px;
- font-weight: 400;
- color: #CCCCCC;
- border:1px dashed #CCCCCC;
- border-radius:10px;
- }
- .avatar{
- width: 200px;
- height: 120px;
- }
- }
- </style>
- <style lang="scss">
- .integrationConfig{
- .time-input-box{
- input{
- text-align: left;
- border-top-right-radius:0;
- border-bottom-right-radius:0;
- }
- span{
- font-size:14px;
- font-weight:500;
- display: inline-block;
- width:40px;
- height:40px;
- background: #E0E0E0;
- text-align: center;
- line-height: 40px;
- border-top-right-radius:4px;
- border-bottom-right-radius:4px;
- }
- }
- }
- </style>
|