Compare commits

...

7 Commits

@ -1,152 +1,171 @@
<script> <script>
import config from "./config"; import config from "./config";
import store from "@/store"; import store from "@/store";
import { getToken, setToken, removeToken } from "@/utils/auth"; import {
import { getSqByaccesstoken, getUserinfo } from "@/api/jn/login.js"; getToken,
import permision from "@/utils/permission.js"; setToken,
export default { removeToken
onLaunch: function () { } from "@/utils/auth";
console.log("初始化进入"); import {
this.initApp(); getSqByaccesstoken,
//#ifdef APP-PLUS getUserinfo
this.requestAndroidPermission("android.permission.ACCESS_FINE_LOCATION"); } from "@/api/jn/login.js";
this.requestAndroidPermission("android.permission.CAMERA"); import permision from "@/utils/permission.js";
this.requestAndroidPermission("android.permission.READ_EXTERNAL_STORAGE"); export default {
this.requestAndroidPermission("android.permission.RECORD_AUDIO"); onLaunch: function() {
//#endif console.log("初始化进入");
removeToken(); this.initApp();
}, //#ifdef APP-PLUS
onShow() { this.requestAndroidPermission("android.permission.ACCESS_FINE_LOCATION");
console.log("onShow"); this.requestAndroidPermission("android.permission.CAMERA");
}, this.requestAndroidPermission("android.permission.READ_EXTERNAL_STORAGE");
methods: { this.requestAndroidPermission("android.permission.RECORD_AUDIO");
// //#endif
initApp() { removeToken();
// },
this.initConfig(); onShow() {
// console.log("onShow");
// // #ifdef APP || H5 },
this.checkLogin(); methods: {
// //#endif //
}, initApp() {
initConfig() { //
this.globalData.config = config; this.initConfig();
}, //
checkLogin() { // // #ifdef APP || H5
const launchOptions = uni.getLaunchOptionsSync(); this.checkLogin();
const { query } = launchOptions; // //#endif
console.log(query, "query"); },
// console.log(Object.keys(query).length,"query.lengh"); initConfig() {
console.log(getToken(), "getToken()"); this.globalData.config = config;
if (!getToken()) { },
if (Object.keys(query).length !== 0) { checkLogin() {
console.log("获取query"); // const launchOptions = uni.getLaunchOptionsSync();
// let params = this.getRequestParams(); // const { query } = launchOptions;
// console.log(params,"params"); // console.log(query, "query");
// if (location.href.includes("code=")) { // console.log(Object.keys(query).length,"query.lengh");
const code = query.code; // console.log(getToken(), "getToken()");
const token = query.token; // if (!getToken()) {
uni.setStorageSync("token", token); // if (Object.keys(query).length !== 0) {
// console.log(code,"code"); // console.log("query");
// console.log(token,"token"); // // let params = this.getRequestParams();
getSqByaccesstoken({ // // console.log(params,"params");
code: code, // // if (location.href.includes("code=")) {
}) // const code = query.code;
.then((res) => { // const token = query.token;
// console.log("accessToken"); // uni.setStorageSync("token", token);
uni.setStorageSync("accessToken", res.data.accessToken); // // console.log(code,"code");
return getUserinfo({ // // console.log(token,"token");
accessToken: res.data.accessToken, // getSqByaccesstoken({
}); // code: code,
}) // })
.then((el) => { // .then((res) => {
this.$tab.switchTab("/pages/index"); // // console.log("accessToken");
uni.setStorageSync("userInfo", el.data); // uni.setStorageSync("accessToken", res.data.accessToken);
setToken(el.data.token); // return getUserinfo({
// location.reload(); // accessToken: res.data.accessToken,
console.log("用户信息", el); // });
}); // })
// } // .then((el) => {
} else { // this.$tab.switchTab("/pages/index");
// // #ifdef APP // uni.setStorageSync("userInfo", el.data);
console.log("进入APP判断"); // setToken(el.data.token);
// this.$tab.reLaunch("/pages/myLogin"); // // location.reload();
uni.reLaunch({ // console.log("", el);
url: "/pages/myLogin", // });
}); // // }
// url // } else {
// plus.runtime.openURL( "https://t-jn-development-manager.jsszkd.com/login?clientId=641775453324", this.openErr ); // // // #ifdef APP
// // #endif // console.log("APP");
// // #ifdef H5 // // this.$tab.reLaunch("/pages/myLogin");
// location.href = `https://t-jn-development-manager.jsszkd.com/login?clientId=641775453324` // uni.reLaunch({
// // #endif // url: "/pages/myLogin",
// });
console.log("Before navigateTo or reLaunch"); // // url
// this.$tab.reLaunch("/pages/myLogin"); // // plus.runtime.openURL( "https://t-jn-development-manager.jsszkd.com/login?clientId=641775453324", this.openErr );
// uni.navigateTo({ // // // #endif
// url:'https://t-jn-development-manager.jsszkd.com/login?clientId=641775453324' // // // #ifdef H5
// }) // // location.href = `https://t-jn-development-manager.jsszkd.com/login?clientId=641775453324`
} // // // #endif
} else {
this.$tab.reLaunch("/pages/index"); // console.log("Before navigateTo or reLaunch");
} // // this.$tab.reLaunch("/pages/myLogin");
}, // // uni.navigateTo({
openErr(err) { // // url:'https://t-jn-development-manager.jsszkd.com/login?clientId=641775453324'
console.log(err, "报错信息"); // // })
}, // }
// // } else {
getRequestParams() { // this.$tab.reLaunch("/pages/index");
let url = location.href; // }
let requestParams = {}; },
if (url.indexOf("?") !== -1) { openErr(err) {
let str = url.substr(url.indexOf("?") + 1); //? console.log(err, "报错信息");
// console.log(str, '?'); },
let strs = str.split("&"); //& //
// console.log(strs, '&'); getRequestParams() {
for (let i = 0; i < strs.length; i++) { let url = location.href;
requestParams[strs[i].split("=")[0]] = decodeURI( let requestParams = {};
strs[i].split("=")[1] if (url.indexOf("?") !== -1) {
); let str = url.substr(url.indexOf("?") + 1); //?
// '=''=' // console.log(str, '?');
} let strs = str.split("&"); //&
} // console.log(strs, '&');
// console.log(requestParams, ''); for (let i = 0; i < strs.length; i++) {
return requestParams; requestParams[strs[i].split("=")[0]] = decodeURI(
}, strs[i].split("=")[1]
async requestAndroidPermission(permisionID) { );
var result = await permision.requestAndroidPermission(permisionID); // '=''='
var strStatus; }
if (result == 1) { }
strStatus = "已获得授权"; // console.log(requestParams, '');
} else if (result == 0) { return requestParams;
strStatus = "未获得授权"; },
uni.showModal({ async requestAndroidPermission(permisionID) {
content: "请在设置中打卡相机、麦克风、相册、定位权限", var result = await permision.requestAndroidPermission(permisionID);
showCancel: false, var strStatus;
}); if (result == 1) {
console.warn("权限:" + permisionID + strStatus); strStatus = "已获得授权";
// App } else if (result == 0) {
this.gotoAppPermissionSetting(); strStatus = "未获得授权";
} else { uni.showModal({
strStatus = "被永久拒绝权限"; content: "请在设置中打卡相机、麦克风、相册、定位权限",
uni.showModal({ showCancel: false,
content: "请在设置中打卡相机、麦克风、相册、定位权限", });
showCancel: false, console.warn("权限:" + permisionID + strStatus);
}); // App
console.warn("权限:" + permisionID + strStatus); this.gotoAppPermissionSetting();
// App } else {
this.gotoAppPermissionSetting(); strStatus = "被永久拒绝权限";
} uni.showModal({
}, content: "请在设置中打卡相机、麦克风、相册、定位权限",
gotoAppPermissionSetting: function () { showCancel: false,
permision.gotoAppPermissionSetting(); });
}, console.warn("权限:" + permisionID + strStatus);
}, // App
}; this.gotoAppPermissionSetting();
</script> }
},
<style lang="scss"> gotoAppPermissionSetting: function() {
/* 注意要写在第一行同时给style标签加入lang="scss"属性 */ permision.gotoAppPermissionSetting();
@import "@/uni_modules/uview-ui/index.scss"; },
@import "@/static/scss/index.scss"; },
</style> };
</script>
<style lang="scss">
/* 注意要写在第一行同时给style标签加入lang="scss"属性 */
@import "@/uni_modules/uview-ui/index.scss";
@import "@/static/scss/index.scss";
.mytext {
h4 {
strong {
display: block;
/* 将 <strong> 标签转换为块级元素 */
text-indent: 2em;
// text-align: center;
}
}
}
</style>

