禁用启动

This commit is contained in:
邓皓元 2019-02-14 15:14:43 +08:00
parent ea0321ff37
commit 7f402e0582
29 changed files with 264 additions and 44 deletions

View File

@ -29,7 +29,7 @@ class AddressController extends Controller
$res = $this->companyAddressService->getCompanyAddress($this->account->company_id);
return res($res, '收货地址', 201);
}
/**
* 添加收货地址
*

View File

@ -51,7 +51,9 @@ class BootstrapController extends Controller
];
$res = $productService->index($conditions);
$res = $res->where('status', 0);
return res($res, '企业套餐列表', 201);
}
}

View File

@ -7,7 +7,7 @@ $router->group(['prefix' => 'companies', 'as' => 'companies'], function ($router
$router->get('/', ['as' => 'index', 'uses' => 'AccountController@index']);
$router->get('/account/reset', ['as' => 'account.resetStep1', 'uses' => 'AccountController@resetStep1', 'middleware' => ['captcha']]);
$router->post('/account/reset', ['as' => 'account.resetStep2', 'uses' => 'AccountController@resetStep2']);
/**
* 需要认证的接口
*/
@ -24,7 +24,7 @@ $router->group(['prefix' => 'companies', 'as' => 'companies'], function ($router
$router->get('/bootstrap', ['as' => 'bootstrap', 'uses' => 'BootstrapController@index']);
$router->get('/products', ['as' => 'products', 'uses' => 'BootstrapController@products']);
$router->get('/orders/paginate', ['as' => 'orders/paginate', 'uses' => 'OrderController@paginate']);
$router->get('/orders/show/{id}', ['as' => 'orders/show', 'uses' => 'OrderController@show']);
$router->post('/orders/store', ['as' => 'orders/store', 'uses' => 'OrderController@store']);

View File

@ -31,7 +31,7 @@ class CompanyAccountController extends Controller
$conditions['limit'] = $this->request->get('limit', 20);
$accounts = $this->companyAccountService->index($conditions);
return res($accounts, '账号列表', 201);
}

View File

@ -42,7 +42,7 @@ class CompanyController extends Controller
'wechat_account' => '',
];
});
return res($companies, '企业列表', 201);
}

View File

@ -52,24 +52,24 @@ class FetchController extends Controller
$search = $this->request->get('search');
$limit = $this->request->get('limit', 0);
$results = $repository->select([$primaryKey, $field])->get();
$results = $repository->select([$primaryKey, $field, 'status'])->get();
if ($search) {
$results = $results->filter(function ($item) use ($search, $field) {
$result = true;
if (strpos($item[$field], $search) === false) {
$result = false;
}
if (strpos(pinyin_abbr($item[$field]), $search) === false) {
$result = false;
}
if (strpos(implode('', pinyin($item[$field])), $search) === false) {
$result = false;
}
return $result;
});
}

View File

@ -38,7 +38,7 @@ class ProductController extends Controller
$products->map(function ($item) use ($carrierOperators) {
$item->carrier_operator = $carrierOperators[$item['package']['carrier_operator']] ?? '未知';
});
return res($products, '定价列表', 201);
}

View File

@ -64,6 +64,10 @@ class CompanyRepository extends Repository
$this->model = $this->model->where('name', $conditions['name']);
}
if (isset($conditions['status'])) {
$this->model = $this->model->where('status', $conditions['status']);
}
return $this;
}
}

View File

@ -77,6 +77,10 @@ class PackageRepository extends Repository
$this->model = $this->model->where('carrier_operator', $conditions['carrier_operator']);
}
if (isset($conditions['status'])) {
$this->model = $this->model->where('status', $conditions['status']);
}
return $this;
}
}

View File

@ -63,6 +63,10 @@ class ProductRepository extends Repository
$query->where('company_id', $conditions['company_id']);
}
if (isset($conditions['status'])) {
$query->where('status', $conditions['status']);
}
if (isset($conditions['name'])) {
$query->where('name', 'like', "%{$conditions['name']}%");
}

View File

