refs #5334 mod search-panel
gitea/salix/pipeline/head This commit looks good Details

This commit is contained in:
Carlos Satorres 2023-06-01 11:30:28 +02:00
parent eb6953a2b6
commit 4c7c7f5c96
5 changed files with 37 additions and 44 deletions

View File

@ -51,40 +51,29 @@ module.exports = Self => {
Self.filter = async(ctx, filter) => {
let conn = Self.dataSource.connector;
console.log('ENTRY');
let where = buildFilter(ctx.args, (param, value) => {
switch (param) {
case 'search':
return /^\d+$/.test(value)
? {'d.id': value}
? {'id': value}
: {or: [
{'d.code': {like: `%${value}%`}},
{'d.name': {like: `%${value}%`}}
{'code': {like: `%${value}%`}},
{'name': {like: `%${value}%`}}
]};
case 'id':
return {'d.id': value};
return {'id': value};
case 'code':
return {'d.code': value};
return {'code': value};
case 'name':
return {'d.name': {like: `%${value}%`}};
return {'name': {like: `%${value}%`}};
}
});
filter = mergeFilters(ctx.args.filter, {where});
let stmts = [];
let stmt;
stmt = new ParameterizedSQL(
`SELECT id, code, name
FROM department d`
);
stmt.merge(conn.makeSuffix(filter));
let itemsIndex = stmts.push(stmt) - 1;
let sql = ParameterizedSQL.join(stmts, ';');
let result = await conn.executeStmt(sql);
return itemsIndex === 0 ? result : result[itemsIndex];
console.log(filter);
const departments = await Self.app.models.Department.find(filter);
console.log(departments);
return departments;
};
};

View File

@ -36,16 +36,20 @@
</vn-textfield>
</vn-horizontal>
<vn-horizontal>
<vn-textfield
vn-one
label="Boss department"
ng-model="$ctrl.department.workerFk">
</vn-textfield>
<vn-textfield
vn-one
label="Self-consumption customer"
ng-model="$ctrl.department.clientFk">
</vn-textfield>
<vn-autocomplete
ng-model="$ctrl.department.workerFk"
url="Workers/activeWithInheritedRole"
show-field="nickname"
search-function="{firstName: $search}"
label="Boss department">
</vn-autocomplete>
<vn-autocomplete
ng-model="$ctrl.department.clientFk"
url="Clients/"
show-field="name"
search-function="{firstName: $search}"
label="Self-consumption customer">
</vn-autocomplete>
</vn-horizontal>
<vn-horizontal>
<vn-check

View File

@ -29,10 +29,14 @@
value="{{$ctrl.department.worker.firstName}} {{$ctrl.department.worker.secondName}}">
</vn-label-value>
</div>
<vn-icon-button vn-anchor="{state: 'worker.index', params: {q: {departmentFk: $ctrl.$params.id}}}"
vn-tooltip="Department workers"
icon="icon-ticket">
</vn-icon-button>
<div class="quicklinks">
<div ng-transclude="btnOne">
<vn-quick-link vn-anchor="{state: 'worker.index', params: {q: {departmentFk: $ctrl.$params.id} } }"
vn-tooltip="Department workers"
icon="icon-ticket">
</vn-quick-link>
</div>
</div>
</slot-body>
</vn-descriptor-content>
<vn-popup vn-id="summary">
@ -44,8 +48,3 @@
on-accept="$ctrl.deleteDepartment()"
question="You are going to delete this department">
</vn-confirm>
<!-- Upload photo dialog -->
<!-- <vn-upload-photo
vn-id="uploadPhoto"
on-response="$ctrl.onUploadResponse()">
</vn-upload-photo>

View File

@ -7,7 +7,7 @@
<vn-portal slot="topbar">
<vn-searchbar
vn-focus
panel="vn-worker-search-panel"
panel="vn-worker-department-search-panel"
info="Search workers by id, firstName, lastName or user name"
model="model"
base-state="worker.department">

View File

@ -3,7 +3,7 @@
"name": "Workers",
"icon" : "icon-worker",
"validations" : true,
"dependencies": ["account", "worker"],
"dependencies": ["account"],
"menus": {
"main": [
{"state": "worker.index", "icon": "icon-worker"},
@ -124,7 +124,8 @@
"url": "/department?q",
"state": "worker.department",
"component": "vn-worker-department",
"description":"Departments"
"description":"Departments",
"acl":["hr"]
}, {
"url": "/:id",
"state": "worker.department.card",