This commit is contained in:
lcw
2025-09-18 11:16:28 +08:00
92 changed files with 340 additions and 116 deletions

View File

@ -1,4 +1,5 @@
import request from "@/utils/request";
const api1="/mosty-api"
const api = "/mosty-api/mosty-jmxf";
const apibase = "/mosty-api/mosty-jmxf";
@ -311,7 +312,7 @@ export const http = {
// 获取HLS地址
previewURLs: (params) => {
return request({
url: apibase + "/tbYsSxt/previewURLs",
url: api1+"/mosty-yszx/tbYsSxt/previewURLs",
method: "GET",
params
});

View File

@ -1,26 +1,12 @@
<template>
<div class="departmentTree-box" :style="{ width: width, height: '100%' }">
<div class="depar_hear">
<el-input
v-model="listQuery.deptname"
v-if="filterable"
clearable
:debounce="500"
@input="filterTextChange"
placeholder="请输入筛选条件"
/>
<el-input v-model="listQuery.deptname" v-if="filterable" clearable :debounce="500" @input="filterTextChange"
placeholder="请输入筛选条件" />
</div>
<div class="depar_foot">
<el-tree
ref="treeRef"
class="filter-tree"
:props="endProps"
lazy
:load="loadNode"
@node-click="nodeClick"
:filter-node-method="filterNode"
:data="treeData"
/>
<el-tree ref="treeRef" class="filter-tree" :props="endProps" lazy :load="loadNode" @node-click="nodeClick"
:filter-node-method="filterNode" :data="treeData" />
</div>
</div>
</template>
@ -52,9 +38,13 @@ const props = defineProps({
default: COMPONENT_WIDTH,
type: String
},
isBmId:{
type:Boolean,
default:false
isBmId: {
type: Boolean,
default: false
},
propValue:{
type:String,
default:"id"
}
});
const listQuery = ref({
@ -67,7 +57,7 @@ const node_had = ref([]);
const resolve_had = ref([]);
//防抖处理
const filterTextChange = debounce(inputChange, 500);
onMounted(() => {});
onMounted(() => { });
//获取部门数据
function getTreeData() {
selectDeptPage(listQuery.value).then((res) => {
@ -120,9 +110,9 @@ const filterNode = (value, data) => {
};
const nodeClick = (node) => {
if(props.isBmId){
if (props.isBmId) {
emits("update:modelValue", node.id);
}else{
} else {
emits("update:modelValue", node.orgCode);
}
};
@ -145,6 +135,7 @@ const handleChange = (e) => {
.depar_hear {
height: 32px;
}
.depar_foot {
height: calc(100% - 32px);
overflow: auto;
@ -152,6 +143,7 @@ const handleChange = (e) => {
width: 100%;
min-width: 300px;
}
.departmentTree-box {
overflow: auto;
}

View File

@ -1,10 +1,10 @@
<template>
<div class="video-more-container">
<el-carousel style="height: 100%;" motion-blur indicator-position="none" :autoplay="false"
@change="handleCarouselChange">
<el-carousel-item v-for="(item,index) in sbList" :key="index" >
<div class="video-grid" v-if="activeIndex==index">
<div v-for="(items,indexs) in item" :key="indexs" class="video-cell">
@change="handleCarouselChange">
<el-carousel-item v-for="(item, index) in sbList" :key="index">
<div class="video-grid" v-if="activeIndex == index">
<div v-for="(items, indexs) in item" :key="indexs" class="video-cell">
<WsIframe :sbbh="items.sbbh" />
</div>
</div>
@ -14,21 +14,21 @@
</template>
<script setup>
import { ref ,onMounted} from 'vue'
import { ref, onMounted } from 'vue'
import WsIframe from '@/components/wsIframe/index.vue'
import emitter from "@/utils/eventBus.js";
const activeIndex = ref(0)
const handleCarouselChange = (index) => {
activeIndex.value=index
activeIndex.value = index
}
const sbList = ref([1])
onMounted(()=>{
onMounted(() => {
emitter.on("getSxtGetList", (res) => {
sbList.value= Array.from({ length:Math.ceil(res.length / 4)==0?1:Math.ceil(res.length / 4) }, (_, row) => {
return res.slice(row * 4, row * 4 + 4)
sbList.value = Array.from({ length: Math.ceil(res.length / 4) == 0 ? 1 : Math.ceil(res.length / 4) }, (_, row) => {
return res.slice(row * 4, row * 4 + 4)
}
);
})
})
})
</script>

View File

@ -25,7 +25,7 @@
<el-link type="primary" @click="addEdit('edit', row)">编辑</el-link>
<el-link type="primary" @click="delDictItem(row.id)">删除</el-link>
<el-link type="primary" @click="addEdit('detail', row)">详情</el-link>
<el-link type="primary" @click="endreporting( row.id)" v-if="row.bbZt !== '03'">结束报备</el-link>
<el-link type="primary" @click="endreporting( row.id)" v-if="row.bbzt && row.bbzt !== '03'">结束报备</el-link>
</template>
</MyTable>
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{

View File

@ -11,7 +11,7 @@
<div class="my_transfer">
<div class="tree">
<MOSTY.DepartmentTree width="300px" placeholder="管理部门ID" clearable filterable :isBmId="true"
v-model="listQuery.deptId" />
v-model="linQuery.deptId" />
</div>
<div class="left">
<div class="serch">
@ -48,8 +48,8 @@
</el-table>
<div>
<el-pagination class="pagination" @size-change="handleSizeChangeUser"
@current-change="handleCurrentChangeUser" :current-page="linQuery.pageCurrent"
:page-sizes="[10, 20, 50, 100]" :page-size="linQuery.pageSize"
@current-change="handleCurrentChangeUser" :current-page="linQuery.current"
:page-sizes="[10, 20, 50, 100]" :page-size="linQuery.size"
layout="total, sizes, prev, pager, next, jumper" :total="totalUser">
</el-pagination>
</div>
@ -74,7 +74,7 @@
</template>
<script setup>
import { ref, reactive, getCurrentInstance, onMounted } from "vue";
import { ref, reactive, getCurrentInstance, onMounted,watch } from "vue";
import * as MOSTY from "@/components/MyComponents/index";
import { jcztbQwXfll } from "@/api/mosty-jcz.js";
import { Right, Back } from "@element-plus/icons-vue";
@ -84,10 +84,6 @@ const { D_BZ_SF } = proxy.$dict("D_BZ_SF");
const formRef = ref(null);
const dialogForm = ref(false);
const listQuery = ref({
file: "",
spbt: ""
});
const pageInfo = {
edit: {
title: "编辑",
@ -111,7 +107,7 @@ const searchConfiger = ref({
idEntityCard: "",
fzzt: ""
});
const linQuery = reactive({ pageSize: 10, pageCurrent: 1 });
const linQuery = reactive({ size: 10, current: 1,deptId:"" });
const totalUser = ref(0);
const getBaseselectPage = () => {
const promes = { ...linQuery, ...searchConfiger.value };
@ -121,6 +117,7 @@ const getBaseselectPage = () => {
});
};
getBaseselectPage();
//左边选中数据
const leftdata = ref([]);
//右边选中数据
@ -205,13 +202,21 @@ const _onSave = () => {
// 分页查询
const handleSizeChangeUser = (e) => {
linQuery.pageSize = e;
getBaseselectPage;
linQuery.size = e;
getBaseselectPage();
};
const handleCurrentChangeUser = (e) => {
linQuery.pageCurrent = e;
getBaseselectPage;
linQuery.current = e;
getBaseselectPage();
};
watch(()=>linQuery.deptId,(val)=>{
if(val){
getBaseselectPage()
}
},
{
deep:true,immediate: true
})
//页面关闭
const close = () => {
dialogForm.value = false;

View File

@ -45,14 +45,10 @@
</div>
</div>
<el-form ref="elform" :model="addForm" :rules="rules" :inline="true" label-position="top">
<div style="
width: 16%;
display: flex;
margin-bottom: 10px;
">
<div style=" width: 100%; ">
<MOSTY.Upload width="100%" :limit="1" :isImg="true" v-model="addForm.tp" :disableds="forbidden"/>
</div>
<div style="width: 16%; display: flex; margin-bottom: 10px">
<div style="width: 100%">
<MOSTY.Upload width="100%" :limit="1" :isImg="true" v-model="addForm.tp" :disableds="forbidden" />
</div>
<!-- <div style="position: relative; height: 100px">
<el-upload class="avatar-uploader" action="/mosty-api/mosty-base/minio/image/upload/id" :on-success="upImg"
:show-file-list="false">
@ -147,24 +143,26 @@ import EditAddForm from "./components/editAddForm.vue";
import { jczgetXfllList } from "@/api/mosty-jcz.js";
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
const { proxy } = getCurrentInstance();
const { D_BZ_SF, D_BZ_MZ, D_BZ_XB, D_BZ_ZZMM, D_BZ_WHCD, D_BZ_HYZK } = proxy.$dict(
"D_BZ_SF",
"D_BZ_MZ",
"D_BZ_XB",
"D_BZ_ZZMM",
"D_BZ_WHCD",
"D_BZ_HYZK"
);
const { D_BZ_SF, D_BZ_MZ, D_BZ_XB, D_BZ_ZZMM, D_BZ_WHCD, D_BZ_HYZK } =
proxy.$dict(
"D_BZ_SF",
"D_BZ_MZ",
"D_BZ_XB",
"D_BZ_ZZMM",
"D_BZ_WHCD",
"D_BZ_HYZK"
);
const urlImg = ref("/mosty-api/mosty-base/minio/image/download/");
const imgUrl = ref("");
const dialogFormVisible = ref(false);
const searchConfiger = ref([
{
{
showType: "department",
prop: "ssbmdm",
placeholder: "请选择所属部门",
label: "所属部门"
},{
},
{
label: "姓名",
prop: "xm",
placeholder: "请输入姓名",
@ -175,7 +173,7 @@ const searchConfiger = ref([
prop: "sfzh",
placeholder: "请输入证件号码",
showType: "input"
},
}
// {
// label: "是否离职",
// prop: "xtSjzt",
@ -183,9 +181,8 @@ const searchConfiger = ref([
// showType: "select",
// options: D_BZ_SF
// },
]);
const elform = ref(null)
const elform = ref(null);
const detailDiloag = ref();
const pageData = reactive({
tableData: [], //表格数据
@ -209,7 +206,7 @@ const pageData = reactive({
{ label: "专业技能", prop: "zyjn" }
]
});
const addForm = ref({})
const addForm = ref({});
onMounted(() => {
tabHeightFn();
});
@ -241,9 +238,9 @@ function submit() {
elform.value.validate((valid) => {
if (valid) {
let data = addForm.value;
qcckPut(data, '/mosty-jcz/tbQwXfll').then(res => {
dialogFormVisible.value = false
})
qcckPut(data, "/mosty-jcz/tbQwXfll").then((res) => {
dialogFormVisible.value = false;
});
}
});
}
@ -257,17 +254,17 @@ function deletImg() {
}
const changeNo = (val) => {
pageData.pageConfiger.pageNum = val;
getjczgetXfllList()
getjczgetXfllList();
};
const changeSize = (val) => {
pageData.pageConfiger.pageSize = val;
getjczgetXfllList()
getjczgetXfllList();
};
// 新增
const addEdit = (type, row) => {
if (type == 'edit') {
getMjDetail(row.id)
if (type == "edit") {
getMjDetail(row.id);
} else {
detailDiloag.value.init(type, row);
}
@ -292,12 +289,12 @@ function delDictItem(e) {
});
}
const getMjDetail = (id) => {
qcckGet({}, `/mosty-jcz/tbQwXfll/${id}`).then(res => {
qcckGet({}, `/mosty-jcz/tbQwXfll/${id}`).then((res) => {
addForm.value = res;
imgUrl.value = res.tp ? urlImg.value + res.tp : "";
dialogFormVisible.value = true
})
}
dialogFormVisible.value = true;
});
};
const searchBox = ref(null);
// 表格高度计算
const tabHeightFn = () => {

View File

@ -32,7 +32,7 @@
<img src="@/assets/images/tc/zbfj.png" alt="" srcset="" />
</div>
<div class="occupation">
值班民警<span class="number">{{ BbMag?.ryList.length }}</span>
值班民警<span class="number">{{ BbMag.mjsl?BbMag.mjsl:0 }}</span>
</div>
</div>
<!-- <div class="dutyList flex just-between align-center">
@ -48,16 +48,12 @@
<img src="@/assets/images/tc/zbfj.png" alt="" srcset="" />
</div>
<div class="occupation">
值班<span class="number">{{ BbMag?.ryList.length }}</span>
值班<span class="number">{{ BbMag.fjsl?BbMag.fjsl:0 }}</span>
</div>
</div>
</div>
<div class="contentRight">
<div
class="flex align-center right just-between"
v-for="(item, index) in ArrList"
:key="index"
>
<div class="flex align-center right just-between" v-for="(item, index) in ArrList" :key="index">
<div>{{ item.name }}</div>
<div class="number">
<span>{{ item.count }}</span>
@ -81,7 +77,7 @@ import { useRouter } from "vue-router";
const props = defineProps({
JczData: {
type: Object,
default: () => {}
default: () => { }
}
});
@ -89,6 +85,15 @@ const BbMag = ref({ ryList: [] });
const getjczqueryByIdFeign = () => {
jczqueryById({ jczid: props.JczData.id }).then((res) => {
BbMag.value = res;
if (res.ryList) {
BbMag.value.mjsl = res.ryList.filter((el) => {
return el.ryMfjlb == '01'
}).length
BbMag.value.fjsl = res.ryList.filter((el) => {
return el.ryMfjlb == '02'
}).length
}
});
};
getjczqueryByIdFeign();
@ -224,15 +229,18 @@ countWays();
left: 50%;
transform: translate(-50%, -50%);
padding: 20px 0;
.cloes {
width: 23px;
position: absolute;
top: 4px;
left: 92%;
img {
width: 100%;
}
}
.bt {
margin-top: 14px;
color: #fff;
@ -247,6 +255,7 @@ countWays();
font-family: "微软雅黑";
font-weight: 700;
}
.headbut {
width: 159px;
margin-right: 20px;
@ -261,15 +270,19 @@ countWays();
.content {
width: 100%;
margin-top: 10px;
.contentLeft {
width: 50%;
.leftImg {
width: 97px;
height: 98px;
img {
width: 100%;
}
}
.leftMag {
font-size: 20px;
height: 98px;
@ -282,33 +295,41 @@ countWays();
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.name {
font-family: "方正黑体";
}
}
.dutyList {
padding-left: 16px;
margin-bottom: 5px;
.dutyImg {
width: 27px;
}
.occupation {
font-size: 20px;
font-family: "方正黑体";
width: calc(100% - 70px);
.number {
color: #02fafb;
}
}
}
}
.contentRight {
width: 50%;
padding: 0 20px;
.right {
font-size: 18px;
font-family: "方正黑体";
margin-bottom: 11px;
.number {
width: 40%;
color: #02fafb;

View File

@ -24,7 +24,6 @@
v-model="listQuery.jczList"
:dic="props.dic"
/>
<div class="peolist" v-if="listQuery.jczList">
<el-tag type="primary" :key="item">{{
listQuery.jczList.jczmc