@ -7,8 +7,22 @@ export function listActivity(query) {
method: "get", method: "get",
params: query, params: query,
}); });
}
//门前三包评级规则
export function listraterule(query) {
return request({
url: "/jn/raterule/list",
method: "get",
params: query,
});
}
export function listysfwlist(query) {
return request({
url: "/jn/ysfw/list",
method: "get",
params: query,
});
} }
// 查询活动申请详细 // 查询活动申请详细
export function getActivity(id) { export function getActivity(id) {
return request({ return request({
@ -41,4 +55,11 @@ export function delActivity(id) {
url: "/jn/activity/" + id, url: "/jn/activity/" + id,
method: "delete", method: "delete",
}); });
}
//获取沿街店铺列表详细信息
export function jnshop(id) {
return request({
url: "/jn/shop/" + id,
method: "GET",
});
} }

@ -42,3 +42,36 @@ export function delNews(id) {
method: 'delete' method: 'delete'
}) })
} }
// 根据商家id清空该商家所有的消息
export function deleteShopId(id) {
return request({
url: '/jn/news/deleteShopId/' + id,
method: 'get'
})
}
// 根据商家id查询该商家所有的消息
export function shopIdlist(params) {
return request({
url: '/jn/news/shopIdlist',
method: 'get',
params
})
}
// 某条商家端消息进行已读
export function getInfoShop(id) {
return request({
url: '/jn/news/getInfoShop/' + id,
method: 'get'
})
}
// 根据商家id查询未读消息个数
export function isLookCount(id) {
return request({
url: '/jn/news/isLookCount/' + id,
method: 'get'
})
}

@ -44,6 +44,7 @@
/* 兼容 iOS < 11.2 */ /* 兼容 iOS < 11.2 */
padding: 20rpx 20rpx calc(20rpx + env(safe-area-inset-bottom)); padding: 20rpx 20rpx calc(20rpx + env(safe-area-inset-bottom));
/* 兼容 iOS >= 11.2 */ /* 兼容 iOS >= 11.2 */
border-top: 1px solid #DCE3EC; border-top: 1px solid #DCE3EC;
z-index: 3;
} }
</style> </style>

