xy 1 year ago
parent 2b2cf1bc4b
commit cf442a1d79

@ -47,3 +47,20 @@
.el-range-separator { .el-range-separator {
box-sizing: content-box; box-sizing: content-box;
} }
//
.el-cascader-panel .el-radio {
width: 100%;
height: 100%;
z-index: 10;
position: absolute;
top: 10px;
right: 10px;
}
.el-cascader-panel .el-radio__input {
visibility: hidden;
}
.el-cascader-panel .el-cascader-node__postfix {
top: 10px;
}

@ -14,7 +14,7 @@ let loading ;
const service = axios.create({ const service = axios.create({
baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
// withCredentials: true, // send cookies when cross-domain requests // withCredentials: true, // send cookies when cross-domain requests
timeout: 5000, // request timeout timeout: 10000, // request timeout
isLoading:true isLoading:true
}) })

@ -25,6 +25,10 @@
></el-option> ></el-option>
</el-select> </el-select>
<el-select <el-select
v-load-more="getCustomers"
:loading="customerLoading"
remote
:remote-method="customerRemote"
filterable filterable
size="small" size="small"
v-model="select.customer_name" v-model="select.customer_name"
@ -215,7 +219,6 @@ export default {
pickedYear: new Date(), pickedYear: new Date(),
pickedMonth:new Date(), pickedMonth:new Date(),
selectedRow:{}, selectedRow:{},
customers:[],
nurses:[], nurses:[],
select: { select: {
page: 1, page: 1,
@ -394,6 +397,16 @@ export default {
} }
], ],
total: 0, total: 0,
customers:[],
customerLoading: false,
customerTotal: 0,
customerSelect: {
page: 1,
page_size: 20,
keyword: ""
}
}; };
}, },
methods: { methods: {
@ -447,17 +460,34 @@ export default {
this.getList() this.getList()
}) })
}, },
customerRemote (query) {
let keyword = query ? query.trim() : "";
this.customers = [];
this.customerTotal = 0;
this.customerSelect.page = 1;
this.customerSelect.keyword = keyword;
this.getCustomers();
},
async getCustomers(){ async getCustomers(){
const res = await customerIndex({
page:1, if ((this.customers.length >= this.customerTotal) && this.customers.length !== 0) return;
page_size:999 this.customerLoading = true;
}) try {
this.customers = res.data.data const res = await customerIndex(this.customerSelect,false)
this.customers.push(...res.data.data);
this.customerTotal = res.data.total;
this.customerSelect.page++;
this.customerLoading = false;
} catch (err) {
this.customerLoading = false;
}
}, },
async getNurses(){ async getNurses(){
const res = await nurseList({ const res = await nurseList({
page:1, page: 1,
page_size:999 page_size: 999,
is_simple: 1
}) })
this.nurses = res.data this.nurses = res.data
}, },

@ -38,9 +38,18 @@
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>所属区域 <span style="color: red;font-weight: 600;padding-right: 4px;">*</span>所属区域
</div> </div>
<div class="xy-table-item-content"> <div class="xy-table-item-content">
<el-select v-model="form.area_id" placeholder="请选择所属区域" style="width: 300px;"> <el-cascader
<el-option v-for="item in areas" :value="item.id" :label="item.value" :key="item.id"></el-option> :value="form.area_id"
</el-select> style="width: 300px;"
placeholder="区域选择"
:options="cities"
:props="{
checkStrictly: true,
label:'value',
value:'id',
}"
@change="areaPick">
</el-cascader>
</div> </div>
</div> </div>
</template> </template>
@ -50,13 +59,15 @@
<script> <script>
import {save,getForm} from '@/api/payUnit' import {save,getForm} from '@/api/payUnit'
import {getparameter} from '@/api/system/dictionary'
import {getAuthAreas} from "@/utils/auth";
export default { export default {
props:{ props:{
areas:{ types:{
type:Array, type:Array,
default:()=>[] default:()=>[]
}, },
types:{ cities: {
type:Array, type:Array,
default:()=>[] default:()=>[]
} }
@ -80,6 +91,10 @@ export default {
} }
}, },
methods: { methods: {
areaPick (e) {
this.form.area_id = e.at(-1)
},
async getDetail(){ async getDetail(){
const res = await getForm(this.id) const res = await getForm(this.id)
this.$integrateData(this.form,res) this.$integrateData(this.form,res)
@ -93,6 +108,8 @@ export default {
configurable:true, configurable:true,
writable:true writable:true
}) })
} else {
delete this.form.id
} }
save(this.form).then(res => { save(this.form).then(res => {
this.$successMessage(this.type,'结算对象') this.$successMessage(this.type,'结算对象')
@ -114,6 +131,8 @@ export default {
delete this.form.id delete this.form.id
} }
} }
},
created() {
} }
} }
</script> </script>

@ -22,16 +22,18 @@
@pageSizeChange="e => select.page_size = e" @pageSizeChange="e => select.page_size = e"
@pageIndexChange="e => {select.page = e;getList()}"></xy-table> @pageIndexChange="e => {select.page = e;getList()}"></xy-table>
<add ref="addobjects" @refresh="getList" :types="types" :areas="areas"/> <add ref="addobjects" @refresh="getList" :cities="cities" :types="types" />
</div> </div>
</template> </template>
<script> <script>
import {getList,destroy} from '@/api/payUnit' import {getList,destroy} from '@/api/payUnit'
import {getList as typeList} from '@/api/productType' import {getList as typeList} from '@/api/productType'
import {getparameter} from '@/api/system/dictionary'
import add from "./component/addobjects" import add from "./component/addobjects"
import {getAuthAreas} from "@/utils/auth";
import {getparameter} from "@/api/system/dictionary";
export default { export default {
components:{ components:{
@ -39,13 +41,13 @@ export default {
}, },
data() { data() {
return { return {
cities: [],
select:{ select:{
page:1, page:1,
page_size:10, page_size:10,
keyword:'' keyword:''
}, },
types:[], types:[],
areas:[],
total:0, total:0,
list:[], list:[],
@ -75,14 +77,47 @@ export default {
} }
}, },
methods: { methods: {
async getCity() {
let authAreaIds = getAuthAreas(this).map((item) => item.id);
let city = await getparameter(
{
number: "city",
},
false
);
for (let i = 0; i < city.detail.length; i++) {
let area = await getparameter(
{
pid: city.detail[i].id,
},
false
);
let resArea = [];
area?.detail.forEach((item) => {
if (authAreaIds.indexOf(item.id) !== -1) {
resArea.push(item);
}
});
city.detail[i].children = resArea;
for (let j = 0; j < area.detail.length; j++) {
let street = await getparameter(
{
pid: area.detail[j].id,
},
false
);
area.detail[j].children = street.detail;
}
}
this.cities = city.detail;
},
async getTypes(){ async getTypes(){
const res = await typeList({page:1,page_size:9999},false) const res = await typeList({page:1,page_size:9999},false)
this.types = res.data this.types = res.data
}, },
async getAreas(){
const res = await getparameter({number:'serveArea'},false)
this.areas = res.detail
},
async getList(){ async getList(){
const res = await getList(this.select) const res = await getList(this.select)
@ -105,8 +140,8 @@ export default {
}, },
mounted() { mounted() {
this.getTypes() this.getTypes()
this.getAreas()
this.getList() this.getList()
this.getCity()
} }
} }
</script> </script>

@ -7,16 +7,24 @@
<div style="display:flex;"> <div style="display:flex;">
<Input v-model="selected.customer_name" clearable placeholder="客户搜索" style="width: 180px; margin-right: 10px"/> <Input v-model="selected.customer_name" clearable placeholder="客户搜索" style="width: 180px; margin-right: 10px"/>
<Input v-model="selected.nurse_name" clearable placeholder="护工搜索" style="width: 180px; margin-right: 10px"/> <Input v-model="selected.nurse_name" clearable placeholder="护工搜索" style="width: 180px; margin-right: 10px"/>
<el-select size="small" v-model="selected.status" placeholder="状态" clearable style="width: 100px; margin-right: 10px">
<el-option
v-for="item in [{ label: '进行中', value: 1 }, { label: '已完成', value: 2 }, { label: '待开始', value: 0 }]"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<el-date-picker <el-date-picker
clearable clearable
start-placeholder="开始时间" start-placeholder="开始时间"
end-placeholder="结束时间" end-placeholder="结束时间"
v-model="date" :value="[selected.start_date,selected.end_date]"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
size="small" size="small"
style="width: 234px; margin-right: 10px" style="width: 234px; margin-right: 10px"
type="daterange" type="daterange"
@change="e => { if(e){selected.start_date = e[0];selected.end_date = e[1]}else{selected.start_date = '';selected.end_date = ''} }"></el-date-picker> @change="e => { if(e[0]&&e[1]){selected.start_date = e[0];selected.end_date = e[1]}else{selected.start_date = '';selected.end_date = ''} }"></el-date-picker>
<Button style="margin-right: 10px" type="primary" @click="search"></Button> <Button style="margin-right: 10px" type="primary" @click="search"></Button>
</div> </div>
<slot> <slot>
@ -88,10 +96,11 @@ export default {
return { return {
date:'', date:'',
selected: { selected: {
customer_name:'', status: 0,
nurse_name:'', customer_name: '',
start_date:'', nurse_name: '',
end_date:'', start_date: this.$moment().subtract(15, 'days').format('YYYY-MM-DD'),
end_date: this.$moment().add(15, 'days').format('YYYY-MM-DD'),
}, },
lists:[], lists:[],
select:{}, select:{},
@ -110,6 +119,7 @@ export default {
}, },
async getList(){ async getList(){
console.log(this.selected)
let res = await scheduleIndex(this.selected) let res = await scheduleIndex(this.selected)
this.lists = res.map(item => { this.lists = res.map(item => {
let address = item.customer?.customer_address?.filter(item1 => item1.id === item.address_id)[0] let address = item.customer?.customer_address?.filter(item1 => item1.id === item.address_id)[0]
@ -123,10 +133,10 @@ export default {
reset(){ reset(){
this.selected = { this.selected = {
customer_name:'', customer_name: '',
nurse_name:'', nurse_name: '',
start_date:'', start_date: this.$moment().diff(1, 'months').format('YYYY-MM-DD'),
end_date:'', end_date: this.$moment().add(1, 'moneths').format('YYYY-MM-DD'),
} }
}, },
@ -206,7 +216,7 @@ export default {
this.map = new AMap.Map('amapContainer',{ this.map = new AMap.Map('amapContainer',{
center:[Number(this.lists[0]?.address?.lng || 119.58),Number(this.lists[0]?.address?.lat || 31.47)] center:[Number(this.lists[0]?.address?.lng || 119.58),Number(this.lists[0]?.address?.lat || 31.47)]
}) })
this.markers() this.markers()
}) })
} }

@ -27,8 +27,10 @@ export default {
nurseId: "", nurseId: "",
drawer: false, drawer: false,
value: [], value: [],
data: [],
row: {}, row: {},
data: [],
} }
}, },
methods: { methods: {
@ -64,11 +66,36 @@ export default {
}) })
this.$emit('refresh') this.$emit('refresh')
}) })
},
initLoadMore () {
const scrollFn = function () {
let sign = 0
const scrollDistance = this.scrollHeight - this.scrollTop - this.clientHeight
if (scrollDistance <= sign) {
console.log('end')
}
}
const coverDom = this.$el.querySelector(".el-transfer-panel__body > div[role=group]")
console.log(coverDom)
coverDom.removeEventListener('scroll',scrollFn)
coverDom.addEventListener('scroll', scrollFn)
} }
}, },
computed: {}, computed: {},
created() { created() {
this.getCustomers() this.getCustomers()
},
watch: {
drawer (newVal) {
if (newVal) {
this.$nextTick(() => {
this.initLoadMore()
})
}
}
},
mounted() {
} }
} }
</script> </script>

@ -101,7 +101,8 @@ export default {
select: { select: {
page: 1, page: 1,
page_size: 10, page_size: 10,
keyword:'' keyword: '',
is_simple: 0
}, },
serveArea: [], serveArea: [],
productType: [], productType: [],

Loading…
Cancel
Save