| | |
| | | <template> |
| | | <div id="" style="padding:6px;"> |
| | | <el-card style="margin-bottom:6px;"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true"> |
| | | <el-form-item label="状态" prop="status"> |
| | | <el-select v-model="state" placeholder="菜单状态" size="mini"> |
| | | <el-option label="全部" :value="-1" /> |
| | | <el-option label="未派单" :value="0" /> |
| | | <el-option label="已派单" :value="1" /> |
| | | <el-option label="已接单" :value="2" /> |
| | | <el-option label="已完成" :value="3" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="等级" prop="level"> |
| | | <el-select v-model="level" placeholder="菜单状态" :disabled="erectoListLevel.length == 0" size="mini"> |
| | | <el-option label="本级" :value="0" /> |
| | | <el-option label="下级" :value="1" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item v-if="level == 1 && erectoListLevel.length > 0" label="下级联营商" prop="nextlevel"> |
| | | <el-select v-model="nextlevel" placeholder="菜单状态" size="mini"> |
| | | <el-option v-for="item in erectoListLevel" :label="item.dept.deptName" :value="item.userId" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button size="mini" type="primary" icon="el-icon-search" |
| | | @click="changePage(1)">搜索</el-button></el-form-item> |
| | | <el-form-item v-if="roleKey=='tenant'||roleKey=='tenanthelper'"> |
| | | <el-button size="mini" type="primary" icon="el-icon-message-solid" |
| | | @click="openTimeOutModal">超时配置</el-button></el-form-item> |
| | | <el-form-item style="float: right;" v-if="roleKey !== 'admin'"> |
| | | <el-button type="primary" v-hasPermi="['iot:device:add']" plain icon="el-icon-plus" size="mini" |
| | | @click="openAZModal">新增</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | <el-table :data="tableData" style="width: 100%" @selection-change="handleSelectionChange"> |
| | | <el-table-column type="selection" fixed width="55"> |
| | | </el-table-column> |
| | | <el-table-column prop="id" label="编号" width="60"> |
| | | </el-table-column> |
| | | <el-table-column label="安装信息"> |
| | | <el-table-column prop="device" label="设备名称" width="120"> |
| | | <template slot-scope="scope"> |
| | | <div> |
| | | {{ scope.row.device && scope.row.device.deviceName ? scope.row.device.deviceName : '--' }} |
| | | </div> |
| | | <div id="" style="padding: 6px"> |
| | | <el-card style="margin-bottom: 6px"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true"> |
| | | <el-form-item label="状态" prop="status"> |
| | | <el-select v-model="state" placeholder="菜单状态" size="mini"> |
| | | <el-option label="全部" :value="-1" /> |
| | | <el-option label="未派单" :value="0" /> |
| | | <el-option label="已派单" :value="1" /> |
| | | <el-option label="已接单" :value="2" /> |
| | | <el-option label="已完成" :value="3" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="erectoName" label="安装工人" width="120"> |
| | | </el-table-column> |
| | | <el-form-item label="超时" prop="level"> |
| | | <el-select |
| | | v-model="timeOutSelect" |
| | | placeholder="超时查询" |
| | | :disabled="erectoListLevel.length == 0" |
| | | size="mini" |
| | | > |
| | | <el-option label="全部" :value="0" /> |
| | | <el-option label="接单超时" :value="1" /> |
| | | <el-option label="接单超时" :value="2" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="等级" prop="level"> |
| | | <el-select |
| | | v-model="level" |
| | | placeholder="菜单状态" |
| | | :disabled="erectoListLevel.length == 0" |
| | | size="mini" |
| | | > |
| | | <el-option label="本级" :value="0" /> |
| | | <el-option label="下级" :value="1" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item |
| | | v-if="level == 1 && erectoListLevel.length > 0" |
| | | label="下级联营商" |
| | | prop="nextlevel" |
| | | > |
| | | <el-select v-model="nextlevel" placeholder="菜单状态" size="mini"> |
| | | <el-option |
| | | v-for="item in erectoListLevel" |
| | | :label="item.dept.deptName" |
| | | :value="item.userId" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button |
| | | size="mini" |
| | | type="primary" |
| | | icon="el-icon-search" |
| | | @click="changePage(1)" |
| | | >搜索</el-button |
| | | ></el-form-item |
| | | > |
| | | <el-form-item v-if="roleKey == 'tenant' || roleKey == 'tenanthelper'"> |
| | | <el-button |
| | | size="mini" |
| | | type="primary" |
| | | icon="el-icon-message-solid" |
| | | @click="openTimeOutModal" |
| | | >超时配置</el-button |
| | | ></el-form-item |
| | | > |
| | | <el-form-item style="float: right" v-if="roleKey !== 'admin'"> |
| | | <el-button |
| | | type="primary" |
| | | v-hasPermi="['iot:device:add']" |
| | | plain |
| | | icon="el-icon-plus" |
| | | size="mini" |
| | | @click="openAZModal" |
| | | >新增</el-button |
| | | > |
| | | </el-form-item> |
| | | </el-form> |
| | | <el-table |
| | | :data="tableData" |
| | | style="width: 100%" |
| | | @selection-change="handleSelectionChange" |
| | | > |
| | | <el-table-column type="selection" fixed width="55"> </el-table-column> |
| | | <el-table-column prop="id" label="编号" width="60"> </el-table-column> |
| | | <el-table-column label="安装信息"> |
| | | <el-table-column prop="device" label="设备名称" width="120"> |
| | | <template slot-scope="scope"> |
| | | <div> |
| | | {{ |
| | | scope.row.device && scope.row.device.deviceName |
| | | ? scope.row.device.deviceName |
| | | : "--" |
| | | }} |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="erectoName" label="安装工人" width="120"> |
| | | </el-table-column> |
| | | |
| | | <el-table-column prop="appointmentTime" label="预约时间" width="150"> |
| | | <template slot-scope="scope"> |
| | | <div> |
| | | {{ scope.row.appointmentTime ? scope.row.appointmentTime : '--' }} |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="remark" label="订单备注"> |
| | | <template slot-scope="scope"> |
| | | <div> |
| | | {{ scope.row.remark ? scope.row.remark : '--' }} |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="appointmentTime" label="预约时间" width="150"> |
| | | <template slot-scope="scope"> |
| | | <div> |
| | | {{ |
| | | scope.row.appointmentTime ? scope.row.appointmentTime : "--" |
| | | }} |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="remark" label="订单备注"> |
| | | <template slot-scope="scope"> |
| | | <div> |
| | | {{ scope.row.remark ? scope.row.remark : "--" }} |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table-column> |
| | | <el-table-column label="订单状态" prop="state" width="120"> |
| | | <template slot-scope="scope"> |
| | | <div v-if="scope.row.state == 0">未派单</div> |
| | | <div v-if="scope.row.state == 1">已派单</div> |
| | | <div v-if="scope.row.state == 2">已接单</div> |
| | | <div v-if="scope.row.state == 3">已完成</div> |
| | | |
| | | </el-table-column> |
| | | <el-table-column label="订单状态" prop="state" width="120"> |
| | | <template slot-scope="scope"> |
| | | <div v-if="scope.row.state == 0"> |
| | | 未派单 |
| | | </div> |
| | | <div v-if="scope.row.state == 1"> |
| | | 已派单 |
| | | </div> |
| | | <div v-if="scope.row.state == 2"> |
| | | 已接单 |
| | | </div> |
| | | <div v-if="scope.row.state == 3"> |
| | | 已完成 |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="用户信息"> |
| | | <el-table-column prop="userName" label="用户姓名" width="120"> |
| | | </el-table-column> |
| | | <el-table-column prop="userPhone" label="用户电话" width="120"> |
| | | </el-table-column> |
| | | <el-table-column prop="address" label="安装地址"> |
| | | </el-table-column> |
| | | </el-table-column> |
| | | <!-- <el-table-column label="评价信息"> |
| | | <div v-if="scope.row.receiveTimeoutFlag == 1"> |
| | | <el-tag size="mini" effect="dark" type="danger">接单超时</el-tag> |
| | | </div> |
| | | <div v-if="scope.row.finishTimeoutFlag == 1"> |
| | | <el-tag size="mini" effect="dark" type="warning">结单超时</el-tag> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="用户信息"> |
| | | <el-table-column prop="userName" label="用户姓名" width="120"> |
| | | </el-table-column> |
| | | <el-table-column prop="userPhone" label="用户电话" width="120"> |
| | | </el-table-column> |
| | | <el-table-column prop="address" label="安装地址"> </el-table-column> |
| | | </el-table-column> |
| | | <!-- <el-table-column label="评价信息"> |
| | | <el-table-column prop="score" label="评分" width="120"> |
| | | </el-table-column> |
| | | <el-table-column prop="evaluate" label="评价" minWidth="120"> |
| | | </el-table-column> |
| | | </el-table-column> --> |
| | | |
| | | <el-table-column label="操作" fixed="right" align="center" width="150" class-name="small-padding fixed-width" |
| | | v-if="roleKey !== 'admin'"> |
| | | <template slot-scope="scope"> |
| | | <div style="display: flex;justify-content: space-around;"> |
| | | <el-button v-if="scope.row.state != 3" size="small" type="primary" style="padding:5px;" |
| | | icon="el-icon-edit" v-hasPermi="['iot:device:edit']" |
| | | @click="editModal(scope.row)">修改</el-button> |
| | | <el-button v-if="scope.row.state == 0" size="small" type="danger" style="padding:5px;" |
| | | icon="el-icon-delete" v-hasPermi="['iot:device:remove']" |
| | | @click="delModal(scope.row)">删除</el-button> |
| | | <el-button v-if="scope.row.state == 1 && scope.row.erectoName == nickName" size="small" |
| | | type="success" style="padding:5px;" icon="el-icon-odometer" |
| | | @click="JDModal(scope.row)">接单</el-button> |
| | | <el-button v-if="scope.row.state == 2 && scope.row.erectoName == nickName" size="small" |
| | | type="success" style="padding:5px;" icon="el-icon-check" |
| | | @click="jdModal(scope.row)">结单</el-button> |
| | | <el-button v-if="scope.row.state == 3" size="small" type="success" style="padding:5px;" |
| | | icon="el-icon-view" @click="viewModal(scope.row)">查看</el-button> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="操作" fixed="right" align="center" width="150" class-name="small-padding fixed-width" |
| | | v-if="roleKey == 'admin'"> |
| | | <template slot-scope="scope"> |
| | | <div style="display: flex;justify-content: space-around;"> |
| | | <el-button v-if="scope.row.state == 3" size="small" type="success" style="padding:5px;" |
| | | icon="el-icon-view" @click="viewModal(scope.row)">查看</el-button> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-pagination background :current-page="pageIndex" @current-change="changePage" :page-size="pageSize" |
| | | layout="prev, pager, next" :total="total" style="margin-top: 12px;"> |
| | | </el-pagination> |
| | | </el-card> |
| | | <el-table-column |
| | | label="操作" |
| | | fixed="right" |
| | | align="center" |
| | | width="150" |
| | | class-name="small-padding fixed-width" |
| | | v-if="roleKey !== 'admin'" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <div style="display: flex; justify-content: space-around"> |
| | | <el-button |
| | | v-if="scope.row.state != 3" |
| | | size="small" |
| | | type="primary" |
| | | style="padding: 5px" |
| | | icon="el-icon-edit" |
| | | v-hasPermi="['iot:device:edit']" |
| | | @click="editModal(scope.row)" |
| | | >修改</el-button |
| | | > |
| | | <el-button |
| | | v-if="scope.row.state == 0" |
| | | size="small" |
| | | type="danger" |
| | | style="padding: 5px" |
| | | icon="el-icon-delete" |
| | | v-hasPermi="['iot:device:remove']" |
| | | @click="delModal(scope.row)" |
| | | >删除</el-button |
| | | > |
| | | <el-button |
| | | v-if="scope.row.state == 1 && scope.row.erectoName == nickName" |
| | | size="small" |
| | | type="success" |
| | | style="padding: 5px" |
| | | icon="el-icon-odometer" |
| | | @click="JDModal(scope.row)" |
| | | >接单</el-button |
| | | > |
| | | <el-button |
| | | v-if="scope.row.state == 2 && scope.row.erectoName == nickName" |
| | | size="small" |
| | | type="success" |
| | | style="padding: 5px" |
| | | icon="el-icon-check" |
| | | @click="jdModal(scope.row)" |
| | | >结单</el-button |
| | | > |
| | | <el-button |
| | | v-if="scope.row.state == 3" |
| | | size="small" |
| | | type="success" |
| | | style="padding: 5px" |
| | | icon="el-icon-view" |
| | | @click="viewModal(scope.row)" |
| | | >查看</el-button |
| | | > |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="操作" |
| | | fixed="right" |
| | | align="center" |
| | | width="150" |
| | | class-name="small-padding fixed-width" |
| | | v-if="roleKey == 'admin'" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <div style="display: flex; justify-content: space-around"> |
| | | <el-button |
| | | v-if="scope.row.state == 3" |
| | | size="small" |
| | | type="success" |
| | | style="padding: 5px" |
| | | icon="el-icon-view" |
| | | @click="viewModal(scope.row)" |
| | | >查看</el-button |
| | | > |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-pagination |
| | | background |
| | | :current-page="pageIndex" |
| | | @current-change="changePage" |
| | | :page-size="pageSize" |
| | | layout="prev, pager, next" |
| | | :total="total" |
| | | style="margin-top: 12px" |
| | | > |
| | | </el-pagination> |
| | | </el-card> |
| | | |
| | | <el-dialog :title="title" :visible.sync="AZModal" width="800"> |
| | | <div class="azmodal"> |
| | | <el-form :model="form" :rules="rules" ref="form"> |
| | | <el-form-item label="设备" :label-width="formLabelWidth" prop="deviceId"> |
| | | <el-select v-model="form.deviceId" placeholder="请选择" :disabled="title == '修改安装单' || view"> |
| | | <el-option v-for="item in deviceList" :label="item.deviceName" |
| | | :value="item.deviceId"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="安装工人" :label-width="formLabelWidth" prop="erectoId"> |
| | | <el-select v-model="form.erectoId" placeholder="请选择" |
| | | :disabled="form.state > 1 || roleKey == 'tenantservice'"> |
| | | <el-option v-for="item in erectoList" :label="item.nickName" :value="item.userId"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="订单状态" :label-width="formLabelWidth" prop="state"> |
| | | <el-radio-group v-model="form.state" disabled> |
| | | <el-radio :label="0">未指派</el-radio> |
| | | <el-radio :label="1">已派单</el-radio> |
| | | <el-radio :label="2">已接单</el-radio> |
| | | <el-radio :label="3">已完成</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="用户姓名" :label-width="formLabelWidth" prop="userName"> |
| | | <el-input v-model="form.userName" autocomplete="off" :disabled="view"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="用户电话" :label-width="formLabelWidth" prop="userPhone"> |
| | | <el-input v-model="form.userPhone" autocomplete="off" :disabled="view"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="安装地址" :label-width="formLabelWidth" prop="address"> |
| | | <el-input v-model="form.address" autocomplete="off" :disabled="view"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="预约时间" :label-width="formLabelWidth"> |
| | | <el-date-picker v-model="form.appointmentTime" type="datetime" placeholder="选择日期时间" |
| | | :disabled="form.state == 3" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="订单备注" :label-width="formLabelWidth"> |
| | | <el-input type="textarea" v-model="form.remark" :disabled="view"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="安装证明" v-if="view" :label-width="formLabelWidth"> |
| | | <img :src="form.imgUrl" alt=""> |
| | | </el-form-item> |
| | | <el-form-item label="上传图片" v-if="form.state == 3 && !view" :label-width="formLabelWidth"> |
| | | <el-upload ref="uploadImg" action="#" :on-change="handleChange" list-type="picture-card" |
| | | :multiple="false" :auto-upload="false" :on-preview="handlePictureCardPreview" |
| | | :headers="headerObj" :limit="1" :on-exceed="exceed" :on-remove="handleRemove"> |
| | | <i class="el-icon-plus"></i> |
| | | </el-upload> |
| | | <el-dialog :visible.sync="dialogVisible"> |
| | | <img width="100%" :src="dialogImageUrl" alt=""> |
| | | </el-dialog> |
| | | </el-form-item> |
| | | <el-form-item label="用户评分" v-if="form.isRate" :label-width="formLabelWidth"> |
| | | <el-rate disabled v-model="form.score" style="padding-top: 8px;"></el-rate> |
| | | </el-form-item> |
| | | <el-form-item label="用户评价" v-if="form.isRate" :label-width="formLabelWidth"> |
| | | <el-input type="textarea" disabled v-model="form.evaluate" :disabled="view"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button @click="AZModal = false" :disabled="view" size="mini">取 消</el-button> |
| | | <el-button type="primary" @click="submitForm('form')" :disabled="view" size="mini">确 定</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | <el-dialog title="删除数据" :visible.sync="deleteModal" width="30%"> |
| | | <span>是否删除该条数据</span> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="deleteModal = false" size="mini">取 消</el-button> |
| | | <el-button type="primary" @click="delDate" size="mini">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog title="接单" :visible.sync="acceptModal" width="30%"> |
| | | <span>是否确认接单?此操作不可恢复!</span> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="acceptModal = false" size="mini">取 消</el-button> |
| | | <el-button type="primary" @click="add" size="mini">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog title="超时配置" :visible.sync="timeOutModal"> |
| | | <el-form :model="timeForm" :rules="timeRules" ref="timeForm"> |
| | | <el-form-item label="派单接单超时间隔(单位:分钟)" :label-width="timeformLabelWidth" prop="ReceiveTimeout"> |
| | | <el-input v-model="timeForm.ReceiveTimeout" autocomplete="off"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="接单完成超时间隔(单位:分钟)" :label-width="timeformLabelWidth" prop="FinishTimeout"> |
| | | <el-input v-model="timeForm.FinishTimeout" autocomplete="off"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button @click="timeOutModal = false" size="mini">取 消</el-button> |
| | | <el-button type="primary" @click="submitTimeForm('timeForm')" size="mini">确 定</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | </div> |
| | | <el-dialog :title="title" :visible.sync="AZModal" width="800"> |
| | | <div class="azmodal"> |
| | | <el-form :model="form" :rules="rules" ref="form"> |
| | | <el-form-item |
| | | label="设备" |
| | | :label-width="formLabelWidth" |
| | | prop="deviceId" |
| | | > |
| | | <el-select |
| | | v-model="form.deviceId" |
| | | placeholder="请选择" |
| | | :disabled="title == '修改安装单' || view" |
| | | > |
| | | <el-option |
| | | v-for="item in deviceList" |
| | | :label="item.deviceName" |
| | | :value="item.deviceId" |
| | | ></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item |
| | | label="安装工人" |
| | | :label-width="formLabelWidth" |
| | | prop="erectoId" |
| | | > |
| | | <el-select |
| | | v-model="form.erectoId" |
| | | placeholder="请选择" |
| | | :disabled="form.state > 1 || roleKey == 'tenantservice'" |
| | | > |
| | | <el-option |
| | | v-for="item in erectoList" |
| | | :label="item.nickName" |
| | | :value="item.userId" |
| | | ></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item |
| | | label="订单状态" |
| | | :label-width="formLabelWidth" |
| | | prop="state" |
| | | > |
| | | <el-radio-group v-model="form.state" disabled> |
| | | <el-radio :label="0">未指派</el-radio> |
| | | <el-radio :label="1">已派单</el-radio> |
| | | <el-radio :label="2">已接单</el-radio> |
| | | <el-radio :label="3">已完成</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item |
| | | label="用户姓名" |
| | | :label-width="formLabelWidth" |
| | | prop="userName" |
| | | > |
| | | <el-input |
| | | v-model="form.userName" |
| | | autocomplete="off" |
| | | :disabled="view" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item |
| | | label="用户电话" |
| | | :label-width="formLabelWidth" |
| | | prop="userPhone" |
| | | > |
| | | <el-input |
| | | v-model="form.userPhone" |
| | | autocomplete="off" |
| | | :disabled="view" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item |
| | | label="安装地址" |
| | | :label-width="formLabelWidth" |
| | | prop="address" |
| | | > |
| | | <el-input |
| | | v-model="form.address" |
| | | autocomplete="off" |
| | | :disabled="view" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="预约时间" :label-width="formLabelWidth"> |
| | | <el-date-picker |
| | | v-model="form.appointmentTime" |
| | | type="datetime" |
| | | placeholder="选择日期时间" |
| | | :disabled="form.state == 3" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | > |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="订单备注" :label-width="formLabelWidth"> |
| | | <el-input |
| | | type="textarea" |
| | | v-model="form.remark" |
| | | :disabled="view" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item |
| | | label="安装证明" |
| | | v-if="view" |
| | | :label-width="formLabelWidth" |
| | | > |
| | | <img :src="form.imgUrl" alt="" /> |
| | | </el-form-item> |
| | | <el-form-item |
| | | label="上传图片" |
| | | v-if="form.state == 3 && !view" |
| | | :label-width="formLabelWidth" |
| | | > |
| | | <el-upload |
| | | ref="uploadImg" |
| | | action="#" |
| | | :on-change="handleChange" |
| | | list-type="picture-card" |
| | | :multiple="false" |
| | | :auto-upload="false" |
| | | :on-preview="handlePictureCardPreview" |
| | | :headers="headerObj" |
| | | :limit="1" |
| | | :on-exceed="exceed" |
| | | :on-remove="handleRemove" |
| | | > |
| | | <i class="el-icon-plus"></i> |
| | | </el-upload> |
| | | <el-dialog :visible.sync="dialogVisible"> |
| | | <img width="100%" :src="dialogImageUrl" alt="" /> |
| | | </el-dialog> |
| | | </el-form-item> |
| | | <el-form-item |
| | | label="用户评分" |
| | | v-if="form.isRate" |
| | | :label-width="formLabelWidth" |
| | | > |
| | | <el-rate |
| | | disabled |
| | | v-model="form.score" |
| | | style="padding-top: 8px" |
| | | ></el-rate> |
| | | </el-form-item> |
| | | <el-form-item |
| | | label="用户评价" |
| | | v-if="form.isRate" |
| | | :label-width="formLabelWidth" |
| | | > |
| | | <el-input |
| | | type="textarea" |
| | | disabled |
| | | v-model="form.evaluate" |
| | | :disabled="view" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button @click="AZModal = false" :disabled="view" size="mini" |
| | | >取 消</el-button |
| | | > |
| | | <el-button |
| | | type="primary" |
| | | @click="submitForm('form')" |
| | | :disabled="view" |
| | | size="mini" |
| | | >确 定</el-button |
| | | > |
| | | </div> |
| | | </el-dialog> |
| | | <el-dialog title="删除数据" :visible.sync="deleteModal" width="30%"> |
| | | <span>是否删除该条数据</span> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="deleteModal = false" size="mini">取 消</el-button> |
| | | <el-button type="primary" @click="delDate" size="mini">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog title="接单" :visible.sync="acceptModal" width="30%"> |
| | | <span>是否确认接单?此操作不可恢复!</span> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="acceptModal = false" size="mini">取 消</el-button> |
| | | <el-button type="primary" @click="add" size="mini">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog title="超时配置" :visible.sync="timeOutModal"> |
| | | <el-form :model="timeForm" :rules="timeRules" ref="timeForm"> |
| | | <el-form-item |
| | | label="派单接单超时间隔(单位:分钟)" |
| | | :label-width="timeformLabelWidth" |
| | | prop="ReceiveTimeout" |
| | | > |
| | | <el-input |
| | | v-model="timeForm.ReceiveTimeout" |
| | | autocomplete="off" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item |
| | | label="接单完成超时间隔(单位:分钟)" |
| | | :label-width="timeformLabelWidth" |
| | | prop="FinishTimeout" |
| | | > |
| | | <el-input |
| | | v-model="timeForm.FinishTimeout" |
| | | autocomplete="off" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button @click="timeOutModal = false" size="mini">取 消</el-button> |
| | | <el-button |
| | | type="primary" |
| | | @click="submitTimeForm('timeForm')" |
| | | size="mini" |
| | | >确 定</el-button |
| | | > |
| | | </div> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import request from '@/utils/request' |
| | | import request from "@/utils/request"; |
| | | import FileUpload from "@/components/FileUpload/index.vue"; |
| | | import { |
| | | getToken |
| | | } from "@/utils/auth"; |
| | | import { getToken } from "@/utils/auth"; |
| | | // import { |
| | | // listAlertLog, |
| | | // getAlertLog, |
| | |
| | | // } from "@/api/iot/alertLog"; |
| | | |
| | | export default { |
| | | // name: "AlertLog", |
| | | // dicts: ['iot_alert_level', 'iot_process_status'], |
| | | components: { |
| | | FileUpload |
| | | }, |
| | | data() { |
| | | return { |
| | | timeForm: { |
| | | ReceiveTimeout: 0, |
| | | FinishTimeout: 0, |
| | | }, |
| | | timeRules: { |
| | | ReceiveTimeout: [ |
| | | { required: true, message: "派单接单超时间隔不能为空", trigger: "blur" } |
| | | ], |
| | | FinishTimeout: [ |
| | | { required: true, message: "接单完成超时间隔不能为空", trigger: "blur" } |
| | | ], |
| | | }, |
| | | timeOutModal: false, |
| | | nickName: localStorage.getItem('nickName'), |
| | | headerObj: { |
| | | Authorization: "Bearer " + getToken() |
| | | }, |
| | | acceptModal: false, |
| | | acceptDateParams: {}, |
| | | nextlevel: 0, |
| | | level: 0, |
| | | title: '创建安装单', |
| | | deleteModal: false, |
| | | pageIndex: 1, |
| | | pageSize: 10, |
| | | total: 20, |
| | | searchName: '', |
| | | queryParams: { |
| | | WXBody: '未派单', |
| | | PDBody: '未派单' |
| | | }, |
| | | WXBodyType: [{ label: '全部工单', value: '全部工单' }, { label: '未派单', value: '未派单' }, { label: 'num1', value: 'num1' }], |
| | | rules: { |
| | | deviceId: [ |
| | | { required: true, message: '请选择设备', trigger: 'change' } |
| | | ], |
| | | erectoId: [ |
| | | { required: true, message: "请选择安装工", trigger: "change" } |
| | | ], |
| | | userName: [ |
| | | { required: true, message: "用户姓名不能为空", trigger: "blur" } |
| | | ], |
| | | userPhone: [ |
| | | { required: true, trigger: "blur", message: "请输入您的手机号码" }, |
| | | { pattern: /^1[3456789]\d{9}$/, message: '手机号码格式不正确', trigger: 'blur' } |
| | | ], |
| | | address: [ |
| | | { required: true, message: "安装地址不能为空", trigger: "blur" } |
| | | ], |
| | | }, |
| | | form: {}, |
| | | tableData: [ |
| | | ], |
| | | timeformLabelWidth: '215px', |
| | | formLabelWidth: '120px', |
| | | AZModal: false, |
| | | deviceList: [], |
| | | state: -1, |
| | | id: 0, |
| | | erectoList: [], |
| | | erectoListLevel: [], |
| | | roleKey: localStorage.getItem('roleKey'), |
| | | dialogImageUrl: '', |
| | | dialogVisible: false, |
| | | view: false, |
| | | delDeviceId:0 |
| | | // name: "AlertLog", |
| | | // dicts: ['iot_alert_level', 'iot_process_status'], |
| | | components: { |
| | | FileUpload, |
| | | }, |
| | | data() { |
| | | return { |
| | | timeOutSelect: 0, |
| | | timeForm: { |
| | | ReceiveTimeout: 0, |
| | | FinishTimeout: 0, |
| | | }, |
| | | timeRules: { |
| | | ReceiveTimeout: [ |
| | | { |
| | | required: true, |
| | | message: "派单接单超时间隔不能为空", |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | FinishTimeout: [ |
| | | { |
| | | required: true, |
| | | message: "接单完成超时间隔不能为空", |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | }, |
| | | timeOutModal: false, |
| | | nickName: localStorage.getItem("nickName"), |
| | | headerObj: { |
| | | Authorization: "Bearer " + getToken(), |
| | | }, |
| | | acceptModal: false, |
| | | acceptDateParams: {}, |
| | | nextlevel: 0, |
| | | level: 0, |
| | | title: "创建安装单", |
| | | deleteModal: false, |
| | | pageIndex: 1, |
| | | pageSize: 10, |
| | | total: 20, |
| | | searchName: "", |
| | | queryParams: { |
| | | WXBody: "未派单", |
| | | PDBody: "未派单", |
| | | }, |
| | | WXBodyType: [ |
| | | { label: "全部工单", value: "全部工单" }, |
| | | { label: "未派单", value: "未派单" }, |
| | | { label: "num1", value: "num1" }, |
| | | ], |
| | | rules: { |
| | | deviceId: [ |
| | | { required: true, message: "请选择设备", trigger: "change" }, |
| | | ], |
| | | erectoId: [ |
| | | { required: true, message: "请选择安装工", trigger: "change" }, |
| | | ], |
| | | userName: [ |
| | | { required: true, message: "用户姓名不能为空", trigger: "blur" }, |
| | | ], |
| | | userPhone: [ |
| | | { required: true, trigger: "blur", message: "请输入您的手机号码" }, |
| | | { |
| | | pattern: /^1[3456789]\d{9}$/, |
| | | message: "手机号码格式不正确", |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | address: [ |
| | | { required: true, message: "安装地址不能为空", trigger: "blur" }, |
| | | ], |
| | | }, |
| | | form: {}, |
| | | tableData: [], |
| | | timeformLabelWidth: "215px", |
| | | formLabelWidth: "120px", |
| | | AZModal: false, |
| | | deviceList: [], |
| | | state: -1, |
| | | id: 0, |
| | | erectoList: [], |
| | | erectoListLevel: [], |
| | | roleKey: localStorage.getItem("roleKey"), |
| | | dialogImageUrl: "", |
| | | dialogVisible: false, |
| | | view: false, |
| | | delDeviceId: 0, |
| | | }; |
| | | }, |
| | | |
| | | mounted() { |
| | | console.log(this.nickName); |
| | | this.getList(); |
| | | this.getErectoList(); |
| | | this.getErectoListLevel(); |
| | | // this.selecttimeout() |
| | | }, |
| | | methods: { |
| | | submitTimeForm() { |
| | | this.$refs["timeForm"].validate((valid) => { |
| | | if (valid) { |
| | | this.editTimeOut(); |
| | | } else { |
| | | console.log("error submit!!"); |
| | | return false; |
| | | } |
| | | }); |
| | | }, |
| | | |
| | | mounted() { |
| | | console.log(this.nickName); |
| | | this.getList(); |
| | | this.getErectoList() |
| | | this.getErectoListLevel() |
| | | // this.selecttimeout() |
| | | }, |
| | | methods: { |
| | | submitTimeForm() { |
| | | this.$refs['timeForm'].validate((valid) => { |
| | | if (valid) { |
| | | this.editTimeOut() |
| | | } else { |
| | | console.log('error submit!!'); |
| | | return false; |
| | | } |
| | | }); |
| | | }, |
| | | editTimeOut() { |
| | | let data = { |
| | | receiveTimeout: this.timeForm.ReceiveTimeout, |
| | | finishTimeout: this.timeForm.FinishTimeout, |
| | | orderType: 1, |
| | | userId: localStorage.getItem('userID') |
| | | } |
| | | request({ |
| | | url: `/iot/deviceOrder/updatetimeout`, |
| | | method: "put", |
| | | params: data, |
| | | }).then((res) => { |
| | | console.log(res); |
| | | if (res.code == 200) { |
| | | this.$message({ |
| | | message: '修改成功', |
| | | type: 'success' |
| | | }); |
| | | this.timeOutModal = false |
| | | } else { |
| | | this.$message({ |
| | | message: '修改失败', |
| | | type: 'error' |
| | | }); |
| | | } |
| | | }).catch((res) => { |
| | | this.$message({ |
| | | message: '修改失败', |
| | | type: 'error' |
| | | }); |
| | | }) |
| | | |
| | | }, |
| | | getTimeOut() { |
| | | let data = { |
| | | orderType: 1, |
| | | userId: localStorage.getItem('userID') |
| | | } |
| | | request({ |
| | | url: `/iot/deviceOrder/selecttimeout`, |
| | | method: "get", |
| | | params: data, |
| | | }).then((res) => { |
| | | console.log(res); |
| | | if (res.code == 200) { |
| | | this.timeForm.ReceiveTimeout = res.data.receiveTimeout |
| | | this.timeForm.FinishTimeout = res.data.finishTimeout |
| | | } else { |
| | | this.timeForm.ReceiveTimeout = 0 |
| | | this.timeForm.FinishTimeout = 0 |
| | | } |
| | | }).catch((res) => { |
| | | this.timeForm.ReceiveTimeout = 0 |
| | | this.timeForm.FinishTimeout = 0 |
| | | return false |
| | | }) |
| | | }, |
| | | openTimeOutModal() { |
| | | this.getTimeOut() |
| | | this.timeOutModal = true |
| | | |
| | | }, |
| | | exceed(e) { |
| | | console.log(e); |
| | | editTimeOut() { |
| | | let data = { |
| | | receiveTimeout: this.timeForm.ReceiveTimeout, |
| | | finishTimeout: this.timeForm.FinishTimeout, |
| | | orderType: 1, |
| | | userId: localStorage.getItem("userID"), |
| | | }; |
| | | request({ |
| | | url: `/iot/deviceOrder/updatetimeout`, |
| | | method: "put", |
| | | params: data, |
| | | }) |
| | | .then((res) => { |
| | | console.log(res); |
| | | if (res.code == 200) { |
| | | this.$message({ |
| | | message: '图片最多上传一张', |
| | | type: 'error' |
| | | message: "修改成功", |
| | | type: "success", |
| | | }); |
| | | }, |
| | | handleRemove(file, fileList) { |
| | | this.form.imgUrl = '' |
| | | console.log(file, fileList); |
| | | }, |
| | | handleChange(file) { |
| | | |
| | | if (file.size > 1024 * 1024 * 2) { |
| | | this.$refs.uploadImg.uploadFiles.length = 0; |
| | | this.$message({ |
| | | message: '图片大小不能超过2M,请重新上传', |
| | | type: 'error' |
| | | }); |
| | | return |
| | | } |
| | | this.dialogImageUrl = file.url; |
| | | let formData = new FormData(); |
| | | formData.append('avatarfile', file.raw); |
| | | formData.append('orderType', 1); |
| | | request({ |
| | | url: '/iot/deviceOrder/profile/avatar', |
| | | method: "post", |
| | | data: formData |
| | | }).then((res) => { |
| | | console.log(res); |
| | | if (res.code == 200) { |
| | | this.$message({ |
| | | message: '上传成功', |
| | | type: 'success' |
| | | }); |
| | | this.form.imgUrl = 'https://puyue.yhupai.com/prod-api' + res.imgUrl |
| | | } else { |
| | | this.$message({ |
| | | message: '上传失败', |
| | | type: 'error' |
| | | }); |
| | | } |
| | | }).catch((res) => { |
| | | this.$message({ |
| | | message: '上传失败', |
| | | type: 'error' |
| | | }); |
| | | }) |
| | | |
| | | }, |
| | | handlePictureCardPreview(file) { |
| | | this.dialogImageUrl = file.url; |
| | | this.dialogVisible = true; |
| | | }, |
| | | getErectoList() { |
| | | let data = { |
| | | pageNum: 1, |
| | | pageSize: 10000, |
| | | deptId: localStorage.getItem('deptId'), |
| | | isAuthentication: 1, |
| | | } |
| | | request({ |
| | | url: '/system/user/list', |
| | | method: "get", |
| | | params: data |
| | | }).then((res) => { |
| | | console.log(res); |
| | | if (res.code == 200) { |
| | | this.erectoList = res.rows |
| | | this.erectoList.unshift({ |
| | | nickName: '未指派', |
| | | userId: -1 |
| | | }) |
| | | } else { |
| | | this.erectoList = [] |
| | | } |
| | | }).catch((res) => { |
| | | this.erectoList = [] |
| | | }) |
| | | }, |
| | | getErectoListLevel() { |
| | | this.erectoListLevel = [] |
| | | let data = { |
| | | pageNum: 1, |
| | | pageSize: 10000, |
| | | deptId: localStorage.getItem('deptId'), |
| | | // isAuthentication: 1, |
| | | roleKey: 'tenanthelper', |
| | | } |
| | | request({ |
| | | url: '/system/user/list', |
| | | method: "get", |
| | | params: data |
| | | }).then((res) => { |
| | | console.log(res); |
| | | if (res.code == 200 && res.rows.length > 0) { |
| | | this.erectoListLevel = res.rows |
| | | this.nextlevel = res.rows[0].userId |
| | | } else { |
| | | this.erectoListLevel = [] |
| | | } |
| | | }).catch((res) => { |
| | | this.erectoListLevel = [] |
| | | }) |
| | | }, |
| | | // 获取设备列表 |
| | | getDeviceList() { |
| | | let data = { |
| | | status: 1 |
| | | } |
| | | request({ |
| | | url: '/iot/device/shortList', |
| | | method: "get", |
| | | params: data |
| | | }).then((res) => { |
| | | if (res.code == 200) { |
| | | this.deviceList = res.rows |
| | | } else { |
| | | this.deviceList = [] |
| | | } |
| | | }).catch((res) => { |
| | | this.deviceList = [] |
| | | }) |
| | | }, |
| | | // 获取安装列表 |
| | | getList() { |
| | | this.tableData = [] |
| | | let data = { |
| | | pageNum: this.pageIndex, |
| | | pageSize: this.pageSize, |
| | | state: this.state, |
| | | orderType: 1, |
| | | } |
| | | if (this.roleKey == 'tenantservice') { |
| | | data.createUserId = 0 |
| | | data.erectoId = localStorage.getItem('userID') |
| | | } |
| | | if (this.roleKey == 'admin') { |
| | | data.createUserId = 0; |
| | | data.erectoId = 0; |
| | | } |
| | | if (this.roleKey == 'tenant' || this.roleKey == 'tenanthelper') { |
| | | data.createUserId = localStorage.getItem('userID'); |
| | | data.erectoId = 0; |
| | | } |
| | | if (this.level == 1) { //当选择下级时 |
| | | data.createUserId = this.nextlevel |
| | | } |
| | | request({ |
| | | url: '/iot/deviceOrder/list', |
| | | method: "get", |
| | | params: data |
| | | }).then((res) => { |
| | | if (res.code == 200) { |
| | | this.tableData = res.rows |
| | | this.total = res.total |
| | | } else { |
| | | this.tableData = [] |
| | | this.total = 0 |
| | | } |
| | | }).catch((res) => { |
| | | this.tableData = [] |
| | | this.total = 0 |
| | | }) |
| | | }, |
| | | handleSelectionChange(e) { |
| | | console.log(1, e); |
| | | }, |
| | | filterHandlerBody(e) { |
| | | console.log(2, e); |
| | | }, |
| | | filterHandlerStatus(e) { |
| | | console.log(3, e); |
| | | }, |
| | | changePage(e) { |
| | | this.pageIndex = e |
| | | this.getList() |
| | | }, |
| | | openAZModal() { |
| | | this.getDeviceList(); |
| | | this.form = { |
| | | deviceId: undefined, |
| | | address: '',//地址 |
| | | appointmentTime: '',//预约时间 |
| | | remark: '',//备注 |
| | | erectoId: -1,//安装工 |
| | | userName: '', //用户信息,联系人 |
| | | userPhone: '',//用户信息联系电话 |
| | | erectoName: '未指派', |
| | | state: 0, |
| | | erectoPhone: '', |
| | | } |
| | | this.title = '创建安装单' |
| | | this.AZModal = true |
| | | }, |
| | | submitForm() { |
| | | this.$refs['form'].validate((valid) => { |
| | | if (valid) { |
| | | this.add() |
| | | } else { |
| | | console.log('error submit!!'); |
| | | return false; |
| | | } |
| | | this.timeOutModal = false; |
| | | } else { |
| | | this.$message({ |
| | | message: "修改失败", |
| | | type: "error", |
| | | }); |
| | | }, |
| | | add() { |
| | | console.log(this.erectoList); |
| | | for (let i = 0; i < this.erectoList.length; i++) { |
| | | if (this.form.erectoId == this.erectoList[i].userId) { |
| | | this.form.erectoName = this.erectoList[i].nickName |
| | | this.form.erectoPhone=this.erectoList[i].phonenumber |
| | | } |
| | | } |
| | | console.log(this.form); |
| | | |
| | | let data = { |
| | | deviceId: this.form.deviceId, |
| | | erectoId: this.form.erectoId, |
| | | erectoName: this.form.erectoName, |
| | | userName: this.form.userName, |
| | | userPhone: this.form.userPhone, |
| | | address: this.form.address, |
| | | appointmentTime: this.form.appointmentTime, |
| | | remark: this.form.remark, |
| | | state: this.form.state, |
| | | erectoPhone:this.form.erectoPhone |
| | | } |
| | | if (this.form.receiveTime) { |
| | | data.receiveTime = this.form.receiveTime |
| | | } |
| | | |
| | | console.log(data); |
| | | if (this.title == '修改安装单') { |
| | | data.id = this.id, |
| | | data.orderType = '1' |
| | | if (this.form.state == 3) { |
| | | if (!this.form.imgUrl) { |
| | | this.$message({ |
| | | message: '请上传图片', |
| | | type: 'error' |
| | | }); |
| | | return |
| | | } |
| | | data.imgUrl = this.form.imgUrl |
| | | } |
| | | console.log(data); |
| | | request({ |
| | | url: '/iot/deviceOrder', |
| | | method: "put", |
| | | data: data |
| | | }).then((res) => { |
| | | console.log(res); |
| | | if (res.code == 200) { |
| | | this.state = -1 |
| | | this.pageIndex = 1 |
| | | this.getList() |
| | | this.AZModal = false |
| | | this.acceptModal = false |
| | | |
| | | } else { |
| | | this.state = -1 |
| | | this.pageIndex = 1 |
| | | this.getList() |
| | | this.AZModal = false |
| | | this.acceptModal = false |
| | | |
| | | } |
| | | }).catch((res) => { |
| | | this.state = -1 |
| | | this.pageIndex = 1 |
| | | this.getList() |
| | | this.AZModal = false |
| | | this.acceptModal = false |
| | | }) |
| | | } else { |
| | | |
| | | request({ |
| | | url: '/iot/deviceOrder', |
| | | method: "post", |
| | | data: data |
| | | }).then((res) => { |
| | | if (res.code == 200) { |
| | | this.state = -1 |
| | | this.pageIndex = 1 |
| | | this.getList() |
| | | this.AZModal = false |
| | | |
| | | } else { |
| | | this.state = -1 |
| | | this.pageIndex = 1 |
| | | this.getList() |
| | | this.AZModal = false |
| | | } |
| | | }).catch((res) => { |
| | | this.state = -1 |
| | | this.pageIndex = 1 |
| | | this.getList() |
| | | this.AZModal = false |
| | | }) |
| | | } |
| | | |
| | | }, |
| | | editModal(item) { |
| | | this.title = '修改安装单' |
| | | this.form = item |
| | | this.form = JSON.parse(JSON.stringify(item)) |
| | | this.deviceList = [{ deviceName: item.device.deviceName, deviceId: item.device.deviceId }] |
| | | this.deviceList = [{ deviceName: item.device.deviceName, deviceId: item.device.deviceId }] |
| | | console.log(this.form); |
| | | this.view = false |
| | | this.AZModal = true |
| | | this.id = item.id |
| | | }, |
| | | delModal(item) { |
| | | this.id = item.id |
| | | this.delDeviceId=item.deviceId |
| | | this.deleteModal = true |
| | | }, |
| | | delDate() { |
| | | let that = this |
| | | let data = { |
| | | id: this.id, |
| | | deviceId:this.delDeviceId |
| | | } |
| | | request({ |
| | | url: `/iot/deviceOrder/${that.id}/${that.delDeviceId}`, |
| | | method: "DELETE", |
| | | // data: data |
| | | }).then((res) => { |
| | | if (res.code == 200) { |
| | | that.pageIndex = 1 |
| | | that.getList() |
| | | that.deleteModal = false |
| | | } else { |
| | | that.pageIndex = 1 |
| | | that.getList() |
| | | that.deleteModal = false |
| | | } |
| | | |
| | | }).catch((res) => { |
| | | that.pageIndex = 1 |
| | | that.getList() |
| | | that.deleteModal = false |
| | | }) |
| | | }, |
| | | // 接单 |
| | | JDModal(item) { |
| | | if (!item.appointmentTime) { |
| | | this.$message({ |
| | | message: '请和客户确认预约时间并录入系统再接单!', |
| | | type: 'error' |
| | | }); |
| | | return false |
| | | } |
| | | this.title = '修改安装单' |
| | | this.form = JSON.parse(JSON.stringify(item)) |
| | | this.form.state = 2 |
| | | this.deviceList = [{ deviceName: item.device.deviceName, deviceId: item.device.deviceId }] |
| | | this.id = item.id |
| | | this.form.receiveTime = this.formatNow() |
| | | this.view = false |
| | | this.acceptModal = true |
| | | }, |
| | | formatNow() { |
| | | let now = new Date(); |
| | | let year = now.getFullYear(); |
| | | let month = (now.getMonth() + 1).toString().padStart(2, '0'); // 注意:月份是从 0 开始的,所以需要 +1 |
| | | let day = now.getDate().toString().padStart(2, '0'); |
| | | let hour = now.getHours().toString().padStart(2, '0'); |
| | | let minute = now.getMinutes().toString().padStart(2, '0'); |
| | | let second = now.getSeconds().toString().padStart(2, '0'); |
| | | let millisecond = now.getMilliseconds().toString().padStart(3, '0'); |
| | | return `${year}-${month}-${day} ${hour}:${minute}:${second}`; |
| | | }, |
| | | // 结单 |
| | | jdModal(item) { |
| | | this.title = '修改安装单' |
| | | this.form = JSON.parse(JSON.stringify(item)) |
| | | this.form.state = 3 |
| | | this.deviceList = [{ deviceName: item.device.deviceName, deviceId: item.device.deviceId }] |
| | | this.id = item.id |
| | | this.view = false |
| | | // this.form.receiveTime = this.formatNow() |
| | | this.AZModal = true |
| | | }, |
| | | // 结单查看 |
| | | viewModal(item) { |
| | | this.title = '查看安装单' |
| | | this.form = JSON.parse(JSON.stringify(item)) |
| | | this.form.erectoId = this.form.erectoName |
| | | this.deviceList = [{ deviceName: item.device.deviceName, deviceId: item.device.deviceId }] |
| | | console.log(this.erectoList); |
| | | this.id = item.id |
| | | this.view = true |
| | | console.log(this.form); |
| | | // this.form.receiveTime = this.formatNow() |
| | | this.AZModal = true |
| | | }, |
| | | } |
| | | }) |
| | | .catch((res) => { |
| | | this.$message({ |
| | | message: "修改失败", |
| | | type: "error", |
| | | }); |
| | | }); |
| | | }, |
| | | watch: { |
| | | 'form.erectoId': { |
| | | handler(newVal, oldVal) { |
| | | if (this.form.state < 2) { |
| | | if (newVal && newVal == -1) { |
| | | this.form.state = 0 |
| | | } else { |
| | | this.form.state = 1 |
| | | } |
| | | } |
| | | }, |
| | | deep: true, |
| | | }, |
| | | } |
| | | } |
| | | getTimeOut() { |
| | | let data = { |
| | | orderType: 1, |
| | | userId: localStorage.getItem("userID"), |
| | | }; |
| | | request({ |
| | | url: `/iot/deviceOrder/selecttimeout`, |
| | | method: "get", |
| | | params: data, |
| | | }) |
| | | .then((res) => { |
| | | console.log(res); |
| | | if (res.code == 200) { |
| | | this.timeForm.ReceiveTimeout = res.data.receiveTimeout; |
| | | this.timeForm.FinishTimeout = res.data.finishTimeout; |
| | | } else { |
| | | this.timeForm.ReceiveTimeout = 0; |
| | | this.timeForm.FinishTimeout = 0; |
| | | } |
| | | }) |
| | | .catch((res) => { |
| | | this.timeForm.ReceiveTimeout = 0; |
| | | this.timeForm.FinishTimeout = 0; |
| | | return false; |
| | | }); |
| | | }, |
| | | openTimeOutModal() { |
| | | this.getTimeOut(); |
| | | this.timeOutModal = true; |
| | | }, |
| | | exceed(e) { |
| | | console.log(e); |
| | | this.$message({ |
| | | message: "图片最多上传一张", |
| | | type: "error", |
| | | }); |
| | | }, |
| | | handleRemove(file, fileList) { |
| | | this.form.imgUrl = ""; |
| | | console.log(file, fileList); |
| | | }, |
| | | handleChange(file) { |
| | | if (file.size > 1024 * 1024 * 2) { |
| | | this.$refs.uploadImg.uploadFiles.length = 0; |
| | | this.$message({ |
| | | message: "图片大小不能超过2M,请重新上传", |
| | | type: "error", |
| | | }); |
| | | return; |
| | | } |
| | | this.dialogImageUrl = file.url; |
| | | let formData = new FormData(); |
| | | formData.append("avatarfile", file.raw); |
| | | formData.append("orderType", 1); |
| | | request({ |
| | | url: "/iot/deviceOrder/Install/profile/avatar", |
| | | method: "post", |
| | | data: formData, |
| | | }) |
| | | .then((res) => { |
| | | console.log(res); |
| | | if (res.code == 200) { |
| | | this.$message({ |
| | | message: "上传成功", |
| | | type: "success", |
| | | }); |
| | | this.form.imgUrl = "https://puyue.yhupai.com/prod-api" + res.imgUrl; |
| | | } else { |
| | | this.$message({ |
| | | message: "上传失败", |
| | | type: "error", |
| | | }); |
| | | } |
| | | }) |
| | | .catch((res) => { |
| | | this.$message({ |
| | | message: "上传失败", |
| | | type: "error", |
| | | }); |
| | | }); |
| | | }, |
| | | handlePictureCardPreview(file) { |
| | | this.dialogImageUrl = file.url; |
| | | this.dialogVisible = true; |
| | | }, |
| | | getErectoList() { |
| | | let data = { |
| | | pageNum: 1, |
| | | pageSize: 10000, |
| | | deptId: localStorage.getItem("deptId"), |
| | | isAuthentication: 1, |
| | | }; |
| | | request({ |
| | | url: "/system/user/list", |
| | | method: "get", |
| | | params: data, |
| | | }) |
| | | .then((res) => { |
| | | console.log(res); |
| | | if (res.code == 200) { |
| | | this.erectoList = res.rows; |
| | | this.erectoList.unshift({ |
| | | nickName: "未指派", |
| | | userId: -1, |
| | | }); |
| | | } else { |
| | | this.erectoList = []; |
| | | } |
| | | }) |
| | | .catch((res) => { |
| | | this.erectoList = []; |
| | | }); |
| | | }, |
| | | getErectoListLevel() { |
| | | this.erectoListLevel = []; |
| | | let data = { |
| | | pageNum: 1, |
| | | pageSize: 10000, |
| | | deptId: localStorage.getItem("deptId"), |
| | | // isAuthentication: 1, |
| | | roleKey: "tenanthelper", |
| | | }; |
| | | request({ |
| | | url: "/system/user/list", |
| | | method: "get", |
| | | params: data, |
| | | }) |
| | | .then((res) => { |
| | | console.log(res); |
| | | if (res.code == 200 && res.rows.length > 0) { |
| | | this.erectoListLevel = res.rows; |
| | | this.nextlevel = res.rows[0].userId; |
| | | } else { |
| | | this.erectoListLevel = []; |
| | | } |
| | | }) |
| | | .catch((res) => { |
| | | this.erectoListLevel = []; |
| | | }); |
| | | }, |
| | | // 获取设备列表 |
| | | getDeviceList() { |
| | | let data = { |
| | | status: 1, |
| | | }; |
| | | request({ |
| | | url: "/iot/device/shortList", |
| | | method: "get", |
| | | params: data, |
| | | }) |
| | | .then((res) => { |
| | | if (res.code == 200) { |
| | | this.deviceList = res.rows; |
| | | } else { |
| | | this.deviceList = []; |
| | | } |
| | | }) |
| | | .catch((res) => { |
| | | this.deviceList = []; |
| | | }); |
| | | }, |
| | | // 获取安装列表 |
| | | getList() { |
| | | this.tableData = []; |
| | | let data = { |
| | | pageNum: this.pageIndex, |
| | | pageSize: this.pageSize, |
| | | state: this.state, |
| | | orderType: 1, |
| | | }; |
| | | if (this.timeOutSelect == 0) { |
| | | } else if (this.timeOutSelect == 1) { |
| | | data.receiveTimeoutFlag = 1; |
| | | } else if (this.timeOutSelect == 2) { |
| | | data.finishTimeoutFlag = 1; |
| | | } |
| | | if (this.roleKey == "tenantservice") { |
| | | data.createUserId = 0; |
| | | data.erectoId = localStorage.getItem("userID"); |
| | | } |
| | | if (this.roleKey == "admin") { |
| | | data.createUserId = 0; |
| | | data.erectoId = 0; |
| | | } |
| | | if (this.roleKey == "tenant" || this.roleKey == "tenanthelper") { |
| | | data.createUserId = localStorage.getItem("userID"); |
| | | data.erectoId = 0; |
| | | } |
| | | if (this.level == 1) { |
| | | //当选择下级时 |
| | | data.createUserId = this.nextlevel; |
| | | } |
| | | console.log(data); |
| | | request({ |
| | | url: "/iot/deviceOrder/list", |
| | | method: "get", |
| | | params: data, |
| | | }) |
| | | .then((res) => { |
| | | if (res.code == 200) { |
| | | this.tableData = res.rows; |
| | | this.total = res.total; |
| | | } else { |
| | | this.tableData = []; |
| | | this.total = 0; |
| | | } |
| | | }) |
| | | .catch((res) => { |
| | | this.tableData = []; |
| | | this.total = 0; |
| | | }); |
| | | }, |
| | | handleSelectionChange(e) { |
| | | console.log(1, e); |
| | | }, |
| | | filterHandlerBody(e) { |
| | | console.log(2, e); |
| | | }, |
| | | filterHandlerStatus(e) { |
| | | console.log(3, e); |
| | | }, |
| | | changePage(e) { |
| | | this.pageIndex = e; |
| | | this.getList(); |
| | | }, |
| | | openAZModal() { |
| | | this.getDeviceList(); |
| | | this.form = { |
| | | deviceId: undefined, |
| | | address: "", //地址 |
| | | appointmentTime: "", //预约时间 |
| | | remark: "", //备注 |
| | | erectoId: -1, //安装工 |
| | | userName: "", //用户信息,联系人 |
| | | userPhone: "", //用户信息联系电话 |
| | | erectoName: "未指派", |
| | | state: 0, |
| | | erectoPhone: "", |
| | | }; |
| | | this.title = "创建安装单"; |
| | | this.AZModal = true; |
| | | }, |
| | | submitForm() { |
| | | this.$refs["form"].validate((valid) => { |
| | | if (valid) { |
| | | this.add(); |
| | | } else { |
| | | console.log("error submit!!"); |
| | | return false; |
| | | } |
| | | }); |
| | | }, |
| | | add() { |
| | | console.log(this.erectoList); |
| | | for (let i = 0; i < this.erectoList.length; i++) { |
| | | if (this.form.erectoId == this.erectoList[i].userId) { |
| | | this.form.erectoName = this.erectoList[i].nickName; |
| | | this.form.erectoPhone = this.erectoList[i].phonenumber; |
| | | } |
| | | } |
| | | console.log(this.form); |
| | | |
| | | let data = { |
| | | deviceId: this.form.deviceId, |
| | | erectoId: this.form.erectoId, |
| | | erectoName: this.form.erectoName, |
| | | userName: this.form.userName, |
| | | userPhone: this.form.userPhone, |
| | | address: this.form.address, |
| | | appointmentTime: this.form.appointmentTime, |
| | | remark: this.form.remark, |
| | | state: this.form.state, |
| | | erectoPhone: this.form.erectoPhone, |
| | | }; |
| | | if (this.form.receiveTime) { |
| | | data.receiveTime = this.form.receiveTime; |
| | | } |
| | | |
| | | console.log(data); |
| | | if (this.title == "修改安装单") { |
| | | (data.id = this.id), (data.orderType = "1"); |
| | | if (this.form.state == 3) { |
| | | if (!this.form.imgUrl) { |
| | | this.$message({ |
| | | message: "请上传图片", |
| | | type: "error", |
| | | }); |
| | | return; |
| | | } |
| | | data.imgUrl = this.form.imgUrl; |
| | | } |
| | | console.log(data); |
| | | request({ |
| | | url: "/iot/deviceOrder", |
| | | method: "put", |
| | | data: data, |
| | | }) |
| | | .then((res) => { |
| | | console.log(res); |
| | | if (res.code == 200) { |
| | | this.state = -1; |
| | | this.pageIndex = 1; |
| | | this.getList(); |
| | | this.AZModal = false; |
| | | this.acceptModal = false; |
| | | } else { |
| | | this.state = -1; |
| | | this.pageIndex = 1; |
| | | this.getList(); |
| | | this.AZModal = false; |
| | | this.acceptModal = false; |
| | | } |
| | | }) |
| | | .catch((res) => { |
| | | this.state = -1; |
| | | this.pageIndex = 1; |
| | | this.getList(); |
| | | this.AZModal = false; |
| | | this.acceptModal = false; |
| | | }); |
| | | } else { |
| | | request({ |
| | | url: "/iot/deviceOrder", |
| | | method: "post", |
| | | data: data, |
| | | }) |
| | | .then((res) => { |
| | | if (res.code == 200) { |
| | | this.state = -1; |
| | | this.pageIndex = 1; |
| | | this.getList(); |
| | | this.AZModal = false; |
| | | } else { |
| | | this.state = -1; |
| | | this.pageIndex = 1; |
| | | this.getList(); |
| | | this.AZModal = false; |
| | | } |
| | | }) |
| | | .catch((res) => { |
| | | this.state = -1; |
| | | this.pageIndex = 1; |
| | | this.getList(); |
| | | this.AZModal = false; |
| | | }); |
| | | } |
| | | }, |
| | | editModal(item) { |
| | | this.title = "修改安装单"; |
| | | this.form = item; |
| | | this.form = JSON.parse(JSON.stringify(item)); |
| | | this.deviceList = [ |
| | | { deviceName: item.device.deviceName, deviceId: item.device.deviceId }, |
| | | ]; |
| | | this.deviceList = [ |
| | | { deviceName: item.device.deviceName, deviceId: item.device.deviceId }, |
| | | ]; |
| | | console.log(this.form); |
| | | this.view = false; |
| | | this.AZModal = true; |
| | | this.id = item.id; |
| | | }, |
| | | delModal(item) { |
| | | this.id = item.id; |
| | | this.delDeviceId = item.deviceId; |
| | | this.deleteModal = true; |
| | | }, |
| | | delDate() { |
| | | let that = this; |
| | | let data = { |
| | | id: this.id, |
| | | deviceId: this.delDeviceId, |
| | | }; |
| | | request({ |
| | | url: `/iot/deviceOrder/${that.id}/${that.delDeviceId}`, |
| | | method: "DELETE", |
| | | // data: data |
| | | }) |
| | | .then((res) => { |
| | | if (res.code == 200) { |
| | | that.pageIndex = 1; |
| | | that.getList(); |
| | | that.deleteModal = false; |
| | | } else { |
| | | that.pageIndex = 1; |
| | | that.getList(); |
| | | that.deleteModal = false; |
| | | } |
| | | }) |
| | | .catch((res) => { |
| | | that.pageIndex = 1; |
| | | that.getList(); |
| | | that.deleteModal = false; |
| | | }); |
| | | }, |
| | | // 接单 |
| | | JDModal(item) { |
| | | if (!item.appointmentTime) { |
| | | this.$message({ |
| | | message: "请和客户确认预约时间并录入系统再接单!", |
| | | type: "error", |
| | | }); |
| | | return false; |
| | | } |
| | | this.title = "修改安装单"; |
| | | this.form = JSON.parse(JSON.stringify(item)); |
| | | this.form.state = 2; |
| | | this.deviceList = [ |
| | | { deviceName: item.device.deviceName, deviceId: item.device.deviceId }, |
| | | ]; |
| | | this.id = item.id; |
| | | this.form.receiveTime = this.formatNow(); |
| | | this.view = false; |
| | | this.acceptModal = true; |
| | | }, |
| | | formatNow() { |
| | | let now = new Date(); |
| | | let year = now.getFullYear(); |
| | | let month = (now.getMonth() + 1).toString().padStart(2, "0"); // 注意:月份是从 0 开始的,所以需要 +1 |
| | | let day = now.getDate().toString().padStart(2, "0"); |
| | | let hour = now.getHours().toString().padStart(2, "0"); |
| | | let minute = now.getMinutes().toString().padStart(2, "0"); |
| | | let second = now.getSeconds().toString().padStart(2, "0"); |
| | | let millisecond = now.getMilliseconds().toString().padStart(3, "0"); |
| | | return `${year}-${month}-${day} ${hour}:${minute}:${second}`; |
| | | }, |
| | | // 结单 |
| | | jdModal(item) { |
| | | this.title = "修改安装单"; |
| | | this.form = JSON.parse(JSON.stringify(item)); |
| | | this.form.state = 3; |
| | | this.deviceList = [ |
| | | { deviceName: item.device.deviceName, deviceId: item.device.deviceId }, |
| | | ]; |
| | | this.id = item.id; |
| | | this.view = false; |
| | | // this.form.receiveTime = this.formatNow() |
| | | this.AZModal = true; |
| | | }, |
| | | // 结单查看 |
| | | viewModal(item) { |
| | | this.title = "查看安装单"; |
| | | this.form = JSON.parse(JSON.stringify(item)); |
| | | this.form.erectoId = this.form.erectoName; |
| | | this.deviceList = [ |
| | | { deviceName: item.device.deviceName, deviceId: item.device.deviceId }, |
| | | ]; |
| | | console.log(this.erectoList); |
| | | this.id = item.id; |
| | | this.view = true; |
| | | console.log(this.form); |
| | | // this.form.receiveTime = this.formatNow() |
| | | this.AZModal = true; |
| | | }, |
| | | }, |
| | | watch: { |
| | | "form.erectoId": { |
| | | handler(newVal, oldVal) { |
| | | if (this.form.state < 2) { |
| | | if (newVal && newVal == -1) { |
| | | this.form.state = 0; |
| | | } else { |
| | | this.form.state = 1; |
| | | } |
| | | } |
| | | }, |
| | | deep: true, |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | .title { |
| | | display: flex; |
| | | display: flex; |
| | | } |
| | | |
| | | .el-select .el-input { |
| | | width: 130px; |
| | | width: 130px; |
| | | } |
| | | |
| | | .input-with-select .el-input-group__prepend { |
| | | background-color: #fff; |
| | | background-color: #fff; |
| | | } |
| | | |
| | | .azmodal { |
| | | max-height: 600px; |
| | | overflow-y: auto !important; |
| | | max-height: 600px; |
| | | overflow-y: auto !important; |
| | | } |
| | | </style> |