@ -1,8 +1,10 @@
// 应用全局配置 // 应用全局配置
module.exports = { module.exports = {
// baseUrl: "http://39.101.188.84:9037",
TEST_LOGIN:"https://t-jn-development-manager.jsszkd.com/login", // ?clientId= TEST_LOGIN:"https://t-jn-development-manager.jsszkd.com/login", // ?clientId=
baseUrl: "https://t-jn-bjh-admin-server.jsszkd.com", // baseUrl: "https://t-jn-bjh-admin-server.jsszkd.com",
baseUrl: "https://bjh.jndz.cn/bjh-admin-server",
// baseUrl: "http://192.168.0.107:9037",
// baseUrl: "http://10.236.2.28:54567/bjh-admin-server",
// 应用信息 // 应用信息
appInfo: { appInfo: {

@ -11,10 +11,9 @@ Vue.use(uView)
// import 'video.js/dist/video-js.css' // import 'video.js/dist/video-js.css'
// Vue.prototype.$video = Videojs // Vue.prototype.$video = Videojs
import 'mui-player/dist/mui-player.min.css' // import 'mui-player/dist/mui-player.min.css'
import fixedButtom from '@/components/fixedButtom/fixedButtom.vue' import fixedButtom from '@/components/fixedButtom/fixedButtom.vue'
Vue.component('fixedButtom', fixedButtom) Vue.component('fixedButtom', fixedButtom)
Vue.use(plugins) Vue.use(plugins)

@ -1,6 +1,6 @@
{ {
"name" : "江宁城管app", "name" : "江宁城管app",
"appid" : "__UNI__EE8CBC2", "appid" : "__UNI__722F3C8",
"description" : "", "description" : "",
"versionName" : "1.1.0", "versionName" : "1.1.0",
"versionCode" : "100", "versionCode" : "100",

@ -105,7 +105,7 @@
"subPackages": [ "subPackages": [
{ {
"root": "subcontract/work/", "root": "subcontract/work/",
"pages": [ "pages": [
{ {
"path": "event/index", "path": "event/index",
"style": { "style": {
@ -256,7 +256,15 @@
"navigationBarTitleText": "新增店铺活动", "navigationBarTitleText": "新增店铺活动",
"enablePullDownRefresh": false "enablePullDownRefresh": false
} }
}, },
{
"path" : "activity/activitydetails",
"style" :
{
"navigationBarTitleText": "活动详情",
"enablePullDownRefresh": false
}
},
{ {
"path": "threeGuarantees/index", "path": "threeGuarantees/index",
"style": { "style": {
@ -298,7 +306,8 @@
"navigationBarTitleText": "消息中心", "navigationBarTitleText": "消息中心",
"enablePullDownRefresh": false "enablePullDownRefresh": false
} }
} }
] ]
} }
], ],

@ -52,7 +52,7 @@ export default {
return { return {
grids: [ grids: [
{ {
name: "水生态治理科教(公众)", name: "水生态治理科教",
gridImg: "/static/images/umale/gr8.png", gridImg: "/static/images/umale/gr8.png",
color: "#0D306B", color: "#0D306B",
subcolor: "", subcolor: "",
@ -60,7 +60,7 @@ export default {
toPage: "/subPublic/waterEducation/index", toPage: "/subPublic/waterEducation/index",
}, },
{ {
name: "活动管理(商家)", name: "活动管理",
gridImg: "/static/images/umale/gr8.png", gridImg: "/static/images/umale/gr8.png",
color: "#0D306B", color: "#0D306B",
subcolor: "", subcolor: "",
@ -68,7 +68,7 @@ export default {
toPage: "/subEnterprise/activity/activity", toPage: "/subEnterprise/activity/activity",
}, },
{ {
name: "消息中心(商家)", name: "消息中心",
gridImg: "/static/images/umale/gr8.png", gridImg: "/static/images/umale/gr8.png",
color: "#0D306B", color: "#0D306B",
subcolor: "", subcolor: "",
@ -76,7 +76,7 @@ export default {
toPage: "/subEnterprise/msg/index", toPage: "/subEnterprise/msg/index",
}, },
{ {
name: "门前三包服务(商家)", name: "门前三包服务",
gridImg: "/static/images/umale/gr8.png", gridImg: "/static/images/umale/gr8.png",
color: "#0D306B", color: "#0D306B",
subcolor: "", subcolor: "",
@ -84,7 +84,7 @@ export default {
toPage: "/subEnterprise/threeGuarantees/index", toPage: "/subEnterprise/threeGuarantees/index",
}, },
{ {
name: "店铺店招预审(商家)", name: "店牌店招预审",
gridImg: "/static/images/umale/gr8.png", gridImg: "/static/images/umale/gr8.png",
color: "#0D306B", color: "#0D306B",
subcolor: "", subcolor: "",
@ -110,7 +110,7 @@ export default {
}, },
// ... // ...
onBackPress(options) { onBackPress(options) {
console.log("返回", options); // console.log("", options);
if (options.from == "backbutton" || options.from == "navigateBack") { if (options.from == "backbutton" || options.from == "navigateBack") {
// //
uni.showModal({ uni.showModal({
@ -132,15 +132,15 @@ export default {
onLoad() { onLoad() {
// this.getCircle(); // this.getCircle();
this.getUserLocation(); // this.getUserLocation();
this.times = setInterval(() => { // this.times = setInterval(() => {
console.log("获取用户位置信息"); // console.log("");
this.getUserLocation(); // this.getUserLocation();
}, 10000); // }, 10000);
}, },
mounted() { mounted() {
this.userInfo = uni.getStorageSync("userInfo"); this.userInfo = uni.getStorageSync("userInfo");
console.log(JSON.stringify(this.userInfo), "用户信息"); // console.log(JSON.stringify(this.userInfo), "");
const currentDate = new Date(); const currentDate = new Date();
const year = currentDate.getFullYear(); // const year = currentDate.getFullYear(); //
const month = currentDate.getMonth() + 1; // 01 const month = currentDate.getMonth() + 1; // 01

@ -35,7 +35,7 @@ export default {
this.webview.overrideUrlLoading({ mode: "reject" }, (e) => { this.webview.overrideUrlLoading({ mode: "reject" }, (e) => {
//,!url,.OK.json //,!url,.OK.json
console.warn("参数为:" + e.url); console.warn("参数为:" + e.url);
// http://39.101.188.84:9999/demo/JiangNingUmale-App/#/?code=ckyb2r&clientId=641775453324&token=pygHmfvDNt4YxbucxXiIm0dN8d0IuLmd
// URL // URL
var url = e.url; var url = e.url;

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

@ -0,0 +1,299 @@
<template>
<view class="app-container">
<u-navbar leftText="返回" title="店铺活动管理" :autoBack="true" :placeholder="true" />
<view class="list-item active view-global" v-for="(item, index) in applyList" :key="index">
<view class="" @click="goactivitydetails(item)">
<view class="item-header" :class="bgmImg(item.activeState)">
<view class="item-header-font" >
{{ item.activeState | activeState }}
</view>
</view>
<view class="item-cell">
<view class="cell-lable">活动名称</view>
<view class="cell-value">{{ item.activeName }}</view>
</view>
<view class="item-cell">
<view class="cell-lable">活动时间</view>
<view class="cell-value">{{ item.activeStart }}{{ item.activeEnd }}</view>
</view>
<view class="item-cell">
<view class="cell-lable">活动内容</view>
<view class="cell-value">{{ item.activeContent }}</view>
</view>
<view class="item-cell" style="align-items: flex-start">
<view class="cell-lable">活动地点</view>
<view class="cell-value">{{ item.activePoint }}</view>
</view>
<!-- <view class="item-cell" style="align-items: flex-start">
<view class="cell-lable">参与条件</view>
<view class="cell-value">{{ item.joinRequire }}</view>
</view> -->
<!-- <view class="item-cell" style="align-items: flex-start">
<view class="cell-lable">活动状态</view>
<view class="cell-value" :style="{ color: activeStateColor(item.activeState) }">
{{ item.activeState | activeState }}
</view>
</view> -->
</view>
<!-- <view class="cell-btn">
<u-button v-show="item.activeState == 2" text="终止活动" size="small"
color="linear-gradient(90deg, #FF4B4B 0%, #FA4D4D 100%)" :custom-style="{
width: '130rpx',
height: '65rpx',
margin: '0',
}" @click="handleUpdate(item)"></u-button>
<u-button v-show="item.activeState == 1" text="取消活动" size="small"
color="linear-gradient(90deg, #F18939 0%, #F6A53C 100%)" :custom-style="{
width: '130rpx',
height: '65rpx',
margin: '0',
}" @click="handleUpdate(item)"></u-button>
</view> -->
</view>
<fixed-buttom title="新增活动" @click="handleAdd()"></fixed-buttom>
</view>
</template>
<script>
import {
listActivity,
updateActivity
} from "../../api/jn/apply";
export default {
data() {
return {
//
form: {},
applyList: [
// {
// activeName: "",
// activeStart: "2024-1-17",
// activeEnd: "2024-1-19",
// activeContent: "",
// activePoint: "",
// joinRequire: "",
// activeState: 1,
// },{
// activeName: "",
// activeStart: "2024-1-17",
// activeEnd: "2024-1-19",
// activeContent: "",
// activePoint: "",
// joinRequire: "",
// activeState: 2,
// },{
// activeName: "",
// activeStart: "2024-1-17",
// activeEnd: "2024-1-19",
// activeContent: "",
// activePoint: "",
// joinRequire: "",
// activeState: 3,
// },
],
//
queryParams: {
pageNum: 1,
pageSize: 10,
activeName: null,
activeStart: null,
activeEnd: null,
activeContent: null,
activePoint: null,
joinRequire: null,
activeState: null,
createId: null,
updateId: null,
gridId: null,
gridName: null,
partId: null,
partName: null,
},
};
},
onLoad() {
this.getList();
},
onShow() {
this.getList();
},
methods: {
getList() {
listActivity(this.queryParams).then((res) => {
console.log(res);
this.applyList = res.rows;
});
},
//
handleAdd() {
uni.$u.route({
url: "/subEnterprise/activity/add",
});
},
//
handleUpdate(item) {
this.reset();
item["activeState"] =
item.activeState == 1 ?
3 :
item.activeState == 2 ?
4 :
item.activeState;
this.form = item;
console.log(this.form);
updateActivity(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
});
},
activeStateColor: function(value) {
switch (value) {
case "1":
return "#F75D23";
case "2":
return "#32B78B";
case "3":
return "#FF0000";
}
},
bgmImg(value){
switch (value) {
case "1":
return "item-headerorng";
case "2":
return "item-headergreen";
case "3":
return "item-headerred";
}
},
//
goactivitydetails(item) {
uni.navigateTo({
url: `/subEnterprise/activity/activitydetails?item=${JSON.stringify(item)}`,
})
},
//
reset() {
this.form = {
id: null,
activeName: null,
activeStart: null,
activeEnd: null,
activeContent: null,
activePoint: null,
joinRequire: null,
activeState: null,
createId: null,
createBy: null,
createTime: null,
updateId: null,
updateBy: null,
updateTime: null,
remark: null,
gridId: null,
gridName: null,
partId: null,
partName: null,
};
},
},
filters: {
activeState: function(value) {
// console.log(value);
switch (value) {
case "1":
return "审核中";
case "2":
return "审核通过";
case "3":
return "审核驳回";
case" 4":
return "已终止";
case "5":
return "已结束";
default:
return "";
}
},
},
};
</script>
<style lang="scss" scoped>
.app-container {
.list-item {
background-color: #fff;
border-radius: 16rpx;
box-sizing: border-box;
padding: 25rpx;
margin-bottom: 30rpx;
position: relative;
.item-header {
width: 200rpx;
height: 200rpx;
position: absolute;
top: -30rpx;
right: -30rpx;
z-index: 2;
background-size: 100% 100%;
background-repeat: no-repeat;
.item-header-font{
color: #ffffff;
font-size: 25rpx;
transform: translate(25rpx, 60rpx) rotate(45deg);
text-align: center;
}
}
.item-headergreen{
background-image: url("@/static/images/banner/green.png");
}
.item-headerred{
background-image: url("@/static/images/banner/red.png");
}
.item-headerorng{
background-image: url("@/static/images/banner/orng.png");
}
.item-cell {
display: flex;
align-items: center;
margin: 20rpx 0;
.cell-lable {
width: 200rpx;
font-size: 28rpx;
font-weight: 400;
color: #9da2ab;
}
.cell-value {
flex: 1;
font-size: 28rpx;
font-weight: 400;
color: #2e2f31;
}
}
.cell-btn {
display: flex;
flex-direction: row-reverse;
}
&>view:not(.cell-btn) {
margin-bottom: 20rpx;
}
}
&>.list-item:last-child {
margin-bottom: 0;
}
}
</style>

@ -1,241 +1,240 @@
<template> <template>
<view class="app-container"> <view class="app-container">
<u-navbar <!-- <u-navbar leftText="返回" title="店铺活动管理" :autoBack="true" :placeholder="true">
leftText="返回" <view slot="right">
title="店铺活动管理" <text class="nav-right"></text>
:autoBack="true" </view>
:placeholder="true" </u-navbar> -->
/> <view class="list-item">
<view <view class="list-item-title">{{levelList[0].activeName || ""}}</view>
class="list-item active view-global" <view>
v-for="(item, index) in applyList" <view class="Mytitle">
:key="index" </view>
> <view class="mytext" v-html="levelList[0].activeRequest">
<view class="item-cell"> </view>
<view class="cell-lable">活动名称</view> </view>
<view class="cell-value">{{ item.activeName }}</view>
</view>
<view class="item-cell"> </view>
<view class="cell-lable">活动时间</view> <view class="yingfuDom">
<view class="cell-value" <view class="items">
>{{ item.activeStart }}{{ item.activeEnd }}</view <view class="label">
> 活动名称
</view> </view>
<view class="item-cell"> <view class="value">
<view class="cell-lable">活动内容</view> 店铺周年庆
<view class="cell-value">{{ item.activeContent }}</view> </view>
</view> </view>
<view class="item-cell" style="align-items: flex-start"> <view class="items">
<view class="cell-lable">活动地点</view> <view class="label">
<view class="cell-value">{{ item.activePoint }}</view> 活动内容
</view> </view>
<view class="item-cell" style="align-items: flex-start"> <view class="value">
<view class="cell-lable">参与条件</view> 消费满500元打8折
<view class="cell-value">{{ item.joinRequire }}</view> </view>
</view> </view>
<view class="item-cell" style="align-items: flex-start"> <view class="items">
<view class="cell-lable">活动状态</view> <view class="label">
<view 活动地点
class="cell-value" </view>
:style="{ color: activeStateColor(item.activeState) }" <view class="value">
> 南京市江宁区佳湖西路19号
{{ item.activeState | activeState }} </view>
</view> </view>
</view> <view class="items">
<view class="cell-btn"> <view class="label">
<u-button 参与条件
v-show="item.activeState == 2" </view>
text="终止活动" <view class="value">
size="small" 所有人可参加
color="linear-gradient(90deg, #FF4B4B 0%, #FA4D4D 100%)" </view>
:custom-style="{ </view>
width: '130rpx', <view class="items">
height: '65rpx', <view class="label">
margin: '0', 活动时间
}" </view>
@click="handleUpdate(item)" <view class="value">
></u-button> 2024-10-01
<u-button </view>
v-show="item.activeState == 1" </view>
text="取消活动" </view>
size="small" </view>
color="linear-gradient(90deg, #F18939 0%, #F6A53C 100%)" </template>
:custom-style="{
width: '130rpx', <script>
height: '65rpx', import {
margin: '0', listActivity,
}" } from "../../api/jn/apply";
@click="handleUpdate(item)" export default {
></u-button> data() {
</view> return {
</view> //
<fixed-buttom title="新增活动" @click="handleAdd()"></fixed-buttom> form: {},
</view> levelList: [{activeName:"",activeRequest:""}],
</template> //
queryParams: {
<script> sbLevelName: null,
import { listActivity, updateActivity } from "../../api/jn/apply"; pageNum: 1,
pageSize: 10,
export default { activeState:"1"
data() { },
return { };
// },
form: {}, onLoad() {
applyList: [], this.getList();
// },
queryParams: { methods: {
pageNum: 1, onSearch() {
pageSize: 10, this.getList();
activeName: null, },
activeStart: null, onClear() {
activeEnd: null, this.queryParams.sbLevelName = "";
activeContent: null, this.getList();
activePoint: null, },
joinRequire: null, getList() {
activeState: null, listActivity(this.queryParams).then((res) => {
createId: null, console.log(res);
updateId: null,
gridId: null, if(res.rows.length !=0){
gridName: null, this.levelList = res.rows;
partId: null,
partName: null, }else{
}, this.levelList = [{activeName:"",activeRequest:""}]
}; }
}, });
onLoad() { },
this.getList(); //
}, reset() {
methods: { this.form = {
getList() { id: null,
listActivity(this.queryParams).then((res) => { activeName: null,
console.log(res); activeStart: null,
this.applyList = res.rows; activeEnd: null,
}); activeContent: null,
}, activePoint: null,
// joinRequire: null,
handleAdd() { activeState: null,
uni.$u.route({ createId: null,
url: "/subEnterprise/activity/add", createBy: null,
}); createTime: null,
}, updateId: null,
// updateBy: null,
handleUpdate(item) { updateTime: null,
this.reset(); remark: null,
item["activeState"] = gridId: null,
item.activeState == 1 gridName: null,
? 3 partId: null,
: item.activeState == 2 partName: null,
? 4 };
: item.activeState; },
this.form = item; },
console.log(this.form); };
updateActivity(this.form).then((response) => { </script>
this.$modal.msgSuccess("修改成功");
}); <style lang="scss" scoped>
}, .app-container {
activeStateColor: function (value) { .list-item {
switch (value) { background-color: #fff;
case 1: border-radius: 16rpx;
return "#F75D23"; box-sizing: border-box;
case 2: padding: 25rpx;
return "#32B78B"; margin-bottom: 30rpx;
case 3: margin-top: 30rpx;
return "#000000";
case 4:
return "#000000";
case 5: .list-item-title {
return "#32B78B"; text-align: center;
default: border-bottom: 1rpx solid #000000;
return "#000000"; font-size: 35rpx;
} font-weight: bold;
}, }
//
reset() { .Mytitle {
this.form = { font-size: 30rpx;
id: null, margin: 20rpx 0;
activeName: null, font-weight: 550;
activeStart: null,
activeEnd: null, }
activeContent: null,
activePoint: null, .mytext {
joinRequire: null, line-height: 2;
activeState: null, }
createId: null,
createBy: null, .item-cell {
createTime: null, display: flex;
updateId: null, align-items: center;
updateBy: null,
updateTime: null, .cell-lable {
remark: null, width: 200rpx;
gridId: null, font-size: 28rpx;
gridName: null, font-weight: 400;
partId: null, color: #9da2ab;
partName: null, }
};
}, .cell-value {
}, flex: 1;
filters: { font-size: 28rpx;
activeState: function (value) { font-weight: 400;
// console.log(value); color: #2e2f31;
switch (value) { }
case 1: }
return "审核中";
case 2: .cell-btn {
return "进行中"; display: flex;
case 3: flex-direction: row-reverse;
return "已取消"; }
case 4:
return "已终止"; &>view:not(.cell-btn) {
case 5: margin-bottom: 20rpx;
return "已结束"; }
default: }
return "";
} &>.list-item:last-child {
}, margin-bottom: 0;
}, }
};
</script> .yingfuDom {
padding: 20rpx 0;
<style lang="scss" scoped> display: grid;
.app-container { grid-template-columns: 1fr;
.list-item { row-gap: 10rpx;
background-color: #fff; .items{
border-radius: 16rpx; display: flex;
box-sizing: border-box; align-items: center;
padding: 25rpx; .label {
margin-bottom: 30rpx; // display: flex;
// align-items: center;
.item-cell { // justify-content: center;
display: flex; }
align-items: center; .value {
// display: flex;
.cell-lable { // align-items: center;
width: 200rpx; // justify-content: center;
font-size: 28rpx; }
font-weight: 400; }
color: #9da2ab; }
}
}
.cell-value {
flex: 1; .list-item-box {
font-size: 28rpx;
font-weight: 400; display: flex;
color: #2e2f31; text-align: center;
}
} .list-item-box-top {
font-size: 30rpx;
.cell-btn { font-weight: bold;
display: flex; margin-right: 20rpx;
flex-direction: row-reverse; }
}
.list-item-box-bottom {
& > view:not(.cell-btn) { font-size: 30rpx;
margin-bottom: 20rpx; font-weight: bold;
} }
}
.good {
& > .list-item:last-child { color: green;
margin-bottom: 0; }
} }
} </style>
</style>

@ -0,0 +1,129 @@
<template>
<view class="app-container"> class="app-container"
<u-navbar leftText="返回" title="活动详情" :autoBack="true" :placeholder="true" />
<view class="list-item active view-global">
<view class="item-cell">
<view class="cell-lable">活动名称</view>
<view class="cell-value">{{ data.activeName || "-"}}</view>
</view>
<view class="item-cell">
<view class="cell-lable">活动时间</view>
<view class="cell-value">{{ data.activeStart || "-"}}{{data.activeEnd || "-"}}</view>
</view>
<view class="item-cell">
<view class="cell-lable">活动内容</view>
<view class="cell-value">{{ data.activeContent || '-'}}</view>
</view>
<view class="item-cell" style="align-items: flex-start">
<view class="cell-lable">活动地点</view>
<view class="cell-value">{{data.activePoint || '-'}}</view>
</view>
<view class="item-cell" style="align-items: flex-start">
<view class="cell-lable">附件</view>
<view class="cell-value">{{ data.joinRequire || '-'}}</view>
</view>
<view class="item-cell" style="align-items: flex-start">
<view class="cell-lable">审核结果</view>
<view class="cell-value">{{data.activeState | activeState}}</view>
</view>
<view class="item-cell" style="align-items: flex-start">
<view class="cell-lable">审核意见</view>
<view class="cell-value">{{ data.opinion || '-'}}</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
onLoad(opiect) {
this.data = JSON.parse(opiect.item)
},
data() {
return {
data: {}
}
},
methods: {
//
previewAll(res) {
}
},
filters: {
activeState: function(value) {
// console.log(value);
switch (value) {
case "1":
return "审核中";
case "2":
return "审核通过";
case "3":
return "审核驳回";
case " 4":
return "已终止";
case "5":
return "已结束";
default:
return "";
}
},
},
}
</script>
<style lang="scss" scoped>
.app-container {
.list-item {
background-color: #fff;
border-radius: 16rpx;
box-sizing: border-box;
padding: 25rpx;
margin-bottom: 30rpx;
.item-cell {
display: flex;
align-items: center;
.cell-lable {
width: 200rpx;
font-size: 28rpx;
font-weight: 400;
color: #9da2ab;
}
.cell-value {
width: 500rpx;
font-size: 28rpx;
font-weight: 400;
color: #2e2f31;
white-space: nowrap;
/* 防止内容换行 */
overflow: hidden;
/* 隐藏超出内容 */
text-overflow: ellipsis;
/* 显示省略号 */
}
}
.cell-btn {
display: flex;
flex-direction: row-reverse;
}
&>view:not(.cell-btn) {
margin-bottom: 20rpx;
}
}
&>.list-item:last-child {
margin-bottom: 0;
}
}
</style>

@ -1,191 +1,265 @@
<template> <template>
<view class="app-container"> <view class="app-container">
<u-navbar <u-navbar leftText="返回" title="新增店铺活动" :autoBack="true" :placeholder="true" />
leftText="返回" <view class="form-item">
title="新增店铺活动" <view class="form-title">
:autoBack="true" 活动名称
:placeholder="true" <text></text>
/> </view>
<view class="form-item"> <view class="item-input view-global">
<view class="form-title"> <u--input placeholder="请输入名称" border="none" :customStyle="{ height: '45rpx' }"
活动名称 v-model="form.activeName"></u--input>
<text></text> </view>
</view> </view>
<view class="item-input view-global"> <view class="form-item">
<u--input <view class="form-title">
placeholder="请输入名称" 活动时间
border="none" <text></text>
:customStyle="{ height: '45rpx' }" </view>
v-model="form.activeName" <view class="item-input view-global" style="
></u--input> display: flex;
</view> align-items: center;
</view> justify-content: space-between;
<view class="form-item"> " @click="isCalendar = true">
<view class="form-title"> <text :style="'color:' + fColor(calendarRang)">{{
活动时间 calendarRang || "请选择日期"
<text></text> }}</text>
</view> <u-icon name="arrow-right" color="#D5D5D5"></u-icon>
<view </view>
class="item-input view-global" </view>
style=" <view class="form-item">
display: flex; <view class="form-title">
align-items: center; 活动描述
justify-content: space-between; <text></text>
" </view>
@click="isCalendar = true" <view class="item-input view-global">
> <u--textarea v-model="form.activeContent" placeholder="请输入内容" border="none"></u--textarea>
<text :style="'color:' + fColor(calendarRang)">{{ </view>
calendarRang || "请选择日期" </view>
}}</text> <view class="form-item">
<u-icon name="arrow-right" color="#D5D5D5"></u-icon> <view class="form-title">
</view> 活动地点
</view> <text></text>
<view class="form-item"> </view>
<view class="form-title"> <view class="item-input view-global">
活动内容 <u--input placeholder="请输入活动地点" border="none" :customStyle="{ height: '45rpx' }"
<text></text> v-model="form.activePoint"></u--input>
</view> </view>
<view class="item-input view-global"> </view>
<u--textarea <!-- <view class="form-item">
v-model="form.activeContent" <view class="form-title">
placeholder="请输入内容" 参与条件
border="none" <text></text>
></u--textarea> </view>
</view> <view class="item-input view-global">
</view> <u--textarea v-model="form.joinRequire" placeholder="请输入内容" border="none"></u--textarea>
<view class="form-item"> </view>
<view class="form-title"> </view> -->
活动地点 <view class="form-item">
<text></text> <view class="form-title">
</view> 上传附件
<view class="item-input view-global"> <text></text>
<u--input </view>
placeholder="请输入活动地点" <view class="item-input view-global">
border="none" <view class="" @click="openFile" v-show="!fileName">
:customStyle="{ height: '45rpx' }" 点击上传
v-model="form.activePoint" </view>
></u--input> <view class="view-globalFell" v-show="fileName">
</view> <view class="fileName">
</view> {{fileName}}
<view class="form-item"> </view>
<view class="form-title"> <view class="fileNamedelet" @click="fileName = ''">
参与条件 删除
<text></text> </view>
</view> </view>
<view class="item-input view-global"> </view>
<u--textarea </view>
v-model="form.joinRequire" <fixed-buttom title="提交" @click="handleAdd"></fixed-buttom>
placeholder="请输入内容"
border="none" <!-- 日历 -->
></u--textarea> <u-calendar :show="isCalendar" :mode="mode" @confirm="onCalendar" @close="onCloseCalendar"></u-calendar>
</view> </view>
</view> </template>
<fixed-buttom title="提交" @click="handleAdd"></fixed-buttom>
<script>
<!-- 日历 --> import {
<u-calendar addActivity
:show="isCalendar" } from "../../api/jn/apply";
:mode="mode"
@confirm="onCalendar" export default {
@close="onCloseCalendar" data() {
></u-calendar> return {
</view> form: {},
</template> fileName: "",
isCalendar: false,
<script> calendarRang: "",
import { addActivity } from "../../api/jn/apply"; mode: "range",
fileWhiteList: ['txt', 'doc', 'docx', 'xls', 'xlsx', 'pdf', ]
export default { };
data() { },
return { onLoad() {
form: {}, this.reset();
isCalendar: false, },
calendarRang: "", methods: {
mode: "range", //
}; reset() {
}, this.form = {
onLoad() { id: null,
this.reset(); activeName: null,
}, activeStart: null,
methods: { activeEnd: null,
// activeContent: null,
reset() { activePoint: null,
this.form = { joinRequire: null,
id: null, activeState: 1,
activeName: null, createId: null,
activeStart: null, createBy: null,
activeEnd: null, createTime: null,
activeContent: null, updateId: null,
activePoint: null, updateBy: null,
joinRequire: null, updateTime: null,
activeState: 1, remark: null,
createId: null, gridId: null,
createBy: null, gridName: null,
createTime: null, partId: null,
updateId: null, partName: null,
updateBy: null, };
updateTime: null, },
remark: null, onCloseCalendar() {
gridId: null, this.isCalendar = false;
gridName: null, },
partId: null, onCalendar(e) {
partName: null, console.log(e);
}; this.calendarRang = `${e[0]}——${e[e.length - 1]}`;
}, this.form.activeStart = e[0];
onCloseCalendar() { this.form.activeEnd = e[e.length - 1];
this.isCalendar = false; this.isCalendar = false;
}, },
onCalendar(e) { handleAdd() {
console.log(e); console.log(this.form);
this.calendarRang = `${e[0]}——${e[e.length - 1]}`; addActivity(this.form).then((response) => {
this.form.activeStart = e[0]; uni.navigateBack({
this.form.activeEnd = e[e.length - 1]; delta: 1,
this.isCalendar = false; });
}, });
handleAdd() { },
console.log(this.form); fColor(calendarRang) {
addActivity(this.form).then((response) => { return calendarRang ? "#2e2f31" : "#c0c4cc";
uni.navigateBack({ },
delta: 1, //2
}); //
}); openFile() {
}, uni.chooseFile({
fColor(calendarRang) { count: 1, //100
return calendarRang ? "#2e2f31" : "#c0c4cc"; extension: ['.zip', '.doc', '.xls', '.pdf', 'docx', '.rar', '.7z', '.jpg', '.png', '.jpeg'],
}, success: (res) => {
}, console.log(res);
}; if (res.tempFiles[0].size / 1024 / 1024 > 20) {
</script> this.$refs.uToast.show({
title: '附件大小不能超过20M',
<style lang="scss" scoped> type: 'warning',
.form-item { })
.form-title { return;
position: relative; }
font-size: 30rpx; this.resultPath(res.tempFilePaths[0], res.tempFiles[0].name);
font-weight: bold; }
color: #2e2f31; });
margin-bottom: 20rpx; },
} //
resultPath(path, fileName) {
.form-title text { console.log(path)
content: ""; console.log(fileName)
position: absolute; uni.showLoading({
left: 0; title: '上传中...',
bottom: 0; });
height: 12rpx; uni.uploadFile({
width: 140rpx; url: "https://t-jn-bjh-admin-server.jsszkd.com/common/upload",
background: url("/static/images/juxing.png"); filePath: path,
background-size: cover; header: {
max-width: 300rpx; // "Authorization": "xxx",
z-index: 0; // 'content-type':'multipart/form-data; boundary=----WebKitFormBoundaryHEdN1AIjcdUkAaXM',
} },
formData: {
.item-input { // 'user': 'test'
margin-bottom: 30rpx; },
border-radius: 16rpx; success: (uploadFileRes) => {
background-color: #fff; let obj = JSON.parse(uploadFileRes.data);
box-sizing: border-box; console.log(obj);
padding: 25rpx; this.fileName = obj.originalFilename
} this.form.joinRequire = obj.url
} uni.showToast({
</style> title: obj.msg,
icon: 'none',
duration: 1500
})
},
fail: (err) => {
this.$refs.uToast.show({
title: '上传失败',
type: 'error',
});
uni.hideLoading();
}
});
},
},
};
</script>
<style lang="scss" scoped>
.form-item {
.form-title {
position: relative;
font-size: 30rpx;
font-weight: bold;
color: #2e2f31;
margin-bottom: 20rpx;
}
.form-title text {
content: "";
position: absolute;
left: 0;
bottom: 0;
height: 12rpx;
width: 140rpx;
background: url("/static/images/juxing.png");
background-size: cover;
max-width: 300rpx;
z-index: 0;
}
.item-input {
margin-bottom: 30rpx;
border-radius: 16rpx;
background-color: #fff;
box-sizing: border-box;
padding: 25rpx;
}
.view-globalFell {
display: flex;
align-items: center;
.fileName {
max-width: 400rpx;
white-space: nowrap;
/* 不换行 */
overflow: hidden;
/* 溢出部分隐藏 */
text-overflow: ellipsis;
/* 显示省略号 */
margin-right: 30rpx;
}
.fileNamedelet {
width: 100rpx;
color: red;
}
}
}
</style>

@ -0,0 +1,191 @@
<template>
<view class="app-container">
<u-navbar
leftText="返回"
title="新增店铺活动"
:autoBack="true"
:placeholder="true"
/>
<view class="form-item">
<view class="form-title">
活动名称
<text></text>
</view>
<view class="item-input view-global">
<u--input
placeholder="请输入名称"
border="none"
:customStyle="{ height: '45rpx' }"
v-model="form.activeName"
></u--input>
</view>
</view>
<view class="form-item">
<view class="form-title">
活动时间
<text></text>
</view>
<view
class="item-input view-global"
style="
display: flex;
align-items: center;
justify-content: space-between;
"
@click="isCalendar = true"
>
<text :style="'color:' + fColor(calendarRang)">{{
calendarRang || "请选择日期"
}}</text>
<u-icon name="arrow-right" color="#D5D5D5"></u-icon>
</view>
</view>
<view class="form-item">
<view class="form-title">
活动内容
<text></text>
</view>
<view class="item-input view-global">
<u--textarea
v-model="form.activeContent"
placeholder="请输入内容"
border="none"
></u--textarea>
</view>
</view>
<view class="form-item">
<view class="form-title">
活动地点
<text></text>
</view>
<view class="item-input view-global">
<u--input
placeholder="请输入活动地点"
border="none"
:customStyle="{ height: '45rpx' }"
v-model="form.activePoint"
></u--input>
</view>
</view>
<view class="form-item">
<view class="form-title">
参与条件
<text></text>
</view>
<view class="item-input view-global">
<u--textarea
v-model="form.joinRequire"
placeholder="请输入内容"
border="none"
></u--textarea>
</view>
</view>
<fixed-buttom title="提交" @click="handleAdd"></fixed-buttom>
<!-- 日历 -->
<u-calendar
:show="isCalendar"
:mode="mode"
@confirm="onCalendar"
@close="onCloseCalendar"
></u-calendar>
</view>
</template>
<script>
import { addActivity } from "../../api/jn/apply";
export default {
data() {
return {
form: {},
isCalendar: false,
calendarRang: "",
mode: "range",
};
},
onLoad() {
this.reset();
},
methods: {
//
reset() {
this.form = {
id: null,
activeName: null,
activeStart: null,
activeEnd: null,
activeContent: null,
activePoint: null,
joinRequire: null,
activeState: 1,
createId: null,
createBy: null,
createTime: null,
updateId: null,
updateBy: null,
updateTime: null,
remark: null,
gridId: null,
gridName: null,
partId: null,
partName: null,
};
},
onCloseCalendar() {
this.isCalendar = false;
},
onCalendar(e) {
console.log(e);
this.calendarRang = `${e[0]}——${e[e.length - 1]}`;
this.form.activeStart = e[0];
this.form.activeEnd = e[e.length - 1];
this.isCalendar = false;
},
handleAdd() {
console.log(this.form);
addActivity(this.form).then((response) => {
uni.navigateBack({
delta: 1,
});
});
},
fColor(calendarRang) {
return calendarRang ? "#2e2f31" : "#c0c4cc";
},
},
};
</script>
<style lang="scss" scoped>
.form-item {
.form-title {
position: relative;
font-size: 30rpx;
font-weight: bold;
color: #2e2f31;
margin-bottom: 20rpx;
}
.form-title text {
content: "";
position: absolute;
left: 0;
bottom: 0;
height: 12rpx;
width: 140rpx;
background: url("/static/images/juxing.png");
background-size: cover;
max-width: 300rpx;
z-index: 0;
}
.item-input {
margin-bottom: 30rpx;
border-radius: 16rpx;
background-color: #fff;
box-sizing: border-box;
padding: 25rpx;
}
}
</style>

@ -1,11 +1,11 @@
<template> <template>
<view class="app-container"> <view class="app-container">
<u-navbar title="消息列表" :autoBack="true" <!-- <u-navbar title="消息列表" :autoBack="true"
:placeholder="true" leftText="返回"> :placeholder="true" leftText="返回">
<view slot="right" @click="onAllclear"> <view slot="right" @click="onAllclear">
<text class="nav-right">全部清空</text> <text class="nav-right">全部清空</text>
</view> </view>
</u-navbar> </u-navbar> -->
<u-search <u-search
height="75rpx" height="75rpx"
placeholder="搜索关键词" placeholder="搜索关键词"
@ -15,13 +15,13 @@
:clearabled="true" :clearabled="true"
class="view-global" class="view-global"
bgColor="#fff" bgColor="#fff"
@search="onSearch" @change="ListMsg"
@clear="onClear"
></u-search> ></u-search>
<view class="msg-list"> <view class="msg-list">
<view <view
class="msg-item view-global" class="msg-item view-global"
v-for="(item, index) in listMsgs" v-for="(item, index) in listMsgs"
@click="getMesInfo(item)"
:key="index" :key="index"
> >
<view class="msg-icon" style="background-color: #367bef"> <view class="msg-icon" style="background-color: #367bef">
@ -29,7 +29,7 @@
<u-badge <u-badge
bgColor="#FE3434" bgColor="#FE3434"
max="99" max="99"
:isDot="item.isLook == 1 ? false : true"
:absolute="true" :absolute="true"
:offset="[0, 0]" :offset="[0, 0]"
></u-badge> ></u-badge>
@ -77,68 +77,74 @@
<view class="msg-date">19:18</view> <view class="msg-date">19:18</view>
</view> --> </view> -->
</view> </view>
<u-modal :show="show" :title="msgInfo.title" :content='msgInfo.content' @confirm="confirm"></u-modal>
<view class="delete-box" @click="onAllclear">
<image class="delete_img_box" src="/static/images/delete2.png" mode="aspectFill"></image> 全部清空
</view>
</view> </view>
</template> </template>
<script> <script>
import { listNews, delNews } from "../../api/jn/news"; import { shopIdlist, deleteShopId, getInfoShop, isLookCount } from "../../api/jn/news";
export default { export default {
data() { data() {
return { return {
listMsgs: [], listMsgs: [],
// //
queryParams: { queryParams: {
pageNum: 1,
pageSize: 10,
title: "", title: "",
status: 0 id:'5',
}, },
show: false,
msgInfo: {
title:"",
content:""
},
}; };
}, },
onLoad() { onLoad() {
const launchOptions = uni.getLaunchOptionsSync();
}, const { query } = launchOptions;
onShow() { // console.log(query,"query");
this.ListMsg(); if(query.storeId) {
this.queryParams.id = query.storeId;
this.ListMsg();
} else {
uni.$u.toast('店铺id为空')
}
// this.ListMsg();
}, },
methods: { methods: {
onAllclear() { onAllclear() {
this.$modal.confirm('确定删除所有消息吗?').then(() => { this.$modal.confirm('确定删除所有消息吗?').then(() => {
let ids = []; deleteShopId(this.queryParams.id).then((res) => {
this.listMsgs.forEach(element => { if(res.code == 200) {
ids.push(element.id); uni.showToast({ title: "删除成功", icon: 'success' })
}); this.ListMsg();
if(ids.length == 0) { }
return; })
} else { })
delNews(ids).then((res) => {
console.log(JSON.stringify(res),"删除接口");
if(res.code == 200) {
this.ListMsg();
}
});
}
})
},
onSearch() {
this.ListMsg();
},
onClear() {
this.queryParams.title = "";
this.ListMsg();
}, },
getMesInfo(item) {
this.show = true;
this.msgInfo = item;
getInfoShop(item.id).then(res=>{})
},
ListMsg() { ListMsg() {
listNews(this.queryParams).then((res) => { shopIdlist(this.queryParams).then((res) => {
// console.log(res); this.listMsgs = res.data;
this.listMsgs = res.rows; // if(res.code == 200) {
if(res.code == 200) { // uni.setTabBarBadge({
uni.setTabBarBadge({ // //
// // index: 1, //tabbar
index: 1, //tabbar // text: res.total + '', //
text: res.total + '', // // });
}); // }
}
}); });
}, },
confirm(){
this.show = false
this.ListMsg();
},
}, },
}; };
</script> </script>
@ -161,7 +167,11 @@ export default {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
.u-badge {
width: 10px;
height: 10px;
left: 0px;
}
image { image {
height: 44rpx; height: 44rpx;
width: 44rpx; width: 44rpx;
@ -194,4 +204,24 @@ export default {
} }
} }
} }
.delete-box {
position: fixed;
right: 20rpx;
bottom: 80rpx;
background-color: #fff;
width: 200rpx;
// height: 50rpx;
border-radius: 30rpx;
display: flex;
align-items: center;
justify-content: center;
padding: 10rpx;
color: #367bef;
.delete_img_box {
width: 35rpx;
height: 35rpx;
margin-right: 10rpx;
}
}
</style> </style>

@ -1,142 +1,248 @@
<template> <template>
<view class="app-container"> <view class="app-container">
<u-navbar <!-- <u-navbar leftText="返回" title="店牌店招预审" :autoBack="true" :placeholder="true">
leftText="返回" <view slot="right">
title="店铺店招预审" <text class="nav-right"></text>
:autoBack="true" </view>
:placeholder="true" </u-navbar> -->
> <view class="list-item">
<view slot="right">
<text class="nav-right"></text> <view class="list-item-title">{{levelList[0].name || ""}}</view>
</view> <view>
</u-navbar> <view class="mytext" v-html="levelList[0].msg">
<view class="list-item"> <!-- {{levelList[0].msg || ""}} -->
<view>江宁开发区店招店牌申报流程</view>
<view> </view>
所需材料 <!-- <view class="Mytitle">
1.实景效果图A4纸全页近景1份远景2份包含白天和夜晚店招亮化远景实景效果图 所需材料
要点照片要求横向拍摄原图制作彩色打印 </view>
2.房屋租赁合同复印件房屋产权证复印件营业执照副本复印件 <view class="mytext">
3.法人身份证复印件或经办人身份证复印件(经办人办理需法人开具委托书 1.实景效果图A4纸全页近景1份远景2份包含白天和夜晚店招亮化远景实景效果图<br />
4.施工说明 要点照片要求横向拍摄原图制作彩色打印<br />
要点用文字描述设置所使用的材质总体长度宽度厚度字体及英文长数量LOGO长宽等 2.房屋租赁合同复印件房屋产权证复印件营业执照副本复印件<br />
5.加盟协议授权书商标注册证涉及注册商标需提供 3.法人身份证复印件或经办人身份证复印件(经办人办理需法人开具委托书<br />
6.安全检测报告涉及墙体广告字LED显示屏 4.施工说明<br />
7.洗衣店宠物店等需办理排水证 要点用文字描述设置所使用的材质总体长度宽度厚度字体及英文长数量LOGO长宽等<br />
8.涉及舞台活动搭建需提供舞台搭建资质舞台结构图专家论证方案如涉及外来人员参与表演需到区防疫指挥中心进行报备 5.加盟协议授权书商标注册证涉及注册商标需提供<br />
注意事项 6.安全检测报告涉及墙体广告字LED显示屏<br />
1.店招店牌设置地址必须与营业执照地址相符合 7.洗衣店宠物店等需办理排水证<br />
2.店招店牌不宜使用泡沫即时贴扣板等材料制作店招店牌主要街路窗口地区按总体规划不得使用灯箱布和喷绘布等材料设置店招广告一般为铝塑底板亚克力字 8.涉及舞台活动搭建需提供舞台搭建资质舞台结构图专家论证方案如涉及外来人员参与表演需到区防疫指挥中心进行报备<br />
3.店招店牌内容仅限于本单位的名称字号标识禁止出现商品营销经营服务范围电话号码变相发布广告等不符合规定的内容 </view>
4.店招店牌字体大小应与店招广告尺寸相协调 <view class="Mytitle">
5.店招店牌效果图必须为实景拍摄门面整体轮廓真实准确反映现场所设置位置电脑准确制作设置画面要求画面清晰店面环境整洁无乱堆放晾晒张贴等位置准确 注意事项
6.完全检测报告需在安装完成后一个月内送至我局备案 </view>
7.经批准后安装店招店牌的应设置围挡及警示标志做到安全施工文明施工 <view class="mytext">
8.案件办理时间为上午8301200 下午200600 1.店招店牌设置地址必须与营业执照地址相符合<br />
联系方式 2.店招店牌不宜使用泡沫即时贴扣板等材料制作店招店牌主要街路窗口地区按总体规划不得使用灯箱布和喷绘布等材料设置店招广告一般为铝塑底板亚克力字<br />
邮箱280754057@qq.com 电话18151671177 3.店招店牌内容仅限于本单位的名称字号标识禁止出现商品营销经营服务范围电话号码变相发布广告等不符合规定的内容<br />
店招店牌备案需要一定的时间请耐心等待没有收到前来办理的通知前请勿制作以及安装如在备案过程当中进行制作及安装所造成的一切后果由其自行承担 4.店招店牌字体大小应与店招广告尺寸相协调<br />
</view> 5.店招店牌效果图必须为实景拍摄门面整体轮廓真实准确反映现场所设置位置电脑准确制作设置画面要求画面清晰店面环境整洁无乱堆放晾晒张贴等位置准确<br />
</view> 6.完全检测报告需在安装完成后一个月内送至我局备案<br />
</view> 7.经批准后安装店招店牌的应设置围挡及警示标志做到安全施工文明施工<br />
</template> 8.案件办理时间为上午8301200 下午200600<br />
</view>
<script> <view class="Mytitle">
联系方式
export default { </view>
data() { <view class="mytext">
return { 邮箱280754057@qq.com <br />
// 电话18151671177 <br />
form: {}, 店招店牌备案需要一定的时间请耐心等待没有收到前来办理的通知前请勿制作以及安装如在备案过程当中进行制作及安装所造成的一切后果由其自行承担<br />
levelList: [], </view>
// </view>
queryParams: { <view class="Mytitle">
sbLevelName: null, 受理材料:
}, </view>
}; <view class="mytext">
}, 受理材料如下<br />
onLoad() { 1.店招店牌设置申请表<br />
this.getList(); 2.实景效果图A4纸彩色全页近景远景各一份<br />
}, 3.营业执照或者其他证明主体资格合法有效的文件复印件一份<br />
methods: { 4.房屋租赁合同A4纸复印件和房屋产权证A4纸复印件<br />
onSearch() { 5.施工说明用文字描述设置所使用的材质总体长度宽度厚度字体及英文长数量LOGO长宽等<br />
this.getList(); 6.提供商标注册证版权证著作证加盟协议或名称使用授权书复印件涉及商标版权著作权<br />
}, 7.法人身份证复印件或经办人身份证复印件经办人办理需法人或公司开具委托书<br />
onClear() { 8.店招店牌承诺书
this.queryParams.sbLevelName = ""; </view>
this.getList(); <view class="Mytitle">
}, 注意事项:
getList() { </view>
<view class="mytext">
}, 注意事项如下<br />
// 1.店招标牌设置地址必须与营业执照地址相符合<br />
reset() { 2.店招标牌设置名称必须与营业执照名称相符合加盟除外<br />
this.form = { 3.店招标牌效果图必须为实景拍摄房屋整体轮廓真实准确反映现场所设置位置电脑准确制作设置画面要求画面清晰店面环境整洁位置准确实景效果图需将相邻两家全部反映出来<br />
id: null, 4.其他广告效果图必须能够准确体现设置位置要求画面清晰<br />
activeName: null, 5.设置与申报效果图保持一致<br />
activeStart: null, 6.履行门前三包责任<br />
activeEnd: null, 7.符合开发区商铺经营门类<br />
activeContent: null, 8.依法合法经营严格按照市场监督局核准的经营范围经营<br />
activePoint: null, </view>
joinRequire: null, <view class="Mytitle">
activeState: null, 支撑文件:
createId: null, </view>
createBy: null, <view class="mytext">
createTime: null, 1.南京市店招店牌设置准则<br />
updateId: null, 2.南京市店招标牌设置管理办法<br />
updateBy: null, 3南京市店招店牌设置导则<br />
updateTime: null, 4.江苏省广告管理条例<br />
remark: null, 5.城市市容和环境卫生管理条例<br />
gridId: null, 6.南京市江宁区人民政府办公室文件江宁政办发[2013]56关于全区核心城区商业业态控制调整工作的实施方案<br />
gridName: null, 7.南京江宁经济技术开发区管理委员会宁经管委发[2005]284关于对开发区胜太路等主要街道商业经营门类进行规范管理的通知<br />
partId: null, 8.南京江宁经济技术开发区管理委员会宁经管委发[2008]283关于新增庄排路等街区实行商业经营门类规范管理的通知<br />
partName: null, </view> -->
};
}, </view>
}, <view class="myimg">
}; <!-- <img src="../../static/images/banner/liucheng.png" alt="" /> -->
</script> <img :src="baseUrl + levelList[0].img" alt="" />
</view>
<style lang="scss" scoped> </view>
.app-container { </view>
.list-item { </template>
background-color: #fff;
border-radius: 16rpx; <script>
box-sizing: border-box; import {
padding: 25rpx; listysfwlist,
margin-bottom: 30rpx; } from "../../api/jn/apply";
margin-top: 30rpx; import config from '@/config'
.item-cell { export default {
display: flex; data() {
align-items: center; return {
//
.cell-lable { form: {},
width: 200rpx; baseUrl: config.baseUrl,
font-size: 28rpx; levelList: [{
font-weight: 400; name: "",
color: #9da2ab; msg: "",
} img: ""
}],
.cell-value { //
flex: 1; queryParams: {
font-size: 28rpx; pageNum: 1,
font-weight: 400; pageSize: 10,
color: #2e2f31; status: "1"
} },
} };
},
.cell-btn { onLoad() {
display: flex; this.getList();
flex-direction: row-reverse; },
} methods: {
onSearch() {
& > view:not(.cell-btn) { this.getList();
margin-bottom: 20rpx; },
} onClear() {
} this.queryParams.sbLevelName = "";
this.getList();
& > .list-item:last-child { },
margin-bottom: 0; getList() {
} listysfwlist(this.queryParams).then((res) => {
} console.log(res);
</style>
if (res.rows.length != 0) {
this.levelList = res.rows;
} else {
this.levelList = [{
name: "",
msg: "",
img: ""
}]
}
});
},
//
reset() {
this.form = {
id: null,
activeName: null,
activeStart: null,
activeEnd: null,
activeContent: null,
activePoint: null,
joinRequire: null,
activeState: null,
createId: null,
createBy: null,
createTime: null,
updateId: null,
updateBy: null,
updateTime: null,
remark: null,
gridId: null,
gridName: null,
partId: null,
partName: null,
};
},
},
};
</script>
<style lang="scss" scoped>
.app-container {
.list-item {
background-color: #fff;
border-radius: 16rpx;
box-sizing: border-box;
padding: 25rpx;
margin-bottom: 30rpx;
margin-top: 30rpx;
.list-item-title {
text-align: center;
border-bottom: 1rpx solid #000000;
font-size: 35rpx;
font-weight: bold;
}
.Mytitle {
font-size: 30rpx;
margin: 20rpx 0;
font-weight: 550;
}
.mytext {
line-height: 2;
}
.myimg {
text-align: center;
}
.item-cell {
display: flex;
align-items: center;
.cell-lable {
width: 200rpx;
font-size: 28rpx;
font-weight: 400;
color: #9da2ab;
}
.cell-value {
flex: 1;
font-size: 28rpx;
font-weight: 400;
color: #2e2f31;
}
}
.cell-btn {
display: flex;
flex-direction: row-reverse;
}
&>view:not(.cell-btn) {
margin-bottom: 20rpx;
}
}
&>.list-item:last-child {
margin-bottom: 0;
}
}
</style>

@ -1,155 +1,281 @@
<template> <template>
<view class="app-container"> <view class="app-container">
<u-navbar <!-- <u-navbar leftText="返回" title="门前三包服务" :autoBack="true" :placeholder="true">
leftText="返回" <view slot="right">
title="门前三包服务" <text class="nav-right"></text>
:autoBack="true" </view>
:placeholder="true" </u-navbar> -->
> <u-search height="75rpx" placeholder="输入评级规则查询" v-model="queryParams.rateRuleName" shape="square"
<view slot="right"> :showAction="false" :clearabled="true" class="view-global" bgColor="#fff" @search="onSearch"
<text class="nav-right">评级规则</text> @clear="onClear"></u-search>
</view> <view class="list-item">
</u-navbar> <view class="list-item-box">
<u-search <view class="list-item-box-top">
height="75rpx" 店铺名称:
placeholder="搜索关键词" </view>
v-model="queryParams.sbLevelName" <view class="list-item-box-bottom">
shape="square" {{titleObj.shopName || '优秀店铺'}}
:showAction="false" </view>
:clearabled="true" </view>
class="view-global" <view class="list-item-box">
bgColor="#fff" <view class="list-item-box-top">
@search="onSearch" 三包等级:
@clear="onClear" </view>
></u-search> <view class="list-item-box-bottom "
<view :class="titleObj.sbLevel==3?'red':titleObj.sbLevel==4?'yellow':titleObj.sbLevel==5?'good':''">
class="list-item active view-global" <!-- 3 4 5绿 -->
v-for="(item, index) in levelList" {{titleObj.sbLevel==3?'红牌':titleObj.sbLevel==4?'黄牌':titleObj.sbLevel==5?'绿牌':'暂无'}}
:key="index" </view>
> </view>
<view> <view class="list-item-box">
<image <view class="list-item-box-top">
width="100%" 三包等级凭证:
src="/static/images/umale/sanbao.png" </view>
mode="scaleToFill" <view class="list-item-box-bottom">
/> 暂无
</view> </view>
<view class="item-cell"> </view>
<view class="cell-lable">店铺名称</view> <view class="list-item-box">
<view class="cell-value">{{ item.sbLevelName }}</view> <view class="list-item-box-top">
</view> 有效期:
<view class="item-cell"> </view>
<view class="cell-lable">三包等级</view> <view class="list-item-box-bottom">
<view class="cell-value">{{ item.relationRateRule }}</view> 长期有效
</view> </view>
<view class="item-cell"> </view>
<view class="cell-lable">有效期</view>
<view class="cell-value">{{ item.createTime }}</view> </view>
</view> <view class="list-item">
</view> <view class="list-item-title">{{levelList[0].rateRuleName || ''}}</view>
</view> <view>
</template>
<view class="Mytitle">
<script>
import { listLevel } from "../../api/jn/level"; </view>
<view class="mytext" v-html="levelList[0].rateRuleContent">
export default { </view>
data() { <!-- <view class="mytext">
return { <u-parse :content="levelList[0].rateRuleContent" :tag-style="style"></u-parse>
// </view> -->
form: {}, </view>
levelList: [],
// <u-toast ref="uToast"></u-toast>
queryParams: { </view>
sbLevelName: null, </view>
}, </template>
};
}, <script>
onLoad() { // import uParse from '@/components/u-parse/u-parse.vue'
this.getList(); import {
}, listraterule,
methods: { jnshop
onSearch() { } from "../../api/jn/apply";
this.getList(); export default {
}, data() {
onClear() { return {
this.queryParams.sbLevelName = ""; //
this.getList(); form: {},
}, levelList: [{
getList() { rateRuleName: "",
listLevel(this.queryParams).then((res) => { rateRuleContent: ""
// console.log(res); }],
this.levelList = res.rows; //
}); queryParams: {
}, rateRuleName: "",
// sbLevelName: null,
reset() { pageNum: 1,
this.form = { pageSize: 10,
id: null, state: "1"
activeName: null, },
activeStart: null, titleObj: {
activeEnd: null, sbLevel: "",
activeContent: null, shopName: "",
activePoint: null, },
joinRequire: null, style: {
activeState: null, p: 'font-size:20rpx;!important'
createId: null, }
createBy: null, };
createTime: null, },
updateId: null, onLoad() {
updateBy: null, this.getList();
updateTime: null, this.getXinxi();
remark: null, },
gridId: null, methods: {
gridName: null, getXinxi() {
partId: null, const launchOptions = uni.getLaunchOptionsSync();
partName: null, const {
}; query
}, } = launchOptions;
}, // console.log(query, "query");
}; // console.log(Object.keys(query).length, "query.lengh");
</script> if (Object.keys(query).length != 0) {
// 3 4 5绿 sbLevel shopName
<style lang="scss" scoped> jnshop(query.storeId).then((item) => {
.app-container { // console.log(item);
.list-item { if (item.code == 200 && item.data) {
background-color: #fff; this.titleObj.sbLevel = item.data.sbLevel
border-radius: 16rpx; this.titleObj.shopName = item.data.shopName
box-sizing: border-box; } else {
padding: 25rpx;
margin-bottom: 30rpx; }
margin-top: 30rpx; })
.item-cell { }
display: flex; },
align-items: center; onSearch() {
// this.getList();
.cell-lable { this.$refs.uToast.show({
width: 200rpx; type: 'default',
font-size: 28rpx; title: '默认主题',
font-weight: 400; message: "暂无更多评级规则",
color: #9da2ab; complete() {
}
}
.cell-value { })
flex: 1;
font-size: 28rpx; },
font-weight: 400; onClear() {
color: #2e2f31; this.queryParams.sbLevelName = "";
} // this.getList();
} },
getList() {
.cell-btn { listraterule(this.queryParams).then((res) => {
display: flex; // console.log(res);
flex-direction: row-reverse; if (res.rows.length != 0) {
} this.levelList = res.rows;
& > view:not(.cell-btn) { } else {
margin-bottom: 20rpx; this.levelList = [{
} rateRuleName: "",
} rateRuleContent: ""
}]
& > .list-item:last-child { }
margin-bottom: 0; });
} },
} //
</style> reset() {
this.form = {
id: null,
activeName: null,
activeStart: null,
activeEnd: null,
activeContent: null,
activePoint: null,
joinRequire: null,
activeState: null,
createId: null,
createBy: null,
createTime: null,
updateId: null,
updateBy: null,
updateTime: null,
remark: null,
gridId: null,
gridName: null,
partId: null,
partName: null,
};
},
},
};
</script>
<style lang="scss" scoped>
.app-container {
.list-item {
background-color: #fff;
border-radius: 16rpx;
box-sizing: border-box;
padding: 25rpx;
margin-bottom: 30rpx;
margin-top: 30rpx;
.list-item-title {
text-align: center;
border-bottom: 1rpx solid #000000;
font-size: 35rpx;
font-weight: bold;
}
.Mytitle {
font-size: 30rpx;
margin: 20rpx 0;
font-weight: 550;
}
.mytext {
// line-height: 45rpx;
margin-top: 38rpx;
display: grid;
grid-template-columns: 1fr;
grid-row-gap: 20rpx;
line-height: 2;
overflow: hidden;
}
.item-cell {
display: flex;
align-items: center;
.cell-lable {
width: 200rpx;
font-size: 28rpx;
font-weight: 400;
color: #9da2ab;
}
.cell-value {
flex: 1;
font-size: 28rpx;
font-weight: 400;
color: #2e2f31;
}
}
.cell-btn {
display: flex;
flex-direction: row-reverse;
}
&>view:not(.cell-btn) {
margin-bottom: 20rpx;
}
}
&>.list-item:last-child {
margin-bottom: 0;
}
}
.list-item-box {
display: flex;
text-align: center;
.list-item-box-top {
font-size: 30rpx;
font-weight: bold;
margin-right: 20rpx;
}
.list-item-box-bottom {
font-size: 30rpx;
font-weight: bold;
}
.good {
color: green;
}
.red {
color: red;
}
.yellow {
color: yellowgreen;
}
}
</style>

@ -3,7 +3,7 @@ function scroll(event, ownerInstance) {
var detail = event.detail var detail = event.detail
var scrollWidth = detail.scrollWidth var scrollWidth = detail.scrollWidth
var scrollLeft = detail.scrollLeft var scrollLeft = detail.scrollLeft
// 获取当前组件的dataset说白了就是祸国殃民的腾xun搞出来的垃ji // 获取当前组件的dataset说白了就是搞出来的垃ji
var dataset = event.currentTarget.dataset var dataset = event.currentTarget.dataset
// 此为scroll-view外部包裹元素的宽度 // 此为scroll-view外部包裹元素的宽度
// 某些HX版本(3.1.18)发现view元素中大写的data-scrollWidth在wxs中变成了全部小写所以这里需要特别处理 // 某些HX版本(3.1.18)发现view元素中大写的data-scrollWidth在wxs中变成了全部小写所以这里需要特别处理

Loading…
Cancel
Save