This commit is contained in:
bb_pan 2025-06-10 17:01:40 +08:00
parent 20206ffb6d
commit 0ee69e0c03
8 changed files with 256 additions and 84 deletions

View File

@ -10,6 +10,15 @@ export function listUser(query) {
}) })
} }
// 查询用户列表-new
export function getUserList(query) {
return request({
url: '/system/user/getList',
method: 'get',
params: query
})
}
// 查询用户详细 // 查询用户详细
export function getUser(userId) { export function getUser(userId) {
return request({ return request({

View File

@ -24,7 +24,7 @@
:filter-node-method="filterNode" :filter-node-method="filterNode"
ref="tree" ref="tree"
node-key="id" node-key="id"
:default-expand-all="false" :default-expand-all="true"
highlight-current highlight-current
@node-click="handleNodeClick" @node-click="handleNodeClick"
> >
@ -518,7 +518,7 @@
<el-form-item label="排序" prop="sortNum"> <el-form-item label="排序" prop="sortNum">
<el-input <el-input
v-model.number="form.sortNum" v-model.number="form.sortNum"
type="number" :min="0" @input="(v)=>(form.sortNum=v.replace(/[^\d]/g,''))" type="number" :min="1" @input="(v)=>(form.sortNum=v.replace(/[^\d]/g,''))"
placeholder="请输入排序" placeholder="请输入排序"
maxlength="10" maxlength="10"
/> />
@ -953,8 +953,10 @@ export default {
getList() { getList() {
this.loading = true; this.loading = true;
getListByMaType(this.queryParams).then((response) => { getListByMaType(this.queryParams).then((response) => {
this.typeList = response.data.rows; if (response.code === 200 && response.data && response.data.rows) {
this.total = response.data.total; this.typeList = response.data.rows
this.total = response.data.total
}
this.loading = false; this.loading = false;
}); });
}, },
@ -1122,7 +1124,7 @@ export default {
this.$modal.msgSuccess("修改成功"); this.$modal.msgSuccess("修改成功");
this.open = false; this.open = false;
this.getList(); this.getList();
this.getTreeData(); // this.getTreeData();
}); });
}) })
.catch(() => {}); .catch(() => {});
@ -1131,7 +1133,7 @@ export default {
this.$modal.msgSuccess("修改成功"); this.$modal.msgSuccess("修改成功");
this.open = false; this.open = false;
this.getList(); this.getList();
this.getTreeData(); // this.getTreeData();
}); });
} }
}else { }else {
@ -1139,7 +1141,7 @@ export default {
this.$modal.msgSuccess("新增成功"); this.$modal.msgSuccess("新增成功");
this.open = false; this.open = false;
this.getList(); this.getList();
this.getTreeData(); // this.getTreeData();
}); });
} }
} }
@ -1156,7 +1158,7 @@ export default {
.then(() => { .then(() => {
this.$modal.msgSuccess("删除成功"); this.$modal.msgSuccess("删除成功");
this.getList(); this.getList();
this.getTreeData(); // this.getTreeData();
}) })
.catch(() => {}); .catch(() => {});
}, },
@ -1235,6 +1237,7 @@ export default {
this.form.itemType = this.level1TempName; this.form.itemType = this.level1TempName;
this.form.materialType = this.level2TempName; this.form.materialType = this.level2TempName;
this.form.materialName = data.label; this.form.materialName = data.label;
this.form.sortNum = data.number + 1
this.open = true; this.open = true;
this.title = "新增"; this.title = "新增";
} else { } else {

View File

@ -190,15 +190,15 @@
<el-table-column <el-table-column
label="库管员" label="库管员"
align="center" align="center"
prop="keeperUserName" prop="keeperNickName"
show-overflow-tooltip show-overflow-tooltip
> >
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.keeperUserName == null" style="color: red"> <div v-if="scope.row.keeperNickName == null" style="color: red">
{{ "请绑定" }} {{ "请绑定" }}
</div> </div>
<div v-else> <div v-else>
{{ scope.row.keeperUserName }} {{ scope.row.keeperNickName }}
</div> </div>
<!-- <div v-else style="color: red;"></div> --> <!-- <div v-else style="color: red;"></div> -->
</template> </template>

View File

@ -128,30 +128,29 @@
/> />
<!-- 验收单弹窗 --> <!-- 验收单弹窗 -->
<el-dialog :title="title" :visible.sync="openPrint" width="1090px" append-to-body> <el-dialog :visible.sync="openPrint" width="1090px" append-to-body>
<div style="height: 500px; overflow-y: scroll"> <div style="height: 500px; overflow-y: scroll">
<vue-easy-print tableShow ref="remarksPrintRef" class="print" style="padding: 0 5px;"> <vue-easy-print tableShow ref="remarksPrintRef" class="print" style="padding: 0 5px;">
<div id="checkId"> <div id="checkId">
<div class="title" style="text-align: center;font-weight: 600;font-size: 16px;"> <div class="title" style="text-align: center;font-weight: 600;font-size: 16px;">
到货验收单 到货验收单
</div> </div>
<div class="info" style="margin-top: 10px; display: flex; flex-wrap: wrap"> <div class="info" style="margin: 10px 20px 0; display: flex; justify-content: space-between; flex-wrap: wrap">
<div <div
class="item" class="item"
style="width: 40%;flex-shrink: 0;margin-bottom: 5px;font-size: 14px;"> style="flex-shrink: 0;margin-bottom: 5px;font-size: 14px;">
<span>生产厂家供应商{{printData.supplier}}</span> <span>生产厂家供应商{{printData.supplier}}</span>
</div> </div>
<div <div
class="item" class="item"
style="width: 30%;flex-shrink: 0;margin-bottom: 5px;font-size: 14px;"> style="flex-shrink: 0;margin-bottom: 5px;font-size: 14px;">
<span>到货日期{{printData.arrivalDate}}</span> <span>到货日期{{printData.arrivalDate}}</span>
</div> </div>
<div class="item" style="width: 30%;flex-shrink: 0;margin-bottom: 5px;font-size: 14px;"> <div class="item" style="flex-shrink: 0;margin-bottom: 5px;font-size: 14px;">
<span>单据编号{{printData.code}}</span> <span>单据编号{{printData.code}}</span>
</div> </div>
</div> </div>
<el-table :data="printTableData" class="table" style="margin-top: 20px;width: 1000px;padding-bottom: 1px;" border> <!-- <el-table :data="printTableData" style="margin-top: 20px;width: 100%;" border>
<!-- <el-table-column type="selection" width="55" align="center" />-->
<el-table-column label="序号" align="center" type="index" row="2" width="60px"/> <el-table-column label="序号" align="center" type="index" row="2" width="60px"/>
<el-table-column label="物资名称" align="center" prop="maTypeName"/> <el-table-column label="物资名称" align="center" prop="maTypeName"/>
<el-table-column label="规格型号" align="center" prop="typeName"/> <el-table-column label="规格型号" align="center" prop="typeName"/>
@ -165,7 +164,41 @@
</el-table-column> </el-table-column>
</el-table-column> </el-table-column>
<el-table-column label="备注" align="center" prop="remark"/> <el-table-column label="备注" align="center" prop="remark"/>
</el-table> </el-table> -->
<table border="1" cellspacing="0" cellpadding="4" style="margin-top: 20px;width: 99%;border-collapse: collapse;">
<thead>
<tr>
<th rowspan="3" style="width:60px;">序号</th>
<th rowspan="3">物资名称</th>
<th rowspan="3">规格型号</th>
<th rowspan="3">单位</th>
<th colspan="4">配送信息</th>
<th rowspan="3">备注</th>
</tr>
<tr>
<th rowspan="2">采购数量</th>
<th rowspan="2">验收结论</th>
<th colspan="2">质保质量</th>
</tr>
<tr>
<th>实收份数</th>
<th>符合要求</th>
</tr>
</thead>
<tbody>
<tr v-for="(row, index) in printTableData" :key="index">
<td align="center">{{ index + 1 }}</td>
<td align="center">{{ row.maTypeName }}</td>
<td align="center">{{ row.typeName }}</td>
<td align="center">{{ row.unitName }}</td>
<td align="center">{{ row.purchaseNum }}</td>
<td align="center">{{ row.checkResult }}</td>
<td align="center">{{ row.fileReceiveNum }}</td>
<td align="center">{{ row.isQualified }}</td>
<td align="center">{{ row.remark }}</td>
</tr>
</tbody>
</table>
<div class="fillIn" style="margin-top: 20px;display: flex;justify-content: space-between;" > <div class="fillIn" style="margin-top: 20px;display: flex;justify-content: space-between;" >
<div class="item" style="width: 33%;display: flex;align-items: center;"> <div class="item" style="width: 33%;display: flex;align-items: center;">
@ -423,10 +456,10 @@
padding-bottom: 20px; padding-bottom: 20px;
font-size: 18px; font-size: 18px;
} }
::v-deep.el-table .fixed-width .el-button--mini { /* ::v-deep.el-table .fixed-width .el-button--mini {
width: 60px !important; width: 60px !important;
margin-bottom: 10px; margin-bottom: 10px;
} } */
//css //css
::v-deep.disabled { ::v-deep.disabled {
.el-upload--picture-card { .el-upload--picture-card {

View File

@ -52,7 +52,7 @@
<el-radio-button label="day">选择某天</el-radio-button> <el-radio-button label="day">选择某天</el-radio-button>
<el-radio-button label="month">选择月份</el-radio-button> <el-radio-button label="month">选择月份</el-radio-button>
</el-radio-group> </el-radio-group>
<div style="height: 40px; flex: 1;"> <!-- <div style="height: 40px; flex: 1;"> -->
<el-date-picker <el-date-picker
v-if="dateType === 'day'" v-if="dateType === 'day'"
v-model="maForm.productionTime" v-model="maForm.productionTime"
@ -74,7 +74,7 @@
@change="productionMonthChange" @change="productionMonthChange"
:picker-options="pickerOptionsForProductionMonth" :picker-options="pickerOptionsForProductionMonth"
></el-date-picker> ></el-date-picker>
</div> <!-- </div> -->
</div> </div>
</el-form-item> </el-form-item>
<el-form-item label="税率" prop="taxRate"> <el-form-item label="税率" prop="taxRate">
@ -966,6 +966,12 @@ export default {
/** 保存按钮操作 */ /** 保存按钮操作 */
handleSave() { handleSave() {
if (this.equipmentList.length > 0) { if (this.equipmentList.length > 0) {
//
const noReportIndex = this.equipmentList.findIndex(item => !item.bmFileInfos || item.bmFileInfos.length === 0)
if (noReportIndex > -1) {
this.$modal.msgError(`${noReportIndex + 1}行未上传报告,请补充后再提交!`)
return
}
this.$refs['maForm'].validate(valid => { this.$refs['maForm'].validate(valid => {
if (valid) { if (valid) {
this.maForm.taskId = this.taskId this.maForm.taskId = this.taskId

View File

@ -115,10 +115,14 @@
v-if="scope.row.taskStatusName == '未完成'" v-if="scope.row.taskStatusName == '未完成'"
@click="handleNotice(scope.row)" v-hasPermi="['purchase:person:notice']" @click="handleNotice(scope.row)" v-hasPermi="['purchase:person:notice']"
>通知</el-button> >通知</el-button>
<!-- <el-button size="mini" type="warning" <el-button size="mini" type="warning"
v-if="scope.row.taskStatusName == '未完成'" v-if="showCheckForm(scope.row)"
@click="handlePrint(scope.row)" @click="handlePrint(scope.row)"
>验收单</el-button> --> >验收单</el-button>
<el-button size="mini" type="warning"
v-if="showInboundForm(scope.row)"
@click="handlePrint2(scope.row)"
>入库单</el-button>
<el-button size="mini" type="danger" <el-button size="mini" type="danger"
v-if="scope.row.taskStatusName == '未完成'" v-hasPermi="['purchase:info:remove']" v-if="scope.row.taskStatusName == '未完成'" v-hasPermi="['purchase:info:remove']"
@click="handleDeletePurchase(scope.row)" @click="handleDeletePurchase(scope.row)"
@ -136,30 +140,29 @@
/> />
<!-- 验收单弹窗 --> <!-- 验收单弹窗 -->
<el-dialog :title="title" :visible.sync="openPrint" width="1090px" append-to-body> <el-dialog :visible.sync="openPrint" width="1090px" append-to-body>
<div style="height: 500px; overflow-y: scroll"> <div style="height: 500px; overflow-y: scroll">
<!-- <vue-easy-print tableShow ref="remarksPrintRef" class="print"> --> <vue-easy-print tableShow ref="remarksPrintRef" class="print">
<div id="checkId"> <div id="checkId">
<div class="title" style="text-align: center;font-weight: 600;font-size: 16px;"> <div class="title" style="text-align: center;font-weight: 600;font-size: 16px;">
机具设备到货验收单 到货验收单
</div> </div>
<div class="info" style="margin-top: 10px; display: flex; flex-wrap: wrap"> <div class="info" style="margin: 10px 20px 0; display: flex; justify-content: space-between;">
<div class="item" style="width: 100%;flex-shrink: 0;margin-bottom: 5px;font-size: 14px;">
<span>单据编号{{printData.code}}</span>
</div>
<div <div
class="item" class="item"
style="width: 50%;flex-shrink: 0;margin-bottom: 5px;font-size: 14px;"> style="flex-shrink: 0;margin-bottom: 5px;font-size: 14px;">
<span>生产厂家供应商{{printData.supplier}}</span> <span>生产厂家供应商{{printData.supplier}}</span>
</div> </div>
<div <div
class="item" class="item"
style="width: 50%;flex-shrink: 0;margin-bottom: 5px;font-size: 14px;"> style="flex-shrink: 0;margin-bottom: 5px;font-size: 14px;">
<span>到货日期{{printData.arrivalDate}}</span> <span>到货日期{{printData.arrivalDate}}</span>
</div> </div>
<div class="item" style="flex-shrink: 0;margin-bottom: 5px;font-size: 14px;">
<span>单据编号{{printData.code}}</span>
</div>
</div> </div>
<el-table :data="printTableData" class="table" style="margin-top: 20px;width: 1000px;" border> <!-- <el-table :data="printTableData" class="table" style="margin-top: 20px;width: 1000px;" border>
<!-- <el-table-column type="selection" width="55" align="center" />-->
<el-table-column label="序号" align="center" type="index" row="2" width="60px"/> <el-table-column label="序号" align="center" type="index" row="2" width="60px"/>
<el-table-column label="物资名称" align="center" prop="maTypeName"/> <el-table-column label="物资名称" align="center" prop="maTypeName"/>
<el-table-column label="规格型号" align="center" prop="typeName"/> <el-table-column label="规格型号" align="center" prop="typeName"/>
@ -173,7 +176,41 @@
</el-table-column> </el-table-column>
</el-table-column> </el-table-column>
<el-table-column label="备注" align="center" prop="remark"/> <el-table-column label="备注" align="center" prop="remark"/>
</el-table> </el-table> -->
<table border="1" cellspacing="0" cellpadding="4" style="margin-top: 20px;width: 99%;border-collapse: collapse;">
<thead>
<tr>
<th rowspan="3" style="width:60px;">序号</th>
<th rowspan="3">物资名称</th>
<th rowspan="3">规格型号</th>
<th rowspan="3">单位</th>
<th colspan="4">配送信息</th>
<th rowspan="3">备注</th>
</tr>
<tr>
<th rowspan="2">采购数量</th>
<th rowspan="2">验收结论</th>
<th colspan="2">质保质量</th>
</tr>
<tr>
<th>实收份数</th>
<th>符合要求</th>
</tr>
</thead>
<tbody>
<tr v-for="(row, index) in printTableData" :key="index">
<td align="center">{{ index + 1 }}</td>
<td align="center">{{ row.maTypeName }}</td>
<td align="center">{{ row.typeName }}</td>
<td align="center">{{ row.unitName }}</td>
<td align="center">{{ row.purchaseNum }}</td>
<td align="center">{{ row.checkResult }}</td>
<td align="center">{{ row.fileReceiveNum }}</td>
<td align="center">{{ row.isQualified }}</td>
<td align="center">{{ row.remark }}</td>
</tr>
</tbody>
</table>
<div class="fillIn" style="margin-top: 20px;display: flex;justify-content: space-between;" > <div class="fillIn" style="margin-top: 20px;display: flex;justify-content: space-between;" >
<div class="item" style="width: 33%;display: flex;align-items: center;"> <div class="item" style="width: 33%;display: flex;align-items: center;">
@ -206,7 +243,7 @@
</div> </div>
</div> </div>
</div> </div>
<!-- </vue-easy-print> --> </vue-easy-print>
</div> </div>
<div slot="footer" class="dialog-footer" style="text-align: center"> <div slot="footer" class="dialog-footer" style="text-align: center">
@ -215,6 +252,75 @@
</div> </div>
</el-dialog> </el-dialog>
<!-- 验收单弹窗 -->
<el-dialog :visible.sync="openPrint2" width="800px" append-to-body>
<div style="height: 500px; overflow-y: scroll">
<vue-easy-print tableShow ref="remarksPrintRef2" class="print" style="margin: 0 20px">
<div style="text-align: center; font-weight: 600; font-size: 30px">新购入库单</div>
<div style="margin-top: 10px; display: flex; flex-wrap: wrap; justify-content: flex-end; width: 95%">
<!-- <div style="flex-shrink: 0; margin-bottom: 5px; font-size: 14px">
<span>单据编号{{ printData.code }}</span>
</div> -->
<!-- <div class="item" style=" flex-shrink: 0; margin-bottom: 5px; font-size: 14px;">
<span>生产厂家供应商{{printData.supplierName}}</span>
</div> -->
<div class="item" style="flex-shrink: 0; margin-bottom: 5px; font-size: 14px">
<span>单据编号{{ printData.code }}</span>
</div>
</div>
<table border="1" cellspacing="0" cellpadding="4" style="margin-top: 20px; width: 99%; border-collapse: collapse;">
<thead>
<tr>
<th style="width: 60px;">序号</th>
<th>物资名称</th>
<th>规格型号</th>
<th>单位</th>
<th>入库数量</th>
<th>入库时间</th>
<th>备注</th>
</tr>
</thead>
<tbody>
<tr v-for="(row, index) in printTableData" :key="index">
<td align="center">{{ index + 1 }}</td>
<td align="center">{{ row.maTypeName }}</td>
<td align="center">{{ row.typeName }}</td>
<td align="center">{{ row.unitName }}</td>
<td align="center">{{ row.inputNum }}</td>
<td align="center">{{ row.inputTime }}</td>
<td align="center">{{ row.remark }}</td>
</tr>
</tbody>
</table>
<div class="fillIn" style="margin-top: 20px; display: flex; justify-content: space-between">
<div class="item" style="width: 33%">
<div>
<span>审核{{ printData.reviewer }}</span>
</div>
</div>
<!-- <div class="item" style="width: 33%">
<div>
<span>生产技术科{{ printData.productionTechDept }}</span>
</div>
</div> -->
<div class="item" style="width: 33%">
<div>
<span>库管员{{ printData.warehouseTeam }}</span>
</div>
</div>
</div>
</vue-easy-print>
</div>
<div slot="footer" class="dialog-footer" style="text-align: center">
<el-button type="primary" @click="print2"> </el-button>
<el-button @click="openPrint2 = false"> </el-button>
</div>
</el-dialog>
<!-- 通知弹窗 --> <!-- 通知弹窗 -->
<el-dialog :title="title" :visible.sync="showPeople" width="800px" append-to-body @close="cancel"> <el-dialog :title="title" :visible.sync="showPeople" width="800px" append-to-body @close="cancel">
<el-row :gutter="24"> <el-row :gutter="24">
@ -366,6 +472,7 @@ export default {
printTableData: [], printTableData: [],
// //
supplierStr: "", supplierStr: "",
openPrint2: false,
}; };
}, },
created() { created() {
@ -400,6 +507,14 @@ export default {
this.loading = false; this.loading = false;
}); });
}, },
//
showCheckForm(row) {
return [3, 4, 13, 14, 19, 21, 22].includes(Number(row.taskStatus))
},
//
showInboundForm(row) {
return [19, 21, 22].includes(Number(row.taskStatus))
},
/** 搜索按钮操作 */ /** 搜索按钮操作 */
handleQuery() { handleQuery() {
this.queryParams.pageNum = 1; this.queryParams.pageNum = 1;
@ -615,16 +730,25 @@ export default {
this.openPrint = true; this.openPrint = true;
this.title = "机具设备到货验收单"; this.title = "机具设备到货验收单";
}, },
handlePrint2(row) {
// this.query.taskId = row.taskId
this.getPrintTable(row.taskId)
this.openPrint2 = true
this.title = "新购入库单"
},
// //
print() { print() {
// this.$refs.remarksPrintRef.print(); this.$refs.remarksPrintRef.print()
printJS({ // printJS({
printable: 'checkId', // printable: 'checkId',
type: 'html', // type: 'html',
targetStyles: ['*'], // targetStyles: ['*'],
maxWidth:'1400' // maxWidth:'1400'
// // //
}); // });
},
print2() {
this.$refs.remarksPrintRef2.print()
}, },
/** 删除按钮操作 */ /** 删除按钮操作 */

View File

@ -152,43 +152,39 @@
<span>单据编号{{ printData.code }}</span> <span>单据编号{{ printData.code }}</span>
</div> </div>
</div> </div>
<el-table :data="printTableData" class="table" border style="margin-top: 20px; padding: 1px"> <!-- <el-table :data="printTableData" class="table" border style="margin-top: 20px; padding: 1px">
<!-- <el-table-column type="selection" width="55" align="center" />-->
<el-table-column label="序号" align="center" type="index" row="2" /> <el-table-column label="序号" align="center" type="index" row="2" />
<el-table-column label="物资名称" align="center" prop="maTypeName" /> <el-table-column label="物资名称" align="center" prop="maTypeName" />
<el-table-column label="规格型号" align="center" prop="typeName" /> <el-table-column label="规格型号" align="center" prop="typeName" />
<el-table-column label="单位" align="center" prop="unitName" /> <el-table-column label="单位" align="center" prop="unitName" />
<el-table-column label="入库数量" align="center" prop="inputNum" /> <el-table-column label="入库数量" align="center" prop="inputNum" />
<el-table-column label="入库时间" align="center" prop="inputTime" /> <el-table-column label="入库时间" align="center" prop="inputTime" />
<!-- <el-table-column label="配送信息" align="center">
<el-table-column label="采购数量" align="center" prop="purchaseNum"
/>
<el-table-column
label="验收结论"
align="center"
prop="checkResult"
/>
<el-table-column label="质保质量" align="center">
<el-table-column
label="实收份数"
align="center"
prop="checkNum"
/>
<el-table-column
label="符合要求"
align="center"
/>
</el-table-column>
</el-table-column> -->
<el-table-column label="备注" align="center" prop="remark" /> <el-table-column label="备注" align="center" prop="remark" />
</el-table> -->
<!-- <el-table-column--> <table border="1" cellspacing="0" cellpadding="4" style="margin-top: 20px; width: 99%; border-collapse: collapse;">
<!-- label="合格证及技术资料"--> <thead>
<!-- align="center"--> <tr>
<!-- prop=""--> <th style="width: 60px;">序号</th>
<!-- />--> <th>物资名称</th>
<!-- <el-table-column label="包装" align="center" prop="" />--> <th>规格型号</th>
</el-table> <th>单位</th>
<th>入库数量</th>
<th>入库时间</th>
<th>备注</th>
</tr>
</thead>
<tbody>
<tr v-for="(row, index) in printTableData" :key="index">
<td align="center">{{ index + 1 }}</td>
<td align="center">{{ row.maTypeName }}</td>
<td align="center">{{ row.typeName }}</td>
<td align="center">{{ row.unitName }}</td>
<td align="center">{{ row.inputNum }}</td>
<td align="center">{{ row.inputTime }}</td>
<td align="center">{{ row.remark }}</td>
</tr>
</tbody>
</table>
<div class="fillIn" style="margin-top: 20px; display: flex; justify-content: space-between"> <div class="fillIn" style="margin-top: 20px; display: flex; justify-content: space-between">
<div class="item" style="width: 33%"> <div class="item" style="width: 33%">

View File

@ -318,7 +318,7 @@
<script> <script>
import { import {
listUser, getUserList,
getUser, getUser,
delUser, delUser,
addUser, addUser,
@ -490,9 +490,10 @@ export default {
/** 查询用户列表 */ /** 查询用户列表 */
getList() { getList() {
this.loading = true this.loading = true
listUser(this.addDateRange(this.queryParams, this.dateRange)).then(response => { getUserList(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
this.userList = response.rows console.log('🚀 ~ getUserList ~ response:', response)
this.total = response.total this.userList = response.data.rows
this.total = response.data.total
this.loading = false this.loading = false
} }
) )