| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318 |
- <div id="app" v-cloak>
- <el-card class="box-card" v-loading="loading" shadow="never" style="border:0;min-width: 1500px;" body-style="background-color: #f3f3f3;padding: 10px 0 0;">
- <div slot="header">
- <div>
- <span>数据清理</span>
- </div>
- </div>
- <div class="form_box">
- <el-form :model="ruleForm" size="small" ref="ruleForm" label-width="150px">
- <el-card shadow="never">
- <div slot="header">
- <div>
- <span>数据清理</span>
- </div>
- </div>
- <div>
- <el-row>
- <el-col :span="16">
- <el-form-item label="">
- <el-alert
- title="清除测试数据前,运营中的数据请务必根据国家法律法规存储时长进行保存3年以上"
- type="warning"
- :closable="false">
- </el-alert>
- </el-form-item>
- </el-col>
- <el-col :span="16" >
- <el-form-item label="状态:" >
- <div v-if ='cache_data == 1'>
- 数据清除中。。。 <el-button icon="el-icon-refresh-right" circle type="primary" @click="loadData"></el-button>
- </div>
- <div v-else-if = 'cache_data == 2'><p style='color:#67c23a;'>数据清除完成</p></div>
- <div v-else>未进行操作</div>
- </el-form-item>
- </el-col>
- <el-col :span="16">
- <el-form-item label="数据类型">
- <el-radio-group v-model="ruleForm.clean_type" size="small">
- <el-radio :label="1" border>普通部署</el-radio>
- <!-- <el-radio :label="2" border>Mycat部署</el-radio> -->
- </el-radio-group>
- </el-form-item>
- </el-col>
- <el-col :span="16">
- <el-form-item label="主商城数据清理">
- <el-radio-group v-model="ruleForm.clean_data" size="small">
- <el-radio :label="0" border>不做任何清除</el-radio>
- <el-radio :label="1" border>清除用户跟订单等数据</el-radio>
- <!-- <el-radio :label="2" border>清除订单数据</el-radio> -->
- </el-radio-group>
- <div class="tips-text" v-if="ruleForm.clean_data == 1" style="line-height: 24px;">保留数据:装修、商品、设置、渠道、下载、会员的会员等级跟分享设置。其他的全部清除。</div>
- <div class="tips-text" v-if="ruleForm.clean_data == 2" style="line-height: 24px;">删除的数据包括:订单信息,订单统计,订单评论,售后订单</div>
- </el-form-item>
- </el-col>
- <el-col :span="16">
- <el-form-item label="清除应用数据">
- <el-switch v-model="ruleForm.clean_addons" :active-value="1" :inactive-value="0"></el-switch>
- <div class="tips-text" style="line-height: 24px;">开启后将会删除所有插件的数据,但是会保留插件的基础配置跟等级配置</div>
- </el-form-item>
- </el-col>
- <el-col :span="16" v-if="ruleForm.clean_addons == 1">
- <el-form-item label="应用数据清除">
- <el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange">全选</el-checkbox>
- <el-checkbox-group v-model="ruleForm.addons_name" size="mini" @change="handleCheckedCitiesChange">
- <el-checkbox style="margin:0 20px 20px 0;" v-for="item in addons" :key="item.name" :label="item.name" border>{{ item.title }}</el-checkbox>
- </el-checkbox-group>
- </el-form-item>
- </el-col>
- <el-col :span="16" v-if="ruleForm.clean_addons == 1">
- <el-form-item label="说明:">
- 所有应用除了等级、基础设置其他的都会被清除<br>
- <b>特殊不被清除的插件:</b>
- <div v-for="items in addons" :key="items.name" :label="items.name">
- <div v-if="items.name == 'Coupon'">
- 优惠券:优惠券列表(已领取、已使用清零)
- </div>
- <div v-if="items.name == 'Rebate'">
- 推三返一:活动列表(参与人数、成交金额、订单数清零)
- </div>
- <div v-if="items.name == 'AvoidTax'">
- 支付宝合规:基础配置、记账本
- </div>
- <div v-if="items.name == 'CloudStock'">
- 云库存:代理等级、升级礼包、商品管理、基础设置
- </div>
- <div v-if="items.name == 'PhysicalStock'">
- 实体库存(定制插件):代理等级、升级礼包、商品管理、基础设置
- </div>
- <div v-if="items.name == 'JuheShop'">
- 聚合供应链(七件事供应链):基础设置、中台配置、选品库
- </div>
- <div v-if="items.name == 'ChangeCloud'">
- 怡亚通供应链:基础设置、选品列表
- </div>
- <!-- <div v-if="items.name == 'AvoidTax'">
- 胜天半子供应链:基础设置、选品库
- </div> -->
- </div>
- </el-form-item>
- </el-col>
- </el-row>
- </div>
- </el-card>
- </el-form>
- <el-button :loading="btnLoading" class="button-item" type="primary" style="margin-top: 24px;" @click="createMallDialogVisible = true" size="small">保存
- </el-button>
- </div>
- <el-dialog title="站点数据清除提醒" :visible.sync="createMallDialogVisible" width="40%" :close-on-click-modal="false" @close="createMallDialogVisible = false">
- <el-form label-width="100px" size="small" :model="ruleForm" ref="ruleForm" :rules="rules">
- <el-form-item label="站点:">
- <el-col :span="12">
- {{headerData.mall.name}}
- </el-col>
- </el-form-item>
- <el-form-item label="域名:">
- <el-col :span="12">
- {{headerData.services.backend_url}}
- </el-col>
- </el-form-item>
- <el-form-item label="手机号">
- <el-col :span="6">
- <el-input v-model="ruleForm.mobile" disabled='disabled'></el-input>
- </el-col>
- </el-form-item>
- <el-form-item label="手机验证码" prop='verify_code'>
- <el-col :span="10" style="display:flex">
- <el-input v-model="ruleForm.verify_code"
- style="margin-right:10px;"></el-input>
- <el-button @click="getVerificationCode('old')" :disabled="is_disabled_old">获取验证码
- </el-button>
- </el-col>
- </el-form-item>
- <el-form-item label="注意:">
- <el-col :span="22">
- <span style="color: #f56c6c">清除数据可能造成站点数据丢失,引起法律风险,请核实确认要清除数据的站点是否正确,谨慎操作!</span>
- </el-col>
- </el-form-item>
- <el-form-item style="text-align: right">
- <el-button size="small" @click="createMallDialogVisible = false">取消</el-button>
- <el-button size="small" :loading="createMallSubmitLoading" type="primary" @click="store('ruleForm')">确定
- </el-button>
- </el-form-item>
- </el-form>
- </el-dialog>
- </el-card>
- </div>
- <script>
- const app = new Vue({
- el: '#app',
- data() {
- return {
- loading: false,
- btnLoading: false,
- ruleForm: {
- clean_type: 1,
- clean_data: 0,
- clean_addons: 0,
- addons_name: [],
- mobile: '',
- verify_code: '',
- },
- checkAll: false,
- isIndeterminate: false,
- addons: [],
- addonsKey: [],
- cache_data: 0,
- createMallDialogVisible: false,
- createMallSubmitLoading: false,
- headerData:[],
- is_disabled_old: false,
- mall_id:0,
- rules: {
- verify_code: [
- { required: true, message: '请输入验证码', trigger: 'change' }
- ],
- }
- }
- },
- mounted: function() {
- this.loadData();
- },
- methods: {
- loadData() {
- this.loading = true;
- request({
- params: {
- r: 'mall/data/clean',
- },
- method: 'get'
- }).then(e => {
- this.loading = false;
- if (e.data.code == 0 && !isEmpty(e.data.data)) {
- this.addons = e.data.data.addons
- let allkey = []
- this.addons.forEach (function(item) {
- allkey.push(item.name)
- })
- this.cache_data = e.data.data.cache_data;
- this.ruleForm.mobile = e.data.data.admin_mobile;
- this.addonsKey = allkey
- }
- let headerData = localStorage.getItem('mall_header_data');
- headerData = JSON.parse(headerData);
- this.headerData = headerData;
- this.mall_id = this.headerData.mall.id;
- }).catch(e => {
- this.loading = false;
- })
- },
- handle(type, data = null) {
- switch (type) {
- case 'add':// 添加规格
- this.ruleForm.default_score.push(0);
- break;
- case 'delete':// 删除规格
- this.ruleForm.default_score.splice(data,1);
- break;
- }
- },
- store(formName) {
- this.$refs[formName].validate((valid) => {
- if (valid) {
- this.btnLoading = true;
- request({
- params: {
- r: 'mall/data/clean',
- },
- method: 'post',
- data: this.ruleForm
- }).then(e => {
- this.btnLoading = false;
- this.createMallDialogVisible = false;
- if (e.data.code == 0) {
- this.loadData();
- this.$message.success(e.data.msg);
- } else {
- this.$message.error(e.data.msg);
- }
- }).catch(e => {
- this.btnLoading = false;
- this.$message.error(e.data.msg);
- })
- } else {
- this.btnLoading = false;
- console.log('error submit!!');
- return false;
- }
- });
- },
- handleCheckAllChange(val) {
- this.ruleForm.addons_name = val ? this.addonsKey : [];
- this.isIndeterminate = false;
- },
- handleCheckedCitiesChange(value) {
- let checkedCount = value.length;
- this.checkAll = checkedCount === this.addons.length;
- this.isIndeterminate = checkedCount > 0 && checkedCount < this.addons.length;
- },
- getVerificationCode(type) {
- let mobile = ''
- if(type == 'old'){
- mobile = this.ruleForm.mobile
- this.setDisabled(type,true)
- }
- if(!mobile){
- this.$message.error('请填写手机号再获取验证码');
- return
- }
- request({
- params: {
- r: 'common/sms/send',
- },
- method: 'post',
- data: {
- mobile : mobile,
- sms_type : 'haveVerifyCode',
- valid_time : 60,
- mall_id : this.mall_id
- }
- }).then(e => {
- this.setDisabled(type,false)
- if (e.data.code == 0) {
- this.$message.success(e.data.msg+',验证码已发送到:'+mobile);
- } else {
- this.$message.error(e.data.msg);
- }
- }).catch(e => {
- });
- },
- setDisabled(type,disabled){
- if(type == 'old'){
- this.is_disabled_old = disabled
- }
- if(type == 'new'){
- this.is_disabled_new = disabled
- }
- },
- }
- });
- </script>
|