mirror of
https://github.com/crmeb/CRMEB.git
synced 2026-10-29 14:01:07 +00:00
【前端模版】更新模版文件
This commit is contained in:
parent
8e55004d3f
commit
fad3dc189c
14
template/admin/.env.dev
Normal file
14
template/admin/.env.dev
Normal file
@ -0,0 +1,14 @@
|
||||
# 环境
|
||||
NODE_ENV=development
|
||||
VUE_APP_ENV='dev'
|
||||
# 页面 title
|
||||
VUE_APP_TITLE=CRMEB
|
||||
# socket 客服连接地址
|
||||
VUE_APP_WS_KEFU_URL=""
|
||||
# socket 系统连接地址
|
||||
VUE_APP_WS_ADMIN_URL=""
|
||||
|
||||
|
||||
|
||||
# 接口请求地址
|
||||
VUE_APP_API_URL=''
|
||||
15
template/admin/.env.production
Normal file
15
template/admin/.env.production
Normal file
@ -0,0 +1,15 @@
|
||||
# 环境
|
||||
NODE_ENV=production
|
||||
VUE_APP_ENV='production'
|
||||
|
||||
# 页面 title
|
||||
VUE_APP_TITLE=CRMEB
|
||||
# socket 客服连接地址
|
||||
VUE_APP_WS_KEFU_URL=""
|
||||
# socket 系统连接地址
|
||||
VUE_APP_WS_ADMIN_URL=""
|
||||
|
||||
|
||||
|
||||
# 接口请求地址
|
||||
VUE_APP_API_URL=""
|
||||
@ -4,11 +4,8 @@
|
||||
"author": "Lison<lison16new@163.com>",
|
||||
"private": false,
|
||||
"scripts": {
|
||||
"serve": "vue-cli-service serve --open",
|
||||
"build": "vue-cli-service build",
|
||||
"lint": "vue-cli-service lint",
|
||||
"test:unit": "vue-cli-service test:unit",
|
||||
"test:e2e": "vue-cli-service test:e2e"
|
||||
"serve": "vue-cli-service serve --open --mode=dev",
|
||||
"build": "vue-cli-service build --mode=production"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/polyfill": "^7.8.7",
|
||||
|
||||
@ -506,4 +506,26 @@ export function setAgreement(data) {
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 获取协议
|
||||
* @param data
|
||||
*/
|
||||
export function getAgreements(type) {
|
||||
return request({
|
||||
url: `setting/get_agreement/${type}`,
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
/**
|
||||
* @description 设置隐私协议
|
||||
* @param data
|
||||
*/
|
||||
export function setAgreements(data, type) {
|
||||
return request({
|
||||
url: `setting/save_agreement`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
@ -644,4 +644,25 @@ export function getUserInfo(uid) {
|
||||
url: `user/user/user_save_info/${uid}`,
|
||||
method: 'get'
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户注销列表
|
||||
*/
|
||||
export function userCancelList(data) {
|
||||
return request({
|
||||
url: '/user/cancel_list',
|
||||
method: 'get',
|
||||
params: data
|
||||
});
|
||||
}
|
||||
/**
|
||||
* 用户注销列表
|
||||
*/
|
||||
export function userCancelSetMark(data) {
|
||||
return request({
|
||||
url: '/user/cancel/set_mark',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
BIN
template/admin/src/assets/images/ag-phone.png
Normal file
BIN
template/admin/src/assets/images/ag-phone.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 7.7 KiB |
76
template/admin/src/components/remark/index.vue
Normal file
76
template/admin/src/components/remark/index.vue
Normal file
@ -0,0 +1,76 @@
|
||||
<template>
|
||||
<Modal
|
||||
v-model="modals"
|
||||
scrollable
|
||||
title="备注"
|
||||
class="order_box"
|
||||
:closable="false"
|
||||
>
|
||||
<Form
|
||||
ref="formValidate"
|
||||
:model="formValidate"
|
||||
:rules="ruleValidate"
|
||||
:label-width="80"
|
||||
@submit.native.prevent
|
||||
>
|
||||
<FormItem label="备注:" prop="remark">
|
||||
<Input
|
||||
v-model="formValidate.remark"
|
||||
:maxlength="200"
|
||||
show-word-limit
|
||||
type="textarea"
|
||||
placeholder="请输入备注信息"
|
||||
style="width: 100%"
|
||||
/>
|
||||
</FormItem>
|
||||
</Form>
|
||||
<div slot="footer">
|
||||
<Button type="primary" @click="putRemark('formValidate')">提交</Button>
|
||||
<Button @click="cancel('formValidate')">取消</Button>
|
||||
</div>
|
||||
</Modal>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "orderMark",
|
||||
data() {
|
||||
return {
|
||||
formValidate: {
|
||||
remark: "",
|
||||
},
|
||||
modals: false,
|
||||
ruleValidate: {
|
||||
remark: [
|
||||
{ required: true, message: "请输入备注信息", trigger: "blur" },
|
||||
// { type: 'string', min: 20, message: 'Introduce no less than 20 words', trigger: 'blur' }
|
||||
],
|
||||
},
|
||||
};
|
||||
},
|
||||
props: {
|
||||
remark: {
|
||||
default: "",
|
||||
type: String,
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
cancel(name) {
|
||||
this.modals = false;
|
||||
this.$refs[name].resetFields();
|
||||
},
|
||||
putRemark(name) {
|
||||
this.$refs[name].validate((valid) => {
|
||||
if (valid) {
|
||||
this.$emit("submitFail", this.formValidate.remark);
|
||||
} else {
|
||||
this.$Message.warning("请填写备注信息");
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
</style>
|
||||
@ -4,40 +4,17 @@
|
||||
<div ref="wang-editor" class="wang-editor" />
|
||||
</div>
|
||||
<div v-if="monacoBox">
|
||||
<Button type="primary" class="bottom" @click="getHtmlint"
|
||||
>可视化界面</Button
|
||||
>
|
||||
<Button type="primary" class="bottom" @click="getHtmlint">可视化界面</Button>
|
||||
<monaco @change="changeValue" :value="newHtml" />
|
||||
</div>
|
||||
|
||||
<Modal
|
||||
v-model="modalPic"
|
||||
width="1024px"
|
||||
scrollable
|
||||
footer-hide
|
||||
closable
|
||||
title="上传图片"
|
||||
:mask-closable="false"
|
||||
:z-index="9"
|
||||
>
|
||||
<uploadPictures
|
||||
v-if="modalPic"
|
||||
:isChoice="isChoice"
|
||||
@getPic="getPic"
|
||||
@getPicD="getPicD"
|
||||
></uploadPictures>
|
||||
<Modal v-model="modalPic" width="1024px" scrollable footer-hide closable title="上传图片" :mask-closable="false"
|
||||
:z-index="9">
|
||||
<uploadPictures v-if="modalPic" :isChoice="isChoice" @getPic="getPic" @getPicD="getPicD"></uploadPictures>
|
||||
</Modal>
|
||||
<Modal
|
||||
v-model="modalVideo"
|
||||
width="1024px"
|
||||
scrollable
|
||||
footer-hide
|
||||
closable
|
||||
title="上传视频"
|
||||
:mask-closable="false"
|
||||
:z-index="9"
|
||||
>
|
||||
<uploadVideo @getVideo="getvideo"></uploadVideo>
|
||||
<Modal v-model="modalVideo" width="800px" scrollable footer-hide closable title="上传视频" :mask-closable="false"
|
||||
:z-index="9">
|
||||
<uploadVideo v-if="modalVideo" @getVideo="getvideo"></uploadVideo>
|
||||
</Modal>
|
||||
</div>
|
||||
</template>
|
||||
@ -50,7 +27,7 @@ import uploadPictures from "@/components/uploadPictures";
|
||||
import uploadVideo from "@/components/uploadVideo2";
|
||||
import { getCookies } from "@/libs/util";
|
||||
|
||||
import util from '../../utils/bus'
|
||||
import util from "../../utils/bus";
|
||||
export default {
|
||||
name: "Index",
|
||||
components: {
|
||||
@ -84,28 +61,22 @@ export default {
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
content: function (val) {
|
||||
if (val !== "") {
|
||||
this.editor.txt.html(val);
|
||||
} else {
|
||||
this.editor.txt.clear();
|
||||
}
|
||||
content(val) {
|
||||
this.editor.txt.html(val);
|
||||
},
|
||||
},
|
||||
created() {
|
||||
// window.getvideoint = this.getvideoint;
|
||||
// window.getHtmlint = this.getHtmlint;
|
||||
|
||||
},
|
||||
mounted() {
|
||||
this.createEditor();
|
||||
util.$on('Video',(Video)=>{
|
||||
this.getvideoint();
|
||||
})
|
||||
util.$on('Html',(Html)=>{
|
||||
this.getHtmlint();
|
||||
})
|
||||
|
||||
util.$on("Video", (Video) => {
|
||||
this.getvideoint();
|
||||
});
|
||||
util.$on("Html", (Html) => {
|
||||
this.getHtmlint();
|
||||
});
|
||||
},
|
||||
|
||||
methods: {
|
||||
@ -142,6 +113,8 @@ export default {
|
||||
getPicD(data) {
|
||||
let _this = this;
|
||||
_this.modalPic = false;
|
||||
console.log("222");
|
||||
|
||||
data.map((d) => {
|
||||
this.editor.cmd.do(
|
||||
"insertHTML",
|
||||
@ -153,10 +126,16 @@ export default {
|
||||
let _this = this;
|
||||
_this.modalVideo = false;
|
||||
this.video = data;
|
||||
this.editor.cmd.do(
|
||||
"insertHTML",
|
||||
`<video src="${_this.video}" controls style="max-width:100%;"/>`
|
||||
);
|
||||
// this.editor.cmd.do(
|
||||
// "insertHTML",
|
||||
// `<video src="${_this.video}" controls style="max-width:100%;"/>`
|
||||
// );
|
||||
|
||||
let videoHTML =
|
||||
'<video src="' +
|
||||
this.video +
|
||||
'" controls style="max-width:100%"></video>';
|
||||
this.editor.cmd.do("insertHTML", videoHTML);
|
||||
},
|
||||
|
||||
createEditor() {
|
||||
@ -213,7 +192,7 @@ export default {
|
||||
this.newHtml = newHtml;
|
||||
this.$emit("editorContent", newHtml);
|
||||
};
|
||||
this.editor.config.onchangeTimeout = 800; // change后多久更新数据
|
||||
this.editor.config.onchangeTimeout = 300; // change后多久更新数据
|
||||
|
||||
this.editor.create();
|
||||
},
|
||||
@ -222,8 +201,8 @@ export default {
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
.bottom{
|
||||
margin-bottom: 10px
|
||||
cursor pointer
|
||||
.bottom {
|
||||
margin-bottom: 10px;
|
||||
cursor: pointer;
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -202,15 +202,6 @@
|
||||
highlight-row
|
||||
@on-selection-change="changeCheckbox"
|
||||
>
|
||||
<template slot-scope="{ row, index }" slot="price">
|
||||
<InputNumber
|
||||
v-model="row.price"
|
||||
:min="0"
|
||||
:precision="2"
|
||||
class="priceBox"
|
||||
:active-change="false"
|
||||
></InputNumber>
|
||||
</template>
|
||||
<template slot-scope="{ row, index }" slot="pic">
|
||||
<div
|
||||
class="acea-row row-middle row-center-wrapper"
|
||||
@ -531,18 +522,20 @@ export default {
|
||||
title: title,
|
||||
key: key,
|
||||
align: "center",
|
||||
minWidth: 100,
|
||||
minWidth: 120,
|
||||
render: (h, params) => {
|
||||
return h("div", [
|
||||
h("InputNumber", {
|
||||
props: {
|
||||
min: 1,
|
||||
min: 0,
|
||||
precision: 0,
|
||||
value: params.row.quota,
|
||||
value: key === "price" ? params.row.price : params.row.quota,
|
||||
},
|
||||
on: {
|
||||
"on-change": (e) => {
|
||||
params.row.quota = e;
|
||||
key === "price"
|
||||
? (params.row.price = e)
|
||||
: (params.row.quota = e);
|
||||
that.specsData[params.index] = params.row;
|
||||
if (
|
||||
!!that.formValidate.attrs &&
|
||||
|
||||
@ -165,7 +165,7 @@ export default {
|
||||
tbody: [],
|
||||
loading: false,
|
||||
total: 0,
|
||||
animal: 1,
|
||||
animal: 0, // 隐藏装饰边框
|
||||
pagination: {
|
||||
page: 1,
|
||||
limit: 30,
|
||||
@ -360,7 +360,7 @@ export default {
|
||||
}
|
||||
.QRpic {
|
||||
width: 180px;
|
||||
height: 259px;
|
||||
// height: 259px;
|
||||
|
||||
img {
|
||||
width: 100%;
|
||||
|
||||
166
template/admin/src/pages/setting/agreement/index.vue
Normal file
166
template/admin/src/pages/setting/agreement/index.vue
Normal file
@ -0,0 +1,166 @@
|
||||
<template>
|
||||
<div class="agreemant">
|
||||
<Card :bordered="false" dis-hover class="ivu-mt" :padding="0">
|
||||
<div class="new_card_pd">
|
||||
<Tabs v-model="currentTab" @on-click="changeTab">
|
||||
<TabPane :label="item.label" :name="item.value.toString()" v-for="(item, index) in headerList" :key="index" />
|
||||
</Tabs>
|
||||
</div>
|
||||
</Card>
|
||||
|
||||
<Row class="mb10 content">
|
||||
<Col span="16">
|
||||
<WangEditor style="width: 100%" :content="formValidate.content" @editorContent="getEditorContent"></WangEditor>
|
||||
</Col>
|
||||
<Col span="6" style="width: 33%">
|
||||
<div class="ifam">
|
||||
<div class="content" v-html="content"></div>
|
||||
</div>
|
||||
</Col>
|
||||
</Row>
|
||||
<!-- <Row class="mb10 content">
|
||||
<Button class="bnt" type="primary" @click="save" :loading="loadingExist"
|
||||
>保存</Button
|
||||
>
|
||||
</Row> -->
|
||||
<Card :bordered="false" dis-hover class="fixed-card"
|
||||
:style="{ left: `${!menuCollapse ? '200px' : isMobile ? '0' : '80px'}` }">
|
||||
<div class="acea-row row-center">
|
||||
<Button class="bnt" type="primary" @click="save" :loading="loadingExist">保存</Button>
|
||||
</div>
|
||||
</Card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState } from "vuex";
|
||||
import WangEditor from "@/components/wangEditor/index.vue";
|
||||
import { getAgreements, setAgreements } from "@/api/system";
|
||||
|
||||
export default {
|
||||
components: { WangEditor },
|
||||
data() {
|
||||
return {
|
||||
loadingExist: false,
|
||||
currentTab: "1",
|
||||
headerList: [
|
||||
{ label: "付费会员协议", value: "1" },
|
||||
{ label: "代理商协议", value: "2" },
|
||||
{ label: "隐私协议", value: "3" },
|
||||
{ label: "用户协议", value: "4" },
|
||||
{ label: "注销协议", value: "5" },
|
||||
{ label: "积分协议", value: "6" },
|
||||
],
|
||||
ueConfig: {
|
||||
autoHeightEnabled: false,
|
||||
initialFrameHeight: 500,
|
||||
initialFrameWidth: "100%",
|
||||
UEDITOR_HOME_URL: "/admin/UEditor/",
|
||||
serverUrl: "",
|
||||
},
|
||||
id: 0,
|
||||
formValidate: {
|
||||
content: "",
|
||||
},
|
||||
content: "",
|
||||
spinShow: false,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapState("admin/layout", ["isMobile", "menuCollapse"]),
|
||||
},
|
||||
created() {
|
||||
this.changeTab(this.currentTab);
|
||||
},
|
||||
methods: {
|
||||
save() {
|
||||
console.log(this.content)
|
||||
this.formValidate.content = this.content;
|
||||
setAgreements(this.formValidate)
|
||||
.then(async (res) => {
|
||||
this.$Message.success(res.msg);
|
||||
})
|
||||
.catch((res) => {
|
||||
this.$Message.error(res.msg);
|
||||
});
|
||||
},
|
||||
getEditorContent(content) {
|
||||
this.content = content;
|
||||
},
|
||||
changeTab(data) {
|
||||
this.formValidate.content = " "
|
||||
getAgreements(data).then((res) => {
|
||||
this.formValidate.id = res.data.id || 0;
|
||||
this.formValidate.type = res.data.type;
|
||||
this.formValidate.title = res.data.title;
|
||||
this.formValidate.content = res.data.content;
|
||||
this.content = res.data.content;
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
.agreemant {
|
||||
background-color: #fff;
|
||||
padding: 5px 15px ;
|
||||
margin-top 10px;
|
||||
}
|
||||
|
||||
.content {
|
||||
padding: 10px 0px;
|
||||
}
|
||||
|
||||
.ifam {
|
||||
width: 344px;
|
||||
height: 644px;
|
||||
background: url('../../../assets/images/ag-phone.png') no-repeat center top;
|
||||
background-size: 344px 644px;
|
||||
padding: 40px 20px;
|
||||
padding-top: 50px;
|
||||
margin: 0 auto 0 20px;
|
||||
|
||||
.content {
|
||||
height: 560px;
|
||||
overflow: hidden;
|
||||
scrollbar-width: none; /* firefox */
|
||||
-ms-overflow-style: none; /* IE 10+ */
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.content::-webkit-scrollbar {
|
||||
display: none; /* Chrome Safari */
|
||||
}
|
||||
}
|
||||
|
||||
.new_tab {
|
||||
>>>.ivu-tabs-nav .ivu-tabs-tab {
|
||||
padding: 4px 16px 20px !important;
|
||||
font-weight: 500;
|
||||
}
|
||||
}
|
||||
|
||||
.fixed-card {
|
||||
position: fixed;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 200px;
|
||||
z-index: 99;
|
||||
box-shadow: 0 -1px 2px rgb(240, 240, 240);
|
||||
|
||||
/deep/ .ivu-card-body {
|
||||
padding: 15px 16px 14px;
|
||||
}
|
||||
|
||||
.ivu-form-item {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
/deep/ .ivu-form-item-content {
|
||||
margin-right: 124px;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@ -121,7 +121,7 @@
|
||||
<div class="right-box">
|
||||
<div class="hot_imgs">
|
||||
<div class="title">页面设置</div>
|
||||
<div class="title-text">建议尺寸:690 * 240px</div>
|
||||
<div class="title-text">建议尺寸:140px * 60px</div>
|
||||
<div class="title-text">除LOGO图标外,页面其他内容仅供参考</div>
|
||||
<div class="list-box">
|
||||
|
||||
|
||||
314
template/admin/src/pages/user/cancel/handle/task.vue
Normal file
314
template/admin/src/pages/user/cancel/handle/task.vue
Normal file
@ -0,0 +1,314 @@
|
||||
<template>
|
||||
<Modal
|
||||
v-model="modals"
|
||||
:z-index="1"
|
||||
scrollable
|
||||
footer-hide
|
||||
closable
|
||||
title="等级任务"
|
||||
:mask-closable="false"
|
||||
width="950"
|
||||
@on-cancel="handleReset"
|
||||
>
|
||||
<Form
|
||||
ref="levelFrom"
|
||||
:model="levelFrom"
|
||||
:label-width="labelWidth"
|
||||
:label-position="labelPosition"
|
||||
@submit.native.prevent
|
||||
>
|
||||
<Row type="flex" :gutter="24">
|
||||
<Col v-bind="grid">
|
||||
<FormItem label="状态:">
|
||||
<Select
|
||||
v-model="levelFrom.is_show"
|
||||
placeholder="是否显示"
|
||||
clearable
|
||||
@on-change="userSearchs"
|
||||
>
|
||||
<Option value="1">显示</Option>
|
||||
<Option value="0">不显示</Option>
|
||||
</Select>
|
||||
</FormItem>
|
||||
</Col>
|
||||
<Col v-bind="grid">
|
||||
<FormItem label="等级名称:" prop="status2" label-for="status2">
|
||||
<Input
|
||||
search
|
||||
enter-button
|
||||
v-model="levelFrom.name"
|
||||
placeholder="请输入等级名称"
|
||||
@on-search="userSearchs"
|
||||
style="width: 100%"
|
||||
/>
|
||||
</FormItem>
|
||||
</Col>
|
||||
</Row>
|
||||
</Form>
|
||||
<Divider dashed />
|
||||
<Row type="flex">
|
||||
<Col v-bind="grid" class="mb15">
|
||||
<Button type="primary" icon="md-add" @click="add">添加等级任务</Button>
|
||||
</Col>
|
||||
<Col span="24" class="userAlert">
|
||||
<Alert show-icon closable
|
||||
>添加等级任务,任务类型中的{$num}会自动替换成限定数量+系统预设的单位生成任务名</Alert
|
||||
>
|
||||
</Col>
|
||||
</Row>
|
||||
<Divider dashed />
|
||||
<Table
|
||||
:columns="columns1"
|
||||
:data="levelLists"
|
||||
ref="table"
|
||||
:loading="loading"
|
||||
no-userFrom-text="暂无数据"
|
||||
no-filtered-userFrom-text="暂无筛选结果"
|
||||
>
|
||||
<template slot-scope="{ row, index }" slot="is_shows">
|
||||
<i-switch
|
||||
v-model="row.is_show"
|
||||
:value="row.is_show"
|
||||
:true-value="1"
|
||||
:false-value="0"
|
||||
size="large"
|
||||
@on-change="onchangeIsShow(row)"
|
||||
>
|
||||
<span slot="open">显示</span>
|
||||
<span slot="close">隐藏</span>
|
||||
</i-switch>
|
||||
</template>
|
||||
<template slot-scope="{ row, index }" slot="is_musts">
|
||||
<i-switch
|
||||
v-model="row.is_must"
|
||||
:value="row.is_must"
|
||||
:true-value="1"
|
||||
:false-value="0"
|
||||
size="large"
|
||||
@on-change="onchangeIsMust(row)"
|
||||
>
|
||||
<span slot="open">全部完成</span>
|
||||
<span slot="close">达成其一</span>
|
||||
</i-switch>
|
||||
</template>
|
||||
<template slot-scope="{ row, index }" slot="action">
|
||||
<a @click="edit(row)">编辑 | </a>
|
||||
<a @click="del(row, '删除等级任务', index)"> 删除</a>
|
||||
</template>
|
||||
</Table>
|
||||
<div class="acea-row row-right page">
|
||||
<Page
|
||||
:total="total"
|
||||
show-elevator
|
||||
show-total
|
||||
@on-change="pageChange"
|
||||
:page-size="levelFrom.limit"
|
||||
/>
|
||||
</div>
|
||||
<!-- 新建 编辑表单-->
|
||||
<edit-from
|
||||
ref="edits"
|
||||
:FromData="FromData"
|
||||
@submitFail="submitFail"
|
||||
:titleType="titleType"
|
||||
></edit-from>
|
||||
</Modal>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState, mapMutations } from "vuex";
|
||||
import {
|
||||
taskListApi,
|
||||
setTaskShowApi,
|
||||
setTaskMustApi,
|
||||
createTaskApi,
|
||||
} from "@/api/user";
|
||||
import editFrom from "@/components/from/from";
|
||||
export default {
|
||||
name: "task",
|
||||
components: { editFrom },
|
||||
data() {
|
||||
return {
|
||||
// levelIds: this.levelId,
|
||||
grid: {
|
||||
xl: 10,
|
||||
lg: 10,
|
||||
md: 12,
|
||||
sm: 24,
|
||||
xs: 24,
|
||||
},
|
||||
modals: false,
|
||||
levelFrom: {
|
||||
is_show: "",
|
||||
name: "",
|
||||
page: 1,
|
||||
limit: 20,
|
||||
},
|
||||
total: 0,
|
||||
levelLists: [],
|
||||
loading: false,
|
||||
columns1: [
|
||||
{
|
||||
title: "ID",
|
||||
key: "id",
|
||||
sortable: true,
|
||||
width: 80,
|
||||
},
|
||||
{
|
||||
title: "等级名称",
|
||||
key: "level_name",
|
||||
minWidth: 100,
|
||||
},
|
||||
{
|
||||
title: "任务名称",
|
||||
key: "name",
|
||||
minWidth: 120,
|
||||
},
|
||||
{
|
||||
title: "排序",
|
||||
sort: "grade",
|
||||
sortable: true,
|
||||
minWidth: 100,
|
||||
},
|
||||
{
|
||||
title: "是否显示",
|
||||
slot: "is_shows",
|
||||
minWidth: 110,
|
||||
},
|
||||
{
|
||||
title: "务必达成",
|
||||
slot: "is_musts",
|
||||
minWidth: 135,
|
||||
},
|
||||
{
|
||||
title: "任务说明",
|
||||
key: "illustrate",
|
||||
minWidth: 120,
|
||||
},
|
||||
{
|
||||
title: "操作",
|
||||
slot: "action",
|
||||
fixed: "right",
|
||||
minWidth: 120,
|
||||
},
|
||||
],
|
||||
FromData: null,
|
||||
ids: 0,
|
||||
modalTitleSs: "",
|
||||
titleType: "task",
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapState("media", ["isMobile"]),
|
||||
...mapState("userLevel", ["levelId"]),
|
||||
labelWidth() {
|
||||
return this.isMobile ? undefined : 75;
|
||||
},
|
||||
labelPosition() {
|
||||
return this.isMobile ? "top" : "right";
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
...mapMutations("userLevel", ["getTaskId", "getlevelId"]),
|
||||
// 添加
|
||||
add() {
|
||||
this.ids = "";
|
||||
this.getFrom();
|
||||
},
|
||||
// 新建 编辑表单
|
||||
getFrom() {
|
||||
let data = {
|
||||
id: this.ids,
|
||||
level_id: this.levelId,
|
||||
};
|
||||
this.$modalForm(createTaskApi(data)).then(() => this.getList());
|
||||
},
|
||||
// 编辑
|
||||
edit(row) {
|
||||
this.ids = row.id;
|
||||
this.getFrom();
|
||||
},
|
||||
// 关闭模态框
|
||||
handleReset() {
|
||||
this.modals = false;
|
||||
},
|
||||
// 表格搜索
|
||||
userSearchs() {
|
||||
this.getList();
|
||||
},
|
||||
// 任务列表
|
||||
getList() {
|
||||
this.loading = true;
|
||||
this.levelFrom.is_show = this.levelFrom.is_show || "";
|
||||
taskListApi(this.levelId, this.levelFrom)
|
||||
.then(async (res) => {
|
||||
let data = res.data;
|
||||
this.levelLists = data.list;
|
||||
this.total = res.data.count;
|
||||
this.loading = false;
|
||||
})
|
||||
.catch((res) => {
|
||||
this.loading = false;
|
||||
this.$Message.error(res.msg);
|
||||
});
|
||||
},
|
||||
pageChange(index) {
|
||||
this.levelFrom.page = index;
|
||||
this.getList();
|
||||
},
|
||||
// 修改显示隐藏
|
||||
onchangeIsShow(row) {
|
||||
let data = {
|
||||
id: row.id,
|
||||
is_show: row.is_show,
|
||||
};
|
||||
setTaskShowApi(data)
|
||||
.then(async (res) => {
|
||||
this.$Message.success(res.msg);
|
||||
})
|
||||
.catch((res) => {
|
||||
this.$Message.error(res.msg);
|
||||
});
|
||||
},
|
||||
// 设置任务是否达成
|
||||
onchangeIsMust(row) {
|
||||
let data = {
|
||||
id: row.id,
|
||||
is_must: row.is_must,
|
||||
};
|
||||
setTaskMustApi(data)
|
||||
.then(async (res) => {
|
||||
this.$Message.success(res.msg);
|
||||
})
|
||||
.catch((res) => {
|
||||
this.$Message.error(res.msg);
|
||||
});
|
||||
},
|
||||
// 新建编辑提交成功
|
||||
submitFail() {
|
||||
this.getList();
|
||||
},
|
||||
// 删除任务
|
||||
del(row, tit, num) {
|
||||
let delfromData = {
|
||||
title: tit,
|
||||
num: num,
|
||||
url: `user/user_level/delete_task/${row.id}`,
|
||||
method: "DELETE",
|
||||
ids: "",
|
||||
};
|
||||
this.$modalSure(delfromData)
|
||||
.then((res) => {
|
||||
this.$Message.success(res.msg);
|
||||
this.levelLists.splice(num, 1);
|
||||
})
|
||||
.catch((res) => {
|
||||
this.$Message.error(res.msg);
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
</style>
|
||||
269
template/admin/src/pages/user/cancel/index.vue
Normal file
269
template/admin/src/pages/user/cancel/index.vue
Normal file
@ -0,0 +1,269 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="i-layout-page-header">
|
||||
<div class="i-layout-page-header">
|
||||
<span class="ivu-page-header-title">{{ $route.meta.title }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<Card :bordered="false" dis-hover class="ivu-mt">
|
||||
<Form
|
||||
ref="levelFrom"
|
||||
:model="levelFrom"
|
||||
:label-width="labelWidth"
|
||||
:label-position="labelPosition"
|
||||
@submit.native.prevent
|
||||
>
|
||||
<Row type="flex" :gutter="24">
|
||||
<Col v-bind="grid">
|
||||
<FormItem label="状态:" label-for="status1">
|
||||
<!-- <Select
|
||||
v-model="levelFrom.status"
|
||||
placeholder="请选择"
|
||||
clearable
|
||||
element-id="status1"
|
||||
@on-change="userSearchs"
|
||||
>
|
||||
<Option value="0">待审核</Option>
|
||||
<Option value="1">通过</Option>
|
||||
<Option value="1">拒绝</Option>
|
||||
</Select> -->
|
||||
<RadioGroup
|
||||
v-model="levelFrom.status"
|
||||
type="button"
|
||||
@on-change="userSearchs(levelFrom.status)"
|
||||
>
|
||||
<Radio label="">全部</Radio>
|
||||
<Radio label="0">待审核</Radio>
|
||||
<Radio label="1">通过</Radio>
|
||||
<Radio label="2">拒绝</Radio>
|
||||
</RadioGroup>
|
||||
</FormItem>
|
||||
</Col>
|
||||
<Col v-bind="grid">
|
||||
<FormItem label="用户搜索:" label-for="title">
|
||||
<Input
|
||||
search
|
||||
enter-button
|
||||
v-model="levelFrom.keywords"
|
||||
placeholder="请输入用户昵称/ID/手机号"
|
||||
@on-search="userSearchs"
|
||||
/>
|
||||
</FormItem>
|
||||
</Col>
|
||||
</Row>
|
||||
</Form>
|
||||
<Table
|
||||
:columns="columns1"
|
||||
:data="levelLists"
|
||||
ref="table"
|
||||
class="mt25"
|
||||
:loading="loading"
|
||||
highlight-row
|
||||
no-userFrom-text="暂无数据"
|
||||
no-filtered-userFrom-text="暂无筛选结果"
|
||||
>
|
||||
<template slot-scope="{ row, index }" slot="action">
|
||||
<a @click="agree(row)">同意</a>
|
||||
<Divider type="vertical" />
|
||||
<a @click="refuse(row)">拒绝</a>
|
||||
<Divider type="vertical" />
|
||||
<a @click="remark(row)">备注</a>
|
||||
</template>
|
||||
</Table>
|
||||
<div class="acea-row row-right page">
|
||||
<Page
|
||||
:total="total"
|
||||
:current="levelFrom.page"
|
||||
show-elevator
|
||||
show-total
|
||||
@on-change="pageChange"
|
||||
:page-size="levelFrom.limit"
|
||||
/>
|
||||
</div>
|
||||
</Card>
|
||||
<!-- 等级任务-->
|
||||
<remark ref="remark" @submitFail="submitFail"></remark>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { mapState, mapMutations } from "vuex";
|
||||
import { userCancelList, userCancelSetMark } from "@/api/user";
|
||||
import taskList from "./handle/task";
|
||||
import editFrom from "@/components/from/from";
|
||||
import remark from "@/components/remark/index";
|
||||
export default {
|
||||
name: "user_level",
|
||||
components: { remark },
|
||||
data() {
|
||||
return {
|
||||
grid: {
|
||||
xl: 7,
|
||||
lg: 7,
|
||||
md: 12,
|
||||
sm: 24,
|
||||
xs: 24,
|
||||
},
|
||||
id: "",
|
||||
loading: false,
|
||||
columns1: [
|
||||
{
|
||||
title: "ID",
|
||||
key: "id",
|
||||
width: 80,
|
||||
},
|
||||
{
|
||||
title: "昵称",
|
||||
key: "name",
|
||||
minWidth: 100,
|
||||
},
|
||||
{
|
||||
title: "手机号",
|
||||
key: "phone",
|
||||
minWidth: 100,
|
||||
},
|
||||
{
|
||||
title: "状态",
|
||||
key: "status",
|
||||
minWidth: 120,
|
||||
},
|
||||
{
|
||||
title: "申请时间",
|
||||
key: "add_time",
|
||||
minWidth: 100,
|
||||
},
|
||||
{
|
||||
title: "审核时间",
|
||||
key: "up_time",
|
||||
minWidth: 100,
|
||||
},
|
||||
{
|
||||
title: "备注",
|
||||
key: "remark",
|
||||
minWidth: 100,
|
||||
},
|
||||
{
|
||||
title: "操作",
|
||||
slot: "action",
|
||||
fixed: "right",
|
||||
minWidth: 120,
|
||||
},
|
||||
],
|
||||
levelFrom: {
|
||||
status: "",
|
||||
keywords: "",
|
||||
page: 1,
|
||||
limit: 15,
|
||||
},
|
||||
levelLists: [],
|
||||
total: 0,
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getList();
|
||||
},
|
||||
computed: {
|
||||
...mapState("media", ["isMobile"]),
|
||||
labelWidth() {
|
||||
return this.isMobile ? undefined : 75;
|
||||
},
|
||||
labelPosition() {
|
||||
return this.isMobile ? "top" : "right";
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
...mapMutations("userLevel", ["getlevelId"]),
|
||||
remark(row) {
|
||||
console.log(this.$refs);
|
||||
this.id = row.id;
|
||||
this.$refs.remark.formValidate.remark = row.remark;
|
||||
this.$refs.remark.modals = true;
|
||||
},
|
||||
agree(row) {
|
||||
this.delfromData = {
|
||||
title: "注销用户",
|
||||
url: `/user/cancel/agree/${row.id}`,
|
||||
method: "get",
|
||||
};
|
||||
this.$modalSure(this.delfromData)
|
||||
.then((res) => {
|
||||
this.$Message.success(res.msg);
|
||||
this.getList();
|
||||
})
|
||||
.catch((err) => {
|
||||
this.$Message.error(err.msg);
|
||||
});
|
||||
},
|
||||
refuse(row) {
|
||||
this.delfromData = {
|
||||
title: "拒绝注销用户",
|
||||
info: "您确认拒绝注销此用户吗?",
|
||||
url: `/user/cancel/refuse/${row.id}`,
|
||||
method: "get",
|
||||
};
|
||||
this.$modalSure(this.delfromData)
|
||||
.then((res) => {
|
||||
this.$Message.success(res.msg);
|
||||
this.getList();
|
||||
})
|
||||
.catch((err) => {
|
||||
this.$Message.error(err.msg);
|
||||
});
|
||||
},
|
||||
submitFail(text) {
|
||||
let data = {
|
||||
id: this.id,
|
||||
mark: text,
|
||||
};
|
||||
userCancelSetMark(data)
|
||||
.then((res) => {
|
||||
this.$refs.remark.modals = false;
|
||||
this.$Message.success(res.msg);
|
||||
this.getList();
|
||||
})
|
||||
.catch((err) => {
|
||||
this.$refs.remark.modals = false;
|
||||
this.$Message.error(err.msg);
|
||||
});
|
||||
},
|
||||
|
||||
getList() {
|
||||
this.loading = true;
|
||||
this.levelFrom.status = this.levelFrom.status || "";
|
||||
userCancelList(this.levelFrom)
|
||||
.then(async (res) => {
|
||||
let data = res.data;
|
||||
this.levelLists = data.list;
|
||||
this.total = res.data.count;
|
||||
this.loading = false;
|
||||
})
|
||||
.catch((res) => {
|
||||
this.loading = false;
|
||||
this.$Message.error(res.msg);
|
||||
});
|
||||
},
|
||||
pageChange(index) {
|
||||
this.levelFrom.page = index;
|
||||
this.getList();
|
||||
},
|
||||
// 表格搜索
|
||||
userSearchs() {
|
||||
this.levelFrom.page = 1;
|
||||
this.getList();
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="stylus">
|
||||
.tabBox_img {
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
|
||||
img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@ -584,5 +584,14 @@ export default {
|
||||
},
|
||||
component: () => import('@/pages/setting/setSystem/index')
|
||||
},
|
||||
{
|
||||
path: 'agreement',
|
||||
name: `${pre}notification`,
|
||||
meta: {
|
||||
auth: ['setting-agreement'],
|
||||
title: '协议设置'
|
||||
},
|
||||
component: () => import('@/pages/setting/agreement/index')
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
@ -65,16 +65,26 @@ export default {
|
||||
},
|
||||
component: () => import("@/pages/user/label/index")
|
||||
},
|
||||
{
|
||||
path: "recharge/:id",
|
||||
name: `${pre}recharge`,
|
||||
meta: {
|
||||
auth: ["user-user-recharge"],
|
||||
footer: true,
|
||||
title: "充值配置"
|
||||
{
|
||||
path: "cancel",
|
||||
name: `${pre}cancel`,
|
||||
meta: {
|
||||
auth: ["user-user-cancel"],
|
||||
footer: true,
|
||||
title: "用户标签"
|
||||
},
|
||||
component: () => import("@/pages/user/cancel/index")
|
||||
},
|
||||
{
|
||||
path: "recharge/:id",
|
||||
name: `${pre}recharge`,
|
||||
meta: {
|
||||
auth: ["user-user-recharge"],
|
||||
footer: true,
|
||||
title: "充值配置"
|
||||
},
|
||||
component: () => import('@/pages/system/group/list')
|
||||
},
|
||||
component: () => import('@/pages/system/group/list')
|
||||
},
|
||||
{
|
||||
path: "grade/type",
|
||||
name: `${pre}type`,
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
// 请求接口地址 如果没有配置自动获取当前网址路径
|
||||
const Url = ''
|
||||
const VUE_APP_API_URL = Url || process.env.VUE_APP_API_URL || `${location.origin}/adminapi`
|
||||
const VUE_APP_API_URL = process.env.VUE_APP_API_URL || `${location.origin}/adminapi`
|
||||
|
||||
const Setting = {
|
||||
// 接口请求地址
|
||||
|
||||
@ -237,6 +237,19 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "user_cancellation/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "注销说明",
|
||||
"app-plus": {
|
||||
// #ifdef APP-PLUS
|
||||
"titleNView": {
|
||||
"type": "default"
|
||||
}
|
||||
// #endif
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "message_center/index",
|
||||
"style": {
|
||||
@ -951,7 +964,7 @@
|
||||
],
|
||||
"plugins": {
|
||||
"live-player-plugin": {
|
||||
"version": "1.3.2",
|
||||
"version": "1.3.4",
|
||||
"provider": "wx2b03c6e691cd7370"
|
||||
}
|
||||
}
|
||||
@ -1006,7 +1019,7 @@
|
||||
"style": {
|
||||
// #ifdef MP
|
||||
"navigationBarTitleText": "砍价活动",
|
||||
// #endif
|
||||
// #endif
|
||||
"app-plus": {
|
||||
// #ifdef APP-PLUS
|
||||
"titleNView": {
|
||||
|
||||
@ -1,14 +1,14 @@
|
||||
{
|
||||
"version" : "1",
|
||||
"prompt" : "none",
|
||||
"prompt" : "template",
|
||||
"title" : "服务协议与隐私政策",
|
||||
"message" : "\t请务必审慎阅读、充分理解“服务协议与 隐私政策”各条款,包括但不限于:为了 向你提供即时通讯、内容分享等服务,我 们需要收集你的设备信息、操作日志等个 人信息。你可以在“设置”中查看、变更、删除个人信息并管理你的授权。<br>\r\r
|
||||
\t\t\t你可以阅读<a href=\"https://baidu.com\">《服务协议与隐私政策》</a>了解详细信息。如你同意,请点击“我同意”开始接受我们的服务。",
|
||||
"message" : "\t请务必审慎阅读、充分理解“服务协议与 隐私政策”各条款,包括但不限于:为了 向你提供即时通讯、内容分享等服务,我 们需要收集你的设备信息、操作日志等个 人信息。你可以在“设置”中查看、变更、删除个人信息并管理你的授权。<br/>
|
||||
你可以阅读 <a href=\"/pages/columnGoods/static/yszc.html\">《服务协议与隐私政策》</a>了解详细信息。如你同意,请点击“我同意”开始接受我们的服务。",
|
||||
"buttonAccept" : "同意并接受",
|
||||
"buttonRefuse" : "暂不同意",
|
||||
"second" : {
|
||||
"title" : "确认提示",
|
||||
"message" : "进入应用前,你需先同意<a href=\"https://baidu.com\">《服务协议与隐私政策》</a>,否则将退出应用。",
|
||||
"message" : "进入应用前,你需先同意<a href=\"pages/columnGoods/static/yszc.html\">《服务协议与隐私政策》</a>,否则将退出应用。",
|
||||
"buttonAccept" : "同意并继续",
|
||||
"buttonRefuse" : "退出应用"
|
||||
},
|
||||
@ -16,7 +16,7 @@
|
||||
"backgroundColor" : "#fff",
|
||||
"borderRadius" : "5px",
|
||||
"title" : {
|
||||
"color" : "#ff00ff"
|
||||
"color" : "#000"
|
||||
},
|
||||
"buttonAccept" : {
|
||||
"color" : "#fff"
|
||||
|
||||
@ -589,8 +589,8 @@ export function appleLogin(data) {
|
||||
/*
|
||||
* 获取隐私协议
|
||||
* */
|
||||
export function getUserAgreement() {
|
||||
return request.get("user_agreement", {}, {
|
||||
export function getUserAgreement(type) {
|
||||
return request.get(`get_agreement/${type}`, {}, {
|
||||
noAuth: true
|
||||
});
|
||||
}
|
||||
@ -623,25 +623,34 @@ export function friendDetail(id) {
|
||||
* 员工列表
|
||||
* @param object data
|
||||
*
|
||||
*/
|
||||
export function clerkPeople(data){
|
||||
return request.get('agent/get_staff_list',data)
|
||||
*/
|
||||
export function clerkPeople(data) {
|
||||
return request.get('agent/get_staff_list', data)
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* 员工比例
|
||||
* @param object data
|
||||
*/
|
||||
export function setClerkPercent(data){
|
||||
return request.post('agent/set_staff_percent',data);
|
||||
*/
|
||||
export function setClerkPercent(data) {
|
||||
return request.post('agent/set_staff_percent', data);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* 删除员工
|
||||
* @param object data
|
||||
*/
|
||||
export function delClerkPercent(id){
|
||||
return request.get(`agent/del_staff/${id}`);
|
||||
}
|
||||
*/
|
||||
export function delClerkPercent(id) {
|
||||
return request.get(`agent/del_staff/${id}`);
|
||||
}
|
||||
|
||||
/**
|
||||
* 注销用户
|
||||
* @param int id
|
||||
*
|
||||
*/
|
||||
export function cancelUser() {
|
||||
return request.get('user_cancel');
|
||||
}
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
<swiper-item v-if="videoline">
|
||||
<view class="item">
|
||||
<view v-show="!controls" style="width:100%;height:100% ">
|
||||
<video id="myVideo" :src='videoline' objectFit="cover" controls style="width:100%;height:100% "
|
||||
<video id="myVideo" :src='videoline' objectFit="contain" controls style="width:100%;height:100% "
|
||||
show-center-play-btn show-mute-btn="true" auto-pause-if-navigate :custom-cache="false" :enable-progress-gesture="false" :poster="imgUrls[0]" @pause="videoPause"></video>
|
||||
</view>
|
||||
<view class="poster" v-show="controls">
|
||||
|
||||
@ -52,7 +52,7 @@
|
||||
"<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
|
||||
],
|
||||
"abiFilters" : [ "armeabi-v7a" ]
|
||||
"abiFilters" : [ "armeabi-v7a", "arm64-v8a" ]
|
||||
},
|
||||
/* ios打包配置 */
|
||||
"ios" : {
|
||||
@ -122,7 +122,7 @@
|
||||
"splashscreen" : {
|
||||
"androidStyle" : "common",
|
||||
"iosStyle" : "common",
|
||||
"useOriginalMsgbox" : false
|
||||
"useOriginalMsgbox" : true
|
||||
},
|
||||
"icons" : {
|
||||
"android" : {
|
||||
|
||||
@ -237,6 +237,19 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "user_cancellation/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "注销说明",
|
||||
"app-plus": {
|
||||
// #ifdef APP-PLUS
|
||||
"titleNView": {
|
||||
"type": "default"
|
||||
}
|
||||
// #endif
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "message_center/index",
|
||||
"style": {
|
||||
@ -1000,7 +1013,7 @@
|
||||
"style": {
|
||||
// #ifdef MP
|
||||
"navigationBarTitleText": "砍价活动",
|
||||
// #endif
|
||||
// #endif
|
||||
"app-plus": {
|
||||
// #ifdef APP-PLUS
|
||||
"titleNView": {
|
||||
|
||||
@ -33,7 +33,7 @@
|
||||
<view class="iconfont icon-fenxiang" @click="listenerActionSheet"></view>
|
||||
</view>
|
||||
<view class="label acea-row row-between-wrapper" style="padding-bottom: 20rpx;">
|
||||
<view v-text="'原价:¥' + (storeInfo.ot_price || 0)"></view>
|
||||
<view v-text="'划线价:¥' + (storeInfo.ot_price || 0)"></view>
|
||||
<view v-text="'已预订:' + (storeInfo.sales || 0) + (storeInfo.unit_name || '')"></view>
|
||||
</view>
|
||||
<view class="introduce" v-text="storeInfo.title"></view>
|
||||
|
||||
@ -97,6 +97,18 @@
|
||||
<view class="conter">{{ orderInfo.mark }}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class='wrapper' v-if="customForm && customForm.length">
|
||||
<view class='item acea-row row-between' v-for="(item,index) in customForm" :key="index">
|
||||
<view class='upload' v-if="item.label == 'img'">
|
||||
<view>{{item.title}}:</view>
|
||||
<view class='pictrue' v-for="(img,index) in item.value" :key="index">
|
||||
<image :src='img'></image>
|
||||
</view>
|
||||
</view>
|
||||
<view v-if="item.label !== 'img'">{{item.title}}:</view>
|
||||
<view v-if="item.label !== 'img'" class='conter'>{{item.value}}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="wrapper">
|
||||
<view class="item acea-row row-between">
|
||||
<view>支付金额:</view>
|
||||
@ -114,6 +126,7 @@
|
||||
实付款:<span class="money">¥{{ orderInfo.pay_price }}</span>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="wrapper" v-if="
|
||||
orderInfo.delivery_type != 'fictitious' && orderInfo._status._type === 2
|
||||
">
|
||||
@ -205,7 +218,8 @@
|
||||
types: "",
|
||||
order_type: "",
|
||||
clickNum: 1,
|
||||
goname: ''
|
||||
goname: '',
|
||||
customForm: []
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
@ -262,9 +276,20 @@
|
||||
fn(that.order_id).then(
|
||||
res => {
|
||||
that.orderInfo = res.data;
|
||||
//处理自定义留言非必填项的数据展示
|
||||
|
||||
that.types = res.data._status._type;
|
||||
that.title = res.data._status._title;
|
||||
that.payType = res.data._status._payType;
|
||||
if (that.orderInfo.custom_form && that.orderInfo.custom_form.length) {
|
||||
let arr = []
|
||||
that.orderInfo.custom_form.map(i => {
|
||||
if (i.value != '') {
|
||||
arr.push(i)
|
||||
}
|
||||
})
|
||||
that.$set(that, 'customForm', arr);
|
||||
}
|
||||
},
|
||||
err => {
|
||||
// that.$util.Tips({
|
||||
@ -817,4 +842,17 @@
|
||||
margin-left: 12px;
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
.upload .pictrue {
|
||||
display: inline-block;
|
||||
margin: 22rpx 17rpx 20rpx 0;
|
||||
width: 156rpx;
|
||||
height: 156rpx;
|
||||
color: #bbb;
|
||||
}
|
||||
|
||||
.upload .pictrue image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
||||
|
||||
37
template/uni-app/pages/columnGoods/static/yszc.html
Normal file
37
template/uni-app/pages/columnGoods/static/yszc.html
Normal file
File diff suppressed because one or more lines are too long
@ -58,19 +58,21 @@
|
||||
<text class="vip-money" v-if="
|
||||
storeInfo.vip_price &&
|
||||
storeInfo.vip_price > 0 &&
|
||||
storeInfo.is_vip == 1
|
||||
storeInfo.is_vip == 1 &&
|
||||
svip_price_open == 1
|
||||
">¥{{ storeInfo.vip_price }}</text>
|
||||
<image v-if="
|
||||
storeInfo.vip_price &&
|
||||
storeInfo.vip_price > 0 &&
|
||||
storeInfo.is_vip == 1
|
||||
storeInfo.is_vip == 1 &&
|
||||
svip_price_open == 1
|
||||
" src="../../static/images/svip.gif"></image>
|
||||
</view>
|
||||
<view class="iconfont icon-fenxiang skeleton-rect" @click="listenerActionSheet"></view>
|
||||
</view>
|
||||
<view class="introduce skeleton-rect" v-text="storeInfo.store_name"></view>
|
||||
<view class="label acea-row row-between-wrapper" style="padding-bottom: 20rpx">
|
||||
<view class="skeleton-rect" v-text="'原价:¥' + (storeInfo.ot_price || 0)">
|
||||
<view class="skeleton-rect" v-text="'划线价:¥' + (storeInfo.ot_price || 0)">
|
||||
</view>
|
||||
<view class="skeleton-rect" v-text="
|
||||
'库存:' +
|
||||
@ -595,6 +597,7 @@
|
||||
skuArr: [],
|
||||
selectSku: {},
|
||||
currentPage: false,
|
||||
svip_price_open: 1
|
||||
};
|
||||
},
|
||||
computed: mapGetters(["isLogin"]),
|
||||
@ -1100,6 +1103,7 @@
|
||||
// }
|
||||
that.$set(that, "navList", navList);
|
||||
that.$set(that, "storeImage", that.storeInfo.image);
|
||||
that.$set(that, "svip_price_open", res.data.svip_price_open);
|
||||
// #ifdef H5
|
||||
if (that.isLogin) {
|
||||
that.ShareInfo();
|
||||
@ -1134,7 +1138,7 @@
|
||||
that.getCartCount();
|
||||
setTimeout(() => {
|
||||
this.showSkeleton = false;
|
||||
}, 1000);
|
||||
}, 100);
|
||||
})
|
||||
.catch((err) => {
|
||||
//状态异常返回上级页面
|
||||
|
||||
@ -185,7 +185,7 @@
|
||||
<view class="content">
|
||||
请务必审慎阅读、充分理解“服务协议与 隐私政策”各条款,包括但不限于:为了 向你提供即时通讯、内容分享等服务,我 们需要收集你的设备信息、操作日志等个 人信息。你可以在“设置”中查看、变更、
|
||||
删除个人信息并管理你的授权。<br>
|
||||
你可以阅读<navigator url="/pages/users/privacy/index">《服务协议与隐私政策》</navigator>了解
|
||||
你可以阅读<navigator url="/pages/users/privacy/index?type=3">《服务协议与隐私政策》</navigator>了解
|
||||
详细信息。如你同意,请点击“我同意”开始接受我们的服务。
|
||||
</view>
|
||||
<view class="btn-box">
|
||||
@ -395,12 +395,13 @@
|
||||
let curRoute = routes[routes.length - 1].route //获取当前页面路由
|
||||
this.activeRouter = '/' + curRoute
|
||||
// #ifdef APP-PLUS
|
||||
try {
|
||||
let val = uni.getStorageSync('privacyStatus') || false
|
||||
if (!val) {
|
||||
this.privacyStatus = true
|
||||
}
|
||||
} catch (e) {}
|
||||
uni.setStorageSync("privacyStatus", true);
|
||||
// try {
|
||||
// let val = uni.getStorageSync('privacyStatus') || false
|
||||
// if (!val) {
|
||||
// this.privacyStatus = true
|
||||
// }
|
||||
// } catch (e) {}
|
||||
// #endif
|
||||
this.diyData();
|
||||
this.getIndexData();
|
||||
@ -762,7 +763,7 @@
|
||||
that.styleConfig = temp;
|
||||
setTimeout(() => {
|
||||
this.showSkeleton = false
|
||||
}, 1000)
|
||||
}, 300)
|
||||
uni.stopPullDownRefresh({
|
||||
success: (e) => {},
|
||||
});
|
||||
|
||||
@ -106,7 +106,7 @@
|
||||
<view class="content">
|
||||
请务必审慎阅读、充分理解“服务协议与 隐私政策”各条款,包括但不限于:为了 向你提供即时通讯、内容分享等服务,我 们需要收集你的设备信息、操作日志等个 人信息。你可以在“设置”中查看、变更、
|
||||
删除个人信息并管理你的授权。<br>
|
||||
你可以阅读<navigator url="/pages/users/privacy/index">《服务协议与隐私政策》</navigator>了解
|
||||
你可以阅读<navigator url="/pages/users/privacy/index?type=3">《服务协议与隐私政策》</navigator>了解
|
||||
详细信息。如你同意,请点击“我同意”开始接受我们的服务。
|
||||
</view>
|
||||
<view class="btn-box">
|
||||
@ -283,15 +283,16 @@
|
||||
created() {
|
||||
uni.hideTabBar();
|
||||
// #ifdef APP-PLUS
|
||||
try {
|
||||
let val = uni.getStorageSync("privacyStatus") || false;
|
||||
if (!val) {
|
||||
this.privacyStatus = true;
|
||||
}
|
||||
} catch (e) {}
|
||||
this.$nextTick(() => {
|
||||
// this.$refs.appUpdate.update(); //调用子组件 检查更新
|
||||
});
|
||||
uni.setStorageSync("privacyStatus", true);
|
||||
// try {
|
||||
// let val = uni.getStorageSync("privacyStatus") || false;
|
||||
// if (!val) {
|
||||
// this.privacyStatus = true;
|
||||
// }
|
||||
// } catch (e) {}
|
||||
// this.$nextTick(() => {
|
||||
// // this.$refs.appUpdate.update(); //调用子组件 检查更新
|
||||
// });
|
||||
// #endif
|
||||
let that = this;
|
||||
// #ifdef H5
|
||||
@ -526,7 +527,7 @@
|
||||
this.$Cache.set("TAB_BAR", data.tabBar.default.tabBarList);
|
||||
setTimeout(() => {
|
||||
this.showSkeleton = false;
|
||||
}, 1000);
|
||||
}, 300);
|
||||
});
|
||||
},
|
||||
getIndexData() {
|
||||
|
||||
@ -55,7 +55,7 @@
|
||||
<view class="infor"> {{ storeInfo.title }}</view>
|
||||
</view>
|
||||
<view class="label acea-row row-middle">
|
||||
<view class="stock">原价:{{ storeInfo.product_price }}</view>
|
||||
<view class="stock">划线价:{{ storeInfo.product_price }}</view>
|
||||
<view class="stock">限量:
|
||||
{{ storeInfo.quota_show }}
|
||||
</view>
|
||||
|
||||
@ -248,7 +248,7 @@
|
||||
</button>
|
||||
<!-- #endif -->
|
||||
<!-- #ifdef APP-PLUS -->
|
||||
<view class="item" hover-class="none" @click="goMenuPage('/pages/users/privacy/index')">
|
||||
<view class="item" hover-class="none" @click="goMenuPage('/pages/users/privacy/index?type=3')">
|
||||
<image src="/static/images/menu.png"></image>
|
||||
<text>隐私协议</text>
|
||||
</view>
|
||||
|
||||
@ -23,8 +23,8 @@
|
||||
<image src="/static/images/line.jpg" />
|
||||
</view>
|
||||
<view class="pos-order-goods">
|
||||
<navigator :url="`/pages/goods_details/index?id=${item.productInfo.id}`" hover-class="none" class="goods acea-row row-between-wrapper"
|
||||
v-for="(item, index) in orderInfo.cartInfo" :key="index">
|
||||
<navigator :url="`/pages/goods_details/index?id=${item.productInfo.id}`" hover-class="none"
|
||||
class="goods acea-row row-between-wrapper" v-for="(item, index) in orderInfo.cartInfo" :key="index">
|
||||
<view class="picTxt acea-row row-between-wrapper">
|
||||
<view class="pictrue">
|
||||
<image :src="item.productInfo.image" />
|
||||
@ -77,6 +77,18 @@
|
||||
<view class="conter">{{ orderInfo.mark }}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class='wrapper' v-if="customForm && customForm.length">
|
||||
<view class='item acea-row row-between' v-for="(item,index) in customForm" :key="index">
|
||||
<view class='upload' v-if="item.label == 'img'">
|
||||
<view>{{item.title}}:</view>
|
||||
<view class='pictrue' v-for="(img,index) in item.value" :key="index">
|
||||
<image :src='img'></image>
|
||||
</view>
|
||||
</view>
|
||||
<view v-if="item.label !== 'img'">{{item.title}}:</view>
|
||||
<view v-if="item.label !== 'img'" class='conter'>{{item.value}}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="wrapper">
|
||||
<view class="item acea-row row-between">
|
||||
<view>支付金额:</view>
|
||||
@ -143,7 +155,8 @@
|
||||
payType: "",
|
||||
types: "",
|
||||
clickNum: 1,
|
||||
goname: ''
|
||||
goname: '',
|
||||
customForm: []
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
@ -170,6 +183,15 @@
|
||||
that.types = res.data._status._type;
|
||||
that.title = res.data._status._title;
|
||||
that.payType = res.data._status._payType;
|
||||
if (that.orderInfo.custom_form && that.orderInfo.custom_form.length) {
|
||||
let arr = []
|
||||
that.orderInfo.custom_form.map(i => {
|
||||
if (i.value != '') {
|
||||
arr.push(i)
|
||||
}
|
||||
})
|
||||
that.$set(that, 'customForm', arr);
|
||||
}
|
||||
},
|
||||
err => {
|
||||
that.$util.Tips({
|
||||
@ -579,4 +601,17 @@
|
||||
.public-total .money {
|
||||
color: #ff4c3c;
|
||||
}
|
||||
|
||||
.upload .pictrue {
|
||||
display: inline-block;
|
||||
margin: 22rpx 17rpx 20rpx 0;
|
||||
width: 156rpx;
|
||||
height: 156rpx;
|
||||
color: #bbb;
|
||||
}
|
||||
|
||||
.upload .pictrue image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -209,7 +209,7 @@
|
||||
</view>
|
||||
</view>
|
||||
<view class='wrapper' v-if="customForm && customForm.length">
|
||||
<view class='item acea-row row-between' v-for="(item,index) in customForm">
|
||||
<view class='item acea-row row-between' v-for="(item,index) in customForm" :key="index">
|
||||
<view class='upload' v-if="item.label == 'img'">
|
||||
<view>{{item.title}}:</view>
|
||||
<view class='pictrue' v-for="(img,index) in item.value" :key="index">
|
||||
|
||||
@ -23,22 +23,27 @@
|
||||
content: ``
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
getUserAgreement().then(res => {
|
||||
onLoad(options) {
|
||||
getUserAgreement(options.type).then(res => {
|
||||
this.content = res.data.content
|
||||
uni.setNavigationBarTitle({
|
||||
title: res.data.title
|
||||
});
|
||||
}).catch(err => {
|
||||
that.$util.Tips({
|
||||
title: err.msg
|
||||
title: err
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
page{
|
||||
page {
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.content {
|
||||
padding: 40rpx 30rpx;
|
||||
line-height: 2;
|
||||
|
||||
BIN
template/uni-app/pages/users/static/address.png
Normal file
BIN
template/uni-app/pages/users/static/address.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 13 KiB |
213
template/uni-app/pages/users/user_cancellation/index.vue
Normal file
213
template/uni-app/pages/users/user_cancellation/index.vue
Normal file
@ -0,0 +1,213 @@
|
||||
<template>
|
||||
<view class="agreement" :style="colorStyle">
|
||||
<view class="top-msg" v-if="agreementData.avatar">
|
||||
<view class="avatar">
|
||||
<img :src="agreementData.avatar" alt="">
|
||||
</view>
|
||||
<view class="name">{{agreementData.name}}</view>
|
||||
</view>
|
||||
<view class="content" v-html="agreementData.content">
|
||||
</view>
|
||||
<view class="footer">
|
||||
<view class="trip">
|
||||
点击【立即注销】即代表您已经同意《用户注销协议》
|
||||
</view>
|
||||
<view class="cancellation flex-aj-center" @click="isCancellation = true">
|
||||
立即注销
|
||||
</view>
|
||||
</view>
|
||||
<view class="mark" v-show="isCancellation"></view>
|
||||
<view class="tipaddress" v-show="isCancellation">
|
||||
<view class="top"></view>
|
||||
<view class="bottom">
|
||||
<view class="font1">是否确认注销</view>
|
||||
<view class="font2">注销后无法恢复,请谨慎操作</view>
|
||||
<view class="btn">
|
||||
<view class="cancellation-btn btn-sty flex-aj-center" @tap="cancelUser">注销</view>
|
||||
<view class="cancel btn-sty flex-aj-center" @tap="isCancellation = false">
|
||||
取消
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import colors from '@/mixins/color.js';
|
||||
import {
|
||||
getUserAgreement,
|
||||
cancelUser
|
||||
} from '@/api/user.js'
|
||||
export default {
|
||||
mixins: [colors],
|
||||
data() {
|
||||
return {
|
||||
isCancellation: false,
|
||||
agreementData: ''
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
this.getAgreement()
|
||||
},
|
||||
methods: {
|
||||
getAgreement() {
|
||||
getUserAgreement(5).then(res => {
|
||||
this.agreementData = res.data
|
||||
})
|
||||
},
|
||||
cancelUser() {
|
||||
cancelUser().then(res => {
|
||||
this.$store.commit("LOGOUT");
|
||||
uni.reLaunch({
|
||||
url: '/pages/index/index'
|
||||
})
|
||||
}).catch(msg => {
|
||||
return this.$util.Tips({
|
||||
title: msg
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.agreement {
|
||||
background-color: #fff;
|
||||
|
||||
.content {
|
||||
padding: 10rpx 30rpx;
|
||||
overflow-y: scroll;
|
||||
height: calc(100vh - 242rpx);
|
||||
}
|
||||
}
|
||||
|
||||
.top-msg {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
background-color: #fff;
|
||||
padding: 40rpx 30rpx 40rpx 30rpx;
|
||||
|
||||
.avatar {
|
||||
width: 76rpx;
|
||||
height: 76rpx;
|
||||
margin-right: 20rpx;
|
||||
|
||||
img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border-radius: 50%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.footer {
|
||||
text-align: center;
|
||||
z-index: 99;
|
||||
width: 100%;
|
||||
background-color: #fafafa;
|
||||
position: fixed;
|
||||
padding: 36rpx 30rpx;
|
||||
box-sizing: border-box;
|
||||
border-top: 1rpx solid #eee;
|
||||
bottom: 0rpx;
|
||||
|
||||
.trip {
|
||||
color: #999999;
|
||||
font-size: 24rpx;
|
||||
margin: 24rpx 0;
|
||||
}
|
||||
|
||||
.cancellation {
|
||||
height: 45px;
|
||||
color: #fff;
|
||||
font-size: 32rpx;
|
||||
background: #E93323;
|
||||
border-radius: 23px;
|
||||
}
|
||||
}
|
||||
|
||||
.tipaddress {
|
||||
position: fixed;
|
||||
left: 13%;
|
||||
top: 25%;
|
||||
// margin-left: -283rpx;
|
||||
width: 560rpx;
|
||||
height: 614rpx;
|
||||
background-color: #fff;
|
||||
border-radius: 10rpx;
|
||||
z-index: 100;
|
||||
text-align: center;
|
||||
|
||||
.top {
|
||||
width: 560rpx;
|
||||
height: 270rpx;
|
||||
border-top-left-radius: 10rpx;
|
||||
border-top-right-radius: 10rpx;
|
||||
background-image: url(../static/address.png);
|
||||
background-repeat: round;
|
||||
background-color: #E93323;
|
||||
|
||||
.tipsphoto {
|
||||
display: inline-block;
|
||||
width: 200rpx;
|
||||
height: 200rpx;
|
||||
margin-top: 73rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.bottom {
|
||||
font-size: 32rpx;
|
||||
font-weight: 400;
|
||||
|
||||
.font1 {
|
||||
|
||||
font-size: 36rpx;
|
||||
font-weight: 600;
|
||||
color: #333333;
|
||||
margin: 32rpx 0rpx 22rpx;
|
||||
}
|
||||
|
||||
.font2 {
|
||||
color: #666666;
|
||||
margin-bottom: 48rpx;
|
||||
}
|
||||
|
||||
.btn {
|
||||
display: flex;
|
||||
margin: 0 20rpx;
|
||||
|
||||
.btn-sty {
|
||||
height: 82rpx;
|
||||
border-radius: 42rpx;
|
||||
line-height: 82rpx;
|
||||
padding: 24rpx 78rpx;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.cancellation-btn {
|
||||
background-color: #F5F5F5;
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.cancel {
|
||||
color: #FFFFFF;
|
||||
background: linear-gradient(90deg, #F67A38 0%, #F11B09 100%);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.mark {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
z-index: 99;
|
||||
}
|
||||
</style>
|
||||
@ -115,6 +115,12 @@
|
||||
点击前往<text class="iconfont icon-xiangyou"></text>
|
||||
</navigator>
|
||||
</view>
|
||||
<view class="item acea-row row-between-wrapper">
|
||||
<view>账号注销</view>
|
||||
<navigator url="/pages/users/user_cancellation/index" hover-class="none" class="input">
|
||||
注销后无法恢复<text class="iconfont icon-xiangyou"></text>
|
||||
</navigator>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
|
||||
|
||||
@ -19,6 +19,13 @@
|
||||
<view>冻结积分</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="apply">
|
||||
<view>
|
||||
<navigator url='/pages/users/privacy/index?type=6' hover-class="none">
|
||||
<view>积分规则</view>
|
||||
</navigator>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class='wrapper'>
|
||||
<view class='nav acea-row'>
|
||||
@ -30,7 +37,8 @@
|
||||
<view class='tip acea-row row-middle' v-if="!isTime"><text
|
||||
class='iconfont icon-shuoming'></text>提示:积分数值的高低会直接影响您的会员等级</view>
|
||||
<view class='tip acea-row row-middle' v-else><text
|
||||
class='iconfont icon-shuoming'></text>提示:你有{{userInfo.clear_integral}}积分在{{ userInfo.clear_time | dateFormat }}过期,请尽快使用</view>
|
||||
class='iconfont icon-shuoming'></text>提示:你有{{userInfo.clear_integral}}积分在{{ userInfo.clear_time | dateFormat }}过期,请尽快使用
|
||||
</view>
|
||||
<view class='item acea-row row-between-wrapper' v-for="(item,index) in integralList" :key="index">
|
||||
<view>
|
||||
<view class='state'>{{item.mark}}</view>
|
||||
@ -101,7 +109,7 @@
|
||||
return dayjs(value * 1000).format('YYYY-MM-DD');
|
||||
}
|
||||
},
|
||||
mixins:[colors],
|
||||
mixins: [colors],
|
||||
data() {
|
||||
return {
|
||||
navList: [{
|
||||
@ -173,11 +181,11 @@
|
||||
}).then(function(res) {
|
||||
that.$set(that, 'userInfo', res.data);
|
||||
let clearTime = res.data.clear_time;
|
||||
let showTime = clearTime-(86400*14);
|
||||
let timestamp = Date.parse(new Date())/1000;
|
||||
if(showTime < timestamp){
|
||||
let showTime = clearTime - (86400 * 14);
|
||||
let timestamp = Date.parse(new Date()) / 1000;
|
||||
if (showTime < timestamp) {
|
||||
that.isTime = 1
|
||||
}else{
|
||||
} else {
|
||||
that.isTime = 0
|
||||
}
|
||||
});
|
||||
@ -287,7 +295,7 @@
|
||||
|
||||
.integral-details .wrapper .nav .item.on {
|
||||
background-color: #fff;
|
||||
color: var( --view-theme);
|
||||
color: var(--view-theme);
|
||||
font-weight: bold;
|
||||
border-radius: 20rpx 0 0 0;
|
||||
}
|
||||
@ -342,9 +350,9 @@
|
||||
font-family: 'Guildford Pro';
|
||||
color: #16AC57;
|
||||
}
|
||||
|
||||
.integral-details .wrapper .list .item .num.font-color{
|
||||
color: #E93323!important;
|
||||
|
||||
.integral-details .wrapper .list .item .num.font-color {
|
||||
color: #E93323 !important;
|
||||
}
|
||||
|
||||
.integral-details .wrapper .list2 {
|
||||
@ -393,4 +401,20 @@
|
||||
width: 160rpx;
|
||||
border-radius: 50rpx;
|
||||
}
|
||||
|
||||
.apply {
|
||||
top: 52rpx;
|
||||
right: 0;
|
||||
position: absolute;
|
||||
width: max-content;
|
||||
height: 56rpx;
|
||||
padding: 0 14rpx;
|
||||
background-color: #fff1db;
|
||||
color: #a56a15;
|
||||
font-size: 22rpx;
|
||||
border-radius: 30rpx 0 0 30rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
</style>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user