Compare commits
No commits in common. "master" and "yaooo" have entirely different histories.
|
@ -62,8 +62,5 @@
|
|||
</div>
|
||||
</div>
|
||||
<script type="module" src="/src/main.ts"></script>
|
||||
<script src="/jessibuca.js"></script>
|
||||
<script src="/decoder.js"></script>
|
||||
<script src="/decoder.wasm"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -21,7 +21,6 @@
|
|||
"highlight.js": "^11.6.0",
|
||||
"nprogress": "^0.2.0",
|
||||
"pinia": "^2.0.14",
|
||||
"uuid": "^9.0.1",
|
||||
"vue": "^3.2.37",
|
||||
"vue-clipboard3": "^2.0.0",
|
||||
"vue-echarts": "^6.2.3",
|
||||
|
@ -35,7 +34,6 @@
|
|||
"@types/lodash-es": "^4.17.6",
|
||||
"@types/node": "^16.11.41",
|
||||
"@types/nprogress": "^0.2.0",
|
||||
"@types/uuid": "^9.0.7",
|
||||
"@vitejs/plugin-legacy": "^2.3.1",
|
||||
"@vitejs/plugin-vue": "^3.0.0",
|
||||
"@vitejs/plugin-vue-jsx": "^2.0.0",
|
||||
|
@ -901,12 +899,6 @@
|
|||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/uuid": {
|
||||
"version": "9.0.7",
|
||||
"resolved": "https://registry.npmmirror.com/@types/uuid/-/uuid-9.0.7.tgz",
|
||||
"integrity": "sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/web-bluetooth": {
|
||||
"version": "0.0.14",
|
||||
"resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.14.tgz",
|
||||
|
@ -7054,14 +7046,6 @@
|
|||
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/uuid": {
|
||||
"version": "9.0.1",
|
||||
"resolved": "https://registry.npmmirror.com/uuid/-/uuid-9.0.1.tgz",
|
||||
"integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
|
||||
"bin": {
|
||||
"uuid": "dist/bin/uuid"
|
||||
}
|
||||
},
|
||||
"node_modules/v8-compile-cache": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmmirror.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
|
||||
|
@ -8113,12 +8097,6 @@
|
|||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"@types/uuid": {
|
||||
"version": "9.0.7",
|
||||
"resolved": "https://registry.npmmirror.com/@types/uuid/-/uuid-9.0.7.tgz",
|
||||
"integrity": "sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==",
|
||||
"dev": true
|
||||
},
|
||||
"@types/web-bluetooth": {
|
||||
"version": "0.0.14",
|
||||
"resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.14.tgz",
|
||||
|
@ -13078,11 +13056,6 @@
|
|||
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
|
||||
"dev": true
|
||||
},
|
||||
"uuid": {
|
||||
"version": "9.0.1",
|
||||
"resolved": "https://registry.npmmirror.com/uuid/-/uuid-9.0.1.tgz",
|
||||
"integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA=="
|
||||
},
|
||||
"v8-compile-cache": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmmirror.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
|
||||
|
|
|
@ -22,7 +22,6 @@
|
|||
"highlight.js": "^11.6.0",
|
||||
"nprogress": "^0.2.0",
|
||||
"pinia": "^2.0.14",
|
||||
"uuid": "^9.0.1",
|
||||
"vue": "^3.2.37",
|
||||
"vue-clipboard3": "^2.0.0",
|
||||
"vue-echarts": "^6.2.3",
|
||||
|
@ -36,7 +35,6 @@
|
|||
"@types/lodash-es": "^4.17.6",
|
||||
"@types/node": "^16.11.41",
|
||||
"@types/nprogress": "^0.2.0",
|
||||
"@types/uuid": "^9.0.7",
|
||||
"@vitejs/plugin-legacy": "^2.3.1",
|
||||
"@vitejs/plugin-vue": "^3.0.0",
|
||||
"@vitejs/plugin-vue-jsx": "^2.0.0",
|
||||
|
|
File diff suppressed because one or more lines are too long
Binary file not shown.
|
@ -1,19 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
|
||||
<title><%= htmlWebpackPlugin.options.title %></title>
|
||||
<script src="./jessibuca.js"></script>
|
||||
</head>
|
||||
<body class="page">
|
||||
<noscript>
|
||||
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled.
|
||||
Please enable it to continue.</strong>
|
||||
</noscript>
|
||||
<div id="app"></div>
|
||||
<!-- built files will be auto injected -->
|
||||
</body>
|
||||
</html>
|
File diff suppressed because one or more lines are too long
|
@ -1,27 +0,0 @@
|
|||
import request from '@/utils/request'
|
||||
// 省列表
|
||||
export function apiProvinceList(params: any) {
|
||||
return request.get({ url: '/common/province', params })
|
||||
}
|
||||
// 市列表
|
||||
export function apiCityList(params: any) {
|
||||
return request.get({ url: '/common/city', params })
|
||||
}
|
||||
// 区列表
|
||||
export function apiAreaList(params: any) {
|
||||
return request.get({ url: '/common/area', params })
|
||||
}
|
||||
// 镇列表
|
||||
export function apiStreetList(params: any) {
|
||||
return request.get({ url: '/common/street', params })
|
||||
}
|
||||
// 村列表
|
||||
export function apiVillageList(params: any) {
|
||||
return request.get({ url: '/common/village', params })
|
||||
}
|
||||
|
||||
// 队列表
|
||||
export function apiBrigadeList() {
|
||||
return request.get({ url: '/common/brigade' })
|
||||
}
|
||||
|
|
@ -19,8 +19,3 @@ export function userEdit(params: any) {
|
|||
export function adjustMoney(params: any) {
|
||||
return request.post({ url: '/user.user/adjustMoney', params })
|
||||
}
|
||||
|
||||
//添加用户
|
||||
export function addUser(params: any) {
|
||||
return request.post({ url: '/user.user/add', params })
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@ export function getUserList(params: any) {
|
|||
|
||||
// 产品列表列表
|
||||
export function apiProductLists(params: any) {
|
||||
return request.get({ url: '/land.product/datas', params })
|
||||
return request.get({ url: '/land.product/lists', params })
|
||||
}
|
||||
|
||||
// 监测设备列表
|
||||
|
|
|
@ -2,12 +2,12 @@ import request from '@/utils/request'
|
|||
|
||||
// 用户列表
|
||||
export function getUserList(params: any) {
|
||||
return request.get({ url: '/user.user/datas', params }, { ignoreCancelToken: true })
|
||||
return request.get({ url: '/user.user/lists', params }, { ignoreCancelToken: true })
|
||||
}
|
||||
|
||||
// 产品列表列表
|
||||
export function apiProductLists(params: any) {
|
||||
return request.get({ url: '/land.product/datas', params })
|
||||
return request.get({ url: '/land.product/lists', params })
|
||||
}
|
||||
|
||||
// 土地表列表
|
||||
|
@ -38,9 +38,4 @@ export function apiLandDetail(params: any) {
|
|||
// 绑定产品
|
||||
export function apiLandBind(params: any) {
|
||||
return request.post({ url: '/land.land/bind', params })
|
||||
}
|
||||
|
||||
// 用户信息
|
||||
export function getUserInfo() {
|
||||
return request.get({ url: '/auth.admin/mySelf' })
|
||||
}
|
|
@ -2,12 +2,12 @@ import request from '@/utils/request'
|
|||
|
||||
// 用户列表
|
||||
export function getUserList(params: any) {
|
||||
return request.get({ url: '/user.user/datas', params }, { ignoreCancelToken: true })
|
||||
return request.get({ url: '/user.user/lists', params }, { ignoreCancelToken: true })
|
||||
}
|
||||
|
||||
// 土地表列表
|
||||
export function apiLandLists(params: any) {
|
||||
return request.get({ url: '/land.land/datas', params })
|
||||
return request.get({ url: '/land.land/lists', params })
|
||||
}
|
||||
|
||||
// 产品列表列表
|
||||
|
@ -17,7 +17,7 @@ export function apiProductLists(params: any) {
|
|||
|
||||
// 监测设备列表
|
||||
export function apiDeviceLists(params: any) {
|
||||
return request.get({ url: '/device.device/datas', params })
|
||||
return request.get({ url: '/device.device/lists', params })
|
||||
}
|
||||
|
||||
|
||||
|
@ -44,9 +44,4 @@ export function apiProductDetail(params: any) {
|
|||
// 绑定设备
|
||||
export function apiProductBind(params: any) {
|
||||
return request.post({ url: '/land.product/bind', params })
|
||||
}
|
||||
|
||||
// 用户信息
|
||||
export function getUserInfo() {
|
||||
return request.get({ url: '/auth.admin/mySelf' })
|
||||
}
|
|
@ -1,363 +0,0 @@
|
|||
<template>
|
||||
<div class="rot" >
|
||||
<div class="container-shell">
|
||||
|
||||
<div class="option" style="display: none;">
|
||||
|
||||
<input
|
||||
style="width: 50px"
|
||||
type="number"
|
||||
ref="buffer"
|
||||
value="0.2"
|
||||
@change="changeBuffer"
|
||||
/>
|
||||
<input
|
||||
type="checkbox"
|
||||
v-model="useMSE"
|
||||
ref="vod"
|
||||
@change="restartPlay('mse')"
|
||||
/><span>MediaSource</span>
|
||||
<input
|
||||
type="checkbox"
|
||||
v-model="useWCS"
|
||||
ref="vod"
|
||||
@change="restartPlay('wcs')"
|
||||
/><span>webcodecs</span>
|
||||
|
||||
</div>
|
||||
<div id="container" ref="container"></div>
|
||||
<div class="input" style="display: none;">
|
||||
<div>输入URL:</div>
|
||||
<input
|
||||
type="input"
|
||||
autocomplete="on"
|
||||
ref="playUrl"
|
||||
:value="video_url"
|
||||
/>
|
||||
<button v-if="!playing" @click="play">播放</button>
|
||||
<button v-else @click="pause">停止</button>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
|
||||
export default {
|
||||
name: "VideoPlayer",
|
||||
props: {
|
||||
video_url: String
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
jessibuca: null,
|
||||
version: '',
|
||||
wasm: false,
|
||||
videoUrl:'',
|
||||
vc: "ff",
|
||||
playing: false,
|
||||
quieting: true,
|
||||
loaded: false, // mute
|
||||
showOperateBtns: false,
|
||||
showBandwidth: false,
|
||||
err: "",
|
||||
speed: 0,
|
||||
performance: "",
|
||||
volume: 1,
|
||||
rotate: 0,
|
||||
useWCS: false,
|
||||
useMSE: true,
|
||||
useOffscreen: false,
|
||||
recording: false,
|
||||
recordType: 'webm',
|
||||
scale: 0
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.create();
|
||||
this.videoUrl = this.video_url
|
||||
window.onerror = (msg) => (this.err = msg);
|
||||
|
||||
setTimeout( ()=>{
|
||||
this.play()
|
||||
},2000 )
|
||||
|
||||
},
|
||||
unmounted() {
|
||||
this.jessibuca.destroy();
|
||||
},
|
||||
methods: {
|
||||
create(options) {
|
||||
options = options || {};
|
||||
this.jessibuca = new window.Jessibuca(
|
||||
Object.assign(
|
||||
{
|
||||
container: this.$refs.container,
|
||||
videoBuffer: Number(this.$refs.buffer.value), // 缓存时长
|
||||
isResize: false,
|
||||
useWCS: this.useWCS,
|
||||
useMSE: this.useMSE,
|
||||
text: "",
|
||||
loadingText: "疯狂加载中...",
|
||||
debug: false,
|
||||
decoder:"/decoder.js",
|
||||
supportDblclickFullscreen: true,
|
||||
showBandwidth: this.showBandwidth, // 显示网速
|
||||
operateBtns: {
|
||||
fullscreen: this.showOperateBtns,
|
||||
screenshot: this.showOperateBtns,
|
||||
play: this.showOperateBtns,
|
||||
audio: this.showOperateBtns,
|
||||
},
|
||||
vod: this.vod,
|
||||
forceNoOffscreen: !this.useOffscreen,
|
||||
isNotMute: true,
|
||||
timeout: 10
|
||||
},
|
||||
options
|
||||
)
|
||||
);
|
||||
let _this = this;
|
||||
this.jessibuca.on("load", function () {
|
||||
console.log("on load");
|
||||
});
|
||||
|
||||
this.jessibuca.on("log", function (msg) {
|
||||
console.log("on log", msg);
|
||||
});
|
||||
this.jessibuca.on("record", function (msg) {
|
||||
console.log("on record:", msg);
|
||||
});
|
||||
this.jessibuca.on("pause", function () {
|
||||
console.log("on pause");
|
||||
_this.playing = false;
|
||||
});
|
||||
this.jessibuca.on("play", function () {
|
||||
console.log("on play");
|
||||
_this.playing = true;
|
||||
});
|
||||
this.jessibuca.on("fullscreen", function (msg) {
|
||||
console.log("on fullscreen", msg);
|
||||
});
|
||||
|
||||
this.jessibuca.on("mute", function (msg) {
|
||||
console.log("on mute", msg);
|
||||
_this.quieting = msg;
|
||||
});
|
||||
|
||||
this.jessibuca.on("mute", function (msg) {
|
||||
console.log("on mute2", msg);
|
||||
});
|
||||
|
||||
this.jessibuca.on("audioInfo", function (msg) {
|
||||
console.log("audioInfo", msg);
|
||||
});
|
||||
this.jessibuca.on("videoInfo", function (info) {
|
||||
console.log("videoInfo", info);
|
||||
});
|
||||
|
||||
this.jessibuca.on("error", function (error) {
|
||||
console.log("error", error);
|
||||
});
|
||||
|
||||
this.jessibuca.on("timeout", function () {
|
||||
console.log("timeout");
|
||||
});
|
||||
|
||||
this.jessibuca.on('start', function () {
|
||||
console.log('frame start');
|
||||
})
|
||||
|
||||
this.jessibuca.on("performance", function (performance) {
|
||||
var show = "卡顿";
|
||||
if (performance === 2) {
|
||||
show = "非常流畅";
|
||||
} else if (performance === 1) {
|
||||
show = "流畅";
|
||||
}
|
||||
_this.performance = show;
|
||||
});
|
||||
this.jessibuca.on('buffer', function (buffer) {
|
||||
console.log('buffer', buffer);
|
||||
})
|
||||
|
||||
this.jessibuca.on('stats', function (stats) {
|
||||
console.log('stats', stats);
|
||||
})
|
||||
|
||||
this.jessibuca.on('kBps', function (kBps) {
|
||||
console.log('kBps', kBps);
|
||||
});
|
||||
|
||||
this.jessibuca.on("play", () => {
|
||||
this.playing = true;
|
||||
this.loaded = true;
|
||||
this.quieting = this.jessibuca.isMute();
|
||||
});
|
||||
|
||||
this.jessibuca.on('recordingTimestamp', (ts) => {
|
||||
console.log('recordingTimestamp', ts);
|
||||
})
|
||||
},
|
||||
|
||||
play() {
|
||||
if (this.$refs.playUrl.value) {
|
||||
this.jessibuca.play(this.$refs.playUrl.value);
|
||||
}
|
||||
},
|
||||
mute() {
|
||||
this.jessibuca.mute();
|
||||
},
|
||||
cancelMute() {
|
||||
this.jessibuca.cancelMute();
|
||||
},
|
||||
|
||||
pause() {
|
||||
this.jessibuca.pause();
|
||||
this.playing = false;
|
||||
this.err = "";
|
||||
this.performance = "";
|
||||
},
|
||||
volumeChange() {
|
||||
this.jessibuca.setVolume(this.volume);
|
||||
},
|
||||
rotateChange() {
|
||||
this.jessibuca.setRotate(this.rotate);
|
||||
},
|
||||
destroy() {
|
||||
if (this.jessibuca) {
|
||||
this.jessibuca.destroy();
|
||||
}
|
||||
this.create();
|
||||
this.playing = false;
|
||||
this.loaded = false;
|
||||
this.performance = "";
|
||||
},
|
||||
|
||||
fullscreen() {
|
||||
this.jessibuca.setFullscreen(true);
|
||||
},
|
||||
|
||||
clearView() {
|
||||
this.jessibuca.clearView();
|
||||
},
|
||||
|
||||
startRecord() {
|
||||
const time = new Date().getTime();
|
||||
this.jessibuca.startRecord(time, this.recordType);
|
||||
},
|
||||
|
||||
stopAndSaveRecord() {
|
||||
this.jessibuca.stopRecordAndSave();
|
||||
},
|
||||
|
||||
|
||||
screenShot() {
|
||||
this.jessibuca.screenshot();
|
||||
},
|
||||
|
||||
|
||||
restartPlay(type) {
|
||||
|
||||
if (type === 'mse') {
|
||||
this.useWCS = false;
|
||||
this.useOffscreen = false;
|
||||
} else if (type === 'wcs') {
|
||||
this.useMSE = false
|
||||
} else if (type === 'offscreen') {
|
||||
this.useMSE = false
|
||||
}
|
||||
|
||||
this.destroy();
|
||||
setTimeout(() => {
|
||||
this.play();
|
||||
}, 100)
|
||||
},
|
||||
|
||||
changeBuffer() {
|
||||
this.jessibuca.setBufferTime(Number(this.$refs.buffer.value));
|
||||
},
|
||||
|
||||
scaleChange() {
|
||||
this.jessibuca.setScaleMode(this.scale);
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style>
|
||||
.root {
|
||||
display: flex;
|
||||
place-content: center;
|
||||
margin-top: 3rem;
|
||||
}
|
||||
|
||||
.container-shell {
|
||||
position: relative;
|
||||
backdrop-filter: blur(5px);
|
||||
width: auto;
|
||||
position: relative;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.container-shell-title {
|
||||
position: absolute;
|
||||
color: darkgray;
|
||||
top: 4px;
|
||||
left: 10px;
|
||||
text-shadow: 1px 1px black;
|
||||
}
|
||||
|
||||
#container {
|
||||
width: 55vw;
|
||||
height: 30vw;
|
||||
}
|
||||
|
||||
.input {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-top: 10px;
|
||||
color: white;
|
||||
place-content: stretch;
|
||||
}
|
||||
|
||||
.input2 {
|
||||
bottom: 0px;
|
||||
}
|
||||
|
||||
.input input[type='input'] {
|
||||
flex: auto;
|
||||
}
|
||||
|
||||
.err {
|
||||
position: absolute;
|
||||
top: 40px;
|
||||
left: 10px;
|
||||
color: red;
|
||||
}
|
||||
|
||||
.option {
|
||||
position: absolute;
|
||||
top: 4px;
|
||||
right: 10px;
|
||||
display: flex;
|
||||
place-content: center;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.option span {
|
||||
color: white;
|
||||
}
|
||||
|
||||
.page {
|
||||
background-repeat: no-repeat;
|
||||
background-position: top;
|
||||
}
|
||||
|
||||
@media (max-width: 720px) {
|
||||
#container {
|
||||
width: 90vw;
|
||||
height: 52.7vw;
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -2,9 +2,7 @@ const config = {
|
|||
terminal: 1, //终端
|
||||
title: '后台管理系统', //网站默认标题
|
||||
version: '1.6.0', //版本号
|
||||
baseUrl: `${
|
||||
import.meta.env.VITE_APP_BASE_URL
|
||||
}/`, //请求接口域名
|
||||
baseUrl: `${import.meta.env.VITE_APP_BASE_URL || ''}/`, //请求接口域名
|
||||
// baseUrl: 'http://127.0.0.1:30005/',
|
||||
urlPrefix: 'adminapi', //请求默认前缀
|
||||
timeout: 10 * 1000 //请求超时时长
|
||||
|
|
|
@ -4,9 +4,7 @@ import install from './install'
|
|||
import './permission'
|
||||
import './styles/index.scss'
|
||||
import 'virtual:svg-icons-register'
|
||||
import configs from './config/index'
|
||||
|
||||
const app = createApp(App)
|
||||
app.use(install)
|
||||
app.provide('base_url', configs.baseUrl+configs.urlPrefix);
|
||||
app.mount('#app')
|
||||
|
|
|
@ -25,14 +25,13 @@
|
|||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
<el-form-item label="账号:">
|
||||
{{ formData.account }}
|
||||
</el-form-item>
|
||||
<el-form-item label="用户编号:"> {{ formData.sn }} </el-form-item>
|
||||
<el-form-item label="用户昵称:">
|
||||
{{ formData.nickname }}
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="账号:">
|
||||
{{ formData.account }}
|
||||
</el-form-item>
|
||||
<el-form-item label="真实姓名:">
|
||||
{{ formData.real_name || '-' }}
|
||||
<popover-input
|
||||
|
|
|
@ -30,7 +30,6 @@
|
|||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
<el-button @click="dialogFormVisible=true">创建</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
|
@ -51,7 +50,7 @@
|
|||
<el-table-column label="注册时间" prop="create_time" min-width="120" />
|
||||
<el-table-column label="操作" width="200" align="center" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button type="primary" link>
|
||||
<el-button v-perms="['land.land/lists']" type="primary" link>
|
||||
<router-link
|
||||
:to="{
|
||||
path: getRoutePath('land.land/lists'),
|
||||
|
@ -82,33 +81,12 @@
|
|||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<el-dialog v-model="dialogFormVisible" title="添加用户" width="30%">
|
||||
<el-form :model="form" ref="addForm">
|
||||
<el-form-item label="手机号" prop="mobile">
|
||||
<el-input v-model="form.mobile" autocomplete="off" />
|
||||
<span>
|
||||
<el-icon><Pointer /></el-icon>
|
||||
初始密码:123456
|
||||
</span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button @click="dialogFormVisible = false">取消</el-button>
|
||||
<el-button type="primary" @click="addUser">
|
||||
确定
|
||||
</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts" setup name="consumerLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { getRoutePath } from '@/router'
|
||||
import { getUserList, addUser as addUserApi } from '@/api/consumer'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import { getUserList } from '@/api/consumer'
|
||||
import { ClientMap } from '@/enums/appEnums'
|
||||
const queryParams = reactive({
|
||||
keyword: '',
|
||||
|
@ -125,21 +103,5 @@ onActivated(() => {
|
|||
getLists()
|
||||
})
|
||||
|
||||
const dialogFormVisible = ref(false)
|
||||
const form = reactive({
|
||||
"mobile": ""
|
||||
})
|
||||
const addForm = ref()
|
||||
const addUser = () => {
|
||||
addUserApi(form).then(() => {
|
||||
ElMessage({
|
||||
message: '用户添加成功',
|
||||
type: 'success',
|
||||
})
|
||||
addForm.value.resetFields()
|
||||
dialogFormVisible.value = false
|
||||
getLists()
|
||||
})
|
||||
}
|
||||
getLists()
|
||||
</script>
|
||||
|
|
|
@ -10,39 +10,37 @@
|
|||
</div>
|
||||
</template>
|
||||
<div class="flex flex-wrap">
|
||||
<div v-if="deviceData.device.land_id != ''" class="w-1/2 mb-4 md:w-1/3">
|
||||
<div v-if="deviceData.device.land_id != ''" class="w-1/2 md:w-1/3 mb-4">
|
||||
<div class="leading-10">所属土地:</div>
|
||||
<div class="text-3xl text-tx-gray">ID:{{ deviceData.device.land_id }} / 名称:{{
|
||||
deviceData.device.land_title }}</div>
|
||||
<div class="text-3xl text-tx-gray">ID:{{ deviceData.device.land_id }} / 名称:{{ deviceData.device.land_title }}</div>
|
||||
</div>
|
||||
<div v-if="deviceData.device.product_id != ''" class="w-1/2 mb-4 md:w-1/3">
|
||||
<div v-if="deviceData.device.product_id != ''" class="w-1/2 md:w-1/3 mb-4">
|
||||
<div class="leading-10">所属产品:</div>
|
||||
<div class="text-3xl text-tx-gray">ID:{{ deviceData.device.product_id }} / 名称:{{
|
||||
deviceData.device.product_name }}</div>
|
||||
<div class="text-3xl text-tx-gray">ID:{{ deviceData.device.product_id }} / 名称:{{ deviceData.device.land_title }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-wrap">
|
||||
<div class="w-1/2 mb-4 md:w-1/6">
|
||||
<div class="w-1/2 md:w-1/6 mb-4">
|
||||
<div class="leading-10">设备名称:</div>
|
||||
<div class="text-3xl text-tx-gray">{{ deviceData.device.name }}</div>
|
||||
</div>
|
||||
<div class="w-1/2 mb-4 md:w-1/6">
|
||||
<div class="w-1/2 md:w-1/6 mb-4">
|
||||
<div class="leading-10">设备编码:</div>
|
||||
<div class="text-3xl text-tx-gray">{{ deviceData.device.code }}</div>
|
||||
</div>
|
||||
<div class="w-1/2 mb-4 md:w-1/6">
|
||||
<div class="w-1/2 md:w-1/6 mb-4">
|
||||
<div class="leading-10">设备类型:</div>
|
||||
<div class="text-3xl text-tx-gray">
|
||||
<dict-value :options="dictData.device_type" :value="deviceData.device.type" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="w-1/2 mb-4 md:w-1/6">
|
||||
<div class="w-1/2 md:w-1/6 mb-4">
|
||||
<div class="leading-10">设备状态:</div>
|
||||
<div class="text-3xl text-tx-gray">
|
||||
<dict-value :options="dictData.device_status" :value="deviceData.device.status" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="w-1/2 mb-4 md:w-1/6">
|
||||
<div class="w-1/2 md:w-1/6 mb-4">
|
||||
<div class="leading-10">是否在线:</div>
|
||||
<div class="text-3xl text-tx-gray">
|
||||
<dict-value :options="dictData.device_online_status" :value="deviceData.device.is_online" />
|
||||
|
@ -53,35 +51,30 @@
|
|||
|
||||
<el-card class="!border-none mt-4 flex-1" shadow="never">
|
||||
<el-tabs v-model="activeName" class="">
|
||||
<!-- <el-tab-pane v-if="deviceData.device.type==3" label="监控视频" name="monitor_video"> -->
|
||||
<el-tab-pane label="监控视频" name="monitor_video" style="width:100vw;padding-left: 15vw;">
|
||||
<Jessibuca v-if="deviceData.device.video_url != '' && showVideo " :video_url="deviceData.device.video_url"></Jessibuca>
|
||||
<!-- <Jessibuca
|
||||
:video_url="'http://rtsp.lihaink.cn/live/lihai_lot_walnutpi_dev_6.live.flv?secret=ywdtp2llj80ha19jhmxl4po99nsmaynt'">
|
||||
</Jessibuca> -->
|
||||
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="监控数据" name="monitor_item">
|
||||
<el-row :gutter="12">
|
||||
<el-col :span="6" v-for="item in deviceData.monitor_item" :key="item">
|
||||
<el-card shadow="always" class="mb-4">
|
||||
<el-card shadow="always" class="mb-4">
|
||||
<div class="flex justify-between mb-2">
|
||||
<div class="mt-2 text-sm text-tx-secondary">{{ item.name }}</div>
|
||||
<div class="mt-2 text-sm text-tx-secondary" style="cursor: pointer;"
|
||||
@click="handleClick(item.device_id, item.value)">
|
||||
<div class="mt-2 text-sm text-tx-secondary" style="cursor: pointer;" @click="handleClick(item.device_id, item.value)">
|
||||
历史数据
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="my-6 text-3xl">{{ item.monitor_value }}</div>
|
||||
<div class="mt-2 text-sm text-tx-secondary"><el-tag class="mr-2" type="info">只读</el-tag>{{
|
||||
item.last_time }}</div>
|
||||
<div class="mt-2 text-sm text-tx-secondary"><el-tag class="mr-2" type="info">只读</el-tag>{{ item.last_time }}</div>
|
||||
</el-card>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane v-if="deviceData.device.type==3" label="监控视频" name="monitor_video">
|
||||
<video
|
||||
v-if="deviceData.device.video_url != ''"
|
||||
:src="deviceData.device.video_url"
|
||||
controls
|
||||
></video>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</el-card>
|
||||
</div>
|
||||
|
@ -92,21 +85,25 @@
|
|||
<el-table-column property="date" label="时间" width="250" />
|
||||
<el-table-column property="value" label="数据" />
|
||||
</el-table>
|
||||
<el-pagination small background layout="prev, pager, next" :page-size="queryMonitorData.page_size"
|
||||
:total="queryMonitorData.total" class="mt-4" @current-change="handleCurrentChange" />
|
||||
</el-dialog>
|
||||
<el-pagination
|
||||
small
|
||||
background
|
||||
layout="prev, pager, next"
|
||||
:page-size="queryMonitorData.page_size"
|
||||
:total="queryMonitorData.total"
|
||||
class="mt-4"
|
||||
@current-change="handleCurrentChange"
|
||||
/>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="deviceDetail">
|
||||
import { ref } from 'vue'
|
||||
import Jessibuca from '@/components/jessibuca/Jessibuca.vue'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import { apiDeviceDetail, apiDeviceMonitorData } from '@/api/device'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import {useRoute} from "vue-router"
|
||||
|
||||
|
||||
const activeName = ref('monitor_video')
|
||||
const activeName = ref('monitor_item')
|
||||
const deviceData: any = reactive({
|
||||
device: {},
|
||||
monitor_item: []
|
||||
|
@ -128,9 +125,6 @@ const getDetails = async () => {
|
|||
id: route.query.device_id
|
||||
})
|
||||
.then((res: any) => {
|
||||
scoketData.username = res.account
|
||||
scoketData.device = res.id
|
||||
// pullStream(scoketData)
|
||||
deviceData.device.name = res.name
|
||||
deviceData.device.code = res.code
|
||||
deviceData.device.type = res.type
|
||||
|
@ -210,38 +204,4 @@ const handleCurrentChange = (val: number) => {
|
|||
console.log('err', err)
|
||||
})
|
||||
}
|
||||
|
||||
// scoket拉流地址
|
||||
const scoketData = reactive({
|
||||
username: '',
|
||||
device: '',
|
||||
scence: 2,
|
||||
|
||||
})
|
||||
const showVideo=ref(false)
|
||||
const socket = new WebSocket('wss://iot.lihaink.cn/test');
|
||||
const pullStream = (data: object) => {
|
||||
const onSocketOpen = (event: any) => {
|
||||
console.log("scoket打开")
|
||||
socket.send(JSON.stringify(data));
|
||||
showVideo.value=true
|
||||
}
|
||||
const onSocketClose = (event: any) => {
|
||||
console.log('WebSocket连接已关闭');
|
||||
}
|
||||
const onSocketError = (event: any) => {
|
||||
console.error('WebSocket连接发生错误');
|
||||
}
|
||||
socket.addEventListener('open', onSocketOpen);
|
||||
socket.addEventListener('close', onSocketClose);
|
||||
socket.addEventListener('error', onSocketError);
|
||||
}
|
||||
pullStream( {
|
||||
username:route.query.userName,
|
||||
device: 'lihai_lot_walnutpi_dev_' + route.query.device_id,
|
||||
scence:'web'
|
||||
})
|
||||
onBeforeUnmount(() => {
|
||||
socket.close()
|
||||
})
|
||||
</script>
|
|
@ -23,50 +23,26 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="所属产品" prop="product_id">
|
||||
<el-select
|
||||
<el-select
|
||||
v-model="formData.product_id"
|
||||
remote
|
||||
filterable
|
||||
remote
|
||||
reserve-keyword
|
||||
placeholder="请输入产品信息"
|
||||
:remote-method="queryProduct"
|
||||
:loading="loading"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) in optionsData.product"
|
||||
:key="index"
|
||||
:label="item.productinfo"
|
||||
:value="item.id"
|
||||
/>
|
||||
<el-option
|
||||
v-for="item in productOptions"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="设备编码" prop="code">
|
||||
<el-input v-model="formData.code" clearable placeholder="请输入设备编码" />
|
||||
</el-form-item>
|
||||
<el-form-item label="产品图" prop="image">
|
||||
<el-upload
|
||||
class="avatar-uploader"
|
||||
:accept="acceptFileTypes"
|
||||
v-model="formData.image"
|
||||
:data="{ cid: 1 }"
|
||||
:headers="{ Token: userStore.token }"
|
||||
:action="action"
|
||||
:show-file-list="false"
|
||||
:on-success="handleAvatarSuccessAvatar"
|
||||
>
|
||||
<img
|
||||
v-if="formData.image"
|
||||
:src="formData.image"
|
||||
class="avatar"
|
||||
/>
|
||||
<div v-else class="avatar-uploader-icon">
|
||||
<el-icon>
|
||||
<Plus />
|
||||
</el-icon>
|
||||
</div>
|
||||
</el-upload>
|
||||
|
||||
</el-form-item>
|
||||
<el-form-item label="监测项" prop="monitor_item">
|
||||
<el-select class="flex-1" v-model="formData.monitor_item" multiple clearable placeholder="请选择设备监测项">
|
||||
<el-option
|
||||
|
@ -106,16 +82,11 @@
|
|||
</template>
|
||||
|
||||
<script lang="ts" setup name="deviceEdit">
|
||||
import { useDictOptions } from '@/hooks/useDictOptions'
|
||||
import {type FormInstance } from 'element-plus'
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import { apiDeviceAdd, apiDeviceEdit, apiDeviceDetail, getUserList, apiProductLists} from '@/api/device'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
import {ref} from "vue";
|
||||
import config from "@/config";
|
||||
import useUserStore from "@/stores/modules/user";
|
||||
import {ElMessage, type UploadProps} from "element-plus";
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
|
@ -126,19 +97,7 @@ const emit = defineEmits(['success', 'close'])
|
|||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
const acceptFileTypes = ref(".png, .jpg, .jpeg, image/png, image/jpeg")
|
||||
const action = ref(`${config.baseUrl}${config.urlPrefix}/upload/image`)
|
||||
const userStore = useUserStore()
|
||||
const handleAvatarSuccessAvatar: UploadProps["onSuccess"] = (
|
||||
response,
|
||||
uploadFile
|
||||
) => {
|
||||
if (response.code == 0) {
|
||||
ElMessage.error(response.msg);
|
||||
return;
|
||||
}
|
||||
formData.image = response.data.uri;
|
||||
}
|
||||
|
||||
|
||||
// 弹窗标题
|
||||
const popupTitle = computed(() => {
|
||||
|
@ -156,7 +115,6 @@ const formData = reactive({
|
|||
monitor_item: '',
|
||||
status: '',
|
||||
is_online: '',
|
||||
image: ''
|
||||
})
|
||||
|
||||
// 表单验证
|
||||
|
@ -199,26 +157,31 @@ const setFormData = async (data: Record<any, any>) => {
|
|||
}
|
||||
}
|
||||
|
||||
const { optionsData } = useDictOptions<{
|
||||
product: any[]
|
||||
}>({
|
||||
product: {
|
||||
api: apiProductLists,
|
||||
params: {
|
||||
all: 1
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
interface ListItem {
|
||||
value: string
|
||||
label: string
|
||||
}
|
||||
const productOptions = ref<ListItem[]>([])
|
||||
const loading = ref(false)
|
||||
|
||||
const queryProduct = async (query: string) => {
|
||||
loading.value = true
|
||||
const productList = await apiProductLists({
|
||||
name: query ?? ''
|
||||
})
|
||||
optionsData.product = productList
|
||||
loading.value = false
|
||||
if (query) {
|
||||
loading.value = true
|
||||
const productList = await apiProductLists({
|
||||
name: query
|
||||
})
|
||||
loading.value = false
|
||||
if (productList.count > 0) {
|
||||
productOptions.value = productList.lists.map((product: any) => {
|
||||
return { value: `${product.id}`, label: `ID: ${product.id} / 名称: ${product.name}` }
|
||||
})
|
||||
} else {
|
||||
productOptions.value = []
|
||||
}
|
||||
loading.value = false
|
||||
} else {
|
||||
productOptions.value = []
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -260,35 +223,3 @@ defineExpose({
|
|||
getDetail
|
||||
})
|
||||
</script>
|
||||
<style scoped>
|
||||
.avatar-uploader .avatar {
|
||||
width: 178px;
|
||||
height: 178px;
|
||||
display: block;
|
||||
}
|
||||
</style>
|
||||
|
||||
<style>
|
||||
.avatar-uploader .el-upload {
|
||||
width: 200px;
|
||||
height: 130px;
|
||||
border: 1px dashed var(--el-border-color);
|
||||
border-radius: 6px;
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
transition: var(--el-transition-duration-fast);
|
||||
}
|
||||
|
||||
.avatar-uploader .el-upload:hover {
|
||||
border-color: var(--el-color-primary);
|
||||
}
|
||||
|
||||
.el-icon.avatar-uploader-icon {
|
||||
font-size: 28px;
|
||||
color: #8c939d;
|
||||
width: 178px;
|
||||
height: 178px;
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
|
@ -1,23 +1,17 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="用户ID" prop="user_id">
|
||||
<el-input
|
||||
class="w-[280px]"
|
||||
v-model="queryParams.user_id"
|
||||
clearable
|
||||
placeholder="请输入用户ID"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form
|
||||
class="mb-[-16px]"
|
||||
:model="queryParams"
|
||||
inline
|
||||
>
|
||||
<el-form-item label="用户ID" prop="user_id">
|
||||
<el-input class="w-[280px]" v-model="queryParams.user_id" clearable placeholder="请输入用户ID" />
|
||||
</el-form-item>
|
||||
<el-form-item label="土地ID" prop="land_id">
|
||||
<el-input
|
||||
class="w-[280px]"
|
||||
v-model="queryParams.land_id"
|
||||
clearable
|
||||
placeholder="请输入土地ID"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-input class="w-[280px]" v-model="queryParams.land_id" clearable placeholder="请输入土地ID" />
|
||||
</el-form-item>
|
||||
<el-form-item label="产品ID" prop="product_id">
|
||||
<el-input
|
||||
class="w-[280px]"
|
||||
|
@ -25,71 +19,46 @@
|
|||
clearable
|
||||
placeholder="请输入产品ID"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form-item>
|
||||
<el-form-item label="设备编码" prop="code">
|
||||
<el-input
|
||||
class="w-[280px]"
|
||||
v-model="queryParams.code"
|
||||
clearable
|
||||
placeholder="请输入设备编码"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-input class="w-[280px]" v-model="queryParams.code" clearable placeholder="请输入设备编码" />
|
||||
</el-form-item>
|
||||
<el-form-item label="设备名称" prop="name">
|
||||
<el-input
|
||||
class="w-[280px]"
|
||||
v-model="queryParams.name"
|
||||
clearable
|
||||
placeholder="请输入设备名称"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-input class="w-[280px]" v-model="queryParams.name" clearable placeholder="请输入设备名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="设备类型" prop="type">
|
||||
<el-select
|
||||
class="w-[280px]"
|
||||
v-model="queryParams.type"
|
||||
clearable
|
||||
placeholder="请选择设备类型"
|
||||
>
|
||||
<el-option label="全部" value=""></el-option>
|
||||
<el-option
|
||||
v-for="(item, index) in dictData.device_type"
|
||||
:key="index"
|
||||
:label="item.name"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-select class="w-[280px]" v-model="queryParams.type" clearable placeholder="请选择设备类型">
|
||||
<el-option label="全部" value=""></el-option>
|
||||
<el-option
|
||||
v-for="(item, index) in dictData.device_type"
|
||||
:key="index"
|
||||
:label="item.name"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="设备状态" prop="status">
|
||||
<el-select
|
||||
class="w-[280px]"
|
||||
v-model="queryParams.status"
|
||||
clearable
|
||||
placeholder="请选择设备状态"
|
||||
>
|
||||
<el-option label="全部" value=""></el-option>
|
||||
<el-option
|
||||
v-for="(item, index) in dictData.device_status"
|
||||
:key="index"
|
||||
:label="item.name"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-select class="w-[280px]" v-model="queryParams.status" clearable placeholder="请选择设备状态">
|
||||
<el-option label="全部" value=""></el-option>
|
||||
<el-option
|
||||
v-for="(item, index) in dictData.device_status"
|
||||
:key="index"
|
||||
:label="item.name"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否在线" prop="is_online">
|
||||
<el-select
|
||||
class="w-[280px]"
|
||||
v-model="queryParams.is_online"
|
||||
clearable
|
||||
placeholder="请选择是否在线"
|
||||
>
|
||||
<el-option label="全部" value=""></el-option>
|
||||
<el-option
|
||||
v-for="(item, index) in dictData.device_online_status"
|
||||
:key="index"
|
||||
:label="item.name"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-select class="w-[280px]" v-model="queryParams.is_online" clearable placeholder="请选择是否在线">
|
||||
<el-option label="全部" value=""></el-option>
|
||||
<el-option
|
||||
v-for="(item, index) in dictData.device_online_status"
|
||||
:key="index"
|
||||
:label="item.name"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
|
@ -111,11 +80,7 @@
|
|||
删除
|
||||
</el-button>
|
||||
<div class="mt-4">
|
||||
<el-table
|
||||
:data="pager.lists"
|
||||
@selection-change="handleSelectionChange"
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange" style="width: 100%">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="ID" prop="id" width="80" show-overflow-tooltip />
|
||||
<!-- <el-table-column label="用户信息" width="200">
|
||||
|
@ -124,12 +89,7 @@
|
|||
<el-tag class="mr-2" type="info">账户: {{ row.account }}</el-tag>
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
<el-table-column
|
||||
label="设备名称"
|
||||
width="200"
|
||||
prop="name"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column label="设备名称" width="200" prop="name" show-overflow-tooltip />
|
||||
<el-table-column label="设备类型" width="150" prop="type">
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.device_type" :value="row.type" />
|
||||
|
@ -137,52 +97,32 @@
|
|||
</el-table-column>
|
||||
<el-table-column label="所属土地" width="200">
|
||||
<template #default="{ row }">
|
||||
<el-tag class="mr-2" v-if="row.land_id != null" type="info"
|
||||
>ID: {{ row.land_id }}</el-tag
|
||||
>
|
||||
<el-tag class="mr-2" v-if="row.land_title != null" type="info"
|
||||
>名称: {{ row.land_title }}</el-tag
|
||||
>
|
||||
<el-tag class="mr-2" type="info">ID: {{ row.land_id }}</el-tag>
|
||||
<el-tag class="mr-2" type="info">名称: {{ row.land_title }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="所属产品" width="200">
|
||||
<template #default="{ row }">
|
||||
<el-tag class="mr-2" v-if="row.product_id != null" type="info"
|
||||
>ID: {{ row.product_id }}</el-tag
|
||||
>
|
||||
<el-tag class="mr-2" v-if="row.product_name != null" type="info"
|
||||
>名称: {{ row.product_name }}</el-tag
|
||||
>
|
||||
<el-tag class="mr-2" type="info">ID: {{ row.product_id }}</el-tag>
|
||||
<el-tag class="mr-2" type="info">名称: {{ row.product_name }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="设备编码"
|
||||
width="120"
|
||||
prop="code"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column label="设备编码" width="120" prop="code" show-overflow-tooltip />
|
||||
<el-table-column label="设备状态" width="100" align="center" prop="status">
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.device_status" :value="row.status" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.device_status" :value="row.status" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="是否在线" width="100" align="center" prop="is_online">
|
||||
<template #default="{ row }">
|
||||
<dict-value
|
||||
:options="dictData.device_online_status"
|
||||
:value="row.is_online"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="创建时间" width="160" align="center" prop="create_time">
|
||||
<template #default="{ row }">
|
||||
<span>{{
|
||||
row.create_time
|
||||
? timeFormat(row.create_time, 'yyyy-mm-dd hh:MM:ss')
|
||||
: ''
|
||||
}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.device_online_status" :value="row.is_online" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="创建时间" width="160" align="center" prop="create_time">
|
||||
<template #default="{ row }">
|
||||
<span>{{ row.create_time ? timeFormat(row.create_time, 'yyyy-mm-dd hh:MM:ss') : '' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="260" align="center" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
|
@ -193,20 +133,27 @@
|
|||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button v-perms="['device.device/detail']" type="primary" link>
|
||||
<el-button
|
||||
v-perms="['device.device/detail']"
|
||||
type="primary"
|
||||
link
|
||||
>
|
||||
<router-link
|
||||
:to="{
|
||||
path: getRoutePath('device.device/detail'),
|
||||
query: {
|
||||
device_id: row.id,
|
||||
userName:row.account
|
||||
device_id: row.id
|
||||
}
|
||||
}"
|
||||
>
|
||||
详情
|
||||
详情
|
||||
</router-link>
|
||||
</el-button>
|
||||
<el-button v-perms="['device.monitor_alarm/lists']" type="primary" link>
|
||||
<el-button
|
||||
v-perms="['device.monitor_alarm/lists']"
|
||||
type="primary"
|
||||
link
|
||||
>
|
||||
<router-link
|
||||
:to="{
|
||||
path: getRoutePath('device.monitor_alarm/lists'),
|
||||
|
@ -215,7 +162,7 @@
|
|||
}
|
||||
}"
|
||||
>
|
||||
报警
|
||||
报警
|
||||
</router-link>
|
||||
</el-button>
|
||||
<el-button
|
||||
|
@ -230,17 +177,11 @@
|
|||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex justify-end mt-4">
|
||||
<div class="flex mt-4 justify-end">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup
|
||||
v-if="showEdit"
|
||||
ref="editRef"
|
||||
:dict-data="dictData"
|
||||
@success="getLists"
|
||||
@close="showEdit = false"
|
||||
/>
|
||||
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -284,9 +225,7 @@ const handleSelectionChange = (val: any[]) => {
|
|||
}
|
||||
|
||||
// 获取字典数据
|
||||
const { dictData } = useDictData(
|
||||
'device_type,device_status,device_online_status,device_bind_status,monitor_item'
|
||||
)
|
||||
const { dictData } = useDictData('device_type,device_status,device_online_status,device_bind_status,monitor_item')
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
|
@ -318,3 +257,4 @@ const handleDelete = async (id: number | any[]) => {
|
|||
|
||||
getLists()
|
||||
</script>
|
||||
|
||||
|
|
|
@ -21,20 +21,21 @@
|
|||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="绑定产品" prop="product_id">
|
||||
<el-select
|
||||
<el-select
|
||||
v-model="formData.product_id"
|
||||
remote
|
||||
filterable
|
||||
remote
|
||||
reserve-keyword
|
||||
placeholder="请输入产品信息"
|
||||
:remote-method="queryProduct"
|
||||
:loading="loading"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) in optionsData.product"
|
||||
:key="index"
|
||||
:label="item.productinfo"
|
||||
:value="item.id"
|
||||
/>
|
||||
<el-option
|
||||
v-for="item in productOptions"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
@ -43,7 +44,6 @@
|
|||
</template>
|
||||
|
||||
<script lang="ts" setup name="landEdit">
|
||||
import { useDictOptions } from '@/hooks/useDictOptions'
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import { apiLandBind, apiProductLists } from '@/api/land'
|
||||
|
@ -91,29 +91,37 @@ const setFormData = async (data: Record<any, any>) => {
|
|||
}
|
||||
}
|
||||
|
||||
const { optionsData } = useDictOptions<{
|
||||
product: any[]
|
||||
}>({
|
||||
product: {
|
||||
api: apiProductLists
|
||||
}
|
||||
})
|
||||
|
||||
interface ListItem {
|
||||
value: string
|
||||
label: string
|
||||
}
|
||||
const productOptions = ref<ListItem[]>([])
|
||||
const loading = ref(false)
|
||||
|
||||
const queryProduct = async (query: string) => {
|
||||
loading.value = true
|
||||
const productList = await apiProductLists({
|
||||
name: query ?? ''
|
||||
})
|
||||
optionsData.product = productList
|
||||
loading.value = false
|
||||
if (query) {
|
||||
loading.value = true
|
||||
const productList = await apiProductLists({
|
||||
name: query
|
||||
})
|
||||
loading.value = false
|
||||
if (productList.count > 0) {
|
||||
productOptions.value = productList.lists.map((product: any) => {
|
||||
return { value: `${product.id}`, label: `ID: ${product.id} / 名称: ${product.name}` }
|
||||
})
|
||||
} else {
|
||||
productOptions.value = []
|
||||
}
|
||||
loading.value = false
|
||||
} else {
|
||||
productOptions.value = []
|
||||
}
|
||||
}
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData }
|
||||
const data = { ...formData, }
|
||||
await apiLandBind(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
|
|
|
@ -9,21 +9,22 @@
|
|||
@close="handleClose"
|
||||
>
|
||||
<el-form ref="formRef" :model="formData" label-width="120px" :rules="formRules">
|
||||
<el-form-item v-if="formData.root == 1" label="所属用户" prop="user_id">
|
||||
<el-form-item v-if="formData.root == 1" label="用户ID" prop="user_id">
|
||||
<el-select
|
||||
v-model="formData.user_id"
|
||||
remote
|
||||
filterable
|
||||
remote
|
||||
reserve-keyword
|
||||
placeholder="请输入用户信息"
|
||||
:remote-method="queryUser"
|
||||
:loading="loading"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) in optionsData.user"
|
||||
:key="index"
|
||||
:label="item.userinfo"
|
||||
:value="item.id"
|
||||
/>
|
||||
<el-option
|
||||
v-for="item in userOptions"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="土地名称" prop="title">
|
||||
|
@ -35,156 +36,64 @@
|
|||
<el-form-item label="土地面积" prop="total_area">
|
||||
<el-input v-model="formData.total_area" clearable placeholder="请输入土地面积" />
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="剩余面积" prop="residual_area">
|
||||
<el-input v-model="formData.residual_area" clearable disabled placeholder="请输入剩余面积" />
|
||||
</el-form-item> -->
|
||||
|
||||
<el-form-item
|
||||
label="省"
|
||||
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]"
|
||||
prop="province_code"
|
||||
>
|
||||
<el-select
|
||||
v-model="formData.province_code"
|
||||
placeholder="请选择省"
|
||||
clearable
|
||||
@change="province_change"
|
||||
:style="{ width: '100%' }"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) in datas.provinceOptions"
|
||||
:key="index"
|
||||
:label="item.province_name"
|
||||
:value="item.province_code"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="市"
|
||||
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]"
|
||||
prop="city_code"
|
||||
>
|
||||
<el-select
|
||||
v-model="formData.city_code"
|
||||
placeholder="请选择市"
|
||||
clearable
|
||||
@change="city_change"
|
||||
:style="{ width: '100%' }"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) in datas.cityOptions"
|
||||
:key="index"
|
||||
:label="item.city_name"
|
||||
:value="item.city_code"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="区"
|
||||
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]"
|
||||
prop="county_code"
|
||||
>
|
||||
<el-select
|
||||
v-model="formData.county_code"
|
||||
placeholder="请选择区"
|
||||
clearable
|
||||
@change="area_change"
|
||||
:style="{ width: '100%' }"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) in datas.areaOptions"
|
||||
:key="index"
|
||||
:label="item.county_name"
|
||||
:value="item.county_code"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="镇"
|
||||
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]"
|
||||
prop="town_code"
|
||||
>
|
||||
<el-select
|
||||
v-model="formData.town_code"
|
||||
placeholder="请选择镇"
|
||||
clearable
|
||||
@change="street_change"
|
||||
:style="{ width: '100%' }"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) in datas.streetOptions"
|
||||
:key="index"
|
||||
:label="item.town_name"
|
||||
:value="item.town_code"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="村"
|
||||
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]"
|
||||
prop="village_code"
|
||||
>
|
||||
<el-select
|
||||
v-model="formData.village_code"
|
||||
placeholder="请选择村"
|
||||
clearable
|
||||
@change="village_change"
|
||||
:style="{ width: '100%' }"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) in datas.villageOptions"
|
||||
:key="index"
|
||||
:label="item.village_name"
|
||||
:value="item.village_code"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="队"
|
||||
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]"
|
||||
prop="group_code"
|
||||
>
|
||||
<el-select
|
||||
v-model="formData.group_code"
|
||||
placeholder="请选择队"
|
||||
clearable
|
||||
:style="{ width: '100%' }"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) in datas.brigadeOptions"
|
||||
:key="index"
|
||||
:label="item.group_name"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="剩余面积" prop="residual_area">
|
||||
<el-input v-model="formData.residual_area" clearable placeholder="请输入剩余面积" />
|
||||
</el-form-item>
|
||||
<el-form-item label="省编码" prop="province_code">
|
||||
<el-input v-model="formData.province_code" clearable placeholder="请输入省编码" />
|
||||
</el-form-item>
|
||||
<el-form-item label="省名称" prop="province_name">
|
||||
<el-input v-model="formData.province_name" clearable placeholder="请输入省名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="市编码" prop="city_code">
|
||||
<el-input v-model="formData.city_code" clearable placeholder="请输入市编码" />
|
||||
</el-form-item>
|
||||
<el-form-item label="市名称" prop="city_name">
|
||||
<el-input v-model="formData.city_name" clearable placeholder="请输入市名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="县编码" prop="county_code">
|
||||
<el-input v-model="formData.county_code" clearable placeholder="请输入县编码" />
|
||||
</el-form-item>
|
||||
<el-form-item label="县名称" prop="county_name">
|
||||
<el-input v-model="formData.county_name" clearable placeholder="请输入县名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="镇编码" prop="town_code">
|
||||
<el-input v-model="formData.town_code" clearable placeholder="请输入镇编码" />
|
||||
</el-form-item>
|
||||
<el-form-item label="镇名称" prop="town_name">
|
||||
<el-input v-model="formData.town_name" clearable placeholder="请输入镇名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="村编码" prop="village_code">
|
||||
<el-input v-model="formData.village_code" clearable placeholder="请输入村编码" />
|
||||
</el-form-item>
|
||||
<el-form-item label="村名称" prop="village_name">
|
||||
<el-input v-model="formData.village_name" clearable placeholder="请输入村名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="组编码" prop="group_code">
|
||||
<el-input v-model="formData.group_code" clearable placeholder="请输入组编码" />
|
||||
</el-form-item>
|
||||
<el-form-item label="组名称" prop="group_name">
|
||||
<el-input v-model="formData.group_name" clearable placeholder="请输入组名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="土地负责人" prop="master_name">
|
||||
<el-input v-model="formData.master_name" clearable placeholder="请输入土地负责人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="负责人电话" prop="master_phone">
|
||||
<el-input v-model="formData.master_phone" clearable placeholder="请输入负责人电话" />
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="土地图片" prop="pic">
|
||||
<el-form-item label="土地图片" prop="pic">
|
||||
<material-picker v-model="formData.pic" :limit="4" />
|
||||
</el-form-item> -->
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="landEdit">
|
||||
import { useDictOptions } from '@/hooks/useDictOptions'
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import { apiLandAdd, apiLandEdit, apiLandDetail, getUserList, getUserInfo } from '@/api/land'
|
||||
import {
|
||||
apiCityList,
|
||||
apiAreaList,
|
||||
apiStreetList,
|
||||
apiProvinceList,
|
||||
apiVillageList,
|
||||
apiBrigadeList,
|
||||
} from "@/api/common";
|
||||
import { apiLandAdd, apiLandEdit, apiLandDetail, getUserList } from '@/api/land'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
|
@ -199,15 +108,9 @@ const mode = ref('add')
|
|||
|
||||
// 弹窗标题
|
||||
const popupTitle = computed(() => {
|
||||
if (mode.value == 'edit') {
|
||||
getCityList();
|
||||
getAreaList();
|
||||
getStreetList();
|
||||
getVillageList();
|
||||
getBrigadeList();
|
||||
}
|
||||
return mode.value == 'edit' ? '编辑土地' : '新增土地'
|
||||
})
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
|
@ -231,8 +134,7 @@ const formData = reactive({
|
|||
master_name: '',
|
||||
master_phone: '',
|
||||
address: '',
|
||||
pic: '',
|
||||
mode: mode.value
|
||||
pic: ''
|
||||
})
|
||||
|
||||
// 表单验证
|
||||
|
@ -280,23 +182,31 @@ const getDetail = async (row: Record<string, any>) => {
|
|||
setFormData(data)
|
||||
}
|
||||
|
||||
const { optionsData } = useDictOptions<{
|
||||
user: any[]
|
||||
}>({
|
||||
user: {
|
||||
api: getUserList
|
||||
}
|
||||
})
|
||||
|
||||
interface ListItem {
|
||||
value: string
|
||||
label: string
|
||||
}
|
||||
const userOptions = ref<ListItem[]>([])
|
||||
const loading = ref(false)
|
||||
|
||||
const queryUser = async (query: string) => {
|
||||
loading.value = true
|
||||
const userList = await getUserList({
|
||||
keyword: query ?? ''
|
||||
})
|
||||
optionsData.user = userList
|
||||
loading.value = false
|
||||
if (query) {
|
||||
loading.value = true
|
||||
const userList = await getUserList({
|
||||
keyword: query
|
||||
})
|
||||
loading.value = false
|
||||
if (userList.count > 0) {
|
||||
userOptions.value = userList.lists.map((user: any) => {
|
||||
return { value: `${user.id}`, label: `ID: ${user.id} / 账户: ${user.account}` }
|
||||
})
|
||||
} else {
|
||||
userOptions.value = []
|
||||
}
|
||||
loading.value = false
|
||||
} else {
|
||||
userOptions.value = []
|
||||
}
|
||||
}
|
||||
|
||||
// 提交按钮
|
||||
|
@ -314,14 +224,6 @@ const handleSubmit = async () => {
|
|||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
getUserInfo()
|
||||
.then((res: any) => {
|
||||
const root = res.user.root ?? 0
|
||||
formData.root = root
|
||||
})
|
||||
.catch((err: any) => {
|
||||
console.log('err', err)
|
||||
})
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
|
@ -329,87 +231,7 @@ const handleClose = () => {
|
|||
emit('close')
|
||||
}
|
||||
|
||||
const datas = reactive({
|
||||
provinceOptions: [],
|
||||
cityOptions: [],
|
||||
areaOptions: [],
|
||||
streetOptions: [],
|
||||
villageOptions: [],
|
||||
brigadeOptions: [],
|
||||
});
|
||||
function province_change(value: string) {
|
||||
getCityList();
|
||||
// 给省名称赋值
|
||||
datas['provinceOptions'].forEach((item: any) =>{
|
||||
if(item.province_code == value) {
|
||||
formData.province_name = item.province_name
|
||||
}
|
||||
})
|
||||
}
|
||||
function city_change(value: string) {
|
||||
getAreaList();
|
||||
}
|
||||
function area_change(value: string) {
|
||||
getStreetList();
|
||||
}
|
||||
function street_change(value: string) {
|
||||
getVillageList();
|
||||
}
|
||||
function village_change(value: string) {
|
||||
getBrigadeList();
|
||||
}
|
||||
// function brigade_change(value: string) {
|
||||
// formData.brigade = value
|
||||
// }
|
||||
const getProvinceList = async () => {
|
||||
const data = await apiProvinceList({});
|
||||
datas["provinceOptions"] = data;
|
||||
};
|
||||
const getCityList = async () => {
|
||||
const data = await apiCityList({ city: formData.province_code });
|
||||
datas["cityOptions"] = data;
|
||||
};
|
||||
const getAreaList = async () => {
|
||||
const data = await apiAreaList({ area: formData.city_code });
|
||||
datas["areaOptions"] = data;
|
||||
// 市名称
|
||||
datas['cityOptions'].forEach((item: any) =>{
|
||||
if(item.city_code == formData.city_code) {
|
||||
formData.city_name = item.city_name
|
||||
}
|
||||
})
|
||||
};
|
||||
const getStreetList = async () => {
|
||||
const data = await apiStreetList({ street: formData.county_code });
|
||||
datas["streetOptions"] = data;
|
||||
// 区名称
|
||||
datas['areaOptions'].forEach((item: any) =>{
|
||||
if(item.county_code == formData.county_code) {
|
||||
formData.county_name = item.county_name
|
||||
}
|
||||
})
|
||||
};
|
||||
const getVillageList = async () => {
|
||||
const data = await apiVillageList({ village: formData.town_code });
|
||||
datas["villageOptions"] = data;
|
||||
// 镇名称
|
||||
datas['streetOptions'].forEach((item: any) =>{
|
||||
if(item.town_code == formData.town_code) {
|
||||
formData.town_name = item.town_name
|
||||
}
|
||||
})
|
||||
};
|
||||
const getBrigadeList = async () => {
|
||||
const data = await apiBrigadeList();
|
||||
datas["brigadeOptions"] = data;
|
||||
// 镇名称
|
||||
datas['villageOptions'].forEach((item: any) =>{
|
||||
if(item.village_code == formData.village_code) {
|
||||
formData.village_name = item.village_name
|
||||
}
|
||||
})
|
||||
};
|
||||
getProvinceList(); // 初始化即请求省份数据
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
|
|
|
@ -54,7 +54,7 @@
|
|||
<el-table-column label="剩余面积" prop="residual_area" show-overflow-tooltip />
|
||||
<el-table-column label="土地负责人" prop="master_name" show-overflow-tooltip />
|
||||
<el-table-column label="负责人电话" prop="master_phone" show-overflow-tooltip />
|
||||
<el-table-column label="操作" width="400" align="center" fixed="right">
|
||||
<el-table-column label="操作" width="360" align="center" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
v-perms="['land.land/edit']"
|
||||
|
@ -64,14 +64,14 @@
|
|||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
<!-- <el-button
|
||||
v-perms="['land.land/bind']"
|
||||
type="primary"
|
||||
link
|
||||
@click="handleBind(row)"
|
||||
>
|
||||
绑定产品
|
||||
</el-button>
|
||||
</el-button> -->
|
||||
<el-button
|
||||
v-perms="['land.product/lists']"
|
||||
type="primary"
|
||||
|
|
|
@ -52,9 +52,9 @@
|
|||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="种植图片" prop="pic">
|
||||
<el-form-item label="种植图片" prop="pic">
|
||||
<material-picker v-model="formData.pic" :limit="4" />
|
||||
</el-form-item> -->
|
||||
</el-form-item>
|
||||
<el-form-item label="播种时间" prop="plant_date">
|
||||
<el-date-picker
|
||||
class="flex-1 !flex"
|
||||
|
@ -104,6 +104,7 @@ const formData = reactive({
|
|||
user: '',
|
||||
remark: '',
|
||||
status: '',
|
||||
pic: '',
|
||||
qr_code: '',
|
||||
plant_date: ''
|
||||
})
|
||||
|
|
|
@ -326,12 +326,6 @@ const actionMap = reactive<actionData>({
|
|||
}
|
||||
})
|
||||
|
||||
const irrigateMap = reactive<actionData>({
|
||||
'1': '喷灌',
|
||||
'2': '滴灌',
|
||||
'3': '沟灌'
|
||||
})
|
||||
|
||||
const landActionData = reactive({
|
||||
gridData: [{}]
|
||||
})
|
||||
|
@ -372,9 +366,6 @@ const handleSuyuan = (data: any) => {
|
|||
const item = actionMap[type][key] ?? '-'
|
||||
for (const dkey in detail) {
|
||||
if (dkey == key) {
|
||||
if (type == 3 && key == 'type') {
|
||||
detail[key] = irrigateMap[detail[key]]
|
||||
}
|
||||
landActionData.gridData.push({
|
||||
item: item,
|
||||
value: detail[key] ?? '-'
|
||||
|
|
|
@ -63,7 +63,7 @@
|
|||
<span>{{ row.create_time ? timeFormat(row.create_time, 'yyyy-mm-dd hh:MM:ss') : '' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="260" align="center" fixed="right">
|
||||
<el-table-column label="操作" width="200" align="center" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
v-perms="['land.land_plant_action/edit']"
|
||||
|
@ -77,9 +77,6 @@
|
|||
>
|
||||
操作详情
|
||||
</el-button>
|
||||
<el-button type="primary" link @click="handlePicDetail(row)">
|
||||
操作图片
|
||||
</el-button>
|
||||
<el-button
|
||||
v-perms="['land.land_plant_action/delete']"
|
||||
type="danger"
|
||||
|
@ -105,22 +102,6 @@
|
|||
<el-table-column property="value" label="操作内容" />
|
||||
</el-table>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog v-model="dialogPicVisible" title="种植操作图片" center>
|
||||
<div style="display: inline-block; margin: 12px" v-for="img in detailData.picData" :key="img">
|
||||
<el-image
|
||||
style="width: 200px; height: 200px"
|
||||
:src="img"
|
||||
:zoom-rate="1.2"
|
||||
:max-scale="5"
|
||||
:min-scale="0.2"
|
||||
:preview-src-list="detailData.picData"
|
||||
:initial-index="4"
|
||||
fit="cover"
|
||||
center
|
||||
/>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="landPlantActionLists">
|
||||
|
@ -203,11 +184,6 @@ const actionMap = reactive<actionData>({
|
|||
}
|
||||
})
|
||||
|
||||
const irrigateMap = reactive<actionData>({
|
||||
'1': '喷灌',
|
||||
'2': '滴灌',
|
||||
'3': '沟灌'
|
||||
})
|
||||
// 选中数据
|
||||
const selectData = ref<any[]>([])
|
||||
|
||||
|
@ -225,11 +201,9 @@ const { pager, getLists, resetParams, resetPage } = usePaging({
|
|||
params: queryParams
|
||||
})
|
||||
|
||||
const dialogPicVisible = ref(false)
|
||||
const dialogTableVisible = ref(false)
|
||||
const detailData = reactive({
|
||||
gridData: [{}],
|
||||
picData: [] as any[]
|
||||
gridData: [{}]
|
||||
})
|
||||
|
||||
// 详情
|
||||
|
@ -238,9 +212,6 @@ const handleDetail = (data: any) => {
|
|||
detailData.gridData = [{}]
|
||||
for (const key in actionMap[data.type]) {
|
||||
const item = actionMap[data.type][key] ?? '-'
|
||||
if (data.type == 3 && key == 'type') {
|
||||
action[key] = irrigateMap[action[key]]
|
||||
}
|
||||
detailData.gridData.push({
|
||||
item: item,
|
||||
value: action[key] ?? '-'
|
||||
|
@ -250,15 +221,6 @@ const handleDetail = (data: any) => {
|
|||
dialogTableVisible.value = true
|
||||
}
|
||||
|
||||
const handlePicDetail = (data: any) => {
|
||||
detailData.picData = []
|
||||
const picList = JSON.parse(data.detail)
|
||||
for (const key in picList.pic) {
|
||||
detailData.picData.unshift(picList.pic[key])
|
||||
}
|
||||
dialogPicVisible.value = true
|
||||
}
|
||||
|
||||
// 添加
|
||||
const handleAdd = async () => {
|
||||
showEdit.value = true
|
||||
|
|
|
@ -44,17 +44,17 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="监测类型" align="center" prop="type">
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.monitor_item" :value="row.type" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.alarm_type" :value="row.type" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="报警内容" width="300" prop="content" show-overflow-tooltip />
|
||||
<el-table-column label="报警数值" prop="value" show-overflow-tooltip />
|
||||
<el-table-column label="报警时间" align="center" prop="create_time">
|
||||
<template #default="{ row }">
|
||||
<span>{{ row.create_time ? timeFormat(row.create_time, 'yyyy-mm-dd hh:MM:ss') : '' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<template #default="{ row }">
|
||||
<span>{{ row.create_time ? timeFormat(row.create_time, 'yyyy-mm-dd hh:MM:ss') : '' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="140" align="center" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button type="primary" link @click="handleDetail(row)"
|
||||
|
@ -123,7 +123,7 @@ const handleSelectionChange = (val: any[]) => {
|
|||
}
|
||||
|
||||
// 获取字典数据
|
||||
const { dictData } = useDictData('monitor_item')
|
||||
const { dictData } = useDictData('alarm_type')
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
|
@ -140,9 +140,9 @@ const detailData = reactive({
|
|||
const handleDetail = (data: any) => {
|
||||
detailData.gridData = [{}]
|
||||
let deviceType = ''
|
||||
for (const key in dictData['monitor_item']) {
|
||||
if (dictData['monitor_item'][key]['value'] == data.type) {
|
||||
deviceType = dictData['monitor_item'][key]['name']
|
||||
for (const key in dictData['alarm_type']) {
|
||||
if (dictData['alarm_type'][key]['value'] == data.type) {
|
||||
deviceType = dictData['alarm_type'][key]['name']
|
||||
}
|
||||
}
|
||||
detailData.gridData.unshift({
|
||||
|
|
|
@ -32,10 +32,10 @@
|
|||
:loading="loading"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) in optionsData.device"
|
||||
:key="index"
|
||||
:label="item.deviceinfo"
|
||||
:value="item.id"
|
||||
v-for="item in deviceOptions"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
@ -45,7 +45,6 @@
|
|||
</template>
|
||||
|
||||
<script lang="ts" setup name="landEdit">
|
||||
import { useDictOptions } from '@/hooks/useDictOptions'
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import { apiProductBind, apiDeviceLists } from '@/api/product'
|
||||
|
@ -94,23 +93,31 @@ const setFormData = async (data: Record<any, any>) => {
|
|||
}
|
||||
}
|
||||
|
||||
const { optionsData } = useDictOptions<{
|
||||
device: any[]
|
||||
}>({
|
||||
device: {
|
||||
api: apiDeviceLists
|
||||
}
|
||||
})
|
||||
|
||||
interface ListItem {
|
||||
value: string
|
||||
label: string
|
||||
}
|
||||
const deviceOptions = ref<ListItem[]>([])
|
||||
const loading = ref(false)
|
||||
|
||||
const queryDevice = async (query: string) => {
|
||||
loading.value = true
|
||||
const deviceList = await apiDeviceLists({
|
||||
name: query ?? ''
|
||||
})
|
||||
optionsData.device = deviceList
|
||||
loading.value = false
|
||||
if (query) {
|
||||
loading.value = true
|
||||
const deviceList = await apiDeviceLists({
|
||||
name: query
|
||||
})
|
||||
loading.value = false
|
||||
if (deviceList.count > 0) {
|
||||
deviceOptions.value = deviceList.lists.map((device: any) => {
|
||||
return { value: `${device.id}`, label: `ID: ${device.id} / 名称: ${device.name}` }
|
||||
})
|
||||
} else {
|
||||
deviceOptions.value = []
|
||||
}
|
||||
loading.value = false
|
||||
} else {
|
||||
deviceOptions.value = []
|
||||
}
|
||||
}
|
||||
|
||||
// 提交按钮
|
||||
|
|
|
@ -13,70 +13,24 @@
|
|||
<el-input v-model="formData.name" clearable placeholder="请输入产品名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="产品编号" prop="code">
|
||||
<el-input v-model="formData.code" clearable disabled placeholder="请输入产品编号" />
|
||||
<el-input v-model="formData.code" clearable placeholder="请输入产品编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="产品介绍" prop="desc">
|
||||
<el-input v-model="formData.desc" />
|
||||
</el-form-item>
|
||||
<el-form-item label="产品图" prop="image">
|
||||
<el-upload
|
||||
class="avatar-uploader"
|
||||
:accept="acceptFileTypes"
|
||||
v-model="formData.image"
|
||||
:data="{ cid: 1 }"
|
||||
:headers="{ Token: userStore.token }"
|
||||
:action="action"
|
||||
:show-file-list="false"
|
||||
:on-success="handleAvatarSuccessAvatar"
|
||||
>
|
||||
<img
|
||||
v-if="formData.image"
|
||||
:src="formData.image"
|
||||
class="avatar"
|
||||
/>
|
||||
<div v-else class="avatar-uploader-icon">
|
||||
<el-icon>
|
||||
<Plus />
|
||||
</el-icon>
|
||||
</div>
|
||||
</el-upload>
|
||||
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item v-if="formData.root == 1" label="所属用户" prop="user_id">
|
||||
<el-select
|
||||
v-model="formData.user_id"
|
||||
remote
|
||||
filterable
|
||||
placeholder="请输入用户信息"
|
||||
:remote-method="queryUser"
|
||||
@change="selectedUser"
|
||||
:loading="loading"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) in optionsData.user"
|
||||
:key="index"
|
||||
:label="item.userinfo"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="所属土地" prop="land_id">
|
||||
<el-select
|
||||
v-model="formData.land_id"
|
||||
remote
|
||||
filterable
|
||||
remote
|
||||
reserve-keyword
|
||||
placeholder="请输入土地信息"
|
||||
:remote-method="queryLand"
|
||||
:loading="loading"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) in optionsData.land"
|
||||
:key="index"
|
||||
:label="item.landinfo"
|
||||
:value="item.id"
|
||||
/>
|
||||
<el-option
|
||||
v-for="item in landOptions"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
@ -85,42 +39,23 @@
|
|||
</template>
|
||||
|
||||
<script lang="ts" setup name="productEdit">
|
||||
import { useDictOptions } from '@/hooks/useDictOptions'
|
||||
import { type FormInstance,
|
||||
type UploadProps,
|
||||
ElMessage,
|
||||
} from 'element-plus'
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import { apiProductAdd, apiProductEdit, apiProductDetail, getUserList, getUserInfo, apiLandLists } from '@/api/product'
|
||||
import { apiProductAdd, apiProductEdit, apiProductDetail, getUserList, apiLandLists } from '@/api/product'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import useUserStore from "@/stores/modules/user";
|
||||
import type { PropType } from 'vue'
|
||||
import {ref} from "vue";
|
||||
import config from "@/config";
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
const acceptFileTypes = ref(".png, .jpg, .jpeg, image/png, image/jpeg")
|
||||
const action = ref(`${config.baseUrl}${config.urlPrefix}/upload/image`)
|
||||
const userStore = useUserStore()
|
||||
const handleAvatarSuccessAvatar: UploadProps["onSuccess"] = (
|
||||
response,
|
||||
uploadFile
|
||||
) => {
|
||||
if (response.code == 0) {
|
||||
ElMessage.error(response.msg);
|
||||
return;
|
||||
}
|
||||
formData.image = response.data.uri;
|
||||
};
|
||||
|
||||
|
||||
// 弹窗标题
|
||||
const popupTitle = computed(() => {
|
||||
return mode.value == 'edit' ? '编辑产品' : '新增产品'
|
||||
|
@ -129,13 +64,9 @@ const popupTitle = computed(() => {
|
|||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
user_id: '',
|
||||
root: 0,
|
||||
land_id: '',
|
||||
code: '',
|
||||
name: '',
|
||||
desc: '',
|
||||
image: '',
|
||||
status: '',
|
||||
})
|
||||
|
||||
|
@ -163,6 +94,7 @@ const setFormData = async (data: Record<any, any>) => {
|
|||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
|
||||
//@ts-ignore
|
||||
formData.create_time = timeFormat(formData.create_time,'yyyy-mm-dd hh:MM:ss')
|
||||
}
|
||||
|
@ -174,78 +106,49 @@ const getDetail = async (row: Record<string, any>) => {
|
|||
setFormData(data)
|
||||
}
|
||||
|
||||
const { optionsData } = useDictOptions<{
|
||||
user: any[]
|
||||
land: any[]
|
||||
}>({
|
||||
user: {
|
||||
api: getUserList
|
||||
},
|
||||
land: {
|
||||
api: apiLandLists
|
||||
}
|
||||
})
|
||||
interface ListItem {
|
||||
value: string
|
||||
label: string
|
||||
}
|
||||
|
||||
const landOptions = ref<ListItem[]>([])
|
||||
const loading = ref(false)
|
||||
|
||||
const queryUser = async (query: string) => {
|
||||
loading.value = true
|
||||
const userList = await getUserList({
|
||||
keyword: query ?? ''
|
||||
})
|
||||
optionsData.user = userList
|
||||
loading.value = false
|
||||
}
|
||||
|
||||
const selectedUser = (value: any) => {
|
||||
optionsData.land = []
|
||||
formData.land_id = ''
|
||||
queryLand(value)
|
||||
}
|
||||
|
||||
const queryLand = async (user_id: string) => {
|
||||
loading.value = true
|
||||
const landList = await apiLandLists({
|
||||
user_id: user_id ?? ''
|
||||
})
|
||||
loading.value = false
|
||||
optionsData.land = landList
|
||||
loading.value = false
|
||||
const queryLand = async (query: string) => {
|
||||
if (query) {
|
||||
loading.value = true
|
||||
const landList = await apiLandLists({
|
||||
title: query
|
||||
})
|
||||
loading.value = false
|
||||
if (landList.count > 0) {
|
||||
landOptions.value = landList.lists.map((land: any) => {
|
||||
return { value: `${land.id}`, label: `ID: ${land.id} / 名称: ${land.title}` }
|
||||
})
|
||||
} else {
|
||||
landOptions.value = []
|
||||
}
|
||||
loading.value = false
|
||||
} else {
|
||||
landOptions.value = []
|
||||
}
|
||||
}
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData }
|
||||
mode.value == 'edit' ? await apiProductEdit(data) : await apiProductAdd(data)
|
||||
const data = { ...formData, }
|
||||
mode.value == 'edit'
|
||||
? await apiProductEdit(data)
|
||||
: await apiProductAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
}
|
||||
|
||||
const generateUuid = () => {
|
||||
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
||||
const r = (Math.random() * 16) | 0
|
||||
const v = c == 'x' ? r : (r & 0x3) | 0x8
|
||||
return v.toString(16)
|
||||
})
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
formData.code = generateUuid()
|
||||
getUserInfo()
|
||||
.then((res: any) => {
|
||||
const root = res.user.root ?? 0
|
||||
formData.root = root
|
||||
if (type == 'edit') {
|
||||
queryLand(formData.user_id)
|
||||
}
|
||||
})
|
||||
.catch((err: any) => {
|
||||
console.log('err', err)
|
||||
})
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
|
@ -253,41 +156,11 @@ const handleClose = () => {
|
|||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
||||
<style scoped>
|
||||
.avatar-uploader .avatar {
|
||||
width: 178px;
|
||||
height: 178px;
|
||||
display: block;
|
||||
}
|
||||
</style>
|
||||
|
||||
<style>
|
||||
.avatar-uploader .el-upload {
|
||||
width: 200px;
|
||||
height: 130px;
|
||||
border: 1px dashed var(--el-border-color);
|
||||
border-radius: 6px;
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
transition: var(--el-transition-duration-fast);
|
||||
}
|
||||
|
||||
.avatar-uploader .el-upload:hover {
|
||||
border-color: var(--el-color-primary);
|
||||
}
|
||||
|
||||
.el-icon.avatar-uploader-icon {
|
||||
font-size: 28px;
|
||||
color: #8c939d;
|
||||
width: 178px;
|
||||
height: 178px;
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
|
@ -70,8 +70,8 @@
|
|||
<el-table-column label="产品编号" prop="code" show-overflow-tooltip />
|
||||
<el-table-column label="所属土地" width="200">
|
||||
<template #default="{ row }">
|
||||
<el-tag class="mr-2" v-if="row.land_id != null" type="info">ID: {{ row.land_id }}</el-tag>
|
||||
<el-tag class="mr-2" v-if="row.title != null" type="info">名称: {{ row.title }}</el-tag>
|
||||
<el-tag class="mr-2" type="info">ID: {{ row.land_id }}</el-tag>
|
||||
<el-tag class="mr-2" type="info">名称: {{ row.title }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="产品状态" align="center" prop="status">
|
||||
|
@ -84,7 +84,7 @@
|
|||
<span>{{ row.create_time ? timeFormat(row.create_time, 'yyyy-mm-dd hh:MM:ss') : '' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="300" align="center" fixed="right">
|
||||
<el-table-column label="操作" width="260" align="center" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
v-perms="['land.product/edit']"
|
||||
|
@ -94,14 +94,14 @@
|
|||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
<!-- <el-button
|
||||
v-perms="['land.product/bind']"
|
||||
type="primary"
|
||||
link
|
||||
@click="handleBind(row)"
|
||||
>
|
||||
绑定设备
|
||||
</el-button>
|
||||
</el-button> -->
|
||||
<el-button v-perms="['device.device/lists']" type="primary" link >
|
||||
<router-link
|
||||
:to="{
|
||||
|
|
|
@ -497,11 +497,6 @@
|
|||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/uuid@^9.0.7":
|
||||
version "9.0.7"
|
||||
resolved "https://registry.npmmirror.com/@types/uuid/-/uuid-9.0.7.tgz"
|
||||
integrity sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==
|
||||
|
||||
"@types/web-bluetooth@^0.0.14":
|
||||
version "0.0.14"
|
||||
resolved "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.14.tgz"
|
||||
|
@ -4207,11 +4202,6 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2:
|
|||
resolved "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz"
|
||||
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
|
||||
|
||||
uuid@^9.0.1:
|
||||
version "9.0.1"
|
||||
resolved "https://registry.npmmirror.com/uuid/-/uuid-9.0.1.tgz"
|
||||
integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==
|
||||
|
||||
v8-compile-cache@^2.0.3:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.npmmirror.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz"
|
||||
|
|
|
@ -1,46 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace app\adminapi\controller;
|
||||
|
||||
use think\facade\Db;
|
||||
|
||||
class CommonController extends BaseAdminController
|
||||
{
|
||||
public array $notNeedLogin = ['city', 'area', 'street','village','brigade'];
|
||||
|
||||
//**省列表 */
|
||||
public function province()
|
||||
{
|
||||
$data = Db::name('geo_province')->where(['switch' => 1])->select();
|
||||
return $this->data($data->toArray());
|
||||
} //**市列表 */
|
||||
public function city($city)
|
||||
{
|
||||
$data = Db::name('geo_city')->where(['province_code' => $city])->select();
|
||||
return $this->data($data->toArray());
|
||||
}
|
||||
//**区域列表 */
|
||||
public function area($area)
|
||||
{
|
||||
$data = Db::name('geo_county')->where(['city_code' => $area])->select();
|
||||
return $this->data($data->toArray());
|
||||
}
|
||||
//**街道列表 */
|
||||
public function street($street)
|
||||
{
|
||||
$data = Db::name('geo_town')->where(['county_code' => $street])->select();
|
||||
return $this->data($data->toArray());
|
||||
}
|
||||
//**村列表 */
|
||||
public function village($village)
|
||||
{
|
||||
$data = Db::name('geo_village')->where(['town_code' => $village])->select();
|
||||
return $this->data($data->toArray());
|
||||
}
|
||||
//**小队列表 */
|
||||
public function brigade()
|
||||
{
|
||||
$data = Db::name('geo_group')->select();
|
||||
return $this->data($data->toArray());
|
||||
}
|
||||
}
|
|
@ -42,11 +42,6 @@ class DeviceController extends BaseAdminController
|
|||
return $this->dataLists(new DeviceLists());
|
||||
}
|
||||
|
||||
public function datas()
|
||||
{
|
||||
$datas = (new DeviceLogic())->datas(input(''));
|
||||
return $this->success('', $datas);
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 添加
|
||||
|
|
|
@ -42,11 +42,6 @@ class LandController extends BaseAdminController
|
|||
return $this->dataLists(new LandLists());
|
||||
}
|
||||
|
||||
public function datas()
|
||||
{
|
||||
$datas = (new LandLogic())->datas(input(''));
|
||||
return $this->success('', $datas);
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 添加
|
||||
|
|
|
@ -42,11 +42,6 @@ class ProductController extends BaseAdminController
|
|||
return $this->dataLists(new ProductLists());
|
||||
}
|
||||
|
||||
public function datas()
|
||||
{
|
||||
$datas = (new ProductLogic())->datas(input(''));
|
||||
return $this->success('', $datas);
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 添加
|
||||
|
|
|
@ -18,13 +18,6 @@ use app\adminapi\lists\user\UserLists;
|
|||
use app\adminapi\logic\user\UserLogic;
|
||||
use app\adminapi\validate\user\AdjustUserMoney;
|
||||
use app\adminapi\validate\user\UserValidate;
|
||||
use app\api\validate\LoginAccountValidate;
|
||||
use app\common\model\auth\Admin;
|
||||
use app\common\model\auth\AdminRole;
|
||||
use app\common\model\user\User;
|
||||
use app\common\service\ConfigService;
|
||||
use think\facade\Config;
|
||||
use think\facade\Db;
|
||||
|
||||
/**
|
||||
* 用户控制器
|
||||
|
@ -45,48 +38,6 @@ class UserController extends BaseAdminController
|
|||
return $this->dataLists(new UserLists());
|
||||
}
|
||||
|
||||
public function add()
|
||||
{
|
||||
try {
|
||||
$params = $this->request->param();
|
||||
$userSn = User::createUserSn();
|
||||
$passwordSalt = Config::get('project.unique_identification');
|
||||
$password = create_password(123456, $passwordSalt);
|
||||
$avatar = ConfigService::get('default_image', 'user_avatar');
|
||||
|
||||
Db::transaction(function () use($userSn,$password,$avatar,$params) {
|
||||
$user = User::create([
|
||||
'sn' => $userSn,
|
||||
'avatar' => env('project.project_url').'/'.$avatar,
|
||||
'nickname' => '用户' . $userSn,
|
||||
'account' => $params['mobile'],
|
||||
'mobile' => $params['mobile'],
|
||||
'password' => $password,
|
||||
'channel' => 6,
|
||||
]);
|
||||
$admin = Admin::create([
|
||||
'user_id' => $user->id,
|
||||
'name' => '用户' . $userSn,
|
||||
'avatar' => env('project.project_url').'/'.$avatar,
|
||||
'account' => $params['mobile'],
|
||||
'password' => $password
|
||||
]);
|
||||
AdminRole::create([
|
||||
'admin_id' => $admin->id,
|
||||
'role_id' => 1
|
||||
]);
|
||||
});
|
||||
return $this->success();
|
||||
} catch (\Exception $e) {
|
||||
return $this->fail($e->getMessage());
|
||||
|
||||
}
|
||||
}
|
||||
public function datas()
|
||||
{
|
||||
$datas = (new UserLogic())->datas(input(''));
|
||||
return $this->success('', $datas);
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 获取用户详情
|
||||
|
|
|
@ -54,7 +54,6 @@ class DeviceLogic extends BaseLogic
|
|||
'code' => $params['code'],
|
||||
'name' => $params['name'],
|
||||
'type' => $params['type'],
|
||||
'image' => $params['image'],
|
||||
'monitor_item' => $params['monitor_item'],
|
||||
'video_url' => $params['video_url'],
|
||||
'status' => $params['status'],
|
||||
|
@ -104,7 +103,6 @@ class DeviceLogic extends BaseLogic
|
|||
'code' => $params['code'],
|
||||
'name' => $params['name'],
|
||||
'type' => $params['type'],
|
||||
'image' => $params['image'],
|
||||
'monitor_item' => $params['monitor_item'],
|
||||
'video_url' => $params['video_url'],
|
||||
'status' => $params['status'],
|
||||
|
@ -129,41 +127,6 @@ class DeviceLogic extends BaseLogic
|
|||
}
|
||||
}
|
||||
|
||||
public function datas($params): array
|
||||
{
|
||||
$userWhere['d.user_id'] = -1;
|
||||
if (!empty($params['user_id'])) {
|
||||
$userWhere['d.user_id'] = $params['user_id'];
|
||||
}
|
||||
if (!request()->adminInfo['root'] && request()->adminInfo['user_id']) {
|
||||
$userWhere['d.user_id'] = request()->adminInfo['user_id'];
|
||||
}
|
||||
if (request()->adminInfo['root']) {
|
||||
unset($userWhere['d.user_id']);
|
||||
}
|
||||
$queryWhere = [];
|
||||
if (!empty($params['name'])) {
|
||||
$queryWhere[] = ['d.name', 'like', '%' . $params['name'] . '%'];
|
||||
}
|
||||
$deviceIdArray = Db::name('product_device')->column('device_id');
|
||||
if (!empty($params['all'])) {
|
||||
$deviceIdArray= [];
|
||||
}
|
||||
$lists = Db::name('device')->alias('d')
|
||||
->where($userWhere)->where($queryWhere)->whereNotIn('d.id', $deviceIdArray)
|
||||
->leftJoin('product_device pd','pd.device_id = d.id')
|
||||
->leftJoin('product p','p.id = pd.product_id')
|
||||
->leftJoin('user u','u.id = p.user_id')
|
||||
->field('d.*')
|
||||
->limit(0, 100)
|
||||
->order(['d.id' => 'desc'])
|
||||
->select()->toArray();
|
||||
foreach ($lists as &$item) {
|
||||
$item['deviceinfo'] = 'ID:' . $item['id'] . ' / 名称:' . $item['name'];
|
||||
}
|
||||
return $lists;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @notes 删除
|
||||
|
@ -204,17 +167,16 @@ class DeviceLogic extends BaseLogic
|
|||
if (!empty($detail['monitor_item'])) {
|
||||
$monitorItemArray = explode(',', $detail['monitor_item']);
|
||||
}
|
||||
|
||||
$dictTypeId = Db::name('dict_type')->where('type', 'monitor_item')->value('id');
|
||||
$monitorItemArray = Db::name('dict_data')->where('type_id', $dictTypeId)->whereIn('value', $monitorItemArray)->field(['name', 'value'])->select()->toArray();
|
||||
foreach($monitorItemArray as $k=>$v) {
|
||||
$monitorItemArray[$k]['device_id'] = $params['id'];
|
||||
$monitorItemArray[$k]['monitor_value'] = '-';
|
||||
$monitorItemArray[$k]['last_time'] = '-';
|
||||
$monitorData = Db::name('land_collection')->where('device_id', $params['id'])->order(['id' => 'desc'])->find();
|
||||
$monitorData = Db::name('device_monitor_data')->where('device_id', $params['id'])->where('monitor_item', $v['value'])->order(['id' => 'desc'])->find();
|
||||
if (!empty($monitorData)) {
|
||||
$monitorItemArray[$k]['monitor_value'] = $monitorData[$v['value']];
|
||||
$monitorItemArray[$k]['last_time'] =$monitorData['create_time'];
|
||||
$monitorItemArray[$k]['monitor_value'] = $monitorData['monitor_value'];
|
||||
$monitorItemArray[$k]['last_time'] = date('Y-m-d H:i:s', $monitorData['create_time']);
|
||||
}
|
||||
}
|
||||
$detail['monitor_item'] = $monitorItemArray;
|
||||
|
@ -231,14 +193,14 @@ class DeviceLogic extends BaseLogic
|
|||
$limitOffset = ($pageNo - 1) * $pageSize;
|
||||
$limitLength = $pageSize;
|
||||
$where['device_id'] = $params['id'];
|
||||
$lists = Db::name('land_collection')
|
||||
$where['monitor_item'] = $params['monitor_type'];
|
||||
$lists = Db::name('device_monitor_data')
|
||||
->where($where)
|
||||
->field(["{$params['monitor_type']} as monitor_value", 'id', 'create_time'])
|
||||
->limit($limitOffset, $limitLength)
|
||||
->order(['id' => 'desc'])
|
||||
->select()
|
||||
->toArray();
|
||||
$count = Db::name('land_collection')->where($where)->count();
|
||||
$count = Db::name('device_monitor_data')->where($where)->count();
|
||||
return compact('lists', 'count', 'page_no', 'page_size');
|
||||
}
|
||||
}
|
|
@ -38,10 +38,9 @@ class LandLogic extends BaseLogic
|
|||
*/
|
||||
public static function add(array $params): bool
|
||||
{
|
||||
$root = (request()->adminInfo)['root'];
|
||||
$userId = (request()->adminInfo)['user_id'];
|
||||
if ($root && !empty($params['user_id'])) {
|
||||
$userId = $params['user_id'];
|
||||
if (!empty($params['user_id'])) {
|
||||
$userId = $params['user_id'];
|
||||
}
|
||||
Db::startTrans();
|
||||
try {
|
||||
|
@ -50,7 +49,7 @@ class LandLogic extends BaseLogic
|
|||
'title' => $params['title'],
|
||||
'address' => $params['address'],
|
||||
'total_area' => $params['total_area'],
|
||||
'residual_area' => $params['total_area'],
|
||||
'residual_area' => $params['residual_area'],
|
||||
'province_code' => $params['province_code'],
|
||||
'province_name' => $params['province_name'],
|
||||
'city_code' => $params['city_code'],
|
||||
|
@ -65,7 +64,7 @@ class LandLogic extends BaseLogic
|
|||
'group_name' => $params['group_name'],
|
||||
'master_name' => $params['master_name'],
|
||||
'master_phone' => $params['master_phone'],
|
||||
// 'pic' => json_encode($params['pic']),
|
||||
'pic' => json_encode($params['pic']),
|
||||
]);
|
||||
|
||||
Db::commit();
|
||||
|
@ -87,13 +86,10 @@ class LandLogic extends BaseLogic
|
|||
*/
|
||||
public static function edit(array $params): bool
|
||||
{
|
||||
$root = (request()->adminInfo)['root'];
|
||||
$userId = (request()->adminInfo)['user_id'];
|
||||
if ($root && !empty($params['user_id'])) {
|
||||
$userId = $params['user_id'];
|
||||
if (!empty($params['user_id'])) {
|
||||
$userId = $params['user_id'];
|
||||
}
|
||||
$land = Land::findOrEmpty($params['id'])->toArray();
|
||||
$newArea = $params['total_area'] - ($land['total_area'] - $land['residual_area']);
|
||||
Db::startTrans();
|
||||
try {
|
||||
Land::where('id', $params['id'])->update([
|
||||
|
@ -101,7 +97,7 @@ class LandLogic extends BaseLogic
|
|||
'title' => $params['title'],
|
||||
'address' => $params['address'],
|
||||
'total_area' => $params['total_area'],
|
||||
'residual_area' => $newArea,
|
||||
'residual_area' => $params['residual_area'],
|
||||
'province_code' => $params['province_code'],
|
||||
'province_name' => $params['province_name'],
|
||||
'city_code' => $params['city_code'],
|
||||
|
@ -116,20 +112,9 @@ class LandLogic extends BaseLogic
|
|||
'group_name' => $params['group_name'],
|
||||
'master_name' => $params['master_name'],
|
||||
'master_phone' => $params['master_phone'],
|
||||
// 'pic' => json_encode($params['pic']),
|
||||
'pic' => json_encode($params['pic']),
|
||||
]);
|
||||
$productIdArray = Db::name('product')->alias('p')
|
||||
->where('lp.land_id', $params['id'])
|
||||
->leftJoin('land_product lp','lp.product_id = p.id')
|
||||
->field('p.*')
|
||||
->column('p.id');
|
||||
Db::name('product')->whereIn('id', $productIdArray)->update(['user_id'=>$userId]);
|
||||
$deviceIdArray = Db::name('device')->alias('d')
|
||||
->whereIn('pd.product_id', $productIdArray)
|
||||
->leftJoin('product_device pd','pd.device_id = d.id')
|
||||
->field('d.*')
|
||||
->column('d.id');
|
||||
Db::name('device')->whereIn('id', $deviceIdArray)->update(['user_id'=>$userId]);
|
||||
|
||||
Db::commit();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
|
@ -139,27 +124,6 @@ class LandLogic extends BaseLogic
|
|||
}
|
||||
}
|
||||
|
||||
public function datas($params): array
|
||||
{
|
||||
$userWhere = [];
|
||||
if (!empty($params['user_id'])) {
|
||||
$userWhere['user_id'] = $params['user_id'];
|
||||
}
|
||||
if (!request()->adminInfo['root'] && request()->adminInfo['user_id']) {
|
||||
$userWhere['user_id'] = request()->adminInfo['user_id'];
|
||||
}
|
||||
$field = ['id', 'user_id', 'title', 'address', 'total_area', 'residual_area', 'province_code', 'province_name', 'city_code', 'city_name', 'county_code', 'county_name', 'town_code', 'town_name', 'village_code', 'village_name', 'group_code', 'group_name', 'master_name', 'master_phone', 'pic'];
|
||||
$lists = Land::where($userWhere)
|
||||
->limit(0, 100)
|
||||
->field($field)
|
||||
->order('id desc')
|
||||
->select()->toArray();
|
||||
foreach ($lists as &$item) {
|
||||
$item['landinfo'] = 'ID:' . $item['id'] . ' / 名称:' . $item['title'];
|
||||
}
|
||||
return $lists;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @notes 删除
|
||||
|
@ -188,14 +152,9 @@ class LandLogic extends BaseLogic
|
|||
|
||||
public static function bind($params): bool
|
||||
{
|
||||
$root = (request()->adminInfo)['root'];
|
||||
$userId = (request()->adminInfo)['user_id'];
|
||||
if ($root && !empty($params['user_id'])) {
|
||||
$userId = $params['user_id'];
|
||||
}
|
||||
if (!empty($params['id'])) {
|
||||
$land = Land::findOrEmpty($params['id'])->toArray();
|
||||
$userId = $land['user_id'] ?? 0;
|
||||
$userId = Db::name('land')->where('id', $params['id'])->value('user_id');
|
||||
}
|
||||
Db::startTrans();
|
||||
try {
|
||||
|
|
|
@ -52,6 +52,7 @@ class LandPlantLogic extends BaseLogic
|
|||
'user' => $params['user'],
|
||||
'remark' => $params['remark'],
|
||||
'status' => $params['status'],
|
||||
'pic' => json_encode($params['pic']),
|
||||
'qr_code' => $params['qr_code'],
|
||||
'plant_date' => strtotime($params['plant_date']),
|
||||
]);
|
||||
|
@ -75,10 +76,7 @@ class LandPlantLogic extends BaseLogic
|
|||
*/
|
||||
public static function edit(array $params): bool
|
||||
{
|
||||
$landPlant = LandPlant::findOrEmpty($params['id'])->toArray();
|
||||
$land = Land::findOrEmpty($landPlant['land_id'])->toArray();
|
||||
$userId = $land['user_id'];
|
||||
$newArea = $land['residual_area'] + ($landPlant['area'] - $params['area']);
|
||||
$userId = Db::name('land')->where('id', $params['land_id'])->value('user_id');
|
||||
Db::startTrans();
|
||||
try {
|
||||
LandPlant::where('id', $params['id'])->update([
|
||||
|
@ -90,10 +88,11 @@ class LandPlantLogic extends BaseLogic
|
|||
'user' => $params['user'],
|
||||
'remark' => $params['remark'],
|
||||
'status' => $params['status'],
|
||||
'pic' => json_encode($params['pic']),
|
||||
'qr_code' => $params['qr_code'],
|
||||
'plant_date' => strtotime($params['plant_date']),
|
||||
]);
|
||||
Land::where('id', $landPlant['land_id'])->update(['residual_area'=>$newArea]);
|
||||
|
||||
Db::commit();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
|
@ -113,8 +112,6 @@ class LandPlantLogic extends BaseLogic
|
|||
*/
|
||||
public static function delete(array $params): bool
|
||||
{
|
||||
$landPlant = LandPlant::findOrEmpty($params['id'])->toArray();
|
||||
Land::where('id', $landPlant['land_id'])->inc('residual_area', $landPlant['area'])->update();
|
||||
Db::name('land_plant_action')->where('plant_id', $params['id'])->delete();
|
||||
return LandPlant::destroy($params['id']);
|
||||
}
|
||||
|
|
|
@ -15,7 +15,6 @@
|
|||
namespace app\adminapi\logic\land;
|
||||
|
||||
|
||||
use app\common\model\land\Land;
|
||||
use app\common\model\land\Product;
|
||||
use app\common\logic\BaseLogic;
|
||||
use think\facade\Db;
|
||||
|
@ -39,15 +38,10 @@ class ProductLogic extends BaseLogic
|
|||
*/
|
||||
public static function add(array $params): bool
|
||||
{
|
||||
$root = (request()->adminInfo)['root'];
|
||||
$userId = (request()->adminInfo)['user_id'];
|
||||
$status = 1;
|
||||
if ($root && !empty($params['user_id'])) {
|
||||
$userId = $params['user_id'];
|
||||
}
|
||||
if (!empty($params['land_id'])) {
|
||||
$land = Land::findOrEmpty($params['land_id'])->toArray();
|
||||
$userId = $land['user_id'] ?? 0;
|
||||
$userId = Db::name('land')->where('id', $params['land_id'])->value('user_id');
|
||||
$status = 2;
|
||||
}
|
||||
Db::startTrans();
|
||||
|
@ -56,12 +50,9 @@ class ProductLogic extends BaseLogic
|
|||
'user_id' => $userId,
|
||||
'code' => $params['code'],
|
||||
'name' => $params['name'],
|
||||
'desc' => $params['desc'],
|
||||
'image' => $params['image'],
|
||||
'status' => $status,
|
||||
]);
|
||||
if (!empty($params['land_id'])) {
|
||||
Db::name('land_product')->where('land_id', $params['land_id'])->delete();
|
||||
Db::name('land_product')->insert([
|
||||
'land_id' => $params['land_id'],
|
||||
'product_id' => $product['id'],
|
||||
|
@ -88,15 +79,10 @@ class ProductLogic extends BaseLogic
|
|||
*/
|
||||
public static function edit(array $params): bool
|
||||
{
|
||||
$root = (request()->adminInfo)['root'];
|
||||
$userId = (request()->adminInfo)['user_id'];
|
||||
$status = 1;
|
||||
if ($root && !empty($params['user_id'])) {
|
||||
$userId = $params['user_id'];
|
||||
}
|
||||
if (!empty($params['land_id'])) {
|
||||
$land = Land::findOrEmpty($params['land_id'])->toArray();
|
||||
$userId = $land['user_id'] ?? 0;
|
||||
$userId = Db::name('land')->where('id', $params['land_id'])->value('user_id');
|
||||
$status = 2;
|
||||
}
|
||||
Db::startTrans();
|
||||
|
@ -105,13 +91,8 @@ class ProductLogic extends BaseLogic
|
|||
'user_id' => $userId,
|
||||
'code' => $params['code'],
|
||||
'name' => $params['name'],
|
||||
'desc' => $params['desc'],
|
||||
'image' => $params['image'],
|
||||
'status' => $status,
|
||||
]);
|
||||
if (!empty($params['land_id'])) {
|
||||
Db::name('land_product')->where('land_id', $params['land_id'])->delete();
|
||||
}
|
||||
Db::name('land_product')->where('product_id', $params['id'])->delete();
|
||||
if (!empty($params['land_id'])) {
|
||||
Db::name('land_product')->insert([
|
||||
|
@ -130,39 +111,6 @@ class ProductLogic extends BaseLogic
|
|||
}
|
||||
}
|
||||
|
||||
public function datas($params): array
|
||||
{
|
||||
$userWhere['p.user_id'] = -1;
|
||||
if (!empty($params['user_id'])) {
|
||||
$userWhere['p.user_id'] = $params['user_id'];
|
||||
}
|
||||
if (!request()->adminInfo['root'] && request()->adminInfo['user_id']) {
|
||||
$userWhere['p.user_id'] = request()->adminInfo['user_id'];
|
||||
}
|
||||
if (request()->adminInfo['root']) {
|
||||
unset($userWhere['p.user_id']);
|
||||
}
|
||||
$queryWhere = [];
|
||||
if (!empty($params['name'])) {
|
||||
$queryWhere[] = ['p.name', 'like', '%' . $params['name'] . '%'];
|
||||
}
|
||||
$productIdArray = Db::name('land_product')->column('product_id');
|
||||
if (!empty($params['all'])) {
|
||||
$productIdArray= [];
|
||||
}
|
||||
$lists = Db::name('product')->alias('p')
|
||||
->where($userWhere)->where($queryWhere)->whereNotIn('p.id', $productIdArray)
|
||||
->leftJoin('user u','u.id = p.user_id')
|
||||
->field('p.*')
|
||||
->limit(0, 100)
|
||||
->order(['p.id' => 'desc'])
|
||||
->select()->toArray();
|
||||
foreach ($lists as &$item) {
|
||||
$item['productinfo'] = 'ID:' . $item['id'] . ' / 名称:' . $item['name'];
|
||||
}
|
||||
return $lists;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @notes 删除
|
||||
|
@ -193,14 +141,9 @@ class ProductLogic extends BaseLogic
|
|||
|
||||
public static function bind($params): bool
|
||||
{
|
||||
$root = (request()->adminInfo)['root'];
|
||||
$userId = (request()->adminInfo)['user_id'];
|
||||
if ($root && !empty($params['user_id'])) {
|
||||
$userId = $params['user_id'];
|
||||
}
|
||||
if (!empty($params['id'])) {
|
||||
$product = Product::findOrEmpty($params['id'])->toArray();
|
||||
$userId = $product['user_id'] ?? 0;
|
||||
$userId = Db::name('product')->where('id', $params['id'])->value('user_id');
|
||||
}
|
||||
Db::startTrans();
|
||||
try {
|
||||
|
|
|
@ -51,33 +51,6 @@ class UserLogic extends BaseLogic
|
|||
return $user->toArray();
|
||||
}
|
||||
|
||||
public function datas($params): array
|
||||
{
|
||||
$userWhere['id'] = 0;
|
||||
// 超级管理员数据
|
||||
if (request()->adminInfo['root'] && !request()->adminInfo['user_id']) {
|
||||
unset($userWhere['id']);
|
||||
}
|
||||
// 普通用户数据
|
||||
if (!request()->adminInfo['root'] && request()->adminInfo['user_id']) {
|
||||
$userWhere['id'] = request()->adminInfo['user_id'];
|
||||
}
|
||||
$where = [];
|
||||
if (!empty($params['keyword'])) {
|
||||
$where[] = ['sn|nickname|account|mobile', 'like', '%' . $params['keyword'] . '%'];
|
||||
}
|
||||
$field = "id,sn,nickname,sex,avatar,account,mobile,channel,is_disable,create_time";
|
||||
$lists = User::where($userWhere)->where($where)
|
||||
->limit(0, 100)
|
||||
->field($field)
|
||||
->order('id desc')
|
||||
->select()->toArray();
|
||||
foreach ($lists as &$item) {
|
||||
$item['userinfo'] = 'ID:' . $item['id'] . ' / 账户:' . $item['account'];
|
||||
}
|
||||
return $lists;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @notes 更新用户信息
|
||||
|
|
|
@ -41,9 +41,6 @@
|
|||
return $this->fail('操作内容格式错误');
|
||||
}
|
||||
foreach($this->actionFields[$params['type']] as $v) {
|
||||
if($v == 'remark'){
|
||||
continue;
|
||||
}
|
||||
if(empty($detail[$v])){
|
||||
return $this->fail($this->actionMessage[$params['type']].'缺少必要参数');
|
||||
}
|
||||
|
@ -106,8 +103,6 @@
|
|||
$data = Db::query("SELECT * FROM zzsy_land_plant_action WHERE id IN (SELECT max( id ) FROM zzsy_land_plant_action WHERE plant_id = {$params['plant_id']} GROUP BY type)");
|
||||
foreach($data as $k=>$v){
|
||||
$data[$k]['detail'] = json_decode($v['detail'],true);
|
||||
$data[$k]['create_time'] = date('Y-m-d H:i:s',$v['create_time']);
|
||||
$data[$k]['update_time'] = date('Y-m-d H:i:s',$v['update_time']);
|
||||
}
|
||||
return $this->success('请求成功',$data);
|
||||
}
|
||||
|
|
|
@ -1,237 +0,0 @@
|
|||
<?php
|
||||
namespace app\api\controller;
|
||||
|
||||
use app\common\model\device\Device;
|
||||
use app\common\model\device\DeviceOffline;
|
||||
use app\common\model\device\MonitorAlarm;
|
||||
use app\common\model\device\MonitorThreshold;
|
||||
use app\common\model\land\LandProduct;
|
||||
use app\common\model\LandCollection;
|
||||
use app\common\model\product\ProductDevice;
|
||||
use app\common\model\User;
|
||||
use Exception;
|
||||
use think\Db;
|
||||
use think\facade\Log;
|
||||
|
||||
class DataCollectController extends BaseApiController
|
||||
{
|
||||
public array $notNeedLogin = ['collect', 'disabled'];
|
||||
// 种植数据采集
|
||||
public function collect()
|
||||
{
|
||||
try {
|
||||
|
||||
$parmas = $this->request->post();
|
||||
Log::info('采集消息发布'.json_encode($parmas));
|
||||
if(!$parmas || !isset($parmas['username']) || $parmas['username']==''){
|
||||
return $this->fail('参数错误');
|
||||
}
|
||||
|
||||
// mqtt服务端 消息发布事件
|
||||
if ($parmas['event'] == 'message.publish') {
|
||||
$payload= json_decode($parmas['payload'], true);
|
||||
$user = User::where('account', $parmas['username'])->find();
|
||||
|
||||
$device = explode('_', $parmas['topic']); // 命名规则:camera_deviceid deviceid为设备主键id
|
||||
$deviceId = $device[1]; // 设备id
|
||||
|
||||
$productDevice = ProductDevice::where('device_id', $deviceId)->find();
|
||||
$landProduct = LandProduct::where('product_id', $productDevice['product_id'])->find();
|
||||
$landId = $landProduct['land_id']; // 土地id
|
||||
$data = [
|
||||
'user_id' => $user['id'],
|
||||
'land_id' => $landId,
|
||||
'device_id' => $deviceId,
|
||||
'qos'=>$parmas['qos'],
|
||||
'wind_speed' => $payload['wind_speed'],
|
||||
'wind_direction' => $payload['wind_direction'],
|
||||
'ambient_temperature' => $payload['ambient_temperature'],
|
||||
'ambient_humidity' => $payload['ambient_humidity'],
|
||||
'carbon_dioxide' => $payload['carbon_dioxide'],
|
||||
'ambient_air_pressure' => $payload['ambient_air_pressure'],
|
||||
'rainfall' => $payload['rainfall'],
|
||||
'ambient_lighting' => $payload['ambient_lighting'],
|
||||
'soil_temperature' => $payload['soil_temperature'],
|
||||
'soil_conductivity' => $payload['soil_conductivity'],
|
||||
'soil_moisture' => $payload['soil_moisture'],
|
||||
'soil_PH' => $payload['soil_PH'],
|
||||
'soil_potassium_phosphate_nitrogen' => $payload['soil_potassium_phosphate_nitrogen'],
|
||||
'soil_potassium_phosphate_phosphorus' => $payload['soil_potassium_phosphate_phosphorus'],
|
||||
'soil_potassium_phosphate_potassium' => $payload['soil_potassium_phosphate_potassium'],
|
||||
'client_id'=>$parmas['clientid'],
|
||||
'create_time'=>date('Y-m-d H:i:s'),
|
||||
'update_time'=>date('Y-m-d H:i:s'),
|
||||
];
|
||||
|
||||
LandCollection::create($data);
|
||||
|
||||
// 设备告警
|
||||
$monitorThreshold = (new MonitorThreshold())->select()->toArray()[0];
|
||||
// 风速告警
|
||||
if ($payload['wind_speed'] > $monitorThreshold['wind_speed_max']) {
|
||||
self::createAlarm($landId, $deviceId, 'wind_speed', '风速偏快' ,$payload['wind_speed']);
|
||||
}
|
||||
|
||||
// ambient_temperature 环境温度
|
||||
if ($payload['ambient_temperature'] < $monitorThreshold['air_temp_min']) {
|
||||
self::createAlarm($landId, $deviceId, 'ambient_temperature', '气温偏低' ,$payload['ambient_temperature']);
|
||||
}
|
||||
|
||||
// ambient_temperature 环境温度
|
||||
if ($payload['ambient_temperature'] > $monitorThreshold['air_temp_max']) {
|
||||
self::createAlarm($landId, $deviceId, 'ambient_temperature', '气温偏高' ,$payload['ambient_temperature']);
|
||||
}
|
||||
|
||||
// ambient_humidity 环境湿度
|
||||
if ($payload['ambient_humidity'] < $monitorThreshold['air_mois_min']) {
|
||||
self::createAlarm($landId, $deviceId, 'ambient_humidity', '环境湿度偏低' ,$payload['ambient_humidity']);
|
||||
}
|
||||
// ambient_humidity 环境湿度
|
||||
if ($payload['ambient_humidity'] < $monitorThreshold['air_mois_max']) {
|
||||
self::createAlarm($landId, $deviceId, 'ambient_humidity', '环境湿度偏高' ,$payload['ambient_humidity']);
|
||||
}
|
||||
|
||||
// carbon_dioxide 二氧化碳含量
|
||||
if ($payload['carbon_dioxide'] > $monitorThreshold['air_co2_content_max']) {
|
||||
self::createAlarm($landId, $deviceId, 'carbon_dioxide', '空气二氧化碳含量偏高' ,$payload['carbon_dioxide']);
|
||||
}
|
||||
// carbon_dioxide 二氧化碳含量
|
||||
if ($payload['carbon_dioxide'] < $monitorThreshold['air_co2_content_min']) {
|
||||
self::createAlarm($landId, $deviceId, 'carbon_dioxide', '空气二氧化碳含量偏低' ,$payload['carbon_dioxide']);
|
||||
}
|
||||
|
||||
// ambient_air_pressure 大气压力
|
||||
if ($payload['ambient_air_pressure'] >= 120)
|
||||
{
|
||||
self::createAlarm($landId, $deviceId, 'ambient_air_pressure', '大气压力偏高' ,$payload['ambient_air_pressure']);
|
||||
}
|
||||
if ($payload['ambient_air_pressure'] < 10)
|
||||
{
|
||||
self::createAlarm($landId, $deviceId, 'ambient_air_pressure', '大气压力偏低' ,$payload['ambient_air_pressure']);
|
||||
}
|
||||
|
||||
// rainfall 雨量
|
||||
// if ($payload['rainfall'] >= 100)
|
||||
// ambient_lighting 光照
|
||||
|
||||
// soil_temperature 土壤温度
|
||||
if ($payload['soil_temperature'] >= $monitorThreshold['soil_temp_max']) {
|
||||
self::createAlarm($landId, $deviceId, 'soil_temperature', '土壤温度偏高' ,$payload['soil_temperature']);
|
||||
}
|
||||
// soil_temperature 土壤温度
|
||||
if ($payload['soil_temperature'] < $monitorThreshold['soil_temp_min']) {
|
||||
self::createAlarm($landId, $deviceId, 'soil_temperature', '土壤温度偏低' ,$payload['soil_temperature']);
|
||||
}
|
||||
|
||||
// soil_conductivity 土壤电导率
|
||||
// if ($payload['soil_conductivity'] < $monitorThreshold['soil_mois_max']) {
|
||||
// self::createAlarm($land[3], $deviceId, '土壤电导率', '土壤湿度偏高' ,$payload['soil_conductivity']);
|
||||
// }
|
||||
// if ($payload['soil_conductivity'] < $monitorThreshold['soil_mois_min']) {
|
||||
// self::createAlarm($land[3], $deviceId, '土壤电导率', '土壤湿度偏低' ,$payload['soil_conductivity']);
|
||||
// }
|
||||
|
||||
// soil_conductivity 土壤湿度
|
||||
if ($payload['soil_moisture'] < $monitorThreshold['soil_mois_max']) {
|
||||
self::createAlarm($landId, $deviceId, 'soil_moisture', '土壤湿度偏高' ,$payload['soil_moisture']);
|
||||
}
|
||||
if ($payload['soil_moisture'] < $monitorThreshold['soil_mois_min']) {
|
||||
self::createAlarm($landId, $deviceId, 'soil_moisture', '土壤湿度偏低' ,$payload['soil_moisture']);
|
||||
}
|
||||
|
||||
// soil_PH 土壤ph值
|
||||
if ($payload['soil_PH'] < $monitorThreshold['soil_ph_max']) {
|
||||
self::createAlarm($landId, $deviceId, 'soil_PH', '土壤PH值偏碱性' ,$payload['soil_moisture']);
|
||||
}
|
||||
if ($payload['soil_PH'] < $monitorThreshold['soil_ph_min']) {
|
||||
self::createAlarm($landId, $deviceId, 'soil_PH', '土壤PH值偏酸性' ,$payload['soil_moisture']);
|
||||
}
|
||||
|
||||
// soil_potassium_phosphate_nitrogen 土壤磷酸钾:氮
|
||||
if ($payload['soil_potassium_phosphate_nitrogen'] < $monitorThreshold['soil_n_content_max']) {
|
||||
self::createAlarm($landId, $deviceId, 'soil_potassium_phosphate_nitrogen', '土壤磷酸钾-含氮量偏高' ,$payload['soil_potassium_phosphate_nitrogen']);
|
||||
}
|
||||
if ($payload['soil_potassium_phosphate_nitrogen'] < $monitorThreshold['soil_n_content_min']) {
|
||||
self::createAlarm($landId, $deviceId, 'soil_potassium_phosphate_nitrogen', '土壤磷酸钾-含氮量偏低' ,$payload['soil_potassium_phosphate_nitrogen']);
|
||||
}
|
||||
|
||||
// soil_potassium_phosphate_phosphorus 土壤磷酸钾:磷
|
||||
if ($payload['soil_potassium_phosphate_phosphorus'] < $monitorThreshold['soil_p_content_max']) {
|
||||
self::createAlarm($landId, $deviceId, 'soil_potassium_phosphate_phosphorus', '土壤磷酸钾-含磷量偏高' ,$payload['soil_potassium_phosphate_phosphorus']);
|
||||
}
|
||||
if ($payload['soil_potassium_phosphate_phosphorus'] < $monitorThreshold['soil_p_content_min']) {
|
||||
self::createAlarm($landId, $deviceId, 'soil_potassium_phosphate_phosphorus', '土壤磷酸钾-含磷量偏低' ,$payload['soil_potassium_phosphate_phosphorus']);
|
||||
}
|
||||
|
||||
// soil_potassium_phosphate_potassium 土壤磷酸钾:钾
|
||||
if ($payload['soil_potassium_phosphate_potassium'] < $monitorThreshold['soil_k_content_max']) {
|
||||
self::createAlarm($landId, $deviceId, 'soil_potassium_phosphate_potassium', '土壤磷酸钾-含钾量偏高' ,$payload['soil_potassium_phosphate_potassium']);
|
||||
}
|
||||
if ($payload['soil_potassium_phosphate_potassium'] < $monitorThreshold['soil_k_content_min']) {
|
||||
self::createAlarm($landId, $deviceId, 'soil_potassium_phosphate_potassium', '土壤磷酸钾-含钾量偏低' ,$payload['soil_potassium_phosphate_potassium']);
|
||||
}
|
||||
|
||||
return $this->success('接收成功', ['user_name'=>$parmas['username'], 'topic'=>$parmas['topic']]);
|
||||
}
|
||||
|
||||
// mqtt服务端 连接断开事件 客户端断开表示该土块的所有设备都已断开 共用同一个mqtt客户端
|
||||
if ($parmas['event'] == 'client.disconnected') {
|
||||
// lihai_lot_walnutpi_dev_6 clientid 命名规则
|
||||
|
||||
$device = strstr($parmas['clientid'], 'dev_');
|
||||
$device = explode('_', $device);
|
||||
$deviceId = $device[1]; // 设备id
|
||||
|
||||
$productDevice = ProductDevice::where('device_id', $deviceId)->find();
|
||||
$landProduct = LandProduct::where('product_id', $productDevice['product_id'])->find();
|
||||
$landId = $landProduct['land_id']; // 土地id
|
||||
// 查询该土地关联的设备
|
||||
$addData = [
|
||||
'land_id' => $landId,
|
||||
'device_id' => $deviceId,
|
||||
'last_online_time' => $parmas['disconnected_at']/1000,
|
||||
'disconnected_time' => $parmas['disconnected_at']/1000,
|
||||
'create_time' => time(),
|
||||
'update_time' => time()
|
||||
];
|
||||
DeviceOffline::create($addData);
|
||||
Device::where('id', $deviceId)->update(['is_online' => 2]);
|
||||
return $this->success('接收成功');
|
||||
}
|
||||
// 连接链接事件 设备已上线
|
||||
if ($parmas['event'] == 'client.connected') {
|
||||
// lihai_lot_walnutpi_dev_6 clientid 命名规则
|
||||
$device = strstr($parmas['clientid'], 'dev_');
|
||||
$device = explode('_', $device);
|
||||
$deviceId = $device[1]; // 设备id
|
||||
Device::where('id', $deviceId)->update(['is_online' => 1]);
|
||||
return $this->success('接收成功');
|
||||
}
|
||||
|
||||
} catch (Exception $e) {
|
||||
return $this->fail($e->getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static function createAlarm($user_id, $device_id, $type, $content, $value)
|
||||
{
|
||||
$data = [
|
||||
'land_id' => $user_id,
|
||||
'device_id' => $device_id,
|
||||
'type' => $type,
|
||||
'content' => $content,
|
||||
'value' => $value,
|
||||
'create_time' => time(),
|
||||
'update_time' => time(),
|
||||
];
|
||||
|
||||
MonitorAlarm::create($data);
|
||||
}
|
||||
|
||||
public function disabled()
|
||||
{
|
||||
$parmas = $this->request->post();
|
||||
Log::info('连接断开事件'.json_encode($parmas));
|
||||
}
|
||||
}
|
|
@ -4,11 +4,8 @@ namespace app\api\controller;
|
|||
use app\common\enum\notice\NoticeEnum;
|
||||
use app\common\model\action\Action;
|
||||
use app\common\model\device\Device;
|
||||
use app\common\model\device\MonitorThreshold;
|
||||
use app\common\model\file\File;
|
||||
use app\common\model\land\Land;
|
||||
use app\common\model\land\LandProduct;
|
||||
use app\common\model\LandCollection;
|
||||
use app\common\model\monitor\MonitorData;
|
||||
use app\common\model\plant\Plant;
|
||||
use app\common\model\product\ProductDevice;
|
||||
|
@ -45,47 +42,31 @@ class IndexController extends BaseApiController
|
|||
if($landProduct->isEmpty()){
|
||||
$data['monitor'] = [];
|
||||
}else{
|
||||
$productDevice = ProductDevice::where('product_id',$landProduct['product_id'])->findOrEmpty();
|
||||
$device = Device::where('id', $productDevice['device_id'])->findOrEmpty();
|
||||
$data['video_url'] = $device['video_url'];
|
||||
$data['device_id'] = $device['id'];
|
||||
// 监控视频封面
|
||||
$file = File::where('cid', $device['id'])->order('id', 'desc')->findOrEmpty();
|
||||
$data['video_cover'] = isset($file['uri'])? env('project.project_url').'/'.$file['uri']: '';
|
||||
$landCollection = LandCollection::where('land_id',$params['land_id'])->order('id desc')->findOrEmpty();
|
||||
if($landCollection->isEmpty()){
|
||||
$monitor = MonitorData::where('product_id',$landProduct['product_id'])->order('id desc')->findOrEmpty();
|
||||
if($monitor->isEmpty()){
|
||||
$data['monitor'] = [];
|
||||
}else{
|
||||
$data['monitor']['soil_monitor_data'] = [
|
||||
'soil_temperature'=>$landCollection['soil_temperature'],
|
||||
'soil_moisture'=>$landCollection['soil_moisture'],
|
||||
'conductivity'=>$landCollection['soil_conductivity'],
|
||||
'ph'=>$landCollection['soil_PH'],
|
||||
'n_content'=>$landCollection['soil_potassium_phosphate_nitrogen'],
|
||||
'p_content'=>$landCollection['soil_potassium_phosphate_phosphorus'],
|
||||
'k_content'=>$landCollection['soil_potassium_phosphate_potassium'],
|
||||
'create_time' => $landCollection['create_time']
|
||||
'wind_direction'=>$monitor['wind_direction'],
|
||||
'wind_speed'=>$monitor['wind_speed'],
|
||||
'air_temperature'=>$monitor['air_temperature'],
|
||||
'air_moisture'=>$monitor['air_moisture'],
|
||||
'co2_content'=>$monitor['co2_content'],
|
||||
'pressure'=>$monitor['pressure'],
|
||||
'rainfall'=>$monitor['rainfall'],
|
||||
'light_intensity'=>$monitor['light_intensity'],
|
||||
'create_time' => $monitor['create_time']
|
||||
];
|
||||
$data['monitor']['air_monitor_data'] = [
|
||||
'wind_direction'=>$landCollection['wind_direction'],
|
||||
'wind_speed'=>$landCollection['wind_speed'],
|
||||
'air_temperature'=>$landCollection['ambient_temperature'],
|
||||
'air_moisture'=>$landCollection['ambient_humidity'],
|
||||
'co2_content'=>$landCollection['carbon_dioxide'],
|
||||
'pressure'=>$landCollection['ambient_air_pressure'],
|
||||
'rainfall'=>$landCollection['rainfall'],
|
||||
'light_intensity'=>$landCollection['ambient_lighting'],
|
||||
'create_time' => $landCollection['create_time']
|
||||
'soil_temperature'=>$monitor['soil_temperature'],
|
||||
'soil_moisture'=>$monitor['soil_moisture'],
|
||||
'conductivity'=>$monitor['conductivity'],
|
||||
'ph'=>$monitor['ph'],
|
||||
'n_content'=>$monitor['n_content'],
|
||||
'p_content'=>$monitor['p_content'],
|
||||
'k_content'=>$monitor['k_content'],
|
||||
'create_time' => $monitor['create_time']
|
||||
];
|
||||
$monitorThreshold = MonitorThreshold::select();
|
||||
if($monitorThreshold->toArray()!=null){
|
||||
$monitorThreshold=$monitorThreshold[0];
|
||||
}else{
|
||||
$monitorThreshold=[];
|
||||
}
|
||||
$monitorThreshold['ambient_air_pressure_max'] = 120;
|
||||
$monitorThreshold['ambient_air_pressure_min'] = 10;
|
||||
$data['monitor']['threshold'] = $monitorThreshold;
|
||||
}
|
||||
}
|
||||
return $this->success('请求成功',$data);
|
||||
|
@ -155,9 +136,9 @@ class IndexController extends BaseApiController
|
|||
if($plantInfo->isEmpty()){
|
||||
return $this->fail('种植信息错误');
|
||||
}
|
||||
// if($plantInfo['status'] != 2){
|
||||
// return $this->fail('种植信息状态错误');
|
||||
// }
|
||||
if($plantInfo['status'] != 2){
|
||||
return $this->fail('种植信息状态错误');
|
||||
}
|
||||
$landInfo = Land::where('id',$plantInfo['land_id'])->findOrEmpty();
|
||||
if($landInfo->isEmpty()){
|
||||
return $this->fail('土地信息错误');
|
||||
|
|
|
@ -59,7 +59,7 @@
|
|||
public function add(): Json
|
||||
{
|
||||
//获取参数并验证
|
||||
$fields = ['title','area','province_code','city_code','county_code','address','master_name','master_phone','pic', 'longitude', 'latitude'];
|
||||
$fields = ['title','area','province_code','city_code','county_code','address','master_name','master_phone','pic'];
|
||||
$params = $this->request->post($fields);
|
||||
foreach($fields as $v){
|
||||
if(!isset($params[$v]) || $params[$v] == ''){
|
||||
|
@ -104,8 +104,6 @@
|
|||
'address' => $params['address'],
|
||||
'master_name' => $params['master_name'],
|
||||
'master_phone' => $params['master_phone'],
|
||||
'longitude' => floatval($params['longitude']),
|
||||
'latitude' => floatval($params['latitude']),
|
||||
'pic' => $params['pic'],
|
||||
'create_time' => time(),
|
||||
'update_time' => time(),
|
||||
|
@ -116,7 +114,7 @@
|
|||
//产品列表
|
||||
public function product(): Json
|
||||
{
|
||||
$data = Product::field('id as product_id,code,name')->where('status',1)->where('user_id', $this->userId)->select()->toArray();
|
||||
$data = Product::field('id as product_id,code,name')->where('status',1)->select()->toArray();
|
||||
$result = [];
|
||||
foreach ($data as $k=>$v) {
|
||||
$productDevice = ProductDevice::where('product_id',$v['product_id'])->select()->toArray();
|
||||
|
|
|
@ -35,7 +35,6 @@
|
|||
return $this->fail('种植信息错误');
|
||||
}
|
||||
$data['pic'] = json_decode($data['pic'],true);
|
||||
$data['plant_date'] = date('Y-m-d H:i:s',$data['plant_date']);
|
||||
return $this->success('请求成功',$data->toArray());
|
||||
}
|
||||
|
||||
|
|
|
@ -15,7 +15,6 @@
|
|||
namespace app\api\controller;
|
||||
|
||||
use app\common\enum\FileEnum;
|
||||
use app\common\model\file\File;
|
||||
use app\common\service\UploadService;
|
||||
use Exception;
|
||||
use think\response\Json;
|
||||
|
@ -27,7 +26,7 @@ use think\response\Json;
|
|||
*/
|
||||
class UploadController extends BaseApiController
|
||||
{
|
||||
public array $notNeedLogin=['uploadVideoCover'];
|
||||
|
||||
/**
|
||||
* @notes 上传图片
|
||||
* @return Json
|
||||
|
@ -45,44 +44,5 @@ class UploadController extends BaseApiController
|
|||
}
|
||||
|
||||
|
||||
public function uploadVideoCover()
|
||||
{
|
||||
try {
|
||||
$deviceId = $this->request->param('device_id', '');
|
||||
// Base64编码的图片字符串
|
||||
$base64Image = $this->request->param('image'); // 这里只展示部分内容
|
||||
|
||||
// 去除前面的"data:"标识
|
||||
$base64Data = substr($base64Image, strpos($base64Image, ',') + 1);
|
||||
|
||||
// 将Base64编码的图片字符串转换为二进制数据
|
||||
$binaryData = base64_decode($base64Data);
|
||||
|
||||
// 创建图像对象
|
||||
$imageObject = imagecreatefromstring($binaryData);
|
||||
$saveDir = 'uploads/images/' . date('Ymd'). '/';
|
||||
if (!is_dir($saveDir)) {
|
||||
mkdir($saveDir, 0755, true);
|
||||
}
|
||||
$fileName = uniqid().'.png';
|
||||
|
||||
// 保存图片
|
||||
imagepng($imageObject, $saveDir.$fileName);
|
||||
|
||||
$file = File::create([
|
||||
'cid' => $deviceId,
|
||||
'type' => FileEnum::IMAGE_TYPE,
|
||||
'name' => $fileName,
|
||||
'uri' => $saveDir . $fileName,
|
||||
'source' => FileEnum::SOURCE_USER,
|
||||
'source_id' => $this->userId,
|
||||
'create_time' => time(),
|
||||
]);
|
||||
return $this->success('上传成功', ['url'=>env('project.project_url').'/'.$saveDir.$fileName]);
|
||||
} catch (Exception $e) {
|
||||
return $this->fail($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -1,101 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace app\api\controller\dataview;
|
||||
|
||||
use app\api\controller\BaseApiController;
|
||||
use app\common\model\device\Device;
|
||||
use app\common\model\device\MonitorAlarm;
|
||||
use app\common\model\land\LandPlant;
|
||||
use think\App;
|
||||
use think\Exception;
|
||||
use think\exception\ErrorException;
|
||||
use think\exception\HttpResponseException;
|
||||
use think\exception\ValidateException;
|
||||
|
||||
class DeviceController extends BaseApiController
|
||||
{
|
||||
public array $notNeedLogin = ['deviceAlarmCount', 'deviceCount'];
|
||||
|
||||
public $areaCode;
|
||||
public $streetCode;
|
||||
|
||||
public function initialize()
|
||||
{
|
||||
parent::initialize();
|
||||
$this->areaCode = $this->request->param('areaCode', '');
|
||||
$this->streetCode = $this->request->param('streetCode', '');
|
||||
if ($this->areaCode == '') {
|
||||
throw new ValidateException('未获取到位置信息');
|
||||
}
|
||||
}
|
||||
|
||||
// 设备告警统计
|
||||
public function deviceAlarmCount()
|
||||
{
|
||||
$landId = $this->request->get('land_id', 0);
|
||||
$list = MonitorAlarm::alias('ma')->field('ma.*,d.code AS device_code,d.name AS device_name,d.image')
|
||||
->join('device d', 'ma.device_id=d.id')
|
||||
->join('product_device pd', 'd.id=pd.device_id')
|
||||
->join('land_product lp', 'pd.product_id=lp.product_id')
|
||||
->join('land l', 'l.id=lp.land_id')
|
||||
->where(function ($query) use ($landId) {
|
||||
if ($landId != 0) {
|
||||
$query->where('ma.land_id', $landId);
|
||||
} else {
|
||||
if ($this->streetCode != '') {
|
||||
$query->where('l.town_code', $this->streetCode);
|
||||
} else {
|
||||
$query->where('l.county_code', $this->areaCode);
|
||||
}
|
||||
}
|
||||
})
|
||||
->order('ma.id', 'desc')
|
||||
->limit(100)
|
||||
->select();
|
||||
return $this->success('成功', compact('list'));
|
||||
}
|
||||
|
||||
// 监测设备数量统计
|
||||
public function deviceCount()
|
||||
{
|
||||
$total = Device::alias('d')
|
||||
->join('product_device pd', 'd.id=pd.device_id')
|
||||
->join('land_product lp', 'pd.product_id=lp.product_id')
|
||||
->join('land l', 'l.id=lp.land_id')
|
||||
->where(function ($query) {
|
||||
if ($this->streetCode != '') {
|
||||
$query->where('l.town_code', $this->streetCode);
|
||||
} else {
|
||||
$query->where('l.county_code', $this->areaCode);
|
||||
}
|
||||
})
|
||||
->count();
|
||||
|
||||
$online = Device::alias('d')
|
||||
->join('product_device pd', 'd.id=pd.device_id')
|
||||
->join('land_product lp', 'pd.product_id=lp.product_id')
|
||||
->join('land l', 'l.id=lp.land_id')
|
||||
->where(function ($query) {
|
||||
if ($this->streetCode != '') {
|
||||
$query->where('l.town_code', $this->streetCode);
|
||||
} else {
|
||||
$query->where('l.county_code', $this->areaCode);
|
||||
}
|
||||
})->where('d.is_online', 1)->count();
|
||||
$offline = Device::alias('d')
|
||||
->join('product_device pd', 'd.id=pd.device_id')
|
||||
->join('land_product lp', 'pd.product_id=lp.product_id')
|
||||
->join('land l', 'l.id=lp.land_id')
|
||||
->where(function ($query) {
|
||||
if ($this->streetCode != '') {
|
||||
$query->where('l.town_code', $this->streetCode);
|
||||
} else {
|
||||
$query->where('l.county_code', $this->areaCode);
|
||||
}
|
||||
})->where('d.is_online', 2)->count();
|
||||
|
||||
return $this->success('成功', compact('total', 'online', 'offline'));
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -1,251 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace app\api\controller\dataview;
|
||||
|
||||
use app\api\controller\BaseApiController;
|
||||
use app\common\model\device\Device;
|
||||
use app\common\model\device\MonitorAlarm;
|
||||
use app\common\model\device\MonitorThreshold;
|
||||
use app\common\model\land\Land;
|
||||
use app\common\model\land\LandPlant;
|
||||
use app\common\model\land\Product;
|
||||
use app\common\model\LandCollection;
|
||||
use think\facade\Db;
|
||||
use think\exception\ValidateException;
|
||||
|
||||
class LandController extends BaseApiController
|
||||
{
|
||||
|
||||
public array $notNeedLogin = ['plantProductCount',
|
||||
'landCollectionList',
|
||||
'landMonitorAlarmHistory',
|
||||
'productList',
|
||||
'landList',
|
||||
'centralCount',
|
||||
'areaPlantTypeCount',
|
||||
'monitorInfo',
|
||||
'deviceCount'
|
||||
];
|
||||
|
||||
public $areaCode;
|
||||
public $streetCode;
|
||||
|
||||
public function initialize()
|
||||
{
|
||||
parent::initialize();
|
||||
$this->areaCode = $this->request->param('areaCode', '');
|
||||
$this->streetCode = $this->request->param('streetCode', '');
|
||||
if ($this->areaCode == '') {
|
||||
throw new ValidateException('未获取到位置信息');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 溯源产品统计
|
||||
public function plantProductCount()
|
||||
{
|
||||
$list = LandPlant::alias('lp')->join('land l', 'l.id=lp.land_id')->field('lp.id,lp.kind,lp.qr_code')
|
||||
->where(function ($query) {
|
||||
if ($this->streetCode != '') {
|
||||
$query->where('l.town_code', $this->streetCode);
|
||||
} else {
|
||||
$query->where('l.county_code', $this->areaCode);
|
||||
}
|
||||
})->limit(30)->select();
|
||||
return $this->success('成功', compact('list'));
|
||||
}
|
||||
|
||||
// 智能预警数据
|
||||
public function landCollectionList()
|
||||
{
|
||||
// 先排序,再分组
|
||||
$subQuery = Db::name('land_collection')
|
||||
->order('id', 'desc')
|
||||
->buildSql();
|
||||
|
||||
$list = Db::table($subQuery)->alias('lc')
|
||||
->field('lc.*,l.title')
|
||||
->join('land l', 'l.id=lc.land_id')
|
||||
->where(function ($query) {
|
||||
if ($this->streetCode != '') {
|
||||
$query->where('l.town_code', $this->streetCode);
|
||||
} else {
|
||||
$query->where('l.county_code', $this->areaCode);
|
||||
}
|
||||
})->order('lc.id', 'desc')->group('l.id')->limit(30)->select();
|
||||
return $this->success('成功', compact('list'));
|
||||
}
|
||||
|
||||
// 预警历史记录
|
||||
public function landMonitorAlarmHistory()
|
||||
{
|
||||
$landId = $this->request->get('land_id');
|
||||
// 最近7日
|
||||
$start = date('Y-m-d', strtotime('-6 day'));
|
||||
$end= date('Y-m-d H:i:s', time());
|
||||
$typeRow = ['soil_temperature', 'soil_moisture', 'soil_PH', 'soil_potassium_phosphate_nitrogen', 'wind_speed', 'ambient_temperature', 'ambient_humidity', 'carbon_dioxide'];
|
||||
$list = [];
|
||||
foreach ($typeRow as $type) {
|
||||
// 土壤磷酸钾-氮磷钾
|
||||
if ($type == 'soil_potassium_phosphate_nitrogen') {
|
||||
$alarmCount = MonitorAlarm::where('land_id', $landId)
|
||||
->whereIn('type', ['soil_potassium_phosphate_nitrogen',
|
||||
'soil_potassium_phosphate_phosphorus',
|
||||
'soil_potassium_phosphate_potassium'
|
||||
])
|
||||
->count();
|
||||
|
||||
$dataList = LandCollection::where('land_id', $landId)
|
||||
->field(['soil_potassium_phosphate_nitrogen',
|
||||
'soil_potassium_phosphate_phosphorus',
|
||||
'soil_potassium_phosphate_potassium', "STR_TO_DATE(create_time,
|
||||
'%Y-%m-%d') as day"])
|
||||
->whereBetweenTime('create_time', $start, $end)
|
||||
->group("STR_TO_DATE(create_time, '%Y-%m-%d')")
|
||||
->select();
|
||||
|
||||
|
||||
// 组装折线图数据
|
||||
$historyList = [];
|
||||
$timeRow = [];
|
||||
$valueRow = [];
|
||||
foreach ($dataList as $row) {
|
||||
$timeRow[] = $row['day'];
|
||||
unset($row['day']);
|
||||
$valueRow[] = $row;
|
||||
}
|
||||
$historyList[]['time'] = $timeRow;
|
||||
$historyList[]['value'] = $valueRow;
|
||||
} else {
|
||||
$alarmCount = MonitorAlarm::where('land_id', $landId)
|
||||
->where('type', $type)
|
||||
->count();
|
||||
|
||||
$dataList = LandCollection::where('land_id', $landId)
|
||||
->field("$type,STR_TO_DATE(create_time, '%Y-%m-%d') as day")
|
||||
->whereBetweenTime('create_time', $start, $end)
|
||||
->group("STR_TO_DATE(create_time, '%Y-%m-%d')")
|
||||
->select()->toArray();
|
||||
|
||||
// 组装折线图数据
|
||||
$historyList = [];
|
||||
$timeRow = [];
|
||||
$valueRow = [];
|
||||
foreach ($dataList as $row) {
|
||||
$timeRow[] = $row['day'];
|
||||
$valueRow[] = $row[$type];
|
||||
}
|
||||
$historyList[]['time'] = $timeRow;
|
||||
$historyList[]['value'] = $valueRow;
|
||||
}
|
||||
|
||||
$list[$type] = compact('alarmCount', 'historyList');
|
||||
}
|
||||
|
||||
return $this->success('成功', compact('list'));
|
||||
}
|
||||
|
||||
// 土地列表
|
||||
public function landList()
|
||||
{
|
||||
$list = Land::alias('l')->field('l.*,d.video_url,d.id as device_id')->join('land_product lp', 'lp.land_id=l.id')
|
||||
->join('product_device pd', 'lp.product_id=pd.product_id')
|
||||
->join('device d', 'pd.device_id=d.id')
|
||||
->where(function ($query) {
|
||||
if ($this->streetCode != '') {
|
||||
$query->where('l.town_code', $this->streetCode);
|
||||
} else {
|
||||
$query->where('l.county_code', $this->areaCode);
|
||||
}
|
||||
})->select();
|
||||
return $this->success('成功', compact('list'));
|
||||
}
|
||||
|
||||
public function productList()
|
||||
{
|
||||
$list = Product::alias('p')->field('p.*')
|
||||
->join('land_product lp', 'p.id=lp.product_id')
|
||||
->join('land l', 'lp.land_id=l.id')
|
||||
->where(function ($query) {
|
||||
if ($this->streetCode != '') {
|
||||
$query->where('l.town_code', $this->streetCode);
|
||||
} else {
|
||||
$query->where('l.county_code', $this->areaCode);
|
||||
}
|
||||
})->select();
|
||||
return $this->success('成功', compact('list'));
|
||||
}
|
||||
|
||||
public function centralCount()
|
||||
{
|
||||
|
||||
$query = Land::alias('l')->where(function ($query) {
|
||||
if ($this->streetCode != '') {
|
||||
$query->where('l.town_code', $this->streetCode);
|
||||
} else {
|
||||
$query->where('l.county_code', $this->areaCode);
|
||||
}
|
||||
});
|
||||
// 地块数量
|
||||
$landCount = $query->count();
|
||||
// 种植面积
|
||||
$totalArea = $query->sum('total_area');
|
||||
// 种植种类
|
||||
$plantCount = $query->join('land_plant lp', 'l.id = lp.land_id')->group('kind')->count();
|
||||
|
||||
return $this->success('成功', compact('landCount', 'totalArea', 'plantCount'));
|
||||
}
|
||||
|
||||
// 第二页 种植面积/种类
|
||||
public function areaPlantTypeCount()
|
||||
{
|
||||
$landId = $this->request->get('land_id');
|
||||
$query = Land::alias('l')->where('l.id', $landId);
|
||||
// 种植面积
|
||||
$totalArea = $query->value('total_area');
|
||||
// 种植种类
|
||||
$plantKindList = $query->field('lp.land_id,lp.kind')->join('land_plant lp', 'l.id = lp.land_id')->group('lp.kind')->select();
|
||||
return $this->success('成功', compact('totalArea', 'plantKindList'));
|
||||
}
|
||||
|
||||
// 第二页 气象环境监测
|
||||
public function monitorInfo()
|
||||
{
|
||||
$landId = $this->request->get('land_id');
|
||||
// 气象信息
|
||||
$landCollection = LandCollection::where('land_id', $landId)->order('id', 'desc')->find();
|
||||
$monitorThreshold = MonitorThreshold::select()->toArray()[0];
|
||||
$monitorThreshold['ambient_air_pressure_max'] = 120;
|
||||
$monitorThreshold['ambient_air_pressure_min'] = 10;
|
||||
return $this->success('成功', compact('landCollection', 'monitorThreshold'));
|
||||
}
|
||||
|
||||
// 监测设备数量统计
|
||||
public function deviceCount()
|
||||
{
|
||||
$landId = $this->request->get('land_id');
|
||||
$total = Land::alias('l')
|
||||
->join('land_product lp', 'l.id=lp.land_id')
|
||||
->join('product_device pd', 'lp.product_id=pd.product_id')
|
||||
->join('device d', 'pd.device_id=d.id')
|
||||
->where('l.id', $landId)
|
||||
->count();
|
||||
|
||||
$online = Land::alias('l')
|
||||
->join('land_product lp', 'l.id=lp.land_id')
|
||||
->join('product_device pd', 'lp.product_id=pd.product_id')
|
||||
->join('device d', 'pd.device_id=d.id')
|
||||
->where('l.id', $landId)
|
||||
->where('d.is_online', 1)->count();
|
||||
|
||||
$offline = Land::alias('l')
|
||||
->join('land_product lp', 'l.id=lp.land_id')
|
||||
->join('product_device pd', 'lp.product_id=pd.product_id')
|
||||
->join('device d', 'pd.device_id=d.id')
|
||||
->where('l.id', $landId)
|
||||
->where('d.is_online', 2)->count();
|
||||
|
||||
return $this->success('成功', compact('total', 'online', 'offline'));
|
||||
|
||||
}
|
||||
}
|
|
@ -14,7 +14,6 @@
|
|||
|
||||
namespace app\api\logic;
|
||||
|
||||
use app\api\validate\LoginAccountValidate;
|
||||
use app\common\cache\WebScanLoginCache;
|
||||
use app\common\logic\BaseLogic;
|
||||
use app\common\model\auth\Admin;
|
||||
|
@ -54,13 +53,7 @@ class LoginLogic extends BaseLogic
|
|||
$passwordSalt = Config::get('project.unique_identification');
|
||||
$password = create_password($params['password'], $passwordSalt);
|
||||
$avatar = ConfigService::get('default_image', 'user_avatar');
|
||||
// 校验短信验证码
|
||||
$verifyCode = intval($params['verify_code']);
|
||||
$params['account'] = $params['mobile'];
|
||||
if((new LoginAccountValidate())->checkCode($verifyCode, [], $params) === true) {
|
||||
self::setError('验证码错误');
|
||||
return false;
|
||||
}
|
||||
|
||||
Db::transaction(function () use($userSn,$password,$avatar,$params) {
|
||||
$user = User::create([
|
||||
'sn' => $userSn,
|
||||
|
|
|
@ -16,7 +16,6 @@ namespace app\api\validate;
|
|||
|
||||
use app\common\enum\notice\NoticeEnum;
|
||||
use app\common\model\user\User;
|
||||
use app\common\service\JsonService;
|
||||
use app\common\service\sms\SmsDriver;
|
||||
use app\common\validate\BaseValidate;
|
||||
|
||||
|
@ -49,31 +48,4 @@ class RegisterValidate extends BaseValidate
|
|||
'password_confirm.require' => '请确认密码',
|
||||
'password_confirm.confirm' => '两次输入的密码不一致'
|
||||
];
|
||||
|
||||
public function goCheck($scene = null, array $validateData = []): array
|
||||
{
|
||||
//接收参数
|
||||
if ($this->method == 'GET') {
|
||||
$params = request()->get();
|
||||
} else {
|
||||
$params = request()->post();
|
||||
}
|
||||
//合并验证参数
|
||||
$params = array_merge($params, $validateData);
|
||||
|
||||
//场景
|
||||
if ($scene) {
|
||||
$result = $this->scene($scene)->check($params);
|
||||
} else {
|
||||
$result = $this->check($params);
|
||||
}
|
||||
|
||||
if (!$result) {
|
||||
$exception = is_array($this->error) ? implode(';', $this->error) : $this->error;
|
||||
$data = $exception == '手机号已存在' ? ['has_register'=>1] : [];
|
||||
JsonService::throw($exception,$data);
|
||||
}
|
||||
// 3.成功返回数据
|
||||
return $params;
|
||||
}
|
||||
}
|
|
@ -13,7 +13,6 @@
|
|||
|
||||
class GeoController extends BaseLikeAdminController
|
||||
{
|
||||
public array $notNeedLogin=['province','city', 'county','towns','villages','groups'];
|
||||
// 获取省份
|
||||
public function province(): Json
|
||||
{
|
||||
|
@ -50,7 +49,7 @@
|
|||
if(empty($county_code)){
|
||||
return $this->fail('请选择区县');
|
||||
}
|
||||
$data = Town::field('town_code,town_name,lng,lat')->where('county_code',$county_code)->select();
|
||||
$data = Town::field('town_code,town_name')->where('county_code',$county_code)->select();
|
||||
return $this->success('请求成功',$data->toArray());
|
||||
}
|
||||
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace app\common\model;
|
||||
|
||||
class LandCollection extends BaseModel
|
||||
{
|
||||
protected $name = 'land_collection';
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace app\common\model\device;
|
||||
|
||||
use app\common\model\BaseModel;
|
||||
use think\model\concern\SoftDelete;
|
||||
|
||||
class DeviceOffline extends BaseModel
|
||||
{
|
||||
use SoftDelete;
|
||||
protected $name = 'device_offline';
|
||||
|
||||
}
|
|
@ -54,7 +54,7 @@ class User extends BaseModel
|
|||
public function searchKeywordAttr($query, $value, $data)
|
||||
{
|
||||
if ($value) {
|
||||
$query->where('sn|nickname|account|mobile', 'like', '%' . $value . '%');
|
||||
$query->where('sn|nickname|mobile', 'like', '%' . $value . '%');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1 +1 @@
|
|||
import o from"./error.08561be1.js";import{d as r,o as i,c as p,T as m,K as e,a as t}from"./@vue.108c970a.js";import"./element-plus.5df6f736.js";import"./@vueuse.d3d080b7.js";import"./@element-plus.d6eabd08.js";import"./lodash-es.29c53eac.js";import"./dayjs.50c3b6f7.js";import"./axios.c2a2014a.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./vue-router.ed788fee.js";import"./index.1f78e617.js";import"./lodash.33f675f2.js";import"./pinia.eff1ffd5.js";import"./vue-demi.ebc8116b.js";import"./css-color-function.5d5b8bda.js";import"./color.da05fa89.js";import"./clone.06747a68.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.1c707d7b.js";import"./ms.a9ae1d6d.js";import"./nprogress.fc605139.js";import"./vue-clipboard3.dc900a40.js";import"./clipboard.6beb87aa.js";import"./echarts.8d7a50ae.js";import"./zrender.1084fa23.js";import"./tslib.60310f1a.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.241b9b5d.js";const s="/admin/assets/no_perms.a56e95a5.png",a={class:"error404"},u=t("div",{class:"flex justify-center"},[t("img",{class:"w-[150px] h-[150px]",src:s,alt:""})],-1),U=r({__name:"403",setup(c){return(n,_)=>(i(),p("div",a,[m(o,{code:"403",title:"\u60A8\u7684\u8D26\u53F7\u6743\u9650\u4E0D\u8DB3\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u6DFB\u52A0\u6743\u9650\uFF01","show-btn":!1},{content:e(()=>[u]),_:1})]))}});export{U as default};
|
||||
import o from"./error.c3e6fbc3.js";import{d as r,o as i,c as p,T as m,K as e,a as t}from"./@vue.108c970a.js";import"./element-plus.7a22678c.js";import"./@vueuse.d3d080b7.js";import"./@element-plus.d6eabd08.js";import"./lodash-es.29c53eac.js";import"./dayjs.ff93117e.js";import"./axios.eb055ccc.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./vue-router.ed788fee.js";import"./index.bb590457.js";import"./lodash.ec5da75f.js";import"./pinia.eff1ffd5.js";import"./vue-demi.ebc8116b.js";import"./css-color-function.31dc130b.js";import"./color.b6d632a4.js";import"./clone.7a47b02c.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.3a33898e.js";import"./ms.a9ae1d6d.js";import"./nprogress.fa64f2fc.js";import"./vue-clipboard3.be0dfeee.js";import"./clipboard.824ba320.js";import"./echarts.8d7a50ae.js";import"./zrender.1084fa23.js";import"./tslib.60310f1a.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.241b9b5d.js";const s="/admin/assets/no_perms.a56e95a5.png",a={class:"error404"},u=t("div",{class:"flex justify-center"},[t("img",{class:"w-[150px] h-[150px]",src:s,alt:""})],-1),U=r({__name:"403",setup(c){return(n,_)=>(i(),p("div",a,[m(o,{code:"403",title:"\u60A8\u7684\u8D26\u53F7\u6743\u9650\u4E0D\u8DB3\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u6DFB\u52A0\u6743\u9650\uFF01","show-btn":!1},{content:e(()=>[u]),_:1})]))}});export{U as default};
|
|
@ -0,0 +1 @@
|
|||
import o from"./error.c3e6fbc3.js";import{d as r,o as t,c as m,T as p}from"./@vue.108c970a.js";import"./element-plus.7a22678c.js";import"./@vueuse.d3d080b7.js";import"./@element-plus.d6eabd08.js";import"./lodash-es.29c53eac.js";import"./dayjs.ff93117e.js";import"./axios.eb055ccc.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./vue-router.ed788fee.js";import"./index.bb590457.js";import"./lodash.ec5da75f.js";import"./pinia.eff1ffd5.js";import"./vue-demi.ebc8116b.js";import"./css-color-function.31dc130b.js";import"./color.b6d632a4.js";import"./clone.7a47b02c.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.3a33898e.js";import"./ms.a9ae1d6d.js";import"./nprogress.fa64f2fc.js";import"./vue-clipboard3.be0dfeee.js";import"./clipboard.824ba320.js";import"./echarts.8d7a50ae.js";import"./zrender.1084fa23.js";import"./tslib.60310f1a.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.241b9b5d.js";const i={class:"error404"},P=r({__name:"404",setup(e){return(u,c)=>(t(),m("div",i,[p(o,{code:"404",title:"\u54CE\u5440\uFF0C\u51FA\u9519\u4E86\uFF01\u60A8\u8BBF\u95EE\u7684\u9875\u9762\u4E0D\u5B58\u5728\u2026"})]))}});export{P as default};
|
|
@ -1 +0,0 @@
|
|||
import o from"./error.08561be1.js";import{d as r,o as t,c as m,T as p}from"./@vue.108c970a.js";import"./element-plus.5df6f736.js";import"./@vueuse.d3d080b7.js";import"./@element-plus.d6eabd08.js";import"./lodash-es.29c53eac.js";import"./dayjs.50c3b6f7.js";import"./axios.c2a2014a.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./vue-router.ed788fee.js";import"./index.1f78e617.js";import"./lodash.33f675f2.js";import"./pinia.eff1ffd5.js";import"./vue-demi.ebc8116b.js";import"./css-color-function.5d5b8bda.js";import"./color.da05fa89.js";import"./clone.06747a68.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.1c707d7b.js";import"./ms.a9ae1d6d.js";import"./nprogress.fc605139.js";import"./vue-clipboard3.dc900a40.js";import"./clipboard.6beb87aa.js";import"./echarts.8d7a50ae.js";import"./zrender.1084fa23.js";import"./tslib.60310f1a.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.241b9b5d.js";const i={class:"error404"},P=r({__name:"404",setup(e){return(u,c)=>(t(),m("div",i,[p(o,{code:"404",title:"\u54CE\u5440\uFF0C\u51FA\u9519\u4E86\uFF01\u60A8\u8BBF\u95EE\u7684\u9875\u9762\u4E0D\u5B58\u5728\u2026"})]))}});export{P as default};
|
|
@ -1 +0,0 @@
|
|||
import"./account-adjust.vue_vue_type_script_setup_true_lang.03f532ae.js";import{_ as M}from"./account-adjust.vue_vue_type_script_setup_true_lang.03f532ae.js";import"./element-plus.5df6f736.js";import"./@vue.108c970a.js";import"./@vueuse.d3d080b7.js";import"./@element-plus.d6eabd08.js";import"./lodash-es.29c53eac.js";import"./dayjs.50c3b6f7.js";import"./axios.c2a2014a.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.5f547370.js";import"./index.1f78e617.js";import"./lodash.33f675f2.js";import"./vue-router.ed788fee.js";import"./pinia.eff1ffd5.js";import"./vue-demi.ebc8116b.js";import"./css-color-function.5d5b8bda.js";import"./color.da05fa89.js";import"./clone.06747a68.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.1c707d7b.js";import"./ms.a9ae1d6d.js";import"./nprogress.fc605139.js";import"./vue-clipboard3.dc900a40.js";import"./clipboard.6beb87aa.js";import"./echarts.8d7a50ae.js";import"./zrender.1084fa23.js";import"./tslib.60310f1a.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.241b9b5d.js";export{M as default};
|
|
@ -0,0 +1 @@
|
|||
import"./account-adjust.vue_vue_type_script_setup_true_lang.cf56d433.js";import{_ as M}from"./account-adjust.vue_vue_type_script_setup_true_lang.cf56d433.js";import"./element-plus.7a22678c.js";import"./@vue.108c970a.js";import"./@vueuse.d3d080b7.js";import"./@element-plus.d6eabd08.js";import"./lodash-es.29c53eac.js";import"./dayjs.ff93117e.js";import"./axios.eb055ccc.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.3956bbcf.js";import"./index.bb590457.js";import"./lodash.ec5da75f.js";import"./vue-router.ed788fee.js";import"./pinia.eff1ffd5.js";import"./vue-demi.ebc8116b.js";import"./css-color-function.31dc130b.js";import"./color.b6d632a4.js";import"./clone.7a47b02c.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.3a33898e.js";import"./ms.a9ae1d6d.js";import"./nprogress.fa64f2fc.js";import"./vue-clipboard3.be0dfeee.js";import"./clipboard.824ba320.js";import"./echarts.8d7a50ae.js";import"./zrender.1084fa23.js";import"./tslib.60310f1a.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.241b9b5d.js";export{M as default};
|
|
@ -1 +1 @@
|
|||
import{C as k,G as x,H as B,B as R,D as g}from"./element-plus.5df6f736.js";import{P as N}from"./index.5f547370.js";import{f as F}from"./index.1f78e617.js";import{d as q,s as C,_ as A,b as I,w as D,o as S,J as j,K as a,a as G,T as o,R as r,S as b,u as P}from"./@vue.108c970a.js";const T={class:"pr-8"},U=r("\u589E\u52A0\u4F59\u989D"),H=r("\u6263\u51CF\u4F59\u989D"),L=q({__name:"account-adjust",props:{show:{type:Boolean,required:!0},value:{type:[Number,String],required:!0}},emits:["update:show","confirm"],setup(d,{emit:p}){const i=d,n=C(),u=A({action:1,num:"",remark:""}),s=C(),c=I(()=>Number(i.value)+Number(u.num)*(u.action==1?1:-1)),E={num:[{required:!0,message:"\u8BF7\u8F93\u5165\u8C03\u6574\u7684\u91D1\u989D"}]},w=e=>{if(e.includes("-"))return F.msgError("\u8BF7\u8F93\u5165\u6B63\u6574\u6570");u.num=e},h=async()=>{var e;await((e=n.value)==null?void 0:e.validate()),p("confirm",u)},v=()=>{var e;p("update:show",!1),(e=n.value)==null||e.resetFields()};return D(()=>i.show,e=>{var l,t;e?(l=s.value)==null||l.open():(t=s.value)==null||t.close()}),D(c,e=>{e<0&&(F.msgError("\u8C03\u6574\u540E\u4F59\u989D\u9700\u5927\u4E8E0"),u.num="")}),(e,l)=>{const t=k,f=x,y=B,_=R,V=g;return S(),j(N,{ref_key:"popupRef",ref:s,title:"\u4F59\u989D\u8C03\u6574",width:"500px",onConfirm:h,async:!0,onClose:v},{default:a(()=>[G("div",T,[o(V,{ref_key:"formRef",ref:n,model:u,"label-width":"120px",rules:E},{default:a(()=>[o(t,{label:"\u5F53\u524D\u4F59\u989D"},{default:a(()=>[r("\xA5 "+b(d.value),1)]),_:1}),o(t,{label:"\u4F59\u989D\u589E\u51CF",required:"",prop:"action"},{default:a(()=>[o(y,{modelValue:u.action,"onUpdate:modelValue":l[0]||(l[0]=m=>u.action=m)},{default:a(()=>[o(f,{label:1},{default:a(()=>[U]),_:1}),o(f,{label:2},{default:a(()=>[H]),_:1})]),_:1},8,["modelValue"])]),_:1}),o(t,{label:"\u8C03\u6574\u4F59\u989D",prop:"num"},{default:a(()=>[o(_,{"model-value":u.num,placeholder:"\u8BF7\u8F93\u5165\u8C03\u6574\u7684\u91D1\u989D",type:"number",onInput:w},null,8,["model-value"])]),_:1}),o(t,{label:"\u8C03\u6574\u540E\u4F59\u989D"},{default:a(()=>[r(" \xA5 "+b(P(c)),1)]),_:1}),o(t,{label:"\u5907\u6CE8",prop:"remark"},{default:a(()=>[o(_,{modelValue:u.remark,"onUpdate:modelValue":l[1]||(l[1]=m=>u.remark=m),type:"textarea",rows:4},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])])]),_:1},512)}}});export{L as _};
|
||||
import{C as k,G as x,H as B,B as R,D as g}from"./element-plus.7a22678c.js";import{P as N}from"./index.3956bbcf.js";import{f as F}from"./index.bb590457.js";import{d as q,s as C,_ as A,b as I,w as D,o as S,J as j,K as a,a as G,T as o,R as r,S as b,u as P}from"./@vue.108c970a.js";const T={class:"pr-8"},U=r("\u589E\u52A0\u4F59\u989D"),H=r("\u6263\u51CF\u4F59\u989D"),L=q({__name:"account-adjust",props:{show:{type:Boolean,required:!0},value:{type:[Number,String],required:!0}},emits:["update:show","confirm"],setup(d,{emit:p}){const i=d,n=C(),u=A({action:1,num:"",remark:""}),s=C(),c=I(()=>Number(i.value)+Number(u.num)*(u.action==1?1:-1)),E={num:[{required:!0,message:"\u8BF7\u8F93\u5165\u8C03\u6574\u7684\u91D1\u989D"}]},w=e=>{if(e.includes("-"))return F.msgError("\u8BF7\u8F93\u5165\u6B63\u6574\u6570");u.num=e},h=async()=>{var e;await((e=n.value)==null?void 0:e.validate()),p("confirm",u)},v=()=>{var e;p("update:show",!1),(e=n.value)==null||e.resetFields()};return D(()=>i.show,e=>{var l,t;e?(l=s.value)==null||l.open():(t=s.value)==null||t.close()}),D(c,e=>{e<0&&(F.msgError("\u8C03\u6574\u540E\u4F59\u989D\u9700\u5927\u4E8E0"),u.num="")}),(e,l)=>{const t=k,f=x,y=B,_=R,V=g;return S(),j(N,{ref_key:"popupRef",ref:s,title:"\u4F59\u989D\u8C03\u6574",width:"500px",onConfirm:h,async:!0,onClose:v},{default:a(()=>[G("div",T,[o(V,{ref_key:"formRef",ref:n,model:u,"label-width":"120px",rules:E},{default:a(()=>[o(t,{label:"\u5F53\u524D\u4F59\u989D"},{default:a(()=>[r("\xA5 "+b(d.value),1)]),_:1}),o(t,{label:"\u4F59\u989D\u589E\u51CF",required:"",prop:"action"},{default:a(()=>[o(y,{modelValue:u.action,"onUpdate:modelValue":l[0]||(l[0]=m=>u.action=m)},{default:a(()=>[o(f,{label:1},{default:a(()=>[U]),_:1}),o(f,{label:2},{default:a(()=>[H]),_:1})]),_:1},8,["modelValue"])]),_:1}),o(t,{label:"\u8C03\u6574\u4F59\u989D",prop:"num"},{default:a(()=>[o(_,{"model-value":u.num,placeholder:"\u8BF7\u8F93\u5165\u8C03\u6574\u7684\u91D1\u989D",type:"number",onInput:w},null,8,["model-value"])]),_:1}),o(t,{label:"\u8C03\u6574\u540E\u4F59\u989D"},{default:a(()=>[r(" \xA5 "+b(P(c)),1)]),_:1}),o(t,{label:"\u5907\u6CE8",prop:"remark"},{default:a(()=>[o(_,{modelValue:u.remark,"onUpdate:modelValue":l[1]||(l[1]=m=>u.remark=m),type:"textarea",rows:4},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])])]),_:1},512)}}});export{L as _};
|
|
@ -1 +0,0 @@
|
|||
import"./add-nav.vue_vue_type_script_setup_true_lang.fc8d47fa.js";import{_ as Y}from"./add-nav.vue_vue_type_script_setup_true_lang.fc8d47fa.js";import"./element-plus.5df6f736.js";import"./@vue.108c970a.js";import"./@vueuse.d3d080b7.js";import"./@element-plus.d6eabd08.js";import"./lodash-es.29c53eac.js";import"./dayjs.50c3b6f7.js";import"./axios.c2a2014a.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.75a5ec45.js";import"./index.1f78e617.js";import"./lodash.33f675f2.js";import"./vue-router.ed788fee.js";import"./pinia.eff1ffd5.js";import"./vue-demi.ebc8116b.js";import"./css-color-function.5d5b8bda.js";import"./color.da05fa89.js";import"./clone.06747a68.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.1c707d7b.js";import"./ms.a9ae1d6d.js";import"./nprogress.fc605139.js";import"./vue-clipboard3.dc900a40.js";import"./clipboard.6beb87aa.js";import"./echarts.8d7a50ae.js";import"./zrender.1084fa23.js";import"./tslib.60310f1a.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.241b9b5d.js";import"./picker.60257d01.js";import"./index.5f547370.js";import"./picker.966d5ace.js";import"./index.39d7fad9.js";import"./index.vue_vue_type_script_setup_true_lang.1938e45e.js";import"./index.301703a6.js";import"./index.vue_vue_type_script_setup_true_lang.dc1b37d1.js";import"./usePaging.2a59f422.js";import"./vue3-video-play.5aacf00d.js";import"./vuedraggable.882c7954.js";import"./vue.d688b76a.js";import"./sortablejs.1b122128.js";export{Y as default};
|
|
@ -0,0 +1 @@
|
|||
import"./add-nav.vue_vue_type_script_setup_true_lang.4c54eded.js";import{_ as Y}from"./add-nav.vue_vue_type_script_setup_true_lang.4c54eded.js";import"./element-plus.7a22678c.js";import"./@vue.108c970a.js";import"./@vueuse.d3d080b7.js";import"./@element-plus.d6eabd08.js";import"./lodash-es.29c53eac.js";import"./dayjs.ff93117e.js";import"./axios.eb055ccc.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.3eeb6b50.js";import"./index.bb590457.js";import"./lodash.ec5da75f.js";import"./vue-router.ed788fee.js";import"./pinia.eff1ffd5.js";import"./vue-demi.ebc8116b.js";import"./css-color-function.31dc130b.js";import"./color.b6d632a4.js";import"./clone.7a47b02c.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.3a33898e.js";import"./ms.a9ae1d6d.js";import"./nprogress.fa64f2fc.js";import"./vue-clipboard3.be0dfeee.js";import"./clipboard.824ba320.js";import"./echarts.8d7a50ae.js";import"./zrender.1084fa23.js";import"./tslib.60310f1a.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.241b9b5d.js";import"./picker.8ac8cfcb.js";import"./index.3956bbcf.js";import"./picker.4eaaf2e9.js";import"./index.efeb5098.js";import"./index.vue_vue_type_script_setup_true_lang.cabb2d32.js";import"./index.27064586.js";import"./index.vue_vue_type_script_setup_true_lang.aa7eacaa.js";import"./usePaging.2a59f422.js";import"./vue3-video-play.5aacf00d.js";import"./vuedraggable.0b47cde1.js";import"./vue.118acae4.js";import"./sortablejs.9ffc750f.js";export{Y as default};
|
|
@ -1 +1 @@
|
|||
import{B,w as D}from"./element-plus.5df6f736.js";import{_ as F}from"./index.75a5ec45.js";import{_ as A}from"./picker.60257d01.js";import{_ as y}from"./picker.966d5ace.js";import{f as p,b as E}from"./index.1f78e617.js";import{D as C}from"./vuedraggable.882c7954.js";import{d as U,b as w,o as c,c as N,a as e,T as t,K as m,J as $,u as r,j as z,R}from"./@vue.108c970a.js";const T={class:"bg-fill-light flex items-center w-full p-4 mb-4 cursor-move"},j={class:"upload-btn w-[60px] h-[60px]"},I={class:"ml-3 flex-1"},J={class:"flex"},K=e("span",{class:"text-tx-regular flex-none mr-3"},"\u540D\u79F0",-1),L={class:"flex mt-[18px]"},P=e("span",{class:"text-tx-regular flex-none mr-3"},"\u94FE\u63A5",-1),q=R("\u6DFB\u52A0"),X=U({__name:"add-nav",props:{modelValue:{type:Array,default:()=>[]},max:{type:Number,default:10},min:{type:Number,default:1}},emits:["update:modelValue"],setup(_,{emit:i}){const o=_,s=w({get(){return o.modelValue},set(a){i("update:modelValue",a)}}),f=()=>{var a;((a=o.modelValue)==null?void 0:a.length)<o.max?s.value.push({image:"",name:"\u5BFC\u822A\u540D\u79F0",link:{}}):p.msgError(`\u6700\u591A\u6DFB\u52A0${o.max}\u4E2A`)},V=a=>{var u;if(((u=o.modelValue)==null?void 0:u.length)<=o.min)return p.msgError(`\u6700\u5C11\u4FDD\u7559${o.min}\u4E2A`);s.value.splice(a,1)};return(a,u)=>{const x=E,g=y,h=B,v=A,b=F,k=D;return c(),N("div",null,[e("div",null,[t(r(C),{class:"draggable",modelValue:r(s),"onUpdate:modelValue":u[0]||(u[0]=l=>z(s)?s.value=l:null),animation:"300"},{item:m(({element:l,index:d})=>[(c(),$(b,{class:"max-w-[400px]",key:d,onClose:n=>V(d)},{default:m(()=>[e("div",T,[t(g,{modelValue:l.image,"onUpdate:modelValue":n=>l.image=n,"upload-class":"bg-body",size:"60px","exclude-domain":""},{upload:m(()=>[e("div",j,[t(x,{name:"el-icon-Plus",size:20})])]),_:2},1032,["modelValue","onUpdate:modelValue"]),e("div",I,[e("div",J,[K,t(h,{modelValue:l.name,"onUpdate:modelValue":n=>l.name=n,placeholder:"\u8BF7\u8F93\u5165\u540D\u79F0"},null,8,["modelValue","onUpdate:modelValue"])]),e("div",L,[P,t(v,{modelValue:l.link,"onUpdate:modelValue":n=>l.link=n},null,8,["modelValue","onUpdate:modelValue"])])])])]),_:2},1032,["onClose"]))]),_:1},8,["modelValue"])]),e("div",null,[t(k,{type:"primary",onClick:f},{default:m(()=>[q]),_:1})])])}}});export{X as _};
|
||||
import{B,w as D}from"./element-plus.7a22678c.js";import{_ as F}from"./index.3eeb6b50.js";import{_ as A}from"./picker.8ac8cfcb.js";import{_ as y}from"./picker.4eaaf2e9.js";import{f as p,b as E}from"./index.bb590457.js";import{D as C}from"./vuedraggable.0b47cde1.js";import{d as U,b as w,o as c,c as N,a as e,T as t,K as m,J as $,u as r,j as z,R}from"./@vue.108c970a.js";const T={class:"bg-fill-light flex items-center w-full p-4 mb-4 cursor-move"},j={class:"upload-btn w-[60px] h-[60px]"},I={class:"ml-3 flex-1"},J={class:"flex"},K=e("span",{class:"text-tx-regular flex-none mr-3"},"\u540D\u79F0",-1),L={class:"flex mt-[18px]"},P=e("span",{class:"text-tx-regular flex-none mr-3"},"\u94FE\u63A5",-1),q=R("\u6DFB\u52A0"),X=U({__name:"add-nav",props:{modelValue:{type:Array,default:()=>[]},max:{type:Number,default:10},min:{type:Number,default:1}},emits:["update:modelValue"],setup(_,{emit:i}){const o=_,s=w({get(){return o.modelValue},set(a){i("update:modelValue",a)}}),f=()=>{var a;((a=o.modelValue)==null?void 0:a.length)<o.max?s.value.push({image:"",name:"\u5BFC\u822A\u540D\u79F0",link:{}}):p.msgError(`\u6700\u591A\u6DFB\u52A0${o.max}\u4E2A`)},V=a=>{var u;if(((u=o.modelValue)==null?void 0:u.length)<=o.min)return p.msgError(`\u6700\u5C11\u4FDD\u7559${o.min}\u4E2A`);s.value.splice(a,1)};return(a,u)=>{const x=E,g=y,h=B,v=A,b=F,k=D;return c(),N("div",null,[e("div",null,[t(r(C),{class:"draggable",modelValue:r(s),"onUpdate:modelValue":u[0]||(u[0]=l=>z(s)?s.value=l:null),animation:"300"},{item:m(({element:l,index:d})=>[(c(),$(b,{class:"max-w-[400px]",key:d,onClose:n=>V(d)},{default:m(()=>[e("div",T,[t(g,{modelValue:l.image,"onUpdate:modelValue":n=>l.image=n,"upload-class":"bg-body",size:"60px","exclude-domain":""},{upload:m(()=>[e("div",j,[t(x,{name:"el-icon-Plus",size:20})])]),_:2},1032,["modelValue","onUpdate:modelValue"]),e("div",I,[e("div",J,[K,t(h,{modelValue:l.name,"onUpdate:modelValue":n=>l.name=n,placeholder:"\u8BF7\u8F93\u5165\u540D\u79F0"},null,8,["modelValue","onUpdate:modelValue"])]),e("div",L,[P,t(v,{modelValue:l.link,"onUpdate:modelValue":n=>l.link=n},null,8,["modelValue","onUpdate:modelValue"])])])])]),_:2},1032,["onClose"]))]),_:1},8,["modelValue"])]),e("div",null,[t(k,{type:"primary",onClick:f},{default:m(()=>[q]),_:1})])])}}});export{X as _};
|
|
@ -1 +1 @@
|
|||
import{r as e}from"./index.1f78e617.js";function a(t){return e.get({url:"/article.articleCate/lists",params:t})}function l(t){return e.get({url:"/article.articleCate/all",params:t})}function i(t){return e.post({url:"/article.articleCate/add",params:t})}function c(t){return e.post({url:"/article.articleCate/edit",params:t})}function u(t){return e.post({url:"/article.articleCate/delete",params:t})}function n(t){return e.get({url:"/article.articleCate/detail",params:t})}function s(t){return e.post({url:"/article.articleCate/updateStatus",params:t})}function o(t){return e.get({url:"/article.article/lists",params:t})}function d(t){return e.post({url:"/article.article/add",params:t})}function f(t){return e.post({url:"/article.article/edit",params:t})}function C(t){return e.post({url:"/article.article/delete",params:t})}function p(t){return e.get({url:"/article.article/detail",params:t})}function g(t){return e.post({url:"/article.article/updateStatus",params:t})}export{c as a,i as b,n as c,a as d,u as e,s as f,p as g,l as h,f as i,d as j,o as k,g as l,C as m};
|
||||
import{r as e}from"./index.bb590457.js";function a(t){return e.get({url:"/article.articleCate/lists",params:t})}function l(t){return e.get({url:"/article.articleCate/all",params:t})}function i(t){return e.post({url:"/article.articleCate/add",params:t})}function c(t){return e.post({url:"/article.articleCate/edit",params:t})}function u(t){return e.post({url:"/article.articleCate/delete",params:t})}function n(t){return e.get({url:"/article.articleCate/detail",params:t})}function s(t){return e.post({url:"/article.articleCate/updateStatus",params:t})}function o(t){return e.get({url:"/article.article/lists",params:t})}function d(t){return e.post({url:"/article.article/add",params:t})}function f(t){return e.post({url:"/article.article/edit",params:t})}function C(t){return e.post({url:"/article.article/delete",params:t})}function p(t){return e.get({url:"/article.article/detail",params:t})}function g(t){return e.post({url:"/article.article/updateStatus",params:t})}export{c as a,i as b,n as c,a as d,u as e,s as f,p as g,l as h,f as i,d as j,o as k,g as l,C as m};
|
|
@ -1 +0,0 @@
|
|||
import"./attr-setting.vue_vue_type_script_setup_true_lang.7dd3f842.js";import{_ as bm}from"./attr-setting.vue_vue_type_script_setup_true_lang.7dd3f842.js";import"./index.3e6cce16.js";import"./attr.vue_vue_type_script_setup_true_lang.c325841e.js";import"./element-plus.5df6f736.js";import"./@vue.108c970a.js";import"./@vueuse.d3d080b7.js";import"./@element-plus.d6eabd08.js";import"./lodash-es.29c53eac.js";import"./dayjs.50c3b6f7.js";import"./axios.c2a2014a.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.75a5ec45.js";import"./index.1f78e617.js";import"./lodash.33f675f2.js";import"./vue-router.ed788fee.js";import"./pinia.eff1ffd5.js";import"./vue-demi.ebc8116b.js";import"./css-color-function.5d5b8bda.js";import"./color.da05fa89.js";import"./clone.06747a68.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.1c707d7b.js";import"./ms.a9ae1d6d.js";import"./nprogress.fc605139.js";import"./vue-clipboard3.dc900a40.js";import"./clipboard.6beb87aa.js";import"./echarts.8d7a50ae.js";import"./zrender.1084fa23.js";import"./tslib.60310f1a.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.241b9b5d.js";import"./picker.60257d01.js";import"./index.5f547370.js";import"./picker.966d5ace.js";import"./index.39d7fad9.js";import"./index.vue_vue_type_script_setup_true_lang.1938e45e.js";import"./index.301703a6.js";import"./index.vue_vue_type_script_setup_true_lang.dc1b37d1.js";import"./usePaging.2a59f422.js";import"./vue3-video-play.5aacf00d.js";import"./vuedraggable.882c7954.js";import"./vue.d688b76a.js";import"./sortablejs.1b122128.js";import"./content.vue_vue_type_script_setup_true_lang.e2fc3e26.js";import"./decoration-img.be977d66.js";import"./attr.vue_vue_type_script_setup_true_lang.8b6abd04.js";import"./content.cc417c69.js";import"./attr.vue_vue_type_script_setup_true_lang.29b8c481.js";import"./add-nav.vue_vue_type_script_setup_true_lang.fc8d47fa.js";import"./content.ad08ced2.js";import"./attr.vue_vue_type_script_setup_true_lang.bc941db6.js";import"./content.vue_vue_type_script_setup_true_lang.a14319ca.js";import"./attr.vue_vue_type_script_setup_true_lang.5c3426f9.js";import"./content.68253a05.js";import"./decoration.025d06d7.js";import"./attr.vue_vue_type_script_setup_true_lang.688b76f6.js";import"./content.a57edad2.js";import"./attr.vue_vue_type_script_setup_true_lang.653f50f8.js";import"./content.vue_vue_type_script_setup_true_lang.52ced7fa.js";import"./attr.vue_vue_type_script_setup_true_lang.6ea07177.js";import"./content.a4d2d9b0.js";export{bm as default};
|
|
@ -0,0 +1 @@
|
|||
import"./attr-setting.vue_vue_type_script_setup_true_lang.10398b49.js";import{_ as bm}from"./attr-setting.vue_vue_type_script_setup_true_lang.10398b49.js";import"./index.f2018a0e.js";import"./attr.vue_vue_type_script_setup_true_lang.99bb2021.js";import"./element-plus.7a22678c.js";import"./@vue.108c970a.js";import"./@vueuse.d3d080b7.js";import"./@element-plus.d6eabd08.js";import"./lodash-es.29c53eac.js";import"./dayjs.ff93117e.js";import"./axios.eb055ccc.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.3eeb6b50.js";import"./index.bb590457.js";import"./lodash.ec5da75f.js";import"./vue-router.ed788fee.js";import"./pinia.eff1ffd5.js";import"./vue-demi.ebc8116b.js";import"./css-color-function.31dc130b.js";import"./color.b6d632a4.js";import"./clone.7a47b02c.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.3a33898e.js";import"./ms.a9ae1d6d.js";import"./nprogress.fa64f2fc.js";import"./vue-clipboard3.be0dfeee.js";import"./clipboard.824ba320.js";import"./echarts.8d7a50ae.js";import"./zrender.1084fa23.js";import"./tslib.60310f1a.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.241b9b5d.js";import"./picker.8ac8cfcb.js";import"./index.3956bbcf.js";import"./picker.4eaaf2e9.js";import"./index.efeb5098.js";import"./index.vue_vue_type_script_setup_true_lang.cabb2d32.js";import"./index.27064586.js";import"./index.vue_vue_type_script_setup_true_lang.aa7eacaa.js";import"./usePaging.2a59f422.js";import"./vue3-video-play.5aacf00d.js";import"./vuedraggable.0b47cde1.js";import"./vue.118acae4.js";import"./sortablejs.9ffc750f.js";import"./content.vue_vue_type_script_setup_true_lang.3bdd9a21.js";import"./decoration-img.3509172b.js";import"./attr.vue_vue_type_script_setup_true_lang.2255e55e.js";import"./content.ce6c8dd6.js";import"./attr.vue_vue_type_script_setup_true_lang.40abc3c1.js";import"./add-nav.vue_vue_type_script_setup_true_lang.4c54eded.js";import"./content.414c48d7.js";import"./attr.vue_vue_type_script_setup_true_lang.f3e18de6.js";import"./content.vue_vue_type_script_setup_true_lang.4e549f3a.js";import"./attr.vue_vue_type_script_setup_true_lang.5c3426f9.js";import"./content.1f516b85.js";import"./decoration.b9365d02.js";import"./attr.vue_vue_type_script_setup_true_lang.688b76f6.js";import"./content.fbc5731a.js";import"./attr.vue_vue_type_script_setup_true_lang.8c4afd67.js";import"./content.vue_vue_type_script_setup_true_lang.3d3a6a76.js";import"./attr.vue_vue_type_script_setup_true_lang.6ea07177.js";import"./content.7c1fe419.js";export{bm as default};
|
|
@ -1 +1 @@
|
|||
import{e as c}from"./index.3e6cce16.js";import{d as l,o as t,c as p,a as d,S as m,J as r,P as f,u as g,aH as y}from"./@vue.108c970a.js";const b={class:"pages-setting"},u={class:"title flex items-center before:w-[3px] before:h-[14px] before:block before:bg-primary before:mr-2"},v=l({__name:"attr-setting",props:{widget:{type:Object,default:()=>({})},type:{type:String,default:"mobile"}},setup(e){return(w,x)=>{var s,a,n,o,i;return t(),p("div",b,[d("div",u,m((s=e.widget)==null?void 0:s.title),1),(t(),r(y,null,[(t(),r(f((n=g(c)[(a=e.widget)==null?void 0:a.name])==null?void 0:n.attr),{class:"pt-5 pr-4",content:(o=e.widget)==null?void 0:o.content,styles:(i=e.widget)==null?void 0:i.styles,type:e.type},null,8,["content","styles","type"]))],1024))])}}});export{v as _};
|
||||
import{e as c}from"./index.f2018a0e.js";import{d as l,o as t,c as p,a as d,S as m,J as r,P as f,u as g,aH as y}from"./@vue.108c970a.js";const b={class:"pages-setting"},u={class:"title flex items-center before:w-[3px] before:h-[14px] before:block before:bg-primary before:mr-2"},v=l({__name:"attr-setting",props:{widget:{type:Object,default:()=>({})},type:{type:String,default:"mobile"}},setup(e){return(w,x)=>{var s,a,n,o,i;return t(),p("div",b,[d("div",u,m((s=e.widget)==null?void 0:s.title),1),(t(),r(y,null,[(t(),r(f((n=g(c)[(a=e.widget)==null?void 0:a.name])==null?void 0:n.attr),{class:"pt-5 pr-4",content:(o=e.widget)==null?void 0:o.content,styles:(i=e.widget)==null?void 0:i.styles,type:e.type},null,8,["content","styles","type"]))],1024))])}}});export{v as _};
|
|
@ -1 +0,0 @@
|
|||
import"./attr.vue_vue_type_script_setup_true_lang.29b8c481.js";import{_ as Z}from"./attr.vue_vue_type_script_setup_true_lang.29b8c481.js";import"./element-plus.5df6f736.js";import"./@vue.108c970a.js";import"./@vueuse.d3d080b7.js";import"./@element-plus.d6eabd08.js";import"./lodash-es.29c53eac.js";import"./dayjs.50c3b6f7.js";import"./axios.c2a2014a.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./add-nav.vue_vue_type_script_setup_true_lang.fc8d47fa.js";import"./index.75a5ec45.js";import"./index.1f78e617.js";import"./lodash.33f675f2.js";import"./vue-router.ed788fee.js";import"./pinia.eff1ffd5.js";import"./vue-demi.ebc8116b.js";import"./css-color-function.5d5b8bda.js";import"./color.da05fa89.js";import"./clone.06747a68.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.1c707d7b.js";import"./ms.a9ae1d6d.js";import"./nprogress.fc605139.js";import"./vue-clipboard3.dc900a40.js";import"./clipboard.6beb87aa.js";import"./echarts.8d7a50ae.js";import"./zrender.1084fa23.js";import"./tslib.60310f1a.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.241b9b5d.js";import"./picker.60257d01.js";import"./index.5f547370.js";import"./picker.966d5ace.js";import"./index.39d7fad9.js";import"./index.vue_vue_type_script_setup_true_lang.1938e45e.js";import"./index.301703a6.js";import"./index.vue_vue_type_script_setup_true_lang.dc1b37d1.js";import"./usePaging.2a59f422.js";import"./vue3-video-play.5aacf00d.js";import"./vuedraggable.882c7954.js";import"./vue.d688b76a.js";import"./sortablejs.1b122128.js";export{Z as default};
|
|
@ -1 +0,0 @@
|
|||
import"./attr.vue_vue_type_script_setup_true_lang.c325841e.js";import{_ as Y}from"./attr.vue_vue_type_script_setup_true_lang.c325841e.js";import"./element-plus.5df6f736.js";import"./@vue.108c970a.js";import"./@vueuse.d3d080b7.js";import"./@element-plus.d6eabd08.js";import"./lodash-es.29c53eac.js";import"./dayjs.50c3b6f7.js";import"./axios.c2a2014a.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.75a5ec45.js";import"./index.1f78e617.js";import"./lodash.33f675f2.js";import"./vue-router.ed788fee.js";import"./pinia.eff1ffd5.js";import"./vue-demi.ebc8116b.js";import"./css-color-function.5d5b8bda.js";import"./color.da05fa89.js";import"./clone.06747a68.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.1c707d7b.js";import"./ms.a9ae1d6d.js";import"./nprogress.fc605139.js";import"./vue-clipboard3.dc900a40.js";import"./clipboard.6beb87aa.js";import"./echarts.8d7a50ae.js";import"./zrender.1084fa23.js";import"./tslib.60310f1a.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.241b9b5d.js";import"./picker.60257d01.js";import"./index.5f547370.js";import"./picker.966d5ace.js";import"./index.39d7fad9.js";import"./index.vue_vue_type_script_setup_true_lang.1938e45e.js";import"./index.301703a6.js";import"./index.vue_vue_type_script_setup_true_lang.dc1b37d1.js";import"./usePaging.2a59f422.js";import"./vue3-video-play.5aacf00d.js";import"./vuedraggable.882c7954.js";import"./vue.d688b76a.js";import"./sortablejs.1b122128.js";export{Y as default};
|
|
@ -1 +0,0 @@
|
|||
import"./attr.vue_vue_type_script_setup_true_lang.653f50f8.js";import{_ as Y}from"./attr.vue_vue_type_script_setup_true_lang.653f50f8.js";import"./element-plus.5df6f736.js";import"./@vue.108c970a.js";import"./@vueuse.d3d080b7.js";import"./@element-plus.d6eabd08.js";import"./lodash-es.29c53eac.js";import"./dayjs.50c3b6f7.js";import"./axios.c2a2014a.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.75a5ec45.js";import"./index.1f78e617.js";import"./lodash.33f675f2.js";import"./vue-router.ed788fee.js";import"./pinia.eff1ffd5.js";import"./vue-demi.ebc8116b.js";import"./css-color-function.5d5b8bda.js";import"./color.da05fa89.js";import"./clone.06747a68.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.1c707d7b.js";import"./ms.a9ae1d6d.js";import"./nprogress.fc605139.js";import"./vue-clipboard3.dc900a40.js";import"./clipboard.6beb87aa.js";import"./echarts.8d7a50ae.js";import"./zrender.1084fa23.js";import"./tslib.60310f1a.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.241b9b5d.js";import"./picker.60257d01.js";import"./index.5f547370.js";import"./picker.966d5ace.js";import"./index.39d7fad9.js";import"./index.vue_vue_type_script_setup_true_lang.1938e45e.js";import"./index.301703a6.js";import"./index.vue_vue_type_script_setup_true_lang.dc1b37d1.js";import"./usePaging.2a59f422.js";import"./vue3-video-play.5aacf00d.js";import"./vuedraggable.882c7954.js";import"./vue.d688b76a.js";import"./sortablejs.1b122128.js";export{Y as default};
|
|
@ -1 +0,0 @@
|
|||
import"./attr.vue_vue_type_script_setup_true_lang.bc941db6.js";import{_ as Z}from"./attr.vue_vue_type_script_setup_true_lang.bc941db6.js";import"./element-plus.5df6f736.js";import"./@vue.108c970a.js";import"./@vueuse.d3d080b7.js";import"./@element-plus.d6eabd08.js";import"./lodash-es.29c53eac.js";import"./dayjs.50c3b6f7.js";import"./axios.c2a2014a.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./add-nav.vue_vue_type_script_setup_true_lang.fc8d47fa.js";import"./index.75a5ec45.js";import"./index.1f78e617.js";import"./lodash.33f675f2.js";import"./vue-router.ed788fee.js";import"./pinia.eff1ffd5.js";import"./vue-demi.ebc8116b.js";import"./css-color-function.5d5b8bda.js";import"./color.da05fa89.js";import"./clone.06747a68.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.1c707d7b.js";import"./ms.a9ae1d6d.js";import"./nprogress.fc605139.js";import"./vue-clipboard3.dc900a40.js";import"./clipboard.6beb87aa.js";import"./echarts.8d7a50ae.js";import"./zrender.1084fa23.js";import"./tslib.60310f1a.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.241b9b5d.js";import"./picker.60257d01.js";import"./index.5f547370.js";import"./picker.966d5ace.js";import"./index.39d7fad9.js";import"./index.vue_vue_type_script_setup_true_lang.1938e45e.js";import"./index.301703a6.js";import"./index.vue_vue_type_script_setup_true_lang.dc1b37d1.js";import"./usePaging.2a59f422.js";import"./vue3-video-play.5aacf00d.js";import"./vuedraggable.882c7954.js";import"./vue.d688b76a.js";import"./sortablejs.1b122128.js";export{Z as default};
|
|
@ -0,0 +1 @@
|
|||
import"./attr.vue_vue_type_script_setup_true_lang.99bb2021.js";import{_ as Y}from"./attr.vue_vue_type_script_setup_true_lang.99bb2021.js";import"./element-plus.7a22678c.js";import"./@vue.108c970a.js";import"./@vueuse.d3d080b7.js";import"./@element-plus.d6eabd08.js";import"./lodash-es.29c53eac.js";import"./dayjs.ff93117e.js";import"./axios.eb055ccc.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.3eeb6b50.js";import"./index.bb590457.js";import"./lodash.ec5da75f.js";import"./vue-router.ed788fee.js";import"./pinia.eff1ffd5.js";import"./vue-demi.ebc8116b.js";import"./css-color-function.31dc130b.js";import"./color.b6d632a4.js";import"./clone.7a47b02c.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.3a33898e.js";import"./ms.a9ae1d6d.js";import"./nprogress.fa64f2fc.js";import"./vue-clipboard3.be0dfeee.js";import"./clipboard.824ba320.js";import"./echarts.8d7a50ae.js";import"./zrender.1084fa23.js";import"./tslib.60310f1a.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.241b9b5d.js";import"./picker.8ac8cfcb.js";import"./index.3956bbcf.js";import"./picker.4eaaf2e9.js";import"./index.efeb5098.js";import"./index.vue_vue_type_script_setup_true_lang.cabb2d32.js";import"./index.27064586.js";import"./index.vue_vue_type_script_setup_true_lang.aa7eacaa.js";import"./usePaging.2a59f422.js";import"./vue3-video-play.5aacf00d.js";import"./vuedraggable.0b47cde1.js";import"./vue.118acae4.js";import"./sortablejs.9ffc750f.js";export{Y as default};
|
|
@ -1 +0,0 @@
|
|||
import"./attr.vue_vue_type_script_setup_true_lang.8b6abd04.js";import{_ as X}from"./attr.vue_vue_type_script_setup_true_lang.8b6abd04.js";import"./element-plus.5df6f736.js";import"./@vue.108c970a.js";import"./@vueuse.d3d080b7.js";import"./@element-plus.d6eabd08.js";import"./lodash-es.29c53eac.js";import"./dayjs.50c3b6f7.js";import"./axios.c2a2014a.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./picker.966d5ace.js";import"./index.5f547370.js";import"./index.1f78e617.js";import"./lodash.33f675f2.js";import"./vue-router.ed788fee.js";import"./pinia.eff1ffd5.js";import"./vue-demi.ebc8116b.js";import"./css-color-function.5d5b8bda.js";import"./color.da05fa89.js";import"./clone.06747a68.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.1c707d7b.js";import"./ms.a9ae1d6d.js";import"./nprogress.fc605139.js";import"./vue-clipboard3.dc900a40.js";import"./clipboard.6beb87aa.js";import"./echarts.8d7a50ae.js";import"./zrender.1084fa23.js";import"./tslib.60310f1a.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.241b9b5d.js";import"./index.39d7fad9.js";import"./index.vue_vue_type_script_setup_true_lang.1938e45e.js";import"./index.75a5ec45.js";import"./index.301703a6.js";import"./index.vue_vue_type_script_setup_true_lang.dc1b37d1.js";import"./usePaging.2a59f422.js";import"./vue3-video-play.5aacf00d.js";import"./vuedraggable.882c7954.js";import"./vue.d688b76a.js";import"./sortablejs.1b122128.js";export{X as default};
|
|
@ -0,0 +1 @@
|
|||
import"./attr.vue_vue_type_script_setup_true_lang.2255e55e.js";import{_ as X}from"./attr.vue_vue_type_script_setup_true_lang.2255e55e.js";import"./element-plus.7a22678c.js";import"./@vue.108c970a.js";import"./@vueuse.d3d080b7.js";import"./@element-plus.d6eabd08.js";import"./lodash-es.29c53eac.js";import"./dayjs.ff93117e.js";import"./axios.eb055ccc.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./picker.4eaaf2e9.js";import"./index.3956bbcf.js";import"./index.bb590457.js";import"./lodash.ec5da75f.js";import"./vue-router.ed788fee.js";import"./pinia.eff1ffd5.js";import"./vue-demi.ebc8116b.js";import"./css-color-function.31dc130b.js";import"./color.b6d632a4.js";import"./clone.7a47b02c.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.3a33898e.js";import"./ms.a9ae1d6d.js";import"./nprogress.fa64f2fc.js";import"./vue-clipboard3.be0dfeee.js";import"./clipboard.824ba320.js";import"./echarts.8d7a50ae.js";import"./zrender.1084fa23.js";import"./tslib.60310f1a.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.241b9b5d.js";import"./index.efeb5098.js";import"./index.vue_vue_type_script_setup_true_lang.cabb2d32.js";import"./index.3eeb6b50.js";import"./index.27064586.js";import"./index.vue_vue_type_script_setup_true_lang.aa7eacaa.js";import"./usePaging.2a59f422.js";import"./vue3-video-play.5aacf00d.js";import"./vuedraggable.0b47cde1.js";import"./vue.118acae4.js";import"./sortablejs.9ffc750f.js";export{X as default};
|
|
@ -0,0 +1 @@
|
|||
import"./attr.vue_vue_type_script_setup_true_lang.f3e18de6.js";import{_ as Z}from"./attr.vue_vue_type_script_setup_true_lang.f3e18de6.js";import"./element-plus.7a22678c.js";import"./@vue.108c970a.js";import"./@vueuse.d3d080b7.js";import"./@element-plus.d6eabd08.js";import"./lodash-es.29c53eac.js";import"./dayjs.ff93117e.js";import"./axios.eb055ccc.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./add-nav.vue_vue_type_script_setup_true_lang.4c54eded.js";import"./index.3eeb6b50.js";import"./index.bb590457.js";import"./lodash.ec5da75f.js";import"./vue-router.ed788fee.js";import"./pinia.eff1ffd5.js";import"./vue-demi.ebc8116b.js";import"./css-color-function.31dc130b.js";import"./color.b6d632a4.js";import"./clone.7a47b02c.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.3a33898e.js";import"./ms.a9ae1d6d.js";import"./nprogress.fa64f2fc.js";import"./vue-clipboard3.be0dfeee.js";import"./clipboard.824ba320.js";import"./echarts.8d7a50ae.js";import"./zrender.1084fa23.js";import"./tslib.60310f1a.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.241b9b5d.js";import"./picker.8ac8cfcb.js";import"./index.3956bbcf.js";import"./picker.4eaaf2e9.js";import"./index.efeb5098.js";import"./index.vue_vue_type_script_setup_true_lang.cabb2d32.js";import"./index.27064586.js";import"./index.vue_vue_type_script_setup_true_lang.aa7eacaa.js";import"./usePaging.2a59f422.js";import"./vue3-video-play.5aacf00d.js";import"./vuedraggable.0b47cde1.js";import"./vue.118acae4.js";import"./sortablejs.9ffc750f.js";export{Z as default};
|
|
@ -0,0 +1 @@
|
|||
import"./attr.vue_vue_type_script_setup_true_lang.40abc3c1.js";import{_ as Z}from"./attr.vue_vue_type_script_setup_true_lang.40abc3c1.js";import"./element-plus.7a22678c.js";import"./@vue.108c970a.js";import"./@vueuse.d3d080b7.js";import"./@element-plus.d6eabd08.js";import"./lodash-es.29c53eac.js";import"./dayjs.ff93117e.js";import"./axios.eb055ccc.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./add-nav.vue_vue_type_script_setup_true_lang.4c54eded.js";import"./index.3eeb6b50.js";import"./index.bb590457.js";import"./lodash.ec5da75f.js";import"./vue-router.ed788fee.js";import"./pinia.eff1ffd5.js";import"./vue-demi.ebc8116b.js";import"./css-color-function.31dc130b.js";import"./color.b6d632a4.js";import"./clone.7a47b02c.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.3a33898e.js";import"./ms.a9ae1d6d.js";import"./nprogress.fa64f2fc.js";import"./vue-clipboard3.be0dfeee.js";import"./clipboard.824ba320.js";import"./echarts.8d7a50ae.js";import"./zrender.1084fa23.js";import"./tslib.60310f1a.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.241b9b5d.js";import"./picker.8ac8cfcb.js";import"./index.3956bbcf.js";import"./picker.4eaaf2e9.js";import"./index.efeb5098.js";import"./index.vue_vue_type_script_setup_true_lang.cabb2d32.js";import"./index.27064586.js";import"./index.vue_vue_type_script_setup_true_lang.aa7eacaa.js";import"./usePaging.2a59f422.js";import"./vue3-video-play.5aacf00d.js";import"./vuedraggable.0b47cde1.js";import"./vue.118acae4.js";import"./sortablejs.9ffc750f.js";export{Z as default};
|
|
@ -0,0 +1 @@
|
|||
import"./attr.vue_vue_type_script_setup_true_lang.8c4afd67.js";import{_ as Y}from"./attr.vue_vue_type_script_setup_true_lang.8c4afd67.js";import"./element-plus.7a22678c.js";import"./@vue.108c970a.js";import"./@vueuse.d3d080b7.js";import"./@element-plus.d6eabd08.js";import"./lodash-es.29c53eac.js";import"./dayjs.ff93117e.js";import"./axios.eb055ccc.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.3eeb6b50.js";import"./index.bb590457.js";import"./lodash.ec5da75f.js";import"./vue-router.ed788fee.js";import"./pinia.eff1ffd5.js";import"./vue-demi.ebc8116b.js";import"./css-color-function.31dc130b.js";import"./color.b6d632a4.js";import"./clone.7a47b02c.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.3a33898e.js";import"./ms.a9ae1d6d.js";import"./nprogress.fa64f2fc.js";import"./vue-clipboard3.be0dfeee.js";import"./clipboard.824ba320.js";import"./echarts.8d7a50ae.js";import"./zrender.1084fa23.js";import"./tslib.60310f1a.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.241b9b5d.js";import"./picker.8ac8cfcb.js";import"./index.3956bbcf.js";import"./picker.4eaaf2e9.js";import"./index.efeb5098.js";import"./index.vue_vue_type_script_setup_true_lang.cabb2d32.js";import"./index.27064586.js";import"./index.vue_vue_type_script_setup_true_lang.aa7eacaa.js";import"./usePaging.2a59f422.js";import"./vue3-video-play.5aacf00d.js";import"./vuedraggable.0b47cde1.js";import"./vue.118acae4.js";import"./sortablejs.9ffc750f.js";export{Y as default};
|
|
@ -1 +1 @@
|
|||
import{B as c,C as i,D as F}from"./element-plus.5df6f736.js";import{_ as p}from"./picker.966d5ace.js";import{d as r,o as f,c as V,T as e,K as o,a as m}from"./@vue.108c970a.js";const B=m("div",{class:"form-tips"},"\u5EFA\u8BAE\u56FE\u7247\u5C3A\u5BF8\uFF1A200*200\u50CF\u7D20\uFF1B\u56FE\u7247\u683C\u5F0F\uFF1Ajpg\u3001png\u3001jpeg",-1),A=r({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(t){return(E,l)=>{const a=c,n=i,d=p,s=F;return f(),V("div",null,[e(s,{"label-width":"90px"},{default:o(()=>[e(n,{label:"\u5BA2\u670D\u6807\u9898"},{default:o(()=>[e(a,{class:"w-[400px]",modelValue:t.content.title,"onUpdate:modelValue":l[0]||(l[0]=u=>t.content.title=u)},null,8,["modelValue"])]),_:1}),e(n,{label:"\u670D\u52A1\u65F6\u95F4"},{default:o(()=>[e(a,{class:"w-[400px]",modelValue:t.content.time,"onUpdate:modelValue":l[1]||(l[1]=u=>t.content.time=u)},null,8,["modelValue"])]),_:1}),e(n,{label:"\u8054\u7CFB\u7535\u8BDD"},{default:o(()=>[e(a,{class:"w-[400px]",modelValue:t.content.mobile,"onUpdate:modelValue":l[2]||(l[2]=u=>t.content.mobile=u)},null,8,["modelValue"])]),_:1}),e(n,{label:"\u5BA2\u670D\u4E8C\u7EF4\u7801"},{default:o(()=>[m("div",null,[e(d,{modelValue:t.content.qrcode,"onUpdate:modelValue":l[3]||(l[3]=u=>t.content.qrcode=u),"exclude-domain":""},null,8,["modelValue"]),B])]),_:1})]),_:1})])}}});export{A as _};
|
||||
import{B as c,C as i,D as F}from"./element-plus.7a22678c.js";import{_ as p}from"./picker.4eaaf2e9.js";import{d as r,o as f,c as V,T as e,K as o,a as m}from"./@vue.108c970a.js";const B=m("div",{class:"form-tips"},"\u5EFA\u8BAE\u56FE\u7247\u5C3A\u5BF8\uFF1A200*200\u50CF\u7D20\uFF1B\u56FE\u7247\u683C\u5F0F\uFF1Ajpg\u3001png\u3001jpeg",-1),A=r({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(t){return(E,l)=>{const a=c,n=i,d=p,s=F;return f(),V("div",null,[e(s,{"label-width":"90px"},{default:o(()=>[e(n,{label:"\u5BA2\u670D\u6807\u9898"},{default:o(()=>[e(a,{class:"w-[400px]",modelValue:t.content.title,"onUpdate:modelValue":l[0]||(l[0]=u=>t.content.title=u)},null,8,["modelValue"])]),_:1}),e(n,{label:"\u670D\u52A1\u65F6\u95F4"},{default:o(()=>[e(a,{class:"w-[400px]",modelValue:t.content.time,"onUpdate:modelValue":l[1]||(l[1]=u=>t.content.time=u)},null,8,["modelValue"])]),_:1}),e(n,{label:"\u8054\u7CFB\u7535\u8BDD"},{default:o(()=>[e(a,{class:"w-[400px]",modelValue:t.content.mobile,"onUpdate:modelValue":l[2]||(l[2]=u=>t.content.mobile=u)},null,8,["modelValue"])]),_:1}),e(n,{label:"\u5BA2\u670D\u4E8C\u7EF4\u7801"},{default:o(()=>[m("div",null,[e(d,{modelValue:t.content.qrcode,"onUpdate:modelValue":l[3]||(l[3]=u=>t.content.qrcode=u),"exclude-domain":""},null,8,["modelValue"]),B])]),_:1})]),_:1})])}}});export{A as _};
|
|
@ -1 +1 @@
|
|||
import{G as _,H as i,C as r,B as f,D as p}from"./element-plus.5df6f736.js";import{_ as V}from"./add-nav.vue_vue_type_script_setup_true_lang.fc8d47fa.js";import{d as b,o as E,c as x,T as e,K as t,a as B,R as d}from"./@vue.108c970a.js";const F=d("\u6A2A\u6392"),y=d("\u7AD6\u6392"),C={class:"flex-1"},R=b({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(l){return(D,o)=>{const u=_,s=i,n=r,m=f,c=p;return E(),x("div",null,[e(c,{"label-width":"70px"},{default:t(()=>[e(n,{label:"\u6392\u7248\u6837\u5F0F"},{default:t(()=>[e(s,{modelValue:l.content.style,"onUpdate:modelValue":o[0]||(o[0]=a=>l.content.style=a)},{default:t(()=>[e(u,{label:1},{default:t(()=>[F]),_:1}),e(u,{label:2},{default:t(()=>[y]),_:1})]),_:1},8,["modelValue"])]),_:1}),e(n,{label:"\u6807\u9898\u540D\u79F0"},{default:t(()=>[e(m,{class:"w-[400px]",modelValue:l.content.title,"onUpdate:modelValue":o[1]||(o[1]=a=>l.content.title=a)},null,8,["modelValue"])]),_:1}),e(n,{label:"\u83DC\u5355\u8BBE\u7F6E"},{default:t(()=>[B("div",C,[e(V,{modelValue:l.content.data,"onUpdate:modelValue":o[2]||(o[2]=a=>l.content.data=a)},null,8,["modelValue"])])]),_:1})]),_:1})])}}});export{R as _};
|
||||
import{G as _,H as i,C as r,B as f,D as p}from"./element-plus.7a22678c.js";import{_ as V}from"./add-nav.vue_vue_type_script_setup_true_lang.4c54eded.js";import{d as b,o as E,c as x,T as e,K as t,a as B,R as d}from"./@vue.108c970a.js";const F=d("\u6A2A\u6392"),y=d("\u7AD6\u6392"),C={class:"flex-1"},R=b({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(l){return(D,o)=>{const u=_,s=i,n=r,m=f,c=p;return E(),x("div",null,[e(c,{"label-width":"70px"},{default:t(()=>[e(n,{label:"\u6392\u7248\u6837\u5F0F"},{default:t(()=>[e(s,{modelValue:l.content.style,"onUpdate:modelValue":o[0]||(o[0]=a=>l.content.style=a)},{default:t(()=>[e(u,{label:1},{default:t(()=>[F]),_:1}),e(u,{label:2},{default:t(()=>[y]),_:1})]),_:1},8,["modelValue"])]),_:1}),e(n,{label:"\u6807\u9898\u540D\u79F0"},{default:t(()=>[e(m,{class:"w-[400px]",modelValue:l.content.title,"onUpdate:modelValue":o[1]||(o[1]=a=>l.content.title=a)},null,8,["modelValue"])]),_:1}),e(n,{label:"\u83DC\u5355\u8BBE\u7F6E"},{default:t(()=>[B("div",C,[e(V,{modelValue:l.content.data,"onUpdate:modelValue":o[2]||(o[2]=a=>l.content.data=a)},null,8,["modelValue"])])]),_:1})]),_:1})])}}});export{R as _};
|
|
@ -1 +1 @@
|
|||
import{G as D,H as y,C as U,B as v,w,D as N}from"./element-plus.5df6f736.js";import{_ as R}from"./index.75a5ec45.js";import{_ as $}from"./picker.60257d01.js";import{_ as j}from"./picker.966d5ace.js";import{f as F}from"./index.1f78e617.js";import{D as G}from"./vuedraggable.882c7954.js";import{d as I,o as _,c as O,T as e,K as t,a as m,u as T,J as E,Q as H,R as r}from"./@vue.108c970a.js";const J=r("\u5F00\u542F"),K=r("\u505C\u7528"),Q={class:"flex-1"},q=m("div",{class:"form-tips"},"\u6700\u591A\u6DFB\u52A05\u5F20\uFF0C\u5EFA\u8BAE\u56FE\u7247\u5C3A\u5BF8\uFF1A750px*200px",-1),z={class:"bg-fill-light flex items-center w-full p-4 mt-4 cursor-move"},L={class:"ml-3 flex-1"},M=r("\u6DFB\u52A0\u56FE\u7247"),te=I({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(a){const s=a,c=5,V=()=>{var u;((u=s.content.data)==null?void 0:u.length)<c?s.content.data.push({image:"",name:"",link:{}}):F.msgError(`\u6700\u591A\u6DFB\u52A0${c}\u5F20\u56FE\u7247`)},g=u=>{var l;if(((l=s.content.data)==null?void 0:l.length)<=1)return F.msgError("\u6700\u5C11\u4FDD\u7559\u4E00\u5F20\u56FE\u7247");s.content.data.splice(u,1)};return(u,l)=>{const i=D,b=y,d=U,h=j,B=v,k=$,x=R,A=w,C=N;return _(),O("div",null,[e(C,{"label-width":"70px"},{default:t(()=>{var p;return[e(d,{label:"\u662F\u5426\u542F\u7528"},{default:t(()=>[e(b,{modelValue:a.content.enabled,"onUpdate:modelValue":l[0]||(l[0]=o=>a.content.enabled=o)},{default:t(()=>[e(i,{label:1},{default:t(()=>[J]),_:1}),e(i,{label:0},{default:t(()=>[K]),_:1})]),_:1},8,["modelValue"])]),_:1}),e(d,{label:"\u56FE\u7247\u8BBE\u7F6E"},{default:t(()=>[m("div",Q,[q,e(T(G),{class:"draggable",modelValue:a.content.data,"onUpdate:modelValue":l[1]||(l[1]=o=>a.content.data=o),animation:"300"},{item:t(({element:o,index:f})=>[(_(),E(x,{key:f,onClose:n=>g(f),class:"max-w-[400px]"},{default:t(()=>[m("div",z,[e(h,{modelValue:o.image,"onUpdate:modelValue":n=>o.image=n,"upload-class":"bg-body","exclude-domain":""},null,8,["modelValue","onUpdate:modelValue"]),m("div",L,[e(d,{label:"\u56FE\u7247\u540D\u79F0"},{default:t(()=>[e(B,{modelValue:o.name,"onUpdate:modelValue":n=>o.name=n,placeholder:"\u8BF7\u8F93\u5165\u540D\u79F0"},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),e(d,{class:"mt-[18px]",label:"\u56FE\u7247\u94FE\u63A5"},{default:t(()=>[e(k,{modelValue:o.link,"onUpdate:modelValue":n=>o.link=n},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024)])])]),_:2},1032,["onClose"]))]),_:1},8,["modelValue"])])]),_:1}),((p=a.content.data)==null?void 0:p.length)<c?(_(),E(d,{key:0},{default:t(()=>[e(A,{type:"primary",onClick:V},{default:t(()=>[M]),_:1})]),_:1})):H("",!0)]}),_:1})])}}});export{te as _};
|
||||
import{G as D,H as y,C as U,B as v,w,D as N}from"./element-plus.7a22678c.js";import{_ as R}from"./index.3eeb6b50.js";import{_ as $}from"./picker.8ac8cfcb.js";import{_ as j}from"./picker.4eaaf2e9.js";import{f as F}from"./index.bb590457.js";import{D as G}from"./vuedraggable.0b47cde1.js";import{d as I,o as _,c as O,T as e,K as t,a as m,u as T,J as E,Q as H,R as r}from"./@vue.108c970a.js";const J=r("\u5F00\u542F"),K=r("\u505C\u7528"),Q={class:"flex-1"},q=m("div",{class:"form-tips"},"\u6700\u591A\u6DFB\u52A05\u5F20\uFF0C\u5EFA\u8BAE\u56FE\u7247\u5C3A\u5BF8\uFF1A750px*200px",-1),z={class:"bg-fill-light flex items-center w-full p-4 mt-4 cursor-move"},L={class:"ml-3 flex-1"},M=r("\u6DFB\u52A0\u56FE\u7247"),te=I({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(a){const s=a,c=5,V=()=>{var u;((u=s.content.data)==null?void 0:u.length)<c?s.content.data.push({image:"",name:"",link:{}}):F.msgError(`\u6700\u591A\u6DFB\u52A0${c}\u5F20\u56FE\u7247`)},g=u=>{var l;if(((l=s.content.data)==null?void 0:l.length)<=1)return F.msgError("\u6700\u5C11\u4FDD\u7559\u4E00\u5F20\u56FE\u7247");s.content.data.splice(u,1)};return(u,l)=>{const i=D,b=y,d=U,h=j,B=v,k=$,x=R,A=w,C=N;return _(),O("div",null,[e(C,{"label-width":"70px"},{default:t(()=>{var p;return[e(d,{label:"\u662F\u5426\u542F\u7528"},{default:t(()=>[e(b,{modelValue:a.content.enabled,"onUpdate:modelValue":l[0]||(l[0]=o=>a.content.enabled=o)},{default:t(()=>[e(i,{label:1},{default:t(()=>[J]),_:1}),e(i,{label:0},{default:t(()=>[K]),_:1})]),_:1},8,["modelValue"])]),_:1}),e(d,{label:"\u56FE\u7247\u8BBE\u7F6E"},{default:t(()=>[m("div",Q,[q,e(T(G),{class:"draggable",modelValue:a.content.data,"onUpdate:modelValue":l[1]||(l[1]=o=>a.content.data=o),animation:"300"},{item:t(({element:o,index:f})=>[(_(),E(x,{key:f,onClose:n=>g(f),class:"max-w-[400px]"},{default:t(()=>[m("div",z,[e(h,{modelValue:o.image,"onUpdate:modelValue":n=>o.image=n,"upload-class":"bg-body","exclude-domain":""},null,8,["modelValue","onUpdate:modelValue"]),m("div",L,[e(d,{label:"\u56FE\u7247\u540D\u79F0"},{default:t(()=>[e(B,{modelValue:o.name,"onUpdate:modelValue":n=>o.name=n,placeholder:"\u8BF7\u8F93\u5165\u540D\u79F0"},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),e(d,{class:"mt-[18px]",label:"\u56FE\u7247\u94FE\u63A5"},{default:t(()=>[e(k,{modelValue:o.link,"onUpdate:modelValue":n=>o.link=n},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024)])])]),_:2},1032,["onClose"]))]),_:1},8,["modelValue"])])]),_:1}),((p=a.content.data)==null?void 0:p.length)<c?(_(),E(d,{key:0},{default:t(()=>[e(A,{type:"primary",onClick:V},{default:t(()=>[M]),_:1})]),_:1})):H("",!0)]}),_:1})])}}});export{te as _};
|
|
@ -1 +1 @@
|
|||
import{G as D,H as U,C as v,B as w,w as N,D as R}from"./element-plus.5df6f736.js";import{_ as $}from"./index.75a5ec45.js";import{_ as j}from"./picker.60257d01.js";import{_ as G}from"./picker.966d5ace.js";import{f as b}from"./index.1f78e617.js";import{D as I}from"./vuedraggable.882c7954.js";import{d as O,o as n,c as T,T as l,K as t,J as s,Q as _,a as r,u as H,R as p}from"./@vue.108c970a.js";const J=p("\u5F00\u542F"),K=p("\u505C\u7528"),Q={class:"flex-1"},S=r("div",{class:"form-tips"},"\u6700\u591A\u6DFB\u52A05\u5F20\uFF0C\u5EFA\u8BAE\u56FE\u7247\u5C3A\u5BF8\uFF1A750px*340px",-1),q={class:"bg-fill-light flex items-center w-full p-4 mt-4 cursor-move"},z={class:"ml-3 flex-1"},L=p("\u6DFB\u52A0\u56FE\u7247"),te=O({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})},type:{type:String,default:"mobile"}},setup(o){const c=o,i=5,g=()=>{var d;((d=c.content.data)==null?void 0:d.length)<i?c.content.data.push({image:"",name:"",link:{}}):b.msgError(`\u6700\u591A\u6DFB\u52A0${i}\u5F20\u56FE\u7247`)},k=d=>{var u;if(((u=c.content.data)==null?void 0:u.length)<=1)return b.msgError("\u6700\u5C11\u4FDD\u7559\u4E00\u5F20\u56FE\u7247");c.content.data.splice(d,1)};return(d,u)=>{const f=D,h=U,m=v,y=G,F=w,B=j,x=$,A=N,C=R;return n(),T("div",null,[l(C,{"label-width":"70px"},{default:t(()=>{var V;return[o.type=="mobile"?(n(),s(m,{key:0,label:"\u662F\u5426\u542F\u7528"},{default:t(()=>[l(h,{modelValue:o.content.enabled,"onUpdate:modelValue":u[0]||(u[0]=e=>o.content.enabled=e)},{default:t(()=>[l(f,{label:1},{default:t(()=>[J]),_:1}),l(f,{label:0},{default:t(()=>[K]),_:1})]),_:1},8,["modelValue"])]),_:1})):_("",!0),l(m,{label:"\u56FE\u7247\u8BBE\u7F6E"},{default:t(()=>[r("div",Q,[S,l(H(I),{class:"draggable",modelValue:o.content.data,"onUpdate:modelValue":u[1]||(u[1]=e=>o.content.data=e),animation:"300"},{item:t(({element:e,index:E})=>[(n(),s(x,{key:E,onClose:a=>k(E),class:"max-w-[400px]"},{default:t(()=>[r("div",q,[l(y,{modelValue:e.image,"onUpdate:modelValue":a=>e.image=a,"upload-class":"bg-body","exclude-domain":""},null,8,["modelValue","onUpdate:modelValue"]),r("div",z,[l(m,{label:"\u56FE\u7247\u540D\u79F0"},{default:t(()=>[l(F,{modelValue:e.name,"onUpdate:modelValue":a=>e.name=a,placeholder:"\u8BF7\u8F93\u5165\u540D\u79F0"},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),l(m,{class:"mt-[18px]",label:"\u56FE\u7247\u94FE\u63A5"},{default:t(()=>[o.type=="mobile"?(n(),s(B,{key:0,modelValue:e.link,"onUpdate:modelValue":a=>e.link=a},null,8,["modelValue","onUpdate:modelValue"])):_("",!0),o.type=="pc"?(n(),s(F,{key:1,placeholder:"\u8BF7\u8F93\u5165\u94FE\u63A5",modelValue:e.link.path,"onUpdate:modelValue":a=>e.link.path=a},null,8,["modelValue","onUpdate:modelValue"])):_("",!0)]),_:2},1024)])])]),_:2},1032,["onClose"]))]),_:1},8,["modelValue"])])]),_:1}),((V=o.content.data)==null?void 0:V.length)<i?(n(),s(m,{key:1},{default:t(()=>[l(A,{type:"primary",onClick:g},{default:t(()=>[L]),_:1})]),_:1})):_("",!0)]}),_:1})])}}});export{te as _};
|
||||
import{G as D,H as U,C as v,B as w,w as N,D as R}from"./element-plus.7a22678c.js";import{_ as $}from"./index.3eeb6b50.js";import{_ as j}from"./picker.8ac8cfcb.js";import{_ as G}from"./picker.4eaaf2e9.js";import{f as b}from"./index.bb590457.js";import{D as I}from"./vuedraggable.0b47cde1.js";import{d as O,o as n,c as T,T as l,K as t,J as s,Q as _,a as r,u as H,R as p}from"./@vue.108c970a.js";const J=p("\u5F00\u542F"),K=p("\u505C\u7528"),Q={class:"flex-1"},S=r("div",{class:"form-tips"},"\u6700\u591A\u6DFB\u52A05\u5F20\uFF0C\u5EFA\u8BAE\u56FE\u7247\u5C3A\u5BF8\uFF1A750px*340px",-1),q={class:"bg-fill-light flex items-center w-full p-4 mt-4 cursor-move"},z={class:"ml-3 flex-1"},L=p("\u6DFB\u52A0\u56FE\u7247"),te=O({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})},type:{type:String,default:"mobile"}},setup(o){const c=o,i=5,g=()=>{var d;((d=c.content.data)==null?void 0:d.length)<i?c.content.data.push({image:"",name:"",link:{}}):b.msgError(`\u6700\u591A\u6DFB\u52A0${i}\u5F20\u56FE\u7247`)},k=d=>{var u;if(((u=c.content.data)==null?void 0:u.length)<=1)return b.msgError("\u6700\u5C11\u4FDD\u7559\u4E00\u5F20\u56FE\u7247");c.content.data.splice(d,1)};return(d,u)=>{const f=D,h=U,m=v,y=G,F=w,B=j,x=$,A=N,C=R;return n(),T("div",null,[l(C,{"label-width":"70px"},{default:t(()=>{var V;return[o.type=="mobile"?(n(),s(m,{key:0,label:"\u662F\u5426\u542F\u7528"},{default:t(()=>[l(h,{modelValue:o.content.enabled,"onUpdate:modelValue":u[0]||(u[0]=e=>o.content.enabled=e)},{default:t(()=>[l(f,{label:1},{default:t(()=>[J]),_:1}),l(f,{label:0},{default:t(()=>[K]),_:1})]),_:1},8,["modelValue"])]),_:1})):_("",!0),l(m,{label:"\u56FE\u7247\u8BBE\u7F6E"},{default:t(()=>[r("div",Q,[S,l(H(I),{class:"draggable",modelValue:o.content.data,"onUpdate:modelValue":u[1]||(u[1]=e=>o.content.data=e),animation:"300"},{item:t(({element:e,index:E})=>[(n(),s(x,{key:E,onClose:a=>k(E),class:"max-w-[400px]"},{default:t(()=>[r("div",q,[l(y,{modelValue:e.image,"onUpdate:modelValue":a=>e.image=a,"upload-class":"bg-body","exclude-domain":""},null,8,["modelValue","onUpdate:modelValue"]),r("div",z,[l(m,{label:"\u56FE\u7247\u540D\u79F0"},{default:t(()=>[l(F,{modelValue:e.name,"onUpdate:modelValue":a=>e.name=a,placeholder:"\u8BF7\u8F93\u5165\u540D\u79F0"},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),l(m,{class:"mt-[18px]",label:"\u56FE\u7247\u94FE\u63A5"},{default:t(()=>[o.type=="mobile"?(n(),s(B,{key:0,modelValue:e.link,"onUpdate:modelValue":a=>e.link=a},null,8,["modelValue","onUpdate:modelValue"])):_("",!0),o.type=="pc"?(n(),s(F,{key:1,placeholder:"\u8BF7\u8F93\u5165\u94FE\u63A5",modelValue:e.link.path,"onUpdate:modelValue":a=>e.link.path=a},null,8,["modelValue","onUpdate:modelValue"])):_("",!0)]),_:2},1024)])])]),_:2},1032,["onClose"]))]),_:1},8,["modelValue"])])]),_:1}),((V=o.content.data)==null?void 0:V.length)<i?(n(),s(m,{key:1},{default:t(()=>[l(A,{type:"primary",onClick:g},{default:t(()=>[L]),_:1})]),_:1})):_("",!0)]}),_:1})])}}});export{te as _};
|
|
@ -1 +1 @@
|
|||
import{G as c,H as r,C as i,D as f}from"./element-plus.5df6f736.js";import{_ as p}from"./add-nav.vue_vue_type_script_setup_true_lang.fc8d47fa.js";import{d as F,o as E,c as b,T as e,K as t,a as d,R as s}from"./@vue.108c970a.js";const V=s("\u5F00\u542F"),x=s("\u505C\u7528"),B={class:"flex-1"},A=d("div",{class:"form-tips mb-4"},"\u6700\u591A\u53EF\u6DFB\u52A010\u4E2A\uFF0C\u5EFA\u8BAE\u56FE\u7247\u5C3A\u5BF8\uFF1A100px*100px",-1),D=F({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(o){return(C,a)=>{const u=c,m=r,n=i,_=f;return E(),b("div",null,[e(_,{"label-width":"70px"},{default:t(()=>[e(n,{label:"\u662F\u5426\u542F\u7528"},{default:t(()=>[e(m,{modelValue:o.content.enabled,"onUpdate:modelValue":a[0]||(a[0]=l=>o.content.enabled=l)},{default:t(()=>[e(u,{label:1},{default:t(()=>[V]),_:1}),e(u,{label:0},{default:t(()=>[x]),_:1})]),_:1},8,["modelValue"])]),_:1}),e(n,{label:"\u83DC\u5355\u8BBE\u7F6E"},{default:t(()=>[d("div",B,[A,e(p,{modelValue:o.content.data,"onUpdate:modelValue":a[1]||(a[1]=l=>o.content.data=l)},null,8,["modelValue"])])]),_:1})]),_:1})])}}});export{D as _};
|
||||
import{G as c,H as r,C as i,D as f}from"./element-plus.7a22678c.js";import{_ as p}from"./add-nav.vue_vue_type_script_setup_true_lang.4c54eded.js";import{d as F,o as E,c as b,T as e,K as t,a as d,R as s}from"./@vue.108c970a.js";const V=s("\u5F00\u542F"),x=s("\u505C\u7528"),B={class:"flex-1"},A=d("div",{class:"form-tips mb-4"},"\u6700\u591A\u53EF\u6DFB\u52A010\u4E2A\uFF0C\u5EFA\u8BAE\u56FE\u7247\u5C3A\u5BF8\uFF1A100px*100px",-1),D=F({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(o){return(C,a)=>{const u=c,m=r,n=i,_=f;return E(),b("div",null,[e(_,{"label-width":"70px"},{default:t(()=>[e(n,{label:"\u662F\u5426\u542F\u7528"},{default:t(()=>[e(m,{modelValue:o.content.enabled,"onUpdate:modelValue":a[0]||(a[0]=l=>o.content.enabled=l)},{default:t(()=>[e(u,{label:1},{default:t(()=>[V]),_:1}),e(u,{label:0},{default:t(()=>[x]),_:1})]),_:1},8,["modelValue"])]),_:1}),e(n,{label:"\u83DC\u5355\u8BBE\u7F6E"},{default:t(()=>[d("div",B,[A,e(p,{modelValue:o.content.data,"onUpdate:modelValue":a[1]||(a[1]=l=>o.content.data=l)},null,8,["modelValue"])])]),_:1})]),_:1})])}}});export{D as _};
|
|
@ -1 +0,0 @@
|
|||
import"./auth.vue_vue_type_script_setup_true_lang.ef8836be.js";import{_ as O}from"./auth.vue_vue_type_script_setup_true_lang.ef8836be.js";import"./element-plus.5df6f736.js";import"./@vue.108c970a.js";import"./@vueuse.d3d080b7.js";import"./@element-plus.d6eabd08.js";import"./lodash-es.29c53eac.js";import"./dayjs.50c3b6f7.js";import"./axios.c2a2014a.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./role.89849e2e.js";import"./index.1f78e617.js";import"./lodash.33f675f2.js";import"./vue-router.ed788fee.js";import"./pinia.eff1ffd5.js";import"./vue-demi.ebc8116b.js";import"./css-color-function.5d5b8bda.js";import"./color.da05fa89.js";import"./clone.06747a68.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.1c707d7b.js";import"./ms.a9ae1d6d.js";import"./nprogress.fc605139.js";import"./vue-clipboard3.dc900a40.js";import"./clipboard.6beb87aa.js";import"./echarts.8d7a50ae.js";import"./zrender.1084fa23.js";import"./tslib.60310f1a.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.241b9b5d.js";import"./index.5f547370.js";import"./menu.6c5160df.js";export{O as default};
|
|
@ -0,0 +1 @@
|
|||
import"./auth.vue_vue_type_script_setup_true_lang.68de5424.js";import{_ as O}from"./auth.vue_vue_type_script_setup_true_lang.68de5424.js";import"./element-plus.7a22678c.js";import"./@vue.108c970a.js";import"./@vueuse.d3d080b7.js";import"./@element-plus.d6eabd08.js";import"./lodash-es.29c53eac.js";import"./dayjs.ff93117e.js";import"./axios.eb055ccc.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./role.317e2e6c.js";import"./index.bb590457.js";import"./lodash.ec5da75f.js";import"./vue-router.ed788fee.js";import"./pinia.eff1ffd5.js";import"./vue-demi.ebc8116b.js";import"./css-color-function.31dc130b.js";import"./color.b6d632a4.js";import"./clone.7a47b02c.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.3a33898e.js";import"./ms.a9ae1d6d.js";import"./nprogress.fa64f2fc.js";import"./vue-clipboard3.be0dfeee.js";import"./clipboard.824ba320.js";import"./echarts.8d7a50ae.js";import"./zrender.1084fa23.js";import"./tslib.60310f1a.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.241b9b5d.js";import"./index.3956bbcf.js";import"./menu.cdf7ffe8.js";export{O as default};
|
|
@ -1 +1 @@
|
|||
import{T as q,E as P,F as H,C as I,D as J,N as M}from"./element-plus.5df6f736.js";import{a as O}from"./role.89849e2e.js";import{P as U}from"./index.5f547370.js";import{q as j}from"./index.1f78e617.js";import{m as z}from"./menu.6c5160df.js";import{d as G,s as p,r as c,_ as Q,o as v,c as W,T as o,K as u,L as X,J as Y,a as k,n as y}from"./@vue.108c970a.js";const Z={class:"edit-popup"},ne=G({__name:"auth",emits:["success","close"],setup($,{expose:C,emit:f}){const t=p(),_=p(),r=p(),x=c(!1),d=c(!0),i=c(!1),h=c([]),m=c([]),s=Q({id:"",name:"",desc:"",sort:0,menu_id:[]}),b={name:[{required:!0,message:"\u8BF7\u8F93\u5165\u540D\u79F0",trigger:["blur"]}]},g=()=>{i.value=!0,z().then(e=>{m.value=e,h.value=j(e),y(()=>{D()}),i.value=!1})},E=()=>{var a,n;const e=(a=t.value)==null?void 0:a.getCheckedKeys(),l=(n=t.value)==null?void 0:n.getHalfCheckedKeys();return e==null||e.unshift.apply(e,l),e},D=()=>{s.menu_id.forEach(e=>{y(()=>{var l;(l=t.value)==null||l.setChecked(e,!0,!1)})})},w=e=>{const l=m.value;for(let a=0;a<l.length;a++)t.value.store.nodesMap[l[a].id].expanded=e},F=e=>{var l,a;e?(l=t.value)==null||l.setCheckedKeys(h.value.map(n=>n.id)):(a=t.value)==null||a.setCheckedKeys([])},A=async()=>{var e,l;await((e=_.value)==null?void 0:e.validate()),s.menu_id=E(),await O(s),(l=r.value)==null||l.close(),f("success")},K=()=>{f("close")},R=()=>{var e;(e=r.value)==null||e.open()},B=async e=>{for(const l in s)e[l]!=null&&e[l]!=null&&(s[l]=e[l])};return g(),C({open:R,setFormData:B}),(e,l)=>{const a=H,n=q,T=I,V=P,S=J,L=M;return v(),W("div",Z,[o(U,{ref_key:"popupRef",ref:r,title:"\u5206\u914D\u6743\u9650",async:!0,width:"550px",onConfirm:A,onClose:K},{default:u(()=>[X((v(),Y(S,{class:"ls-form",ref_key:"formRef",ref:_,rules:b,model:s,"label-width":"60px"},{default:u(()=>[o(V,{class:"h-[400px] sm:h-[600px]"},{default:u(()=>[o(T,{label:"\u6743\u9650",prop:"menu_id"},{default:u(()=>[k("div",null,[o(a,{label:"\u5C55\u5F00/\u6298\u53E0",onChange:w}),o(a,{label:"\u5168\u9009/\u4E0D\u5168\u9009",onChange:F}),o(a,{modelValue:d.value,"onUpdate:modelValue":l[0]||(l[0]=N=>d.value=N),label:"\u7236\u5B50\u8054\u52A8"},null,8,["modelValue"]),k("div",null,[o(n,{ref_key:"treeRef",ref:t,data:m.value,props:{label:"name",children:"children"},"check-strictly":!d.value,"node-key":"id","default-expand-all":x.value,"show-checkbox":""},null,8,["data","check-strictly","default-expand-all"])])])]),_:1})]),_:1})]),_:1},8,["model"])),[[L,i.value]])]),_:1},512)])}}});export{ne as _};
|
||||
import{T as q,E as P,F as H,C as I,D as J,N as M}from"./element-plus.7a22678c.js";import{a as O}from"./role.317e2e6c.js";import{P as U}from"./index.3956bbcf.js";import{q as j}from"./index.bb590457.js";import{m as z}from"./menu.cdf7ffe8.js";import{d as G,s as p,r as c,_ as Q,o as v,c as W,T as o,K as u,L as X,J as Y,a as k,n as y}from"./@vue.108c970a.js";const Z={class:"edit-popup"},ne=G({__name:"auth",emits:["success","close"],setup($,{expose:C,emit:f}){const t=p(),_=p(),r=p(),x=c(!1),d=c(!0),i=c(!1),h=c([]),m=c([]),s=Q({id:"",name:"",desc:"",sort:0,menu_id:[]}),b={name:[{required:!0,message:"\u8BF7\u8F93\u5165\u540D\u79F0",trigger:["blur"]}]},g=()=>{i.value=!0,z().then(e=>{m.value=e,h.value=j(e),y(()=>{D()}),i.value=!1})},E=()=>{var a,n;const e=(a=t.value)==null?void 0:a.getCheckedKeys(),l=(n=t.value)==null?void 0:n.getHalfCheckedKeys();return e==null||e.unshift.apply(e,l),e},D=()=>{s.menu_id.forEach(e=>{y(()=>{var l;(l=t.value)==null||l.setChecked(e,!0,!1)})})},w=e=>{const l=m.value;for(let a=0;a<l.length;a++)t.value.store.nodesMap[l[a].id].expanded=e},F=e=>{var l,a;e?(l=t.value)==null||l.setCheckedKeys(h.value.map(n=>n.id)):(a=t.value)==null||a.setCheckedKeys([])},A=async()=>{var e,l;await((e=_.value)==null?void 0:e.validate()),s.menu_id=E(),await O(s),(l=r.value)==null||l.close(),f("success")},K=()=>{f("close")},R=()=>{var e;(e=r.value)==null||e.open()},B=async e=>{for(const l in s)e[l]!=null&&e[l]!=null&&(s[l]=e[l])};return g(),C({open:R,setFormData:B}),(e,l)=>{const a=H,n=q,T=I,V=P,S=J,L=M;return v(),W("div",Z,[o(U,{ref_key:"popupRef",ref:r,title:"\u5206\u914D\u6743\u9650",async:!0,width:"550px",onConfirm:A,onClose:K},{default:u(()=>[X((v(),Y(S,{class:"ls-form",ref_key:"formRef",ref:_,rules:b,model:s,"label-width":"60px"},{default:u(()=>[o(V,{class:"h-[400px] sm:h-[600px]"},{default:u(()=>[o(T,{label:"\u6743\u9650",prop:"menu_id"},{default:u(()=>[k("div",null,[o(a,{label:"\u5C55\u5F00/\u6298\u53E0",onChange:w}),o(a,{label:"\u5168\u9009/\u4E0D\u5168\u9009",onChange:F}),o(a,{modelValue:d.value,"onUpdate:modelValue":l[0]||(l[0]=N=>d.value=N),label:"\u7236\u5B50\u8054\u52A8"},null,8,["modelValue"]),k("div",null,[o(n,{ref_key:"treeRef",ref:t,data:m.value,props:{label:"name",children:"children"},"check-strictly":!d.value,"node-key":"id","default-expand-all":x.value,"show-checkbox":""},null,8,["data","check-strictly","default-expand-all"])])])]),_:1})]),_:1})]),_:1},8,["model"])),[[L,i.value]])]),_:1},512)])}}});export{ne as _};
|
|
@ -1 +1 @@
|
|||
import{K as U,B as K,C as N,Q as P,R,w as I,D as O,I as S,L as j,M as z,N as $}from"./element-plus.5df6f736.js";import{_ as q}from"./index.vue_vue_type_script_setup_true_lang.1938e45e.js";import{_ as J}from"./index.1f78e617.js";import{_ as M}from"./index.vue_vue_type_script_setup_true_lang.2b417e0a.js";import{d as w,_ as Q,o as r,c as b,T as e,K as o,a8 as G,u,U as H,a6 as W,L as X,J as h,a as m,R as p,S as B,O as Y,j as Z}from"./@vue.108c970a.js";import{g as ee,a as te}from"./finance.9455230a.js";import{u as oe}from"./useDictOptions.8d220934.js";import{u as ae}from"./usePaging.2a59f422.js";import"./@vueuse.d3d080b7.js";import"./@element-plus.d6eabd08.js";import"./lodash-es.29c53eac.js";import"./dayjs.50c3b6f7.js";import"./axios.c2a2014a.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./lodash.33f675f2.js";import"./vue-router.ed788fee.js";import"./pinia.eff1ffd5.js";import"./vue-demi.ebc8116b.js";import"./css-color-function.5d5b8bda.js";import"./color.da05fa89.js";import"./clone.06747a68.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.1c707d7b.js";import"./ms.a9ae1d6d.js";import"./nprogress.fc605139.js";import"./vue-clipboard3.dc900a40.js";import"./clipboard.6beb87aa.js";import"./echarts.8d7a50ae.js";import"./zrender.1084fa23.js";import"./tslib.60310f1a.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.241b9b5d.js";const ne=p("\u67E5\u8BE2"),le=p("\u91CD\u7F6E"),ue={class:"flex items-center"},ie={class:"flex justify-end mt-4"},se=w({name:"articleLists"}),We=w({...se,setup(re){const a=Q({user_info:"",change_type:"",start_time:"",end_time:""}),{pager:i,getLists:_,resetPage:c,resetParams:E}=ae({fetchFun:te,params:a}),{optionsData:C}=oe({change_type:{api:ee}});return _(),(me,n)=>{const D=U,v=K,s=N,d=P,y=R,x=M,f=I,V=O,g=S,l=j,T=J,A=z,k=q,L=$;return r(),b("div",null,[e(g,{class:"!border-none",shadow:"never"},{default:o(()=>[e(D,{type:"warning",title:"\u6E29\u99A8\u63D0\u793A\uFF1A\u7528\u6237\u8D26\u6237\u53D8\u52A8\u8BB0\u5F55",closable:!1,"show-icon":""}),e(V,{ref:"formRef",class:"mb-[-16px] mt-[16px]",model:a,inline:!0},{default:o(()=>[e(s,{label:"\u7528\u6237\u4FE1\u606F"},{default:o(()=>[e(v,{class:"w-[280px]",modelValue:a.user_info,"onUpdate:modelValue":n[0]||(n[0]=t=>a.user_info=t),placeholder:"\u8BF7\u8F93\u5165\u7528\u6237\u7F16\u53F7/\u6635\u79F0/\u624B\u673A\u53F7",clearable:"",onKeyup:G(u(c),["enter"])},null,8,["modelValue","onKeyup"])]),_:1}),e(s,{label:"\u53D8\u52A8\u7C7B\u578B"},{default:o(()=>[e(y,{class:"w-[280px]",modelValue:a.change_type,"onUpdate:modelValue":n[1]||(n[1]=t=>a.change_type=t)},{default:o(()=>[e(d,{label:"\u5168\u90E8",value:""}),(r(!0),b(H,null,W(u(C).change_type,(t,F)=>(r(),h(d,{key:F,label:t,value:F},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),e(s,{label:"\u8BB0\u5F55\u65F6\u95F4"},{default:o(()=>[e(x,{startTime:a.start_time,"onUpdate:startTime":n[2]||(n[2]=t=>a.start_time=t),endTime:a.end_time,"onUpdate:endTime":n[3]||(n[3]=t=>a.end_time=t)},null,8,["startTime","endTime"])]),_:1}),e(s,null,{default:o(()=>[e(f,{type:"primary",onClick:u(c)},{default:o(()=>[ne]),_:1},8,["onClick"]),e(f,{onClick:u(E)},{default:o(()=>[le]),_:1},8,["onClick"])]),_:1})]),_:1},8,["model"])]),_:1}),e(g,{class:"!border-none mt-4",shadow:"never"},{default:o(()=>[X((r(),h(A,{size:"large",data:u(i).lists},{default:o(()=>[e(l,{label:"\u7528\u6237\u7F16\u53F7",prop:"sn","min-width":"100"}),e(l,{label:"\u7528\u6237\u6635\u79F0","min-width":"160"},{default:o(({row:t})=>[m("div",ue,[e(T,{class:"flex-none mr-2",src:t.avatar,width:40,height:40,"preview-teleported":"",fit:"contain"},null,8,["src"]),p(" "+B(t.nickname),1)])]),_:1}),e(l,{label:"\u624B\u673A\u53F7\u7801",prop:"mobile","min-width":"100"}),e(l,{label:"\u53D8\u52A8\u91D1\u989D",prop:"change_amount","min-width":"100"},{default:o(({row:t})=>[m("span",{class:Y({"text-error":t.action==2})},B(t.change_amount),3)]),_:1}),e(l,{label:"\u5269\u4F59\u91D1\u989D",prop:"left_amount","min-width":"100"}),e(l,{label:"\u53D8\u52A8\u7C7B\u578B",prop:"change_type_desc","min-width":"120"}),e(l,{label:"\u6765\u6E90\u5355\u53F7",prop:"source_sn","min-width":"100"}),e(l,{label:"\u8BB0\u5F55\u65F6\u95F4",prop:"create_time","min-width":"120"})]),_:1},8,["data"])),[[L,u(i).loading]]),m("div",ie,[e(k,{modelValue:u(i),"onUpdate:modelValue":n[4]||(n[4]=t=>Z(i)?i.value=t:null),onChange:u(_)},null,8,["modelValue","onChange"])])]),_:1})])}}});export{We as default};
|
||||
import{K as U,B as K,C as N,Q as P,R,w as I,D as O,I as S,L as j,M as z,N as $}from"./element-plus.7a22678c.js";import{_ as q}from"./index.vue_vue_type_script_setup_true_lang.cabb2d32.js";import{_ as J}from"./index.bb590457.js";import{_ as M}from"./index.vue_vue_type_script_setup_true_lang.f8debc0c.js";import{d as w,_ as Q,o as r,c as b,T as e,K as o,a8 as G,u,U as H,a6 as W,L as X,J as h,a as m,R as p,S as B,O as Y,j as Z}from"./@vue.108c970a.js";import{g as ee,a as te}from"./finance.7666a466.js";import{u as oe}from"./useDictOptions.eb677e88.js";import{u as ae}from"./usePaging.2a59f422.js";import"./@vueuse.d3d080b7.js";import"./@element-plus.d6eabd08.js";import"./lodash-es.29c53eac.js";import"./dayjs.ff93117e.js";import"./axios.eb055ccc.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./lodash.ec5da75f.js";import"./vue-router.ed788fee.js";import"./pinia.eff1ffd5.js";import"./vue-demi.ebc8116b.js";import"./css-color-function.31dc130b.js";import"./color.b6d632a4.js";import"./clone.7a47b02c.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.3a33898e.js";import"./ms.a9ae1d6d.js";import"./nprogress.fa64f2fc.js";import"./vue-clipboard3.be0dfeee.js";import"./clipboard.824ba320.js";import"./echarts.8d7a50ae.js";import"./zrender.1084fa23.js";import"./tslib.60310f1a.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.241b9b5d.js";const ne=p("\u67E5\u8BE2"),le=p("\u91CD\u7F6E"),ue={class:"flex items-center"},ie={class:"flex justify-end mt-4"},se=w({name:"articleLists"}),We=w({...se,setup(re){const a=Q({user_info:"",change_type:"",start_time:"",end_time:""}),{pager:i,getLists:_,resetPage:c,resetParams:E}=ae({fetchFun:te,params:a}),{optionsData:C}=oe({change_type:{api:ee}});return _(),(me,n)=>{const D=U,v=K,s=N,d=P,y=R,x=M,f=I,V=O,g=S,l=j,T=J,A=z,k=q,L=$;return r(),b("div",null,[e(g,{class:"!border-none",shadow:"never"},{default:o(()=>[e(D,{type:"warning",title:"\u6E29\u99A8\u63D0\u793A\uFF1A\u7528\u6237\u8D26\u6237\u53D8\u52A8\u8BB0\u5F55",closable:!1,"show-icon":""}),e(V,{ref:"formRef",class:"mb-[-16px] mt-[16px]",model:a,inline:!0},{default:o(()=>[e(s,{label:"\u7528\u6237\u4FE1\u606F"},{default:o(()=>[e(v,{class:"w-[280px]",modelValue:a.user_info,"onUpdate:modelValue":n[0]||(n[0]=t=>a.user_info=t),placeholder:"\u8BF7\u8F93\u5165\u7528\u6237\u7F16\u53F7/\u6635\u79F0/\u624B\u673A\u53F7",clearable:"",onKeyup:G(u(c),["enter"])},null,8,["modelValue","onKeyup"])]),_:1}),e(s,{label:"\u53D8\u52A8\u7C7B\u578B"},{default:o(()=>[e(y,{class:"w-[280px]",modelValue:a.change_type,"onUpdate:modelValue":n[1]||(n[1]=t=>a.change_type=t)},{default:o(()=>[e(d,{label:"\u5168\u90E8",value:""}),(r(!0),b(H,null,W(u(C).change_type,(t,F)=>(r(),h(d,{key:F,label:t,value:F},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),e(s,{label:"\u8BB0\u5F55\u65F6\u95F4"},{default:o(()=>[e(x,{startTime:a.start_time,"onUpdate:startTime":n[2]||(n[2]=t=>a.start_time=t),endTime:a.end_time,"onUpdate:endTime":n[3]||(n[3]=t=>a.end_time=t)},null,8,["startTime","endTime"])]),_:1}),e(s,null,{default:o(()=>[e(f,{type:"primary",onClick:u(c)},{default:o(()=>[ne]),_:1},8,["onClick"]),e(f,{onClick:u(E)},{default:o(()=>[le]),_:1},8,["onClick"])]),_:1})]),_:1},8,["model"])]),_:1}),e(g,{class:"!border-none mt-4",shadow:"never"},{default:o(()=>[X((r(),h(A,{size:"large",data:u(i).lists},{default:o(()=>[e(l,{label:"\u7528\u6237\u7F16\u53F7",prop:"sn","min-width":"100"}),e(l,{label:"\u7528\u6237\u6635\u79F0","min-width":"160"},{default:o(({row:t})=>[m("div",ue,[e(T,{class:"flex-none mr-2",src:t.avatar,width:40,height:40,"preview-teleported":"",fit:"contain"},null,8,["src"]),p(" "+B(t.nickname),1)])]),_:1}),e(l,{label:"\u624B\u673A\u53F7\u7801",prop:"mobile","min-width":"100"}),e(l,{label:"\u53D8\u52A8\u91D1\u989D",prop:"change_amount","min-width":"100"},{default:o(({row:t})=>[m("span",{class:Y({"text-error":t.action==2})},B(t.change_amount),3)]),_:1}),e(l,{label:"\u5269\u4F59\u91D1\u989D",prop:"left_amount","min-width":"100"}),e(l,{label:"\u53D8\u52A8\u7C7B\u578B",prop:"change_type_desc","min-width":"120"}),e(l,{label:"\u6765\u6E90\u5355\u53F7",prop:"source_sn","min-width":"100"}),e(l,{label:"\u8BB0\u5F55\u65F6\u95F4",prop:"create_time","min-width":"120"})]),_:1},8,["data"])),[[L,u(i).loading]]),m("div",ie,[e(k,{modelValue:u(i),"onUpdate:modelValue":n[4]||(n[4]=t=>Z(i)?i.value=t:null),onChange:u(_)},null,8,["modelValue","onChange"])])]),_:1})])}}});export{We as default};
|
|
@ -1 +0,0 @@
|
|||
import"./bind.vue_vue_type_script_setup_true_name_landEdit_lang.8306c976.js";import{_ as O}from"./bind.vue_vue_type_script_setup_true_name_landEdit_lang.8306c976.js";import"./element-plus.5df6f736.js";import"./@vue.108c970a.js";import"./@vueuse.d3d080b7.js";import"./@element-plus.d6eabd08.js";import"./lodash-es.29c53eac.js";import"./dayjs.50c3b6f7.js";import"./axios.c2a2014a.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./useDictOptions.8d220934.js";import"./index.1f78e617.js";import"./lodash.33f675f2.js";import"./vue-router.ed788fee.js";import"./pinia.eff1ffd5.js";import"./vue-demi.ebc8116b.js";import"./css-color-function.5d5b8bda.js";import"./color.da05fa89.js";import"./clone.06747a68.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.1c707d7b.js";import"./ms.a9ae1d6d.js";import"./nprogress.fc605139.js";import"./vue-clipboard3.dc900a40.js";import"./clipboard.6beb87aa.js";import"./echarts.8d7a50ae.js";import"./zrender.1084fa23.js";import"./tslib.60310f1a.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.241b9b5d.js";import"./index.5f547370.js";import"./product.b8535e4b.js";export{O as default};
|
|
@ -0,0 +1 @@
|
|||
import"./bind.vue_vue_type_script_setup_true_name_landEdit_lang.31dfd6b1.js";import{_ as N}from"./bind.vue_vue_type_script_setup_true_name_landEdit_lang.31dfd6b1.js";import"./element-plus.7a22678c.js";import"./@vue.108c970a.js";import"./@vueuse.d3d080b7.js";import"./@element-plus.d6eabd08.js";import"./lodash-es.29c53eac.js";import"./dayjs.ff93117e.js";import"./axios.eb055ccc.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.3956bbcf.js";import"./index.bb590457.js";import"./lodash.ec5da75f.js";import"./vue-router.ed788fee.js";import"./pinia.eff1ffd5.js";import"./vue-demi.ebc8116b.js";import"./css-color-function.31dc130b.js";import"./color.b6d632a4.js";import"./clone.7a47b02c.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.3a33898e.js";import"./ms.a9ae1d6d.js";import"./nprogress.fa64f2fc.js";import"./vue-clipboard3.be0dfeee.js";import"./clipboard.824ba320.js";import"./echarts.8d7a50ae.js";import"./zrender.1084fa23.js";import"./tslib.60310f1a.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.241b9b5d.js";import"./land.e99066e6.js";export{N as default};
|
|
@ -1 +0,0 @@
|
|||
import"./bind.vue_vue_type_script_setup_true_name_landEdit_lang.d3a4505a.js";import{_ as O}from"./bind.vue_vue_type_script_setup_true_name_landEdit_lang.d3a4505a.js";import"./element-plus.5df6f736.js";import"./@vue.108c970a.js";import"./@vueuse.d3d080b7.js";import"./@element-plus.d6eabd08.js";import"./lodash-es.29c53eac.js";import"./dayjs.50c3b6f7.js";import"./axios.c2a2014a.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./useDictOptions.8d220934.js";import"./index.1f78e617.js";import"./lodash.33f675f2.js";import"./vue-router.ed788fee.js";import"./pinia.eff1ffd5.js";import"./vue-demi.ebc8116b.js";import"./css-color-function.5d5b8bda.js";import"./color.da05fa89.js";import"./clone.06747a68.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.1c707d7b.js";import"./ms.a9ae1d6d.js";import"./nprogress.fc605139.js";import"./vue-clipboard3.dc900a40.js";import"./clipboard.6beb87aa.js";import"./echarts.8d7a50ae.js";import"./zrender.1084fa23.js";import"./tslib.60310f1a.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.241b9b5d.js";import"./index.5f547370.js";import"./land.814edfce.js";export{O as default};
|
|
@ -0,0 +1 @@
|
|||
import"./bind.vue_vue_type_script_setup_true_name_landEdit_lang.ed20e5af.js";import{_ as N}from"./bind.vue_vue_type_script_setup_true_name_landEdit_lang.ed20e5af.js";import"./element-plus.7a22678c.js";import"./@vue.108c970a.js";import"./@vueuse.d3d080b7.js";import"./@element-plus.d6eabd08.js";import"./lodash-es.29c53eac.js";import"./dayjs.ff93117e.js";import"./axios.eb055ccc.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.3956bbcf.js";import"./index.bb590457.js";import"./lodash.ec5da75f.js";import"./vue-router.ed788fee.js";import"./pinia.eff1ffd5.js";import"./vue-demi.ebc8116b.js";import"./css-color-function.31dc130b.js";import"./color.b6d632a4.js";import"./clone.7a47b02c.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.3a33898e.js";import"./ms.a9ae1d6d.js";import"./nprogress.fa64f2fc.js";import"./vue-clipboard3.be0dfeee.js";import"./clipboard.824ba320.js";import"./echarts.8d7a50ae.js";import"./zrender.1084fa23.js";import"./tslib.60310f1a.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.241b9b5d.js";import"./product.6d9e1810.js";export{N as default};
|
|
@ -0,0 +1 @@
|
|||
import{B as P,C as x,Q as I,R as L,D as U}from"./element-plus.7a22678c.js";import{P as O}from"./index.3956bbcf.js";import{a as $,b as S}from"./land.e99066e6.js";import"./lodash.ec5da75f.js";import{d as E,s as v,r as i,b as T,_ as F,o as p,c as b,T as a,K as s,u as j,U as q,a6 as J,J as K}from"./@vue.108c970a.js";const N={class:"edit-popup"},Q=E({name:"landEdit"}),Z=E({...Q,props:{dictData:{type:Object,default:()=>({})}},emits:["success","close"],setup(z,{expose:D,emit:m}){const f=v(),d=v(),_=i("add"),B=T(()=>_.value="\u7ED1\u5B9A\u4EA7\u54C1"),o=F({id:"",title:"",product_id:""}),y=F({product_id:[{required:!0,message:"\u8BF7\u9009\u62E9\u7ED1\u5B9A\u4EA7\u54C1",trigger:["blur"]}]}),C=async l=>{for(const e in o)l[e]!=null&&l[e]!=null&&(o[e]=l[e])},n=i([]),r=i(!1),V=async l=>{if(l){r.value=!0;const e=await S({name:l});r.value=!1,e.count>0?n.value=e.lists.map(t=>({value:`${t.id}`,label:`ID: ${t.id} / \u540D\u79F0: ${t.name}`})):n.value=[],r.value=!1}else n.value=[]},g=async()=>{var e,t;await((e=f.value)==null?void 0:e.validate());const l={...o};await $(l),(t=d.value)==null||t.close(),m("success")},k=(l="add")=>{var e;_.value=l,(e=d.value)==null||e.open()},w=()=>{m("close")};return D({open:k,setFormData:C,setProduct:async l=>{console.log(l)}}),(l,e)=>{const t=P,c=x,A=I,R=L,h=U;return p(),b("div",N,[a(O,{ref_key:"popupRef",ref:d,title:j(B),async:!0,width:"650px",onConfirm:g,onClose:w},{default:s(()=>[a(h,{ref_key:"formRef",ref:f,model:o,"label-width":"120px",rules:y},{default:s(()=>[a(c,{label:"\u571F\u5730ID",prop:"id"},{default:s(()=>[a(t,{modelValue:o.id,"onUpdate:modelValue":e[0]||(e[0]=u=>o.id=u),disabled:"",clearable:"",placeholder:"\u8BF7\u8F93\u5165\u571F\u5730ID"},null,8,["modelValue"])]),_:1}),a(c,{label:"\u571F\u5730\u540D\u79F0",prop:"title"},{default:s(()=>[a(t,{modelValue:o.title,"onUpdate:modelValue":e[1]||(e[1]=u=>o.title=u),disabled:"",clearable:"",placeholder:"\u8BF7\u8F93\u5165\u571F\u5730\u540D\u79F0"},null,8,["modelValue"])]),_:1}),a(c,{label:"\u7ED1\u5B9A\u4EA7\u54C1",prop:"product_id"},{default:s(()=>[a(R,{modelValue:o.product_id,"onUpdate:modelValue":e[2]||(e[2]=u=>o.product_id=u),filterable:"",remote:"","reserve-keyword":"",placeholder:"\u8BF7\u8F93\u5165\u4EA7\u54C1\u4FE1\u606F","remote-method":V,loading:r.value},{default:s(()=>[(p(!0),b(q,null,J(n.value,u=>(p(),K(A,{key:u.value,label:u.label,value:u.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","loading"])]),_:1})]),_:1},8,["model","rules"])]),_:1},8,["title"])])}}});export{Z as _};
|
|
@ -1 +0,0 @@
|
|||
import{B as L,C as O,Q as P,R as S,D as T}from"./element-plus.5df6f736.js";import{u as j}from"./useDictOptions.8d220934.js";import{P as J}from"./index.5f547370.js";import{a as _,b as K}from"./product.b8535e4b.js";import"./lodash.33f675f2.js";import{d as F,s as v,r as B,b as N,_ as E,o as r,c as b,T as t,K as u,u as D,U as Q,a6 as z,J as G}from"./@vue.108c970a.js";const H={class:"edit-popup"},M=F({name:"landEdit"}),oe=F({...M,props:{dictData:{type:Object,default:()=>({})}},emits:["success","close"],setup(W,{expose:C,emit:c}){const p=v(),n=v(),m=B("add"),V=N(()=>m.value="\u7ED1\u5B9A\u8BBE\u5907"),l=E({id:"",name:"",device_id:""}),k=E({device_id:[{required:!0,message:"\u8BF7\u9009\u62E9\u7ED1\u5B9A\u8BBE\u5907",trigger:["blur"]}]}),w=async o=>{for(const e in l)o[e]!=null&&o[e]!=null&&(l[e]=o[e])},{optionsData:f}=j({device:{api:_}}),d=B(!1),g=async o=>{d.value=!0;const e=await _({name:o!=null?o:""});f.device=e,d.value=!1},y=async()=>{var e,s;await((e=p.value)==null?void 0:e.validate());const o={...l};await K(o),(s=n.value)==null||s.close(),c("success")},A=(o="add")=>{var e;m.value=o,(e=n.value)==null||e.open()},R=()=>{c("close")};return C({open:A,setFormData:w}),(o,e)=>{const s=L,i=O,h=P,x=S,I=T;return r(),b("div",H,[t(J,{ref_key:"popupRef",ref:n,title:D(V),async:!0,width:"650px",onConfirm:y,onClose:R},{default:u(()=>[t(I,{ref_key:"formRef",ref:p,model:l,"label-width":"120px",rules:k},{default:u(()=>[t(i,{label:"\u4EA7\u54C1ID",prop:"id"},{default:u(()=>[t(s,{modelValue:l.id,"onUpdate:modelValue":e[0]||(e[0]=a=>l.id=a),disabled:"",clearable:"",placeholder:"\u8BF7\u8F93\u5165\u4EA7\u54C1ID"},null,8,["modelValue"])]),_:1}),t(i,{label:"\u4EA7\u54C1\u540D\u79F0",prop:"name"},{default:u(()=>[t(s,{modelValue:l.name,"onUpdate:modelValue":e[1]||(e[1]=a=>l.name=a),disabled:"",clearable:"",placeholder:"\u8BF7\u8F93\u5165\u4EA7\u54C1\u540D\u79F0"},null,8,["modelValue"])]),_:1}),t(i,{label:"\u7ED1\u5B9A\u8BBE\u5907",prop:"device_id"},{default:u(()=>[t(x,{modelValue:l.device_id,"onUpdate:modelValue":e[2]||(e[2]=a=>l.device_id=a),filterable:"",multiple:"",remote:"","reserve-keyword":"",placeholder:"\u8BF7\u8F93\u5165\u8BBE\u5907\u4FE1\u606F","remote-method":g,loading:d.value},{default:u(()=>[(r(!0),b(Q,null,z(D(f).device,(a,U)=>(r(),G(h,{key:U,label:a.deviceinfo,value:a.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue","loading"])]),_:1})]),_:1},8,["model","rules"])]),_:1},8,["title"])])}}});export{oe as _};
|
|
@ -1 +0,0 @@
|
|||
import{B as L,C as U,Q as O,R as S,D as T}from"./element-plus.5df6f736.js";import{u as j}from"./useDictOptions.8d220934.js";import{P as J}from"./index.5f547370.js";import{a as _,b as K}from"./land.814edfce.js";import"./lodash.33f675f2.js";import{d as B,s as F,r as b,b as N,_ as E,o as p,c as v,T as u,K as a,u as D,U as Q,a6 as z,J as G}from"./@vue.108c970a.js";const H={class:"edit-popup"},M=B({name:"landEdit"}),te=B({...M,props:{dictData:{type:Object,default:()=>({})}},emits:["success","close"],setup(W,{expose:C,emit:c}){const i=F(),n=F(),m=b("add"),V=N(()=>m.value="\u7ED1\u5B9A\u4EA7\u54C1"),t=E({id:"",title:"",product_id:""}),g=E({product_id:[{required:!0,message:"\u8BF7\u9009\u62E9\u7ED1\u5B9A\u4EA7\u54C1",trigger:["blur"]}]}),k=async o=>{for(const e in t)o[e]!=null&&o[e]!=null&&(t[e]=o[e])},{optionsData:f}=j({product:{api:_}}),d=b(!1),w=async o=>{d.value=!0;const e=await _({name:o!=null?o:""});f.product=e,d.value=!1},y=async()=>{var e,s;await((e=i.value)==null?void 0:e.validate());const o={...t};await K(o),(s=n.value)==null||s.close(),c("success")},A=(o="add")=>{var e;m.value=o,(e=n.value)==null||e.open()},R=()=>{c("close")};return C({open:A,setFormData:k,setProduct:async o=>{console.log(o)}}),(o,e)=>{const s=L,r=U,h=O,P=S,x=T;return p(),v("div",H,[u(J,{ref_key:"popupRef",ref:n,title:D(V),async:!0,width:"650px",onConfirm:y,onClose:R},{default:a(()=>[u(x,{ref_key:"formRef",ref:i,model:t,"label-width":"120px",rules:g},{default:a(()=>[u(r,{label:"\u571F\u5730ID",prop:"id"},{default:a(()=>[u(s,{modelValue:t.id,"onUpdate:modelValue":e[0]||(e[0]=l=>t.id=l),disabled:"",clearable:"",placeholder:"\u8BF7\u8F93\u5165\u571F\u5730ID"},null,8,["modelValue"])]),_:1}),u(r,{label:"\u571F\u5730\u540D\u79F0",prop:"title"},{default:a(()=>[u(s,{modelValue:t.title,"onUpdate:modelValue":e[1]||(e[1]=l=>t.title=l),disabled:"",clearable:"",placeholder:"\u8BF7\u8F93\u5165\u571F\u5730\u540D\u79F0"},null,8,["modelValue"])]),_:1}),u(r,{label:"\u7ED1\u5B9A\u4EA7\u54C1",prop:"product_id"},{default:a(()=>[u(P,{modelValue:t.product_id,"onUpdate:modelValue":e[2]||(e[2]=l=>t.product_id=l),remote:"",filterable:"",placeholder:"\u8BF7\u8F93\u5165\u4EA7\u54C1\u4FE1\u606F","remote-method":w,loading:d.value},{default:a(()=>[(p(!0),v(Q,null,z(D(f).product,(l,I)=>(p(),G(h,{key:I,label:l.productinfo,value:l.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue","loading"])]),_:1})]),_:1},8,["model","rules"])]),_:1},8,["title"])])}}});export{te as _};
|
|
@ -0,0 +1 @@
|
|||
import{B as x,C as I,Q as U,R as L,D as O}from"./element-plus.7a22678c.js";import{P}from"./index.3956bbcf.js";import{a as $,b as S}from"./product.6d9e1810.js";import"./lodash.ec5da75f.js";import{d as b,s as v,r as c,b as T,_ as B,o as p,c as E,T as t,K as s,u as j,U as q,a6 as J,J as K}from"./@vue.108c970a.js";const N={class:"edit-popup"},Q=b({name:"landEdit"}),Y=b({...Q,props:{dictData:{type:Object,default:()=>({})}},emits:["success","close"],setup(z,{expose:F,emit:m}){const f=v(),r=v(),_=c("add"),D=T(()=>_.value="\u7ED1\u5B9A\u8BBE\u5907"),a=B({id:"",name:"",device_id:""}),y=B({device_id:[{required:!0,message:"\u8BF7\u9009\u62E9\u7ED1\u5B9A\u8BBE\u5907",trigger:["blur"]}]}),C=async l=>{for(const e in a)l[e]!=null&&l[e]!=null&&(a[e]=l[e])},n=c([]),d=c(!1),V=async l=>{if(l){d.value=!0;const e=await S({name:l});d.value=!1,e.count>0?n.value=e.lists.map(o=>({value:`${o.id}`,label:`ID: ${o.id} / \u540D\u79F0: ${o.name}`})):n.value=[],d.value=!1}else n.value=[]},k=async()=>{var e,o;await((e=f.value)==null?void 0:e.validate());const l={...a};await $(l),(o=r.value)==null||o.close(),m("success")},w=(l="add")=>{var e;_.value=l,(e=r.value)==null||e.open()},g=()=>{m("close")};return F({open:w,setFormData:C}),(l,e)=>{const o=x,i=I,A=U,R=L,h=O;return p(),E("div",N,[t(P,{ref_key:"popupRef",ref:r,title:j(D),async:!0,width:"650px",onConfirm:k,onClose:g},{default:s(()=>[t(h,{ref_key:"formRef",ref:f,model:a,"label-width":"120px",rules:y},{default:s(()=>[t(i,{label:"\u4EA7\u54C1ID",prop:"id"},{default:s(()=>[t(o,{modelValue:a.id,"onUpdate:modelValue":e[0]||(e[0]=u=>a.id=u),disabled:"",clearable:"",placeholder:"\u8BF7\u8F93\u5165\u4EA7\u54C1ID"},null,8,["modelValue"])]),_:1}),t(i,{label:"\u4EA7\u54C1\u540D\u79F0",prop:"name"},{default:s(()=>[t(o,{modelValue:a.name,"onUpdate:modelValue":e[1]||(e[1]=u=>a.name=u),disabled:"",clearable:"",placeholder:"\u8BF7\u8F93\u5165\u4EA7\u54C1\u540D\u79F0"},null,8,["modelValue"])]),_:1}),t(i,{label:"\u7ED1\u5B9A\u8BBE\u5907",prop:"device_id"},{default:s(()=>[t(R,{modelValue:a.device_id,"onUpdate:modelValue":e[2]||(e[2]=u=>a.device_id=u),filterable:"",multiple:"",remote:"","reserve-keyword":"",placeholder:"\u8BF7\u8F93\u5165\u8BBE\u5907\u4FE1\u606F","remote-method":V,loading:d.value},{default:s(()=>[(p(!0),E(q,null,J(n.value,u=>(p(),K(A,{key:u.value,label:u.label,value:u.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","loading"])]),_:1})]),_:1},8,["model","rules"])]),_:1},8,["title"])])}}});export{Y as _};
|
|
@ -1 +1 @@
|
|||
import{K as s,I as c,L as l,w as _,M as d}from"./element-plus.5df6f736.js";import{s as F}from"./system.3931f2c5.js";import{f as B}from"./index.1f78e617.js";import{d as r,r as E,o as C,c as f,T as t,K as o,R as h}from"./@vue.108c970a.js";import"./@vueuse.d3d080b7.js";import"./@element-plus.d6eabd08.js";import"./lodash-es.29c53eac.js";import"./dayjs.50c3b6f7.js";import"./axios.c2a2014a.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./lodash.33f675f2.js";import"./vue-router.ed788fee.js";import"./pinia.eff1ffd5.js";import"./vue-demi.ebc8116b.js";import"./css-color-function.5d5b8bda.js";import"./color.da05fa89.js";import"./clone.06747a68.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.1c707d7b.js";import"./ms.a9ae1d6d.js";import"./nprogress.fc605139.js";import"./vue-clipboard3.dc900a40.js";import"./clipboard.6beb87aa.js";import"./echarts.8d7a50ae.js";import"./zrender.1084fa23.js";import"./tslib.60310f1a.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.241b9b5d.js";const b={class:"cache"},D=h("\u6E05\u9664\u7CFB\u7EDF\u7F13\u5B58"),w=r({name:"cache"}),nt=r({...w,setup(A){const a=E([{content:"\u7CFB\u7EDF\u7F13\u5B58",desc:"\u7CFB\u7EDF\u8FD0\u884C\u8FC7\u7A0B\u4E2D\u4EA7\u751F\u7684\u5404\u7C7B\u7F13\u5B58\u6570\u636E"}]),i=async()=>{await B.confirm("\u786E\u8BA4\u6E05\u9664\u7CFB\u7EDF\u7F13\u5B58\uFF1F"),await F()};return(k,x)=>{const m=s,u=c,e=l,n=_,p=d;return C(),f("div",b,[t(u,{class:"!border-none",shadow:"never"},{default:o(()=>[t(m,{type:"warning",title:"\u6E29\u99A8\u63D0\u793A\uFF1A\u7BA1\u7406\u7CFB\u7EDF\u8FD0\u884C\u8FC7\u7A0B\u4E2D\u4EA7\u751F\u7684\u7F13\u5B58",closable:!1,"show-icon":""})]),_:1}),t(u,{class:"!border-none mt-4",shadow:"never"},{default:o(()=>[t(p,{data:a.value,size:"large"},{default:o(()=>[t(e,{label:"\u7BA1\u7406\u5185\u5BB9",prop:"content","min-width":"130"}),t(e,{label:"\u5185\u5BB9\u8BF4\u660E",prop:"desc","min-width":"180"}),t(e,{label:"\u64CD\u4F5C",width:"130",fixed:"right"},{default:o(()=>[t(n,{type:"primary",link:"",onClick:i},{default:o(()=>[D]),_:1})]),_:1})]),_:1},8,["data"])]),_:1})])}}});export{nt as default};
|
||||
import{K as s,I as c,L as l,w as _,M as d}from"./element-plus.7a22678c.js";import{s as F}from"./system.55a0a8dd.js";import{f as B}from"./index.bb590457.js";import{d as r,r as E,o as C,c as f,T as t,K as o,R as h}from"./@vue.108c970a.js";import"./@vueuse.d3d080b7.js";import"./@element-plus.d6eabd08.js";import"./lodash-es.29c53eac.js";import"./dayjs.ff93117e.js";import"./axios.eb055ccc.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./lodash.ec5da75f.js";import"./vue-router.ed788fee.js";import"./pinia.eff1ffd5.js";import"./vue-demi.ebc8116b.js";import"./css-color-function.31dc130b.js";import"./color.b6d632a4.js";import"./clone.7a47b02c.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.3a33898e.js";import"./ms.a9ae1d6d.js";import"./nprogress.fa64f2fc.js";import"./vue-clipboard3.be0dfeee.js";import"./clipboard.824ba320.js";import"./echarts.8d7a50ae.js";import"./zrender.1084fa23.js";import"./tslib.60310f1a.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.241b9b5d.js";const b={class:"cache"},D=h("\u6E05\u9664\u7CFB\u7EDF\u7F13\u5B58"),w=r({name:"cache"}),nt=r({...w,setup(A){const a=E([{content:"\u7CFB\u7EDF\u7F13\u5B58",desc:"\u7CFB\u7EDF\u8FD0\u884C\u8FC7\u7A0B\u4E2D\u4EA7\u751F\u7684\u5404\u7C7B\u7F13\u5B58\u6570\u636E"}]),i=async()=>{await B.confirm("\u786E\u8BA4\u6E05\u9664\u7CFB\u7EDF\u7F13\u5B58\uFF1F"),await F()};return(k,x)=>{const m=s,u=c,e=l,n=_,p=d;return C(),f("div",b,[t(u,{class:"!border-none",shadow:"never"},{default:o(()=>[t(m,{type:"warning",title:"\u6E29\u99A8\u63D0\u793A\uFF1A\u7BA1\u7406\u7CFB\u7EDF\u8FD0\u884C\u8FC7\u7A0B\u4E2D\u4EA7\u751F\u7684\u7F13\u5B58",closable:!1,"show-icon":""})]),_:1}),t(u,{class:"!border-none mt-4",shadow:"never"},{default:o(()=>[t(p,{data:a.value,size:"large"},{default:o(()=>[t(e,{label:"\u7BA1\u7406\u5185\u5BB9",prop:"content","min-width":"130"}),t(e,{label:"\u5185\u5BB9\u8BF4\u660E",prop:"desc","min-width":"180"}),t(e,{label:"\u64CD\u4F5C",width:"130",fixed:"right"},{default:o(()=>[t(n,{type:"primary",link:"",onClick:i},{default:o(()=>[D]),_:1})]),_:1})]),_:1},8,["data"])]),_:1})])}}});export{nt as default};
|
|
@ -1,4 +1,4 @@
|
|||
import{c as $,g as B}from"./axios.c2a2014a.js";var R={exports:{}};/*!
|
||||
import{c as $,g as B}from"./axios.eb055ccc.js";var R={exports:{}};/*!
|
||||
* clipboard.js v2.0.11
|
||||
* https://clipboardjs.com/
|
||||
*
|
|
@ -0,0 +1 @@
|
|||
import"./code-preview.vue_vue_type_script_setup_true_lang.d2a1da0d.js";import{_ as L}from"./code-preview.vue_vue_type_script_setup_true_lang.d2a1da0d.js";import"./element-plus.7a22678c.js";import"./@vue.108c970a.js";import"./@vueuse.d3d080b7.js";import"./@element-plus.d6eabd08.js";import"./lodash-es.29c53eac.js";import"./dayjs.ff93117e.js";import"./axios.eb055ccc.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.bb590457.js";import"./lodash.ec5da75f.js";import"./vue-router.ed788fee.js";import"./pinia.eff1ffd5.js";import"./vue-demi.ebc8116b.js";import"./css-color-function.31dc130b.js";import"./color.b6d632a4.js";import"./clone.7a47b02c.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.3a33898e.js";import"./ms.a9ae1d6d.js";import"./nprogress.fa64f2fc.js";import"./vue-clipboard3.be0dfeee.js";import"./clipboard.824ba320.js";import"./echarts.8d7a50ae.js";import"./zrender.1084fa23.js";import"./tslib.60310f1a.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.241b9b5d.js";export{L as default};
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue