xy 1 year ago
parent 2b2cf1bc4b
commit cf442a1d79

@ -47,3 +47,20 @@
.el-range-separator {
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({
baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
// withCredentials: true, // send cookies when cross-domain requests
timeout: 5000, // request timeout
timeout: 10000, // request timeout
isLoading:true
})

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

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

@ -22,16 +22,18 @@
@pageSizeChange="e => select.page_size = e"
@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>
</template>
<script>
import {getList,destroy} from '@/api/payUnit'
import {getList as typeList} from '@/api/productType'
import {getparameter} from '@/api/system/dictionary'
import add from "./component/addobjects"
import {getAuthAreas} from "@/utils/auth";
import {getparameter} from "@/api/system/dictionary";
export default {
components:{
@ -39,13 +41,13 @@ export default {
},
data() {
return {
cities: [],
select:{
page:1,
page_size:10,
keyword:''
},
types:[],
areas:[],
total:0,
list:[],
@ -75,14 +77,47 @@ export default {
}
},
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(){
const res = await typeList({page:1,page_size:9999},false)
this.types = res.data
},
async getAreas(){
const res = await getparameter({number:'serveArea'},false)
this.areas = res.detail
},
async getList(){
const res = await getList(this.select)
@ -105,8 +140,8 @@ export default {
},
mounted() {
this.getTypes()
this.getAreas()
this.getList()
this.getCity()
}
}
</script>

@ -7,16 +7,24 @@
<div style="display:flex;">
<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"/>
<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
clearable
start-placeholder="开始时间"
end-placeholder="结束时间"
v-model="date"
:value="[selected.start_date,selected.end_date]"
value-format="yyyy-MM-dd"
size="small"
style="width: 234px; margin-right: 10px"
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>
</div>
<slot>
@ -88,10 +96,11 @@ export default {
return {
date:'',
selected: {
customer_name:'',
nurse_name:'',
start_date:'',
end_date:'',
status: 0,
customer_name: '',
nurse_name: '',
start_date: this.$moment().subtract(15, 'days').format('YYYY-MM-DD'),
end_date: this.$moment().add(15, 'days').format('YYYY-MM-DD'),
},
lists:[],
select:{},
@ -110,6 +119,7 @@ export default {
},
async getList(){
console.log(this.selected)
let res = await scheduleIndex(this.selected)
this.lists = res.map(item => {
let address = item.customer?.customer_address?.filter(item1 => item1.id === item.address_id)[0]
@ -123,10 +133,10 @@ export default {
reset(){
this.selected = {
customer_name:'',
nurse_name:'',
start_date:'',
end_date:'',
customer_name: '',
nurse_name: '',
start_date: this.$moment().diff(1, 'months').format('YYYY-MM-DD'),
end_date: this.$moment().add(1, 'moneths').format('YYYY-MM-DD'),
}
},
@ -206,7 +216,7 @@ export default {
this.map = new AMap.Map('amapContainer',{
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: "",
drawer: false,
value: [],
data: [],
row: {},
data: [],
}
},
methods: {
@ -64,11 +66,36 @@ export default {
})
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: {},
created() {
this.getCustomers()
},
watch: {
drawer (newVal) {
if (newVal) {
this.$nextTick(() => {
this.initLoadMore()
})
}
}
},
mounted() {
}
}
</script>

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

Loading…
Cancel
Save