刘翔宇-旅管家 3 years ago
commit 8cfc6e0aa1

@ -3,4 +3,5 @@ ENV = 'development'
# base api
VUE_APP_BASE_API = http://sstt.ali251.langye.net/
#VUE_APP_BASE_API = https://sstt.115.langye.net
VUE_APP_UPLOAD_API = http://sstt.ali251.langye.net/api/admin/upload-file

@ -1,61 +1,62 @@
import request from '@/utils/request'
export function save(data) {
return request({
url: '/api/admin/parameter/save',
method: 'post',
data
})
}
export function store(data) {
return request({
url: '/api/admin/parameter/store',
method: 'post',
data
})
}
export function getparameter(param) {
return request({
url: '/api/admin/parameter/show',
method: 'get',
params: param
})
}
export function getparameteritem(number) {
return request({
url: '/api/admin/parameter/show',
method: 'get',
params: {
number: number
}
})
}
export function listparameter(param) {
return request({
url: '/api/admin/parameter/index',
method: 'get',
params: param
})
}
export function del(id) {
return request({
url: '/api/admin/parameter/delete',
method: 'get',
params: {
id
}
})
}
export function delDetail(id) {
return request({
url: '/api/admin/parameter/detail-delete',
method: 'get',
params: {
id
}
})
import request from '@/utils/request'
export function save(data) {
return request({
url: '/api/admin/parameter/save',
method: 'post',
data
})
}
export function store(data) {
return request({
url: '/api/admin/parameter/store',
method: 'post',
data
})
}
export function getparameter(param,loading = true) {
return request({
url: '/api/admin/parameter/show',
method: 'get',
params: param,
isLoading:loading
})
}
export function getparameteritem(number) {
return request({
url: '/api/admin/parameter/show',
method: 'get',
params: {
number: number
}
})
}
export function listparameter(param) {
return request({
url: '/api/admin/parameter/index',
method: 'get',
params: param
})
}
export function del(id) {
return request({
url: '/api/admin/parameter/delete',
method: 'get',
params: {
id
}
})
}
export function delDetail(id) {
return request({
url: '/api/admin/parameter/detail-delete',
method: 'get',
params: {
id
}
})
}

@ -178,6 +178,22 @@ export default {
<style lang="scss">
.xy-table-item-label{
width: 140px;
text-align: right;
}
.xy-table-item-min{
position: relative;
&::after{
z-index: 1;
position: absolute;
right: 0;
top: 0;
content:'(分钟)'
}
::v-deep .el-input__clear{
position: relative;
right: 30px;
z-index: 2;
}
}
.xy-table-item-price{
position: relative;

@ -39,6 +39,9 @@ export default {
window.onresize = this.initStyle
},
destroyed() {
window.onresize = null
},
render(h) {
let {isShowSelector,showSelector,$scopedSlots} = this

@ -224,7 +224,7 @@ export default {
prop={item.prop}
scopedSlots={{
default(scope) {
return item.customFn(scope.row)
return item.customFn(scope.row,scope)
}
}}>
</el-table-column>

@ -18,13 +18,14 @@
@pageIndexChange="e => {select.page = e;getTypes()}"
@pageSizeChange="e => select.page_size = e"></xy-table>
<add-business ref="addBusiness" @refresh="getTypes"></add-business>
<add-business ref="addBusiness" :skus="skus" @refresh="getTypes"></add-business>
</div>
</template>
<script>
import {getList,destroy} from '@/api/productType'
import {parseTime} from '@/utils'
import {getList as getSkus} from '@/api/sku'
import addBusiness from "@/views/business/component/addBusiness";
export default {
@ -37,6 +38,7 @@ export default {
page_size:10,
page:1
},
skus:[],
total:0,
list:[],
@ -72,7 +74,22 @@ export default {
{
prop:'cycle',
label:'结算周期',
width: 200
width: 200,
formatter:(cell,data,value)=>{
switch (value){
case 1:
return '月度结算'
break;
case 2:
return '季度结算'
break;
case 3:
return '年度结算'
break;
default:
return value
}
}
},
{
prop:'sortnumber',
@ -100,6 +117,10 @@ export default {
console.log(this.list)
},
async getSkus(){
const res = await getSkus({page_size:9999,page:1})
this.skus = res.data
},
editor(row){
this.$refs['addBusiness'].type = 'editor'
@ -119,6 +140,7 @@ export default {
},
mounted() {
this.getTypes()
this.getSkus()
}
}
</script>

@ -70,6 +70,19 @@
</div>
</div>
</template>
<template v-slot:product_sku_list>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>关联服务
</div>
<div class="xy-table-item-content">
<el-select v-model="form.product_sku_list" style="width: 300px;" placeholder="请选择关联服务" multiple value-key="sku_id">
<el-option v-for="(item,index) in skus" :value="{sku_id:item.id}" :label="item.name" :key="item.id"></el-option>
</el-select>
</div>
</div>
</template>
</xy-dialog>
</div>
</template>
@ -78,6 +91,12 @@
import {getForm, save} from '@/api/productType'
export default {
props:{
skus:{
type:Array,
default:()=>[]
}
},
data() {
return {
id: '',
@ -89,7 +108,8 @@ export default {
buy_name: '',
cycle: '',
flow: '',
sortnumber: 0
sortnumber: 0,
product_sku_list:[]
},
rules: {
name: [

@ -1,6 +1,7 @@
<template>
<div>
<xy-dialog :width="74" :is-show.sync="isShow" ref="dialog" :form="form" :rules="rules" :title="type === 'add' ? '新增用户' : '编辑用户'" type="form"
<xy-dialog ref="dialog" :form="form" :is-show.sync="isShow" :rules="rules" :title="type === 'add' ? '新增用户' : '编辑用户'"
:width="74" type="form"
@submit="submit">
<template v-slot:name>
<div class="xy-table-item">
@ -16,10 +17,10 @@
<template v-slot:phone>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>手机号
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>联系电话
</div>
<div class="xy-table-item-content">
<el-input v-model="form.phone" clearable placeholder="请输入手机号" style="width: 300px;"></el-input>
<el-input v-model="form.phone" clearable placeholder="请输入联系电话" style="width: 300px;"></el-input>
</div>
</div>
</template>
@ -35,7 +36,7 @@
</div>
</template>
<template v-slot:contact_name >
<template v-slot:contact_name>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>委托人
@ -46,7 +47,7 @@
</div>
</template>
<template v-slot:contact_phone >
<template v-slot:contact_phone>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>委托人手机号
@ -57,7 +58,7 @@
</div>
</template>
<template v-slot:idcard_address >
<template v-slot:idcard_address>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>户籍地址
@ -68,36 +69,100 @@
</div>
</template>
<template v-slot:customer_address_list >
<template v-slot:area>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>区域
</div>
<div class="xy-table-item-content">
<el-cascader
v-model="form.area"
style="width: 300px;"
placeholder="区域选择"
:options="cities"
:props="{
label:'value',
value:'id',
}"
@change="areaPick">
</el-cascader>
</div>
</div>
</template>
<template v-slot:customer_address_list>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>地址
</div>
<div class="xy-table-item-content">
<div class="xy-table-item-content-address" v-if="form.customer_address_list.length > 0">
<div class="xy-table-item-content-address-title">
<div class="xy-table-item-content-address-title__default">默认地址</div>
<div class="xy-table-item-content-address-title__name">地址名称</div>
<div class="xy-table-item-content-address-title__address">详细地址</div>
<div class="xy-table-item-content-address-title__comment">备注</div>
</div>
<div class="xy-table-item-content-address-item" v-for="(item,index) in form.customer_address_list">
<div class="xy-table-item-content-address-item__default">
<el-radio :label="1" :value="item.default" @change="addressRadioClick(index)">{{item.default ? '' : ''}}</el-radio>
</div>
<div class="xy-table-item-content-address-item__name">
<el-input placeholder="地址名称" v-model="item.name"></el-input>
</div>
<div class="xy-table-item-content-address-item__address">
<el-input placeholder="详细地址" v-model="item.address"></el-input>
</div>
<div class="xy-table-item-content-address-item__comment">
<el-input placeholder="地址备注" type="textarea" :autosize="{minRows:2}" v-model="item.comment"></el-input>
</div>
</div>
<div v-if="form.customer_address_list.length > 0" class="xy-table-item-content-address">
<!-- <el-table :stripe="true" :data="form.customer_address_list" :height="260" size="mini" :highlight-current-row="true">-->
<!-- <el-table-column type="index" width="40">-->
<!-- </el-table-column>-->
<!-- <el-table-column label="是否默认" width="120" align="center">-->
<!-- <template v-slot:default="scope">-->
<!-- <el-radio-->
<!-- :value="scope.row.default"-->
<!-- :label="1"-->
<!-- @change="radioPick($event,scope)">默认地址-->
<!-- </el-radio>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column label="名称" width="140" align="center">-->
<!-- <template v-slot:default="scope">-->
<!-- <el-input v-model="scope.row.name" placeholder="名称"></el-input>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column label="区域" width="200" align="center">-->
<!-- <template v-slot:default="scope">-->
<!-- <el-cascader-->
<!-- placeholder="区域选择"-->
<!-- :options="cities"-->
<!-- :props="{-->
<!-- label:'value',-->
<!-- value:'id',-->
<!-- lazy:true,-->
<!-- lazyLoad:loadLeaf-->
<!-- }">-->
<!-- </el-cascader>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column label="地址" min-width="200" align="center">-->
<!-- <template v-slot:default="scope">-->
<!-- <el-input v-model="scope.row.address"></el-input>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column label="备注" min-width="200" align="center">-->
<!-- <template v-slot:default="scope">-->
<!-- <el-input v-model="scope.row.remark" type="textarea" :autosize="{minRows:2}" placeholder="备注"></el-input>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column label="操作" width="70" fixed="right" align="center">-->
<!-- <template v-slot:default="scope">-->
<!-- <Button ghost type="primary" size="small">删除</Button>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- </el-table>-->
<xy-table :height="200" :is-page="false" :list="form.customer_address_list" :table-item="addressTable">
<template v-slot:btns>
<el-table-column align="center" fixed="right" header-align="center" label="操作" width="80">
<template v-slot:default="scope">
<Poptip
confirm
title="确认要删除吗"
transfer
@on-ok="deleteAddress(scope)">
<Button ghost size="small" type="primary">删除</Button>
</Poptip>
</template>
</el-table-column>
</template>
</xy-table>
</div>
<avue-input-map class="avue-map-input" style="width: 300px;" :params="option" placeholder="请选择地图" v-model="map" ></avue-input-map>
<avue-input-map v-model="map" :params="option" class="avue-map-input" placeholder="请选择地图"
style="width: 300px;"></avue-input-map>
</div>
</div>
</template>
@ -147,7 +212,8 @@
</div>
<div class="xy-table-item-content">
<el-select v-model="form.level_id" placeholder="请选择失能等级" style="width: 300px;">
<el-option v-for="item in disabilityLevel" :key="item.id" :label="item.value" :value="item.id"></el-option>
<el-option v-for="item in disabilityLevel" :key="item.id" :label="item.value"
:value="item.id"></el-option>
</el-select>
</div>
</div>
@ -157,72 +223,181 @@
</template>
<script>
import {save,getInfo} from '@/api/customer'
import {getparameter} from '@/api/system/dictionary'
import {save, getInfo} from '@/api/customer'
export default {
props:{
disabilityLevel:{
type:Array,
default:()=>[]
props: {
disabilityLevel: {
type: Array,
default: () => []
},
cities:{
type: Array,
default: () => []
}
},
data() {
const validatePhone = (rule, value, callback) => {
if (!value) {
callback(new Error('请填写联系电话'))
} else if (/^[1][3-9][\d]{9}/.test(value)) {
callback()
} else if (/([0-9]{3,4}-)?[0-9]{7,8}/.test(value)) {
callback()
} else {
callback(new Error('联系电话格式错误'))
}
}
return {
id: '',
type: '',
isShow: false,
addressInput:'',//
addressInput: '',//
addressTable: [
{
width: 40,
type: 'index'
},
{
label: '是否默认',
width: 100,
sortable: false,
customFn: (row, scope) => {
let {form} = this
return (
<div>
<el-radio
value={row.default}
label={1}
on={{
['change']: (e) => {
form.customer_address_list.map((item, index) => {
index === scope.$index ? item.default = 1 : item.default = 0
})
}
}}>默认地址
</el-radio>
</div>
)
}
},
{
prop: 'name',
label: '名称',
width: 160,
align: 'left',
sortable: false,
customFn: (row) => {
return (
<div>
<el-input
placeholder="名称"
value={row.name}
on={{
['input']: e => row.name = e
}}>
</el-input>
</div>
)
}
},
{
prop: 'address',
label: '地址',
width: 220,
align: 'left',
sortable: false,
customFn: (row) => {
return (
<div>
<el-input
placeholder="地址"
value={row.address}
on={{
['input']: e => row.address = e
}}>
</el-input>
</div>
)
}
},
{
prop: 'remark',
label: '备注',
minWidth: 200,
sortable: false,
customFn: (row) => {
return (
<div>
<el-input
placeholder="备注"
type="textarea"
autosize={{minRows: 2}}
value={row.remark}
on={{
['input']: e => row.remark = e
}}>
</el-input>
</div>
)
}
}
],
form: {
name:'',
phone:'',
idcard:'',
contact_name:'',
contact_phone:'',
idcard_address:'',
customer_address_list:[],
sex:'',
birthday:'',
remark:'',
level_id:'',
name: '',
phone: '',
idcard: '',
contact_name: '',
contact_phone: '',
idcard_address: '',
area:'',
customer_address_list: [],
sex: '',
birthday: '',
remark: '',
level_id: '',
},
rules: {
name:[
{required:true,message:'请填写姓名'}
name: [
{required: true, message: '请填写姓名'}
],
phone: [
{required: true, message: '请填写手机号'},
{pattern: /^[1][3-9][\d]{9}/, message: '手机号格式错误'}
{validator: validatePhone},
],
idcard: [
{required: true, message: '请填写身份证号'},
{pattern: /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/, message: '身份证格式错误'}
{
pattern: /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/,
message: '身份证格式错误'
}
],
contact_name:[
{required:true,message:'请填写联系人姓名'}
contact_name: [
{required: true, message: '请填写联系人姓名'}
],
contact_phone: [
{required: true, message: '请填写手机号'},
{pattern: /^[1][3-9][\d]{9}/, message: '手机号格式错误'}
],
idcard_address:[
idcard_address: [
{required: true, message: '请填写户籍地址'},
],
customer_address_list:[
customer_address_list: [
{required: true, message: '请填写地址'},
],
sex:[
{required: true, message: '请填写姓名'},
sex: [
{required: true, message: '请选择性别'},
],
birthday:[
{required: true, message: '请填写生日'},
birthday: [
{required: true, message: '请选择生日'},
],
level_id:[
level_id: [
{required: true, message: '请选择失能等级'},
]
},
map:{
},
map: {},
option: {
column: [
{
@ -230,7 +405,7 @@ export default {
prop: 'map',
type: 'map',
//
params:{
params: {
zoom: 10,
// zoomEnable: false,
// dragEnable: false,
@ -240,48 +415,79 @@ export default {
}
},
methods: {
addressRadioClick(index){
this.form.customer_address_list.forEach((item,index1)=>{
if(index1 === index){
item.default = 1
console.log(this.form)
return
}
item.default = 0
})
this.$forceUpdate()
// async loadLeaf(node, resolve){
// if(node?.root){
// return
// }
// const res = await getparameter({number:node.data.remark},false)
// console.log(res)
// resolve(res.detail)
// },
// radioPick(e,scope){
// this.form.customer_address_list.map((item, index) => {
// index === scope.$index ? item.default = 1 : item.default = 0
// })
// },
areaPick(e){
console.log(e)
},
deleteAddress({$index,row}){
this.form.customer_address_list.splice($index,1)
},
async getDetail(){
async getDetail() {
const res = await getInfo(this.id)
this.$integrateData(this.form,res)
this.$integrateData(this.form, res)
this.form.customer_address_list = res.customer_address
this.form.area = [Number(res.city_id),Number(res.area_id),Number(res.street_id)]
console.log(this.form)
},
submit(){
if(this.type === 'editor'){
Object.defineProperty(this.form,'id',{
value:this.id,
enumerable:true,
writable:true,
configurable:true
submit() {
Object.defineProperty(this.form,'city_id',{
value:this.form.area[0] || '',
enumerable: true,
writable: true,
configurable: true
})
Object.defineProperty(this.form,'area_id',{
value:this.form.area[1] || '',
enumerable: true,
writable: true,
configurable: true
})
Object.defineProperty(this.form,'street_id',{
value:this.form.area[2] || '',
enumerable: true,
writable: true,
configurable: true
})
if (this.type === 'editor') {
Object.defineProperty(this.form, 'id', {
value: this.id,
enumerable: true,
writable: true,
configurable: true
})
}
console.log(this.form)
save(this.form).then(res => {
this.$successMessage(this.type,'客户')
this.$successMessage(this.type, '客户')
this.isShow = false
this.$emit('refresh')
})
}
},
watch:{
isShow(val){
if(val){
if(this.type === 'editor'){
watch: {
isShow(val) {
if (val) {
if (this.type === 'editor') {
this.getDetail()
}
}else{
} else {
this.id = ''
this.type = ''
this.map = {}
@ -289,15 +495,15 @@ export default {
delete this.form.id
}
},
map(val){
if(val.length === 0 || !val) return
map(val) {
if (val.length === 0 || !val) return
this.form.customer_address_list.push({
name:'',
address:val[2],
lng:val[0],
lat:val[1],
default:0,
comment:''
name: '',
address: val[2],
lng: val[0],
lat: val[1],
default: 0,
comment: ''
})
}
}
@ -305,53 +511,61 @@ export default {
</script>
<style lang="scss" scoped>
.xy-table-item{
&-label{
.xy-table-item {
&-label {
width: 160px;
}
&-content{
&-address{
width: 700px;
&-content {
&-address {
width: 600px;
margin-bottom: 20px;
&-title{
&-title {
display: flex;
text-align: center;
font-weight: 600;
&>div{
& > div {
padding: 2px 6px;
}
&__default{
&__default {
flex-shrink: 0 !important;
flex-grow: 0 !important;
flex-basis: 100px !important;
}
&__name{
&__name {
flex-shrink: 0 !important;
flex-grow: 0 !important;
flex-basis: 140px !important;
}
&__address{
&__address {
flex-shrink: 0 !important;
flex-grow: 0 !important;
flex-basis: 300px !important;
}
&__commnet{
&__commnet {
flex: 1;
}
}
&-item{
&-item {
display: flex;
align-items: flex-start;
&>div{
& > div {
padding: 2px 6px;
}
&__default{
&__default {
align-self: center;
flex-shrink: 0 !important;
flex-grow: 0 !important;
@ -360,26 +574,29 @@ export default {
align-items: center;
justify-content: center;
}
&__name{
&__name {
flex-shrink: 0 !important;
flex-grow: 0 !important;
flex-basis: 140px !important;
}
&__address{
&__address {
flex-shrink: 0 !important;
flex-grow: 0 !important;
flex-basis: 300px !important;
}
&__commnet{
&__commnet {
flex: 1;
}
}
}
.avue-map-input{
.avue-map-input {
position: relative;
&::after{
&::after {
visibility: hidden;
content: '地址选择';
font-size: 12px;

@ -10,7 +10,7 @@
<div>
<Input placeholder="关键字搜索" style="width: 200px; margin-right: 10px"/>
<Button style="margin-left: 10px" type="primary" @click="getCustomers"></Button>
<Button style="margin-left: 10px" type="primary" @click="select.page = 1,getCustomers"></Button>
<Button style="margin-left: 10px" type="primary"
@click="$refs['addCustomer'].type = 'add',$refs['addCustomer'].isShow = true">录入客户
</Button>
@ -31,7 +31,7 @@
@delete="destroy">
</xy-table>
<add-customer ref="addCustomer" :disability-level="disabilityLevel" @refresh="getCustomers"></add-customer>
<add-customer ref="addCustomer" :cities="cities" :disability-level="disabilityLevel" @refresh="getCustomers"></add-customer>
</div>
</template>
@ -53,6 +53,7 @@ export default {
keyword: ''
},
disabilityLevel: [],
cities:[],
total: 0,
list: [],
@ -129,6 +130,21 @@ export default {
this.total = res.data.total
},
async getCity(){
let city = await getparameter({number: 'city'},false)
for(let i = 0;i < city.detail.length;i ++){
let area = await getparameter({number : city.detail[i].remark},false)
city.detail[i].children = area.detail
for(let j = 0;j < area.detail.length;j++){
let street = await getparameter({number : area.detail[j].remark},false)
area.detail[j].children = street.detail
}
}
this.cities = city.detail
},
editor(row){
this.$refs['addCustomer'].id = row.id
this.$refs['addCustomer'].type = 'editor'
@ -144,6 +160,7 @@ export default {
mounted() {
this.getDisabilityLevel()
this.getCustomers()
this.getCity()
}
}
</script>

@ -6,7 +6,7 @@
<slot>
<div>
<Input v-model="select.keyword" placeholder="关键字搜索" style="width: 200px; margin-right: 10px"/>
<Button style="margin-left: 10px" type="primary" @click="getList"></Button>
<Button style="margin-left: 10px" type="primary" @click="select.page = 1,getList"></Button>
<Button style="margin-left: 10px" type="primary" @click="$refs['addcollectMoney'].type = 'add',$refs['addcollectMoney'].isShow = true">新建</Button>
</div>
</slot>

@ -6,7 +6,7 @@
<slot>
<div>
<Input v-model="select.keyword" placeholder="关键字搜索" style="width: 200px; margin-right: 10px"/>
<Button style="margin-left: 10px" type="primary" @click="getList"></Button>
<Button style="margin-left: 10px" type="primary" @click="select.page = 1,getList"></Button>
</div>
</slot>
</lx-header>

@ -6,7 +6,7 @@
<slot>
<div>
<Input v-model="select.keyword" placeholder="关键字搜索" style="width: 200px; margin-right: 10px"/>
<Button style="margin-left: 10px" type="primary" @click="getList"></Button>
<Button style="margin-left: 10px" type="primary" @click="select.page = 1,getList"></Button>
</div>
</slot>
</lx-header>

@ -1,3 +1,4 @@
<template>
<div class="login-container">
@ -241,5 +242,5 @@
cursor: pointer;
user-select: none;
}
}
</style>
}
</style>

@ -54,6 +54,7 @@
start-placeholder="开始时间"
style="width: 300px;"
type="daterange"
:picker-options="pickerOptions"
value-format="yyyy-MM-dd"></el-date-picker>
</div>
</div>
@ -135,6 +136,41 @@ export default {
id: '',
type: '',
isShow: false,
pickerOptions: {
shortcuts: [{
text: '最近一周',
onClick(picker) {
const end = new Date();
const start = new Date();
end.setTime(start.getTime() + 3600 * 1000 * 24 * 7);
picker.$emit('pick', [start, end]);
}
}, {
text: '最近一个月',
onClick(picker) {
const end = new Date();
const start = new Date();
end.setTime(start.getTime() + 3600 * 1000 * 24 * 30);
picker.$emit('pick', [start, end]);
}
}, {
text: '最近三个月',
onClick(picker) {
const end = new Date();
const start = new Date();
end.setTime(start.getTime() + 3600 * 1000 * 24 * 90);
picker.$emit('pick', [start, end]);
}
},{
text: '最近一年',
onClick(picker) {
const end = new Date();
const start = new Date();
end.setTime(start.getTime() + 3600 * 1000 * 24 * 365);
picker.$emit('pick', [start, end]);
}
}]
},
customers: [],
customSelect: {

@ -8,7 +8,7 @@
<slot>
<div>
<Input v-model="select.keyword" style="width: 200px; margin-right: 10px" placeholder="关键字搜索" />
<Button type="primary" style="margin-left: 10px" @click="getOrder"></Button>
<Button type="primary" style="margin-left: 10px" @click="select.page = 1,getOrder"></Button>
<Button type="primary" style="margin-left: 10px" @click="$refs['addOrder'].type = 'add',$refs['addOrder'].isShow = true">创建订单</Button>
</div>
</slot>

@ -1,104 +0,0 @@
<template>
<div class="container" style="padding: 0px 20px">
<!--查询-->
<div>
<div ref="lxHeader">
<lx-header icon="md-apps" text="销售管理" style="margin-bottom: 10px; border: 0px; margin-top: 15px">
<div slot="content"></div>
<slot>
<div>
<Input style="width: 200px; margin-right: 10px" placeholder="关键字搜索" />
<Button type="primary" style="margin-left: 10px">查询</Button>
<Button type="primary" style="margin-left: 10px" @click="isShowAdd = true">创建销售人员</Button>
</div>
</slot>
</lx-header>
</div>
</div>
<!-- 表格 -->
<xy-table :table-item="tableItem" :list="list"></xy-table>
<div style="display: flex;justify-content: flex-end;">
<Page :total="10" show-elevator />
</div>
</div>
</template>
<script>
export default {
components:{
MyDialog
},
data() {
return {
formLabelWidth: "120px",
userNameStatus: true,
form: {
name: "",
username: "",
password: ""
},
rules: {
name: [{
required: true,
message: '请输入姓名',
trigger: 'blur'
},
{
min: 3,
max: 5,
message: '长度在 3 到 5 个字符',
trigger: 'blur'
}
],
username: [{
required: true,
message: '请输入用户名',
trigger: 'blur'
},
{
min: 3,
max: 5,
message: '长度在 3 到 5 个字符',
trigger: 'blur'
}
],
password: [{
required: true,
message: '请输入密码',
trigger: 'blur',
}]
},
isShowAdd:false,
tableItem:[
{
prop:"name",
label:"姓名"
},
{
prop:"username",
label:"用户名"
}
],
list:JSON.parse('{"status":1,"data":{"rows":[{"id":1,"username":"songwz","name":"\u5b8b\u536b\u5b97","mobile":"18962113007","avatar":null,"created_at":"2021-12-02T12:50:53.000000Z","updated_at":"2021-12-02T16:13:26.000000Z","deleted_at":null},{"id":3,"username":"ags","name":"\u5b8b\u6d4b\u8bd5","mobile":"13933193538","avatar":null,"created_at":"2021-12-02T12:56:41.000000Z","updated_at":"2021-12-02T12:56:41.000000Z","deleted_at":null},{"id":7,"username":"liuxy1","name":"\u5218\u7fd4\u5b87","mobile":"18550337240","avatar":null,"created_at":"2021-12-03T17:17:46.000000Z","updated_at":"2022-06-20T07:01:00.000000Z","deleted_at":null},{"id":8,"username":"liuyu","name":"\u5218\u745c","mobile":"18550337340","avatar":null,"created_at":"2021-12-08T07:57:37.000000Z","updated_at":"2022-05-06T08:24:00.000000Z","deleted_at":null},{"id":10,"username":"15995078066","name":"\u6c88\u9ece","mobile":"15995078066","avatar":null,"created_at":"2021-12-21T09:32:40.000000Z","updated_at":"2022-05-06T08:25:00.000000Z","deleted_at":null},{"id":11,"username":"18362235035","name":"\u7fc1\u96ea\u71d5","mobile":"18362235035","avatar":null,"created_at":"2021-12-21T09:33:18.000000Z","updated_at":"2022-05-06T08:25:13.000000Z","deleted_at":null},{"id":12,"username":"13813578617","name":"\u534e\u60e0\u7389","mobile":"13813578617","avatar":null,"created_at":"2021-12-21T09:33:50.000000Z","updated_at":"2022-05-06T08:25:20.000000Z","deleted_at":null},{"id":13,"username":"13915836633","name":"\u534e\u76ca\u840d","mobile":"13915836633","avatar":null,"created_at":"2021-12-21T09:34:17.000000Z","updated_at":"2022-05-06T08:25:29.000000Z","deleted_at":null},{"id":14,"username":"15861690406","name":"\u8c22\u4e9a\u6960","mobile":"15861690406","avatar":null,"created_at":"2021-12-21T09:34:50.000000Z","updated_at":"2022-05-06T08:25:36.000000Z","deleted_at":null},{"id":15,"username":"13961241491","name":"\u7a0b\u7476","mobile":"13961241491","avatar":null,"created_at":"2021-12-25T02:54:50.000000Z","updated_at":"2022-05-06T08:25:43.000000Z","deleted_at":null},{"id":16,"username":"15722790021","name":"\u9646\u96ea\u598d","mobile":"15722790021","avatar":null,"created_at":"2021-12-25T02:55:15.000000Z","updated_at":"2022-05-06T08:25:51.000000Z","deleted_at":null},{"id":17,"username":"13915808101","name":"\u7a0b\u7231\u7433","mobile":"13915808101","avatar":null,"created_at":"2022-01-04T07:55:52.000000Z","updated_at":"2022-05-06T08:25:58.000000Z","deleted_at":null},{"id":19,"username":"15851936391","name":"\u6f58\u96f7\u654f","mobile":"15851936391","avatar":null,"created_at":"2022-01-05T07:59:56.000000Z","updated_at":"2022-05-06T08:26:06.000000Z","deleted_at":null},{"id":20,"username":"15995090911","name":"\u5434\u5029\u5170","mobile":"15995090911","avatar":null,"created_at":"2022-01-05T08:00:29.000000Z","updated_at":"2022-01-05T08:00:29.000000Z","deleted_at":null}],"pager":""}}').data.rows
}
},
methods: {
// async init(){
// let res = await getList()
// console.log(res)
// },
submit(){
this.isShowAdd = false
console.log(this.form)
}
},
created() {
//this.init()
}
}
</script>
<style scoped lang="scss">
</style>

@ -6,10 +6,10 @@
<template v-slot:product_type_id>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>分类
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>业务板块
</div>
<div class="xy-table-item-content">
<el-select v-model="form.product_type_id" placeholder="请选择分类板块" style="width: 300px">
<el-select v-model="form.product_type_id" placeholder="请选择业务板块" style="width: 300px">
<el-option v-for="item in productType" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</div>
@ -33,7 +33,9 @@
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>周期
</div>
<div class="xy-table-item-content">
<el-input v-model="form.cycle" clearable placeholder="请输入周期" style="width: 300px;"/>
<el-select v-model="form.cycle" style="width: 300px;" placeholder="请选择周期">
<el-option v-for="(item,index) in ['年','月','周','次']" :key="index" :label="item" :value="item"></el-option>
</el-select>
</div>
</div>
</template>
@ -55,7 +57,7 @@
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>采购单价
</div>
<div class="xy-table-item-content">
<div class="xy-table-item-content xy-table-item-price">
<el-input-number v-model="form.purchase_price" :controls="false" :precision="2" clearable
placeholder="请输入采购单价" style="width: 300px;"/>
</div>
@ -67,7 +69,7 @@
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>护工单价
</div>
<div class="xy-table-item-content">
<div class="xy-table-item-content xy-table-item-price">
<el-input-number v-model="form.nurse_price" :controls="false" :precision="2" clearable placeholder="请输入护工单价"
style="width: 300px;"/>
</div>
@ -98,23 +100,6 @@
</div>
</div>
</template>
<template v-slot:product_sku_list>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>关联服务
</div>
<div class="xy-table-item-content">
<el-select v-model="form.product_sku_list" value-key="sku_id" multiple placeholder="请选择关联服务" style="width: 300px">
<el-option v-for="item in productSku"
:key="item.id"
:label="item.name"
:value="{sku_id:item.id}"
@change="skuChange"></el-option>
</el-select>
</div>
</div>
</template>
</xy-dialog>
</div>
</template>
@ -127,10 +112,6 @@ export default {
productType: {
type: Array,
default: () => []
},
productSku: {
type: Array,
default: () => []
}
},
data() {
@ -147,8 +128,7 @@ export default {
purchase_price: '',
nurse_price: '',
time_lenth: '',
type: '',
product_sku_list: []
//type: '',
},
rules: {
product_type_id: [
@ -175,16 +155,10 @@ export default {
type: [
{required: true, message: '请选择规定项目'}
],
product_sku_list: [
{required: true, message: '请选择关联服务'}
],
}
}
},
methods: {
skuChange(e){
console.log(e)
},
async getDetail() {
const res = await getForm(this.id)
this.$integrateData(this.form, res)

@ -7,7 +7,7 @@
<slot>
<div>
<Input placeholder="关键字搜索" style="width: 200px; margin-right: 10px"/>
<Button style="margin-left: 10px" type="primary" @click="getList"></Button>
<Button style="margin-left: 10px" type="primary" @click="select.page = 1,getList()"></Button>
<Button style="margin-left: 10px" type="primary"
@click="$refs['addProduct'].type = 'add',$refs['addProduct'].isShow = true">新建产品
</Button>
@ -26,7 +26,7 @@
@pageSizeChange="e => select.page_size = e"
@pageIndexChange="e => {select.page = e;getList()}"></xy-table>
<add-product ref="addProduct" :product-sku="productSku" :product-type="productType"></add-product>
<add-product ref="addProduct" :product-type="productType"></add-product>
</div>
</template>
@ -34,7 +34,6 @@
import {getList,destroy} from '@/api/product'
import {getparameter} from '@/api/system/dictionary'
import {getList as getTypes} from '@/api/productType'
import {getList as getSku} from '@/api/sku'
import addProduct from "@/views/product/productComponent/addProduct";
@ -49,7 +48,6 @@ export default {
page_size:10
},
productType: [],
productSku: [],
total:0,
list: [],
@ -109,25 +107,6 @@ export default {
}
}
},
{
label:'服务菜单明细',
minWidth:220,
customFn:(row)=>{
return (
<div>{row.product_skus.length}</div>
)
}
},
{
prop:'type',
label:'单次规定项目',
width: 180,
customFn:(row)=>{
return (
<div style={{'color':row.type === 1 ? 'green' : 'blue'}}>{row.type === 1 ? '自由组合' : '按订单组合'}</div>
)
}
}
]
}
},
@ -142,10 +121,6 @@ export default {
const res = await getTypes({page_size: 999},false)
this.productType = res.data
},
async getProductSku() {
const res = await getSku({page:1,page_size:999},false)
this.productSku = res.data
},
editor(row){
this.$refs['addProduct'].type = 'editor'
@ -162,7 +137,6 @@ export default {
mounted() {
this.getList()
this.getProductType()
this.getProductSku()
}
}
</script>

@ -6,7 +6,7 @@
<slot>
<div>
<Input placeholder="关键字搜索" style="width: 200px; margin-right: 10px"/>
<Button style="margin-left: 10px" type="primary" @click="getSku"></Button>
<Button style="margin-left: 10px" type="primary" @click="select.page = 1,getSku()"></Button>
<Button style="margin-left: 10px" type="primary" @click="$refs['addSku'].type = 'add',$refs['addSku'].isShow = true">新建服务</Button>
</div>
</slot>

@ -2,11 +2,11 @@
<div>
<xy-dialog
ref="dialog"
:is-show.sync="isShow"
type="form"
:title="type === 'add' ? '新增服务项目' : '编辑服务项目'"
:form="form"
:is-show.sync="isShow"
:rules="rules"
:title="type === 'add' ? '新增服务项目' : '编辑服务项目'"
type="form"
@submit="submit">
<template v-slot:category_id>
<div class="xy-table-item">
@ -38,7 +38,20 @@
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>服务内容
</div>
<div class="xy-table-item-content">
<el-input type="textarea" :autosize="{minRows:2}" v-model="form.service" clearable placeholder="请输入服务内容" style="width: 300px;"></el-input>
<el-input v-model="form.service" :autosize="{minRows:2}" clearable placeholder="请输入服务内容" style="width: 300px;"
type="textarea"></el-input>
</div>
</div>
</template>
<template v-slot:time_lenth>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>服务时间
</div>
<div class="xy-table-item-content xy-table-item-min">
<el-input-number v-model="form.time_lenth" :controls="false" :precision="0" placeholder="请输入服务时间"
style="width: 300px;"></el-input-number>
</div>
</div>
</template>
@ -49,7 +62,8 @@
排序
</div>
<div class="xy-table-item-content">
<el-input-number :controls="false" :precision="0" v-model="form.sortnumber" clearable placeholder="请输入排序" style="width: 300px;"></el-input-number>
<el-input-number v-model="form.sortnumber" :controls="false" :precision="0" clearable placeholder="请输入排序"
style="width: 300px;"></el-input-number>
</div>
</div>
</template>
@ -58,62 +72,64 @@
</template>
<script>
import {save,getForm} from '@/api/sku'
import {save, getForm} from '@/api/sku'
export default {
props:{
skuType:{
type:Array,
default:()=>[]
props: {
skuType: {
type: Array,
default: () => []
}
},
data() {
return {
isShow:false,
id:'',
type:'',
isShow: false,
id: '',
type: '',
form:{
category_id :'',
name :'',
service:'',
sortnumber:0
form: {
category_id: '',
name: '',
service: '',
time_lenth: '',
sortnumber: 0
},
rules:{
name:[
{required:true,message:'请填写名称'}
rules: {
name: [
{required: true, message: '请填写名称'}
]
}
}
},
methods: {
async getDetail(){
async getDetail() {
const res = await getForm(this.id)
this.$integrateData(this.form,res)
this.$integrateData(this.form, res)
},
submit(){
if(this.type === 'editor'){
Object.defineProperty(this.form,'id',{
value:this.id,
enumerable:true,
configurable:true,
writable:true
submit() {
if (this.type === 'editor') {
Object.defineProperty(this.form, 'id', {
value: this.id,
enumerable: true,
configurable: true,
writable: true
})
}
save(this.form).then(res => {
this.$successMessage(this.type,'服务项目')
this.$successMessage(this.type, '服务项目')
this.isShow = false
this.$emit('refresh')
})
}
},
watch:{
isShow(val){
if(val){
if(this.type === 'editor'){
watch: {
isShow(val) {
if (val) {
if (this.type === 'editor') {
this.getDetail()
}
}else{
} else {
this.id = ''
this.type = ''
this.$refs['dialog'].reset()
@ -124,8 +140,8 @@ export default {
}
</script>
<style scoped lang="scss">
::v-deep .el-input__inner{
<style lang="scss" scoped>
::v-deep .el-input__inner {
text-align: left;
}
</style>

@ -7,7 +7,7 @@
<div>
<Input placeholder="关键字搜索" style="width: 200px; margin-right: 10px"/>
<Button style="margin-left: 10px" type="primary" @click="getSkuType"></Button>
<Button style="margin-left: 10px" type="primary" @click="$refs['addSkuType'].type = 'add',$refs['addSkuType'].isShow = true">新建产品
<Button style="margin-left: 10px" type="primary" @click="$refs['addSkuType'].type = 'add',$refs['addSkuType'].isShow = true">新建分类
</Button>
</div>
</slot>

@ -104,6 +104,19 @@
</div>
</template>
<template v-slot:account_id >
<div class="xy-table-item">
<div class="xy-table-item-label">
结算对象
</div>
<div class="xy-table-item-content">
<el-select v-model="form.account_id " placeholder="请选择结算对象" style="width: 300px">
<el-option v-for="item in accounts" :key="item.id" :label="item.value" :value="item.id"></el-option>
</el-select>
</div>
</div>
</template>
<template v-slot:order_id>
<div class="xy-table-item">
<div class="xy-table-item-label">
@ -117,70 +130,26 @@
</div>
</template>
<template v-slot:schedule_list_skus>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>关联服务
</div>
<div class="xy-table-item-content">
<el-select v-model="form.schedule_list_skus" style="width: 300px;" placeholder="请选择关联服务" multiple value-key="sku_id">
<el-option v-for="(item,index) in skus" :value="{sku_id:item.id}" :label="item.name" :key="item.id"></el-option>
</el-select>
</div>
</div>
</template>
<template v-slot:extraFormBottom>
<el-calendar>
<template v-slot:dateCell="{date, data}">
<el-popover
:ref="`popover-${data.day}`"
placement="top"
trigger="click"
width="280">
<div
slot="reference"
:style="
{
'padding':'8px',
}"
:class="{
'date-select':isInDate(data.day)
}"
style="width: 100%;height: 100%"
@click="datePicked(data,date)">
{{ data.day.split('-').slice(1).join('-') }} {{ isInDate(data.day) ? '✔️' : '' }}
</div>
<template>
<div style="display: flex;flex-direction: column;justify-content: center;align-items: center">
<template v-if="pickType === 1">
<el-time-select
style="width: 200px;margin-bottom: 10px"
v-model="form.start_time"
:picker-options="{
start: '00:00',
step: '00:5',
end: '23:59'
}"
placeholder="开始时间">
</el-time-select>
</template>
<template v-else>
<el-time-select
style="width: 200px;margin-bottom: 10px"
v-model="form.end_time"
:picker-options="{
start: '00:00',
step: '00:5',
end: '23:59',
minTime: form.start_time
}"
placeholder="结束时间">
</el-time-select>
</template>
<el-select placeholder="请选择护工" v-model="form.nurse_id" style="width: 200px;margin-bottom: 10px">
<el-option
v-for="item in nurses"
:key="item.id"
:value="item.id"
:label="item.name"></el-option>
</el-select>
<div style="width: 200px;display: flex;justify-content: space-between;">
<Button ghost type="primary" @click="$refs[`popover-${data.day}`].doClose()"></Button>
<Button type="primary" @click="dateConfirm(data)"></Button>
</div>
</div>
</template>
</el-popover>
<div style="display:flex;flex-direction: column;justify-content: center;align-items: center;width: 100%;height: 100%">
<div>{{data.day}}</div>
<i class="el-icon-plus" style="font-size: 22px;padding:10px;"></i>
</div>
</template>
</el-calendar>
</template>
@ -212,6 +181,14 @@ export default {
orders:{
type: Array,
default: () => []
},
skus:{
type: Array,
default: () => []
},
accounts:{
type: Array,
default: () => []
}
},
data() {
@ -227,10 +204,12 @@ export default {
form: {
customer_id: '',
product_id: '',
account_id:'',
order_id: '',
start_time: '',
end_time: '',
nurse_id: '',
schedule_list_skus:[],
},
rules:{
product_id:[

@ -8,7 +8,7 @@
<el-tag effect="dark" style="margin-right: 10px;" type="warning">应排客户</el-tag>
<el-tag effect="dark" style="margin-right: 10px;" type="success">已排客户</el-tag>
<Input placeholder="关键字搜索" style="width: 200px; margin-right: 10px"/>
<Button style="margin-right: 10px" type="primary" @click="getCustomers"></Button>
<Button style="margin-right: 10px" type="primary" @click="select.page = 1,getCustomers"></Button>
<xy-selectors>
</xy-selectors>
@ -37,7 +37,8 @@
:customers="customers"
:nurses="nurses"
:levels="levels"
:orders="orders"></add-schedule>
:orders="orders"
:skus="skus" :accounts="accounts"></add-schedule>
</div>
</template>
@ -47,6 +48,7 @@ import {getList as customerIndex} from '@/api/customer'
import {getList as productIndex} from '@/api/product'
import {getList as nurseIndex} from '@/api/worker'
import {getparameter} from '@/api/system/dictionary'
import {getList as skuIndex} from '@/api/sku'
import addSchedule from "@/views/schedule/component/addSchedule";
@ -65,75 +67,12 @@ export default {
nurses:[],
levels:[],
orders:[],
skus:[],
accounts:[],
total: 0,
list: [],
table: [
// {
// type: 'expand',
// expandFn: (props) => {
// let {$refs} = this
// return (
// <xy-table
// style={{'margin':'0 20px','filter':'drop-shadow(0 2px 16px rgba(200,200,200,0.8))'}}
// is-page={false}
// height={240}
// list={props.row.orders}
// table-item={
// [
// {
// prop: 'no',
// label: '',
// width: 210,
// sortable: false
// },
// {
// prop: 'product.name',
// label: '',
// minWidth: 200,
// sortable: false
// },
// {
// label: '',
// width: 160,
// sortable: false
// }
// ]
// }
// scopedSlots={{
// btns() {
// return (
// <el-table-column
// width={70}
// header-align="center"
// align="center"
// label=""
// scopedSlots={{
// default(scope) {
// return (
// <Button
// type="primary"
// size="small"
// on={{
// ['click']: () => {
// $refs['addSchedule'].form.product_id = scope.row.product_id
// $refs['addSchedule'].form.customer_id = scope.row.customer_id
// $refs['addSchedule'].form.order_id = scope.row.id
// $refs['addSchedule'].isShow = true
// }
// }}></Button>
// )
// }
// }}>
// </el-table-column>
// )
// }
// }}>
//
// </xy-table>
// )
// }
// },
{
width: 40,
type:'index',
@ -200,6 +139,16 @@ export default {
}
},
methods: {
async getAccounts(){
const res = await getparameter({number:'account'})
this.accounts = res.detail
},
async getSkus(){
const res = await skuIndex({page_size:9999,page:1})
this.skus = res.data
},
async getCustomers(){
const res = await customerIndex({page_size:9999,page:1},false)
this.customers = res.data.data
@ -236,6 +185,8 @@ export default {
this.getNurses()
this.getLevels()
this.getCustomerList()
this.getSkus()
this.getAccounts()
}
}
</script>

@ -41,6 +41,11 @@
<el-dialog title="字典编辑" :visible.sync="dialogFormVisible" width="80%">
<el-form :model="form" :rules="rules" ref="form" label-position="right" :label-width="formLabelWidth">
<el-row :gutter="20">
<el-col :span="6">
<el-form-item label="上级id">
<el-input v-model="form.pid" autocomplete="off"></el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="上级">
<el-input v-model="form.pname" disabled autocomplete="off"></el-input>
@ -86,25 +91,25 @@
</el-table-column>
<el-table-column prop="value" label="数据值Text" width="320">
<template slot-scope="scope">
<el-input v-model="scope.row.value" />
<el-input v-model="scope.row.value" >
</el-input>
</template>
</el-table-column>
<el-table-column prop="sort" align="center" label="排序" width="80">
<template slot-scope="scope">
<el-input v-model="scope.row.sort" />
<el-input v-model="scope.row.sort" >
</el-input>
</template>
</el-table-column>
<el-table-column prop="status" align="center" label="状态" width="180">
<template slot-scope="scope">
<el-switch v-model="scope.row.status" />
<el-switch v-model="scope.row.status" >
</el-switch>
</template>
</el-table-column>
<el-table-column prop="remark" label="备注">
<template slot-scope="scope">
<el-input v-model="scope.row.remark" />
<el-input v-model="scope.row.remark" >
</el-input>
</template>
</el-table-column>

@ -129,7 +129,7 @@
<template v-slot:hometown>
<div class="xy-table-item">
<div class="xy-table-item-label">
家乡
籍贯
</div>
<div class="xy-table-item-content">
<el-input v-model="form.hometown" clearable placeholder="请输入家乡" style="width: 300px;"></el-input>

@ -8,7 +8,7 @@
<slot>
<div>
<Input placeholder="关键字搜索" style="width: 200px; margin-right: 10px"/>
<Button style="margin-left: 10px" type="primary" @click="getWorkers"></Button>
<Button style="margin-left: 10px" type="primary" @click="select.page = 1,getWorkers"></Button>
<Button style="margin-left: 10px" type="primary"
@click="$refs['addWorker'].type = 'add',$refs['addWorker'].isShow = true">创建护工
</Button>

Loading…
Cancel
Save