@ -110,7 +110,7 @@ class CompanyService extends Service
public function load($id)
{
if (!$this->companies) {
$this->companies = $this->companyRepository->select(['id', 'name'])->withTrashed()->get()->keyBy('id');
$this->companies = $this->companyRepository->select(['id', 'name', 'status'])->withTrashed()->get()->keyBy('id');
}
return $this->companies[$id];

View File

@ -159,7 +159,7 @@ class PackageService extends Service
public function load($id)
{
if (!$this->packages) {
$this->packages = $this->packageRepository->select(['id', 'name', 'carrier_operator', 'flows', 'service_months'])->withTrashed()->get()->keyBy('id');
$this->packages = $this->packageRepository->select(['id', 'name', 'carrier_operator', 'flows', 'service_months', 'status'])->withTrashed()->get()->keyBy('id');
}
return $this->packages[$id];

View File

@ -47,6 +47,7 @@ class ProductService extends Service
$item->package = app(PackageService::class)->load($item->package_id);
$item->base_price = sprintf('%.02f', $item->base_price/100);
$item->renewal_price = sprintf('%.02f', $item->renewal_price/100);
$item->status = $item['package']['status'] ? 1 : $item->status;
});
return $list;
@ -101,6 +102,15 @@ class ProductService extends Service
throw new NotExistException('定价不存在或已删除');
}
if ($attributes['status'] == 0) {
$node->load(['package:id,status']);
if ($node['package']['status'] === 1) {
throw new NotAllowedException('套餐已被禁用,不能启用');
}
}
if ($this->productRepository->where('sn', $attributes['sn'])->where('id', '<>', $attributes['id'])->count()) {
throw new NotAllowedException('已存在相同定价,请核对后重试');
}

View File

@ -42,7 +42,7 @@ class Company extends CompanyBase
{
protected $table = 'virtual_companies';
protected $fillable = ['id', 'sn', 'name' , 'contacts', 'mobile', 'address', 'remark', 'extends'];
protected $fillable = ['id', 'sn', 'name' , 'contacts', 'mobile', 'address', 'remark', 'extends', 'status'];
protected $casts = [
'extends' => 'array',

View File

@ -86,5 +86,6 @@ class Package extends PackageBase
'effect_months',
'delay_months',
'description',
'status',
];
}

View File

@ -1,5 +1,11 @@
<template>
<Modal :closable="false" :mask-closable="false" :title="data?'编辑企业':'添加企业'" @on-visible-change="visibleChange" v-model="my_show">
<Modal
:closable="false"
:mask-closable="false"
:title="data?'编辑企业':'添加企业'"
@on-visible-change="visibleChange"
v-model="my_show"
>
<div class="page-edit-wrap uinn-lr20">
<ui-loading :show="page_loading.show"></ui-loading>
@ -83,6 +89,16 @@
</p>
</div>
</li>
<li class="ui-list">
<div class="ui-list-title">状态</div>
<div class="ui-list-content lh-32">
<Switch size="large" :true-value="0" :false-value="1" v-model="params.status">
<span slot="open">启用</span>
<span slot="close">禁用</span>
</Switch>
</div>
</li>
</ul>
</div>
<footer class="ta-c" slot="footer">

View File

@ -24,6 +24,7 @@ export default {
mobile: '',
address: '',
remark: '',
status: 0,
extends: {
bank_account: '',
wechat_account: '',
@ -93,7 +94,11 @@ export default {
clear() {
for (let k in this.params) {
this.params[k] = '';
if (k == 'status') {
this.params[k] = 0;
} else {
this.params[k] = '';
}
}
this.my_show = false;

View File

@ -46,6 +46,19 @@ export default {
title: '地址',
key: 'address'
},
{
title: '状态',
key: '',
width: 100,
render: (h, { row, column, index }) => {
return h('Button', {
props: {
type: row.status ? 'error' : 'primary',
size: 'small'
}
}, row.status ? '已禁用' : '启用中');
}
},
{
title: '创建时间',
key: 'created_at',

View File

@ -1,5 +1,12 @@
<template>
<Drawer :closable="false" :mask-closable="false" :title="data ? '编辑套餐' : '添加套餐'" @on-visible-change="visibleChange" v-model="my_show" width="500">
<Drawer
:closable="false"
:mask-closable="false"
:title="data ? '编辑套餐' : '添加套餐'"
@on-visible-change="visibleChange"
v-model="my_show"
width="500"
>
<div class="page-edit-wrap">
<ui-loading :show="page_loading.show"></ui-loading>
@ -40,41 +47,79 @@
</li>
<li class="ui-list">
<div class="ui-list-title"><span class="title-require">*</span>重置周期</div>
<div class="ui-list-title">
<span class="title-require">*</span>重置周期
</div>
<div class="ui-list-content">
<InputNumber :disabled="data ? true : false" :max="100000" :min="1" :precision="0" :step="1" v-model="params.reset_months"></InputNumber>&nbsp;
<InputNumber
:disabled="data ? true : false"
:max="100000"
:min="1"
:precision="0"
:step="1"
v-model="params.reset_months"
></InputNumber>&nbsp;
</div>
</li>
<li class="ui-list">
<div class="ui-list-title"><span class="title-require">*</span>套餐周期</div>
<div class="ui-list-title">
<span class="title-require">*</span>套餐周期
</div>
<div class="ui-list-content">
<InputNumber :disabled="data ? true : false" :max="100000" :min="1" :precision="0" :step="1" v-model="params.service_months"></InputNumber>&nbsp;
<InputNumber
:disabled="data ? true : false"
:max="100000"
:min="1"
:precision="0"
:step="1"
v-model="params.service_months"
></InputNumber>&nbsp;
</div>
</li>
<li class="ui-list" v-if="type">
<div class="ui-list-title">生效延迟</div>
<div class="ui-list-content">
<InputNumber :max="100000" :min="0" :precision="0" :step="1" v-model="params.effect_months"></InputNumber>&nbsp;
<InputNumber
:max="100000"
:min="0"
:precision="0"
:step="1"
v-model="params.effect_months"
></InputNumber>&nbsp;
</div>
</li>
<li class="ui-list" v-if="type">
<div class="ui-list-title">服务延长</div>
<div class="ui-list-content">
<InputNumber :max="100000" :min="0" :precision="0" :step="1" v-model="params.delay_months"></InputNumber>&nbsp;
<InputNumber
:max="100000"
:min="0"
:precision="0"
:step="1"
v-model="params.delay_months"
></InputNumber>&nbsp;
</div>
</li>
<li class="ui-list">
<div class="ui-list-title"><span class="title-require">*</span>套餐流量</div>
<div class="ui-list-title">
<span class="title-require">*</span>套餐流量
</div>
<div class="ui-list-content">
<InputNumber :disabled="data ? true : false" :max="999999" :min="1" :precision="0" :step="1" v-model="params.flows"></InputNumber>&nbsp;(M)
<InputNumber
:disabled="data ? true : false"
:max="999999"
:min="1"
:precision="0"
:step="1"
v-model="params.flows"
></InputNumber>&nbsp;(M)
</div>
</li>
<li class="ui-list">
<div class="ui-list-title">LBS服务</div>
<div class="ui-list-content">
@ -106,28 +151,56 @@
<li class="ui-list">
<div class="ui-list-title">套餐成本价:</div>
<div class="ui-list-content">
<InputNumber :active-change="false" :max="100000" :min="0" :precision="2" :step="0.01" v-model="params.cost_price"></InputNumber>&nbsp;
<InputNumber
:active-change="false"
:max="100000"
:min="0"
:precision="2"
:step="0.01"
v-model="params.cost_price"
></InputNumber>&nbsp;
</div>
</li>
<li class="ui-list">
<div class="ui-list-title">套餐指导价:</div>
<div class="ui-list-content">
<InputNumber :active-change="false" :max="100000" :min="0" :precision="2" :step="0.01" v-model="params.guide_price"></InputNumber>&nbsp;
<InputNumber
:active-change="false"
:max="100000"
:min="0"
:precision="2"
:step="0.01"
v-model="params.guide_price"
></InputNumber>&nbsp;
</div>
</li>
<li class="ui-list">
<div class="ui-list-title">续费成本价:</div>
<div class="ui-list-content">
<InputNumber :active-change="false" :max="100000" :min="0" :precision="2" :step="0.01" v-model="params.renewal_cost_price"></InputNumber>&nbsp;
<InputNumber
:active-change="false"
:max="100000"
:min="0"
:precision="2"
:step="0.01"
v-model="params.renewal_cost_price"
></InputNumber>&nbsp;
</div>
</li>
<li class="ui-list">
<div class="ui-list-title">续费指导价:</div>
<div class="ui-list-content">
<InputNumber :active-change="false" :max="100000" :min="0" :precision="2" :step="0.01" v-model="params.renewal_guide_price"></InputNumber>&nbsp;
<InputNumber
:active-change="false"
:max="100000"
:min="0"
:precision="2"
:step="0.01"
v-model="params.renewal_guide_price"
></InputNumber>&nbsp;
</div>
</li>
@ -137,6 +210,16 @@
<Input :maxlength="255" v-model.trim="params.description"></Input>
</div>
</li>
<li class="ui-list">
<div class="ui-list-title">状态</div>
<div class="ui-list-content lh-32">
<Switch size="large" :true-value="0" :false-value="1" v-model="params.status">
<span slot="open">启用</span>
<span slot="close">禁用</span>
</Switch>
</div>
</li>
</ul>
</div>
<div class="ta-c">

View File

@ -40,7 +40,8 @@ export default {
service_months: 1,
effect_months: 0,
delay_months: 0,
description: ''
description: '',
status: 0
}
};
},

View File

@ -84,6 +84,19 @@ export default {
key: 'description',
minWidth: 100
},
{
title: '状态',
key: '',
width: 100,
render: (h, { row, column, index }) => {
return h('Button', {
props: {
type: row.status ? 'error' : 'primary',
size: 'small'
}
}, row.status ? '已禁用' : '启用中');
}
},
{
title: '创建时间',
key: 'created_at',

View File

@ -1,5 +1,11 @@
<template>
<Modal :closable="false" :mask-closable="false" :title="isUpdate ? '编辑定价' : '添加定价'" @on-visible-change="visibleChange" v-model="my_show">
<Modal
:closable="false"
:mask-closable="false"
:title="isUpdate ? '编辑定价' : '添加定价'"
@on-visible-change="visibleChange"
v-model="my_show"
>
<div class="page-edit-wrap uinn-lr20">
<ui-loading :show="page_loading.show"></ui-loading>
@ -19,7 +25,11 @@
</div>
<div class="ui-list-content">
<Select :disabled="isUpdate" filterable v-model.trim="params.package_id">
<Option :key="item.id" :value="item.id" v-for="item in completePackages">{{ item.name }}</Option>
<Option
:key="item.id"
:value="item.id"
v-for="item in completePackagesFilter"
>{{ item.name }}</Option>
</Select>
</div>
</li>
@ -27,14 +37,29 @@
<li class="ui-list">
<div class="ui-list-title">基础价格</div>
<div class="ui-list-content">
<InputNumber :disabled="isUpdate" :active-change="false" :max="100000" :min="0" :precision="2" :step="0.1" v-model.trim="params.base_price"></InputNumber>
<InputNumber
:disabled="isUpdate"
:active-change="false"
:max="100000"
:min="0"
:precision="2"
:step="0.1"
v-model.trim="params.base_price"
></InputNumber>
</div>
</li>
<li class="ui-list">
<div class="ui-list-title">续费价格</div>
<div class="ui-list-content">
<InputNumber :active-change="false" :max="100000" :min="0" :precision="2" :step="0.1" v-model.trim="params.renewal_price"></InputNumber>
<InputNumber
:active-change="false"
:max="100000"
:min="0"
:precision="2"
:step="0.1"
v-model.trim="params.renewal_price"
></InputNumber>
</div>
</li>
@ -46,6 +71,16 @@
</p>
</div>
</li>
<li class="ui-list">
<div class="ui-list-title">状态</div>
<div class="ui-list-content lh-32">
<Switch size="large" :true-value="0" :false-value="1" v-model="params.status">
<span slot="open">启用</span>
<span slot="close">禁用</span>
</Switch>
</div>
</li>
</ul>
</div>
<footer class="ta-c" slot="footer">

View File

@ -27,8 +27,10 @@ export default {
package_id: '',
base_price: 0,
renewal_price: 0,
remark: ''
}
remark: '',
status: 0
},
completePackagesFilter: []
};
},
watch: {
@ -45,7 +47,11 @@ export default {
}
if (!this.completePackageInitialized) {
this.initCompletePackages();
this.initCompletePackages().then(packages => {
this.completePackagesFilter = packages.filter(function(item) {
return item.status === 0;
});
});
}
}
},
@ -99,7 +105,7 @@ export default {
},
clear() {
for (let k in this.params) {
if (k === 'base_price' || k === 'renewal_price') {
if (k === 'base_price' || k === 'renewal_price' || k === 'status') {
this.params[k] = 0;
} else {
this.params[k] = '';

View File

@ -64,6 +64,19 @@ export default {
title: '备注',
key: 'remark'
},
{
title: '状态',
key: '',
width: 100,
render: (h, { row, column, index }) => {
return h('Button', {
props: {
type: row.status ? 'error' : 'primary',
size: 'small'
}
}, row.status ? '已禁用' : '启用中');
}
},
{
title: '更新时间',
key: 'updated_at',
@ -140,7 +153,9 @@ export default {
},
created() {
this.initCompleteCompanies().then(res => {
this.companies = res;
this.companies = res.filter(function(item) {
return item.status === 0;
});
}).catch(err => {
this.$Message.error(err.message);
});
@ -208,7 +223,9 @@ export default {
},
handleSearchCompanies(value) {
if (value === '') {
this.companies = this.completeCompanies;
this.companies = this.completeCompanies.filter(function(item) {
return item.status === 0;
});
return;
}
@ -219,7 +236,7 @@ export default {
}
companies = this.completeCompanies.filter(function(item) {
return (item.name.toLowerCase().indexOf(value.toLowerCase()) !== -1) || (companies.find(element => { return element.id === item.id; }));
return (item.status === 0) && ((item.name.toLowerCase().indexOf(value.toLowerCase()) !== -1) || (companies.find(element => { return element.id === item.id; })));
});
this.companies = companies;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
<!DOCTYPE html><html><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><link rel=icon href=\favicon.ico><script src=\config.js></script><title></title><link href=/css/chunk-7b1dff40.ca5cf5af.css rel=prefetch><link href=/js/chunk-00ae0766.9e6b7bf3.js rel=prefetch><link href=/js/chunk-7b1dff40.48031a60.js rel=prefetch><link href=/css/app.36043160.css rel=preload as=style><link href=/css/chunk-vendors.3c3b2e85.css rel=preload as=style><link href=/js/app.20219e3f.js rel=preload as=script><link href=/js/chunk-vendors.02a4e5bc.js rel=preload as=script><link href=/css/chunk-vendors.3c3b2e85.css rel=stylesheet><link href=/css/app.36043160.css rel=stylesheet></head><body><noscript><strong>很抱歉如果没有启用JavaScript程序不能正常工作若要继续使用请启用它。</strong></noscript><div id=app></div><script src=/js/chunk-vendors.02a4e5bc.js></script><script src=/js/app.20219e3f.js></script></body></html>
<!DOCTYPE html><html><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><link rel=icon href=\favicon.ico><script src=\config.js></script><title></title><link href=/css/chunk-7b1dff40.ca5cf5af.css rel=prefetch><link href=/js/chunk-00ae0766.9e6b7bf3.js rel=prefetch><link href=/js/chunk-7b1dff40.ab5dd6a1.js rel=prefetch><link href=/css/app.36043160.css rel=preload as=style><link href=/css/chunk-vendors.3c3b2e85.css rel=preload as=style><link href=/js/app.35d8f3fc.js rel=preload as=script><link href=/js/chunk-vendors.02a4e5bc.js rel=preload as=script><link href=/css/chunk-vendors.3c3b2e85.css rel=stylesheet><link href=/css/app.36043160.css rel=stylesheet></head><body><noscript><strong>很抱歉如果没有启用JavaScript程序不能正常工作若要继续使用请启用它。</strong></noscript><div id=app></div><script src=/js/chunk-vendors.02a4e5bc.js></script><script src=/js/app.35d8f3fc.js></script></body></html>