diff --git a/Application/Admin/Controller/ExportController.class.php b/Application/Admin/Controller/ExportController.class.php index 2e7771580..f78f7713d 100644 --- a/Application/Admin/Controller/ExportController.class.php +++ b/Application/Admin/Controller/ExportController.class.php @@ -8394,4 +8394,125 @@ class ExportController extends Controller addOperationLog(['op_type'=>3,'key'=>getNowDate(),'url'=>U($url,$GetData),'menu'=>$menu]); } + public function exportResrouces() + { + $map = []; + $map['_string'] = " status <> 2 and type=1 and attachment_url = ''"; + if (I('server_id')) { + $map['server_id'] = I('server_id'); + } + if (I('game_id')) { + $map['game_id'] = I('game_id'); + } + $havMap = "1=1"; + if (I('resource_num_start')) { + $start = I('resource_num_start'); + $havMap .= " and (total_resource_num >= '{$start}' or apply_num >= '{$start}')"; + } + if (I('resource_num_end')) { + $end = I('resource_num_end'); + $havMap .= " and (total_resource_num <= '{$end}' or apply_num <= '{$end}')"; + } + + $xlsName = '资源管理列表'; + + $xlsData = M('work_order_info', 'tab_') + ->field("user_account, game_name, server_name, role_name, sum(resource_num) as total_resource_num, sum(if(status=1, resource_num, 0)) as apply_num, tab_user.phone") + ->join('tab_user on tab_user.account = tab_work_order_info.user_account') + ->where($map) + ->group('user_account, game_name, server_name, role_name') + ->having($havMap) + ->order("created_time desc") + ->select(); + + $xlsCell = array( + array('game_name','游戏名'), + array('server_name','区服'), + array('user_account','游戏账号'), + array('phone', '手机号'), + array('role_name','角色名'), + array('total_resource_num', '申请数量'), + array('apply_num', '实际发放数量') + ); + $show_data_power = (is_administrator()|| session('user_auth')['show_data']); + foreach ($xlsData as &$item) { + if (!$show_data_power) { + $item['phone'] = encryptStr($item['phone']); + } + } + $this->exportAddOperationLog("TestResource/resources","用户-玩家组-资源列表-导出"); + $this->exportExcel($xlsName, $xlsCell, $xlsData); + } + + public function exportWorkOrder() + { + $map = []; + $map['_string'] = " status <> 2 "; + if (I('order_no')) { + $map['_string'] .= ' and order_no like "{'.I('order_no').'}%"'; + } + if (I('user_account')) { + $map['_string'] .= ' and user_account like "%{'.I('user_account').'}%"'; + } + if (I('attachment_type', '')) { + if (I('attachment_type') == 1) { + $map['_string'] .= ' and attachment_url <> ""'; + } else { + $map['_string'] .= ' and attachment_url = ""'; + } + } + if (I('server_id')) { + $map['server_id'] = I('server_id'); + } + if (I('handler_id')) { + $map['handler_id'] = I('handler_id'); + } + if (I('game_id')) { + $map['game_id'] = I('game_id'); + } + if (I('type')) { + $map['type'] = I('type'); + } + if (I('score')) { + $map['score'] = I('score'); + } + if (I('status')) { + $map['status'] = I('status'); + } + if (isset($_GET['created_time_start'])) { + $map['_string'] .= " and created_time >= " . strtotime($_GET['created_time_start']); + } + if (isset($_GET['created_time_end'])) { + $map['_string'] .= " and created_time < " . (strtotime($_GET['created_time_end']) + 86400); + } + + $xlsName = '工单管理列表'; + + $xlsCell = array( + array('order_no','工单号'), + array('game_name','游戏名'), + array('server_name','区服'), + array('type','工单类型'), + array('status','状态'), + array('user_account','游戏账号'), + array('creator','创单人'), + array('created_time', '创单时间'), + array('score', '分数'), + array('attachment_type', '附件') + ); + + $xlsData = M('work_order_info', 'tab_')->where($map)->order("created_time desc")->select(); + + foreach ($xlsData as &$item) { + $item['type'] = $item['type'] == 1 ? '资源' : '反馈'; + $item['status'] = $item['status'] == 1 ? '完成' : '处理中'; + $item['creator'] = get_admin_name($item['creator_id']); + $item['created_time'] = date('Y-m-d h:i:s', $item['created_time']); + $item['attachment_type'] = empty('attachment_url') ? '无' : '有'; + } + + $this->exportAddOperationLog("WorkOrder/list","用户-玩家组工单管理-导出"); + $this->exportExcel($xlsName, $xlsCell, $xlsData); + } + } diff --git a/Application/Admin/Controller/TestResourceController.class.php b/Application/Admin/Controller/TestResourceController.class.php index 8ac8ffc67..5ab71a714 100644 --- a/Application/Admin/Controller/TestResourceController.class.php +++ b/Application/Admin/Controller/TestResourceController.class.php @@ -11,6 +11,47 @@ use OSS\Core\OssException; class TestResourceController extends ThinkController { + public function resources($row = 10, $p = 1) + { + $map = []; + $map['_string'] = " status <> 2 and type=1 and attachment_url = ''"; + if (I('server_id')) { + $map['server_id'] = I('server_id'); + } + if (I('game_id')) { + $map['game_id'] = I('game_id'); + } + $havMap = "1=1"; + if (I('resource_num_start')) { + $start = I('resource_num_start'); + $havMap .= " and (total_resource_num >= '{$start}' or apply_num >= '{$start}')"; + } + if (I('resource_num_end')) { + $end = I('resource_num_end'); + $havMap .= " and (total_resource_num <= '{$end}' or apply_num <= '{$end}')"; + } + + $list = M('work_order_info', 'tab_') + ->field("user_account, game_name, server_name, role_name, sum(resource_num) as total_resource_num, sum(if(status=1, resource_num, 0)) as apply_num, tab_user.phone") + ->join('tab_user on tab_user.account = tab_work_order_info.user_account') + ->where($map) + ->page($p, $row) + ->group('user_account, game_name, server_name, role_name') + ->having($havMap) + ->order("created_time desc") + ->select(); + //echo M('work_order_info', 'tab_')->getLastSql();exit; + $count = M('work_order_info', 'tab_')->where($map)->group('user_account, game_name, server_name, role_name')->count(); + $page = set_pagination($count, $row); + if ($page) { + $this->assign('_page', $page); + } + $show_data_power = (is_administrator()|| session('user_auth')['show_data']); + $this->assign('show_data_power', $show_data_power); + $this->assign('list_data', $list); + $this->display('resources'); + } + public function test(){ echo 'test1'; } diff --git a/Application/Admin/Controller/WorkOrderController.class.php b/Application/Admin/Controller/WorkOrderController.class.php new file mode 100644 index 000000000..543866d9d --- /dev/null +++ b/Application/Admin/Controller/WorkOrderController.class.php @@ -0,0 +1,328 @@ + 2 "; + if (I('order_no')) { + $map['_string'] .= ' and order_no like "'.I('order_no').'%"'; + } + if (I('user_account')) { + $map['_string'] .= ' and user_account like "%'.I('user_account').'%"'; + } + if (I('attachment_type', '')) { + if (I('attachment_type') == 1) { + $map['_string'] .= ' and attachment_url <> ""'; + } else { + $map['_string'] .= ' and attachment_url = ""'; + } + } + if (I('server_id')) { + $map['server_id'] = I('server_id'); + } + if (I('handler_id')) { + $map['handler_id'] = I('handler_id'); + } + if (I('game_id')) { + $map['game_id'] = I('game_id'); + } + if (I('type')) { + $map['type'] = I('type'); + } + if (I('score')) { + $map['score'] = I('score'); + } + if (I('status')) { + $map['status'] = I('status'); + } + if (isset($_GET['created_time_start'])) { + $map['_string'] .= " and created_time >= " . strtotime($_GET['created_time_start']); + } + if (isset($_GET['created_time_end'])) { + $map['_string'] .= " and created_time < " . (strtotime($_GET['created_time_end']) + 86400); + } + $list = M('work_order_info', 'tab_')->where($map)->page($p, $row)->order("status desc, created_time desc")->select(); + $count = M('work_order_info', 'tab_')->where($map)->count(); + + if ($list) { + foreach ($list as &$item) { + $item['status'] = $this->getOrderStatus($item['status']); + } + } + $page = set_pagination($count, $row); + if ($page) { + $this->assign('_page', $page); + } + $this->assign('admin_users', M('member')->where(['status'=>1])->field('uid, nickname')->select()); + $this->assign('list_data', $list); + $this->display('list'); + } + + public function store() + { + if (IS_POST) { + // 存储 + $data['game_id'] = I('game_id'); + $data['game_name'] = I('game_name'); + $data['server_id'] = I('server_id'); + $data['server_name'] = I('server_name'); + $data['type'] = I('type'); + $data['creator_id'] = is_login(); + if (empty($data['game_id']) || empty($data['server_id'])) { + $this->error('请选择游戏及区服'); + } + $data['created_time'] = time(); + + switch (I('type')) { + case 1: // 资源工单 + // 如果不是附件形式 + $User = new UserApi; + $user_accounts = I('user_accounts'); + $passwords = I('user_passwords'); + if (count($user_accounts) == 1 && (empty($user_accounts[0]) && empty($passwords[0])) && empty(I('attachment_url'))) { + $this->error('请填写工单内容'); + } + M('work_order_info', 'tab_')->startTrans(); //事物 + if (!empty($user_accounts[0])) { + for ($i = 0; $iwhere(['account'=>$user_accounts[$i]])->find(); + if (empty($user)) {M('work_order_info', 'tab_')->rollback(); $this->error($user_accounts[$i]."账号不存在");} + if ($this->think_ucenter_md5($passwords[$i], UC_AUTH_KEY) != $user['password']) {M('work_order_info', 'tab_')->rollback(); $this->error(sprintf('%s 密码错误', $user_accounts[$i]));} + $info = $data; + $info['user_account'] = $user_accounts[$i]; + $info['remark'] = I('remarks')[$i]; + $info['role_name'] = I('role_names')[$i]; + $info['resource_num'] = I('apply_resources')[$i]; + $info['order_no'] = $info['type'] . date('YmdHis'). $i. rand(10, 99) . $info['creator_id']; + $info['handler_id'] = $info['creator_id']; + $ins = M('work_order_info', 'tab_')->add($info); + + if (!$ins) {M('work_order_info', 'tab_')->rollback(); $this->error("创建失败");} + } + } + if (!empty(I('attachment_url', ''))) { + // 添加一条附件信息 + $attachement_info = $data; + $attachement_info['attachment_url'] = I('attachment_url', ''); + $attachement_info['handler_id'] = $attachement_info['creator_id']; + $attachement_info['order_no'] = $attachement_info['type'] . date('YmdHis'). rand(100, 999) . $attachement_info['creator_id']; + $ins = M('work_order_info', 'tab_')->add($attachement_info); + if (!$ins) {M('work_order_info', 'tab_')->rollback(); $this->error("创建失败");} + } + M('work_order_info', 'tab_')->commit(); + return $this->success('创建工单成功', U('WorkOrder/list')); + break; + case 2: // 反馈工单 + $data['order_no'] = $data['type'] . date('YmdHis'). rand(100, 999) . is_login(); + if (empty(I('user_account')) || empty(I('role_name')) || empty(I('feedback'))) { + $this->error('请填写必填的数据'); + } + if (empty('handler_id')) { + $this->error('请选择处理人'); + } + $data['attachment_url'] = I('attachment_url', ''); + $data['user_account'] = I('user_account'); + $data['role_name'] = I('role_name'); + $data['feedback'] = I('feedback'); + $data['handler_id'] = I('handler_id'); + $data['remark'] = I('remark', ''); + $data['process_log'] = json_encode([['title'=>sprintf('%s于 %s 创建了工单%s,工单状态处理中。', get_admin_name($data['creator_id']), date('Y-m-d H:i:s'), $data['order_no']), 'type'=>1]]); + $ins = M('work_order_info', 'tab_')->add($data); + return $ins ? $this->success('创建工单成功', U('WorkOrder/list')) : $this->error('创建失败'); + break; + default: + $this->error('错误的工单类型'); + } + } else { + $this->assign('admin_users', M('member')->where(['status'=>1])->field('uid, nickname')->select()); + $this->display('store'); + } + } + + public function modify($id=0) + { + $info = M('work_order_info', 'tab_')->where(['id'=>$id])->find(); + if (empty($info)) $this->error('未找到该资源'); + if (IS_POST) { + $data['game_id'] = I('game_id'); + $data['game_name'] = I('game_name'); + $data['server_id'] = I('server_id'); + $data['server_name'] = I('server_name'); + $data['attachment_url'] = I('attachment_url', ''); + switch($info['type']) { + case 1: + $data = array_merge(I('resource'), $data); + if (empty($info['attachment_url'])) { + $user = M('user', 'tab_')->where(['account'=>$data['user_account']])->find(); + if (empty($user)) $this->error("账号不存在"); + if ($this->think_ucenter_md5($data['user_password'], UC_AUTH_KEY) != $user['password']) $this->error(sprintf('%s 密码错误', $user_accounts[$i])); + unset($data['user_password']); + } + + $upt = M('work_order_info', 'tab_')->where(['id'=>$id])->save($data); + return $upt ? $this->success('更新成功', U('WorkOrder/list')) : $this->error('更新失败'); + break; + case 2: + $data = array_merge(I('feedback'), $data); + $user = M('user', 'tab_')->where(['account'=>$data['user_account']])->find(); + if (empty($user)) $this->error("账号不存在"); + $log = $this->modifyProcessLog($info, $data); + if ($log) { + $process_log = json_decode($info['process_log'], true) ?: []; + $log = ['title'=>sprintf("%s于%s 修改了工单%s内容", get_admin_name(is_login()), date('Y-m-d H:i:s'), $info['order_no']), 'detail'=>$log, 'type'=>2]; + $data['process_log'] = json_encode(array_merge($process_log, [$log])); + } + $upt = M('work_order_info', 'tab_')->where(['id'=>$id])->save($data); + return $upt ? $this->success('更新成功', U('WorkOrder/list')) : $this->error('更新失败'); + break; + default: + $this->error('错误的工单类型'); + } + } else { + $info['process_log'] = json_decode($info['process_log'], true); + $this->assign('data', $info); + $this->assign('admin_users', M('member')->where(['status'=>1])->field('uid, nickname')->select()); + $this->display('modify'); + } + } + + private function modifyProcessLog($oldData, $newData) + { + $key = ['game_name'=>'游戏名称', 'server_name'=>'区服名称', 'role_name'=>'角色名称', 'user_account'=>'玩家账号', 'feedback'=>'反馈原因', 'handler_id'=>'处理人', 'remark'=>'备注', 'status'=>'状态', 'attachment_url'=>'附件']; + $log = []; + foreach ($newData as $k => $v) { + if (array_key_exists($k, $oldData) && array_key_exists($k, $key) && $oldData[$k] != $newData[$k]) { + if ($k == 'handler_id') { + $log[] = ['key_name'=>$key[$k], 'key'=>$k, 'old'=>get_admin_name($oldData[$k]), 'new'=>get_admin_name($newData[$k])]; + } else if ($k == 'status') { + $log[] = ['key_name'=>$key[$k], 'key'=>$k, 'old'=>$this->getOrderStatus($oldData[$k]), 'new'=>$this->getOrderStatus($newData[$k])]; + } else { + $log[] = ['key_name'=>$key[$k], 'key'=>$k, 'old'=>$oldData[$k], 'new'=>$newData[$k]]; + } + } + } + return $log; + } + + private function getOrderStatus($status) + { + switch($status) { + case 1: + return '完成'; + case 2: + return '失败'; + case 3: + return '处理中'; + default: + return '未知'; + } + } + + /** + * 系统非常规MD5加密方法 + * @param string $str 要加密的字符串 + * @return string + */ + public function think_ucenter_md5($str, $key = 'ThinkUCenter'){ + return '' === $str ? '' : md5(sha1($str) . $key); + } + + public function resourceApply($id=0) + { + $info = M('work_order_info', 'tab_')->where(['id'=>$id])->find(); + if (empty($info)) $this->error('未找到该资源'); + if ($info['type'] != 1) $this->error('错误的订单类型'); + if (IS_POST) { + if (!empty($info['attachment_url'])) { + if (!I('attachment_url')) $this->error('请上传附件'); + } else { + if (!I('resource_num')) $this->error('请填写申请资源数量'); + } + + $data['handler_id'] = $data['creator_id'] = is_login(); + $data['created_time'] = time(); + $data['type'] = $info['type']; + $data['server_id'] = $info['server_id']; + $data['server_name'] = $info['server_name']; + $data['game_id'] = $info['game_id']; + $data['game_name'] = $info['game_name']; + $data['role_name'] = $info['role_name']; + $data['user_account'] = $info['user_account']; + $data['order_no'] = $info['type'] . date('YmdHis', $data['created_time']). rand(100, 999) . $data['creator_id']; + $data['resource_num'] = I('resource_num', 0); + $data['remark'] = I('remark', ''); + $data['attachment_url'] = I('attachment_url', ''); + $ins = M('work_order_info', 'tab_')->add($data); + return $ins ? $this->success('申请成功') : $this->error('申请失败'); + } else { + $this->assign('data', $info); + $this->display('resourceApply'); + } + } + + // 反馈进度存储 + public function feedbackProcessLogStore($id=0) + { + $info = M('work_order_info', 'tab_')->where(['id'=>$id])->find(); + if (empty($info)) $this->error('未找到该资源'); + $info['process_log'] = json_decode($info['process_log'], true); + if ($info['type'] != 2) $this->error('错误的订单类型'); + if (IS_POST) { + $log = [['type'=>3, 'title'=>sprintf('%s于 %s 更新了工单%s进度,工单状态%s', get_admin_name(is_login()), date('Y-m-d H:i:s'), $info['order_no'], $this->getOrderStatus($info['status'])), 'detail'=>I('process_log')]]; + $upt = M('work_order_info', 'tab_')->where(['id'=>$id])->save(['process_log'=>json_encode(array_merge($info['process_log'], $log))]); + return $upt ? $this->success('更新进度成功', U('WorkOrder/list')) : $this->error('更新进度失败'); + } else { + $this->assign('data', $info); + $this->display('feedbackProcessLogStore'); + } + } + + // 评价 + public function evaluate($id=0) + { + $info = M('work_order_info', 'tab_')->where(['id'=>$id])->find(); + if (empty($info)) $this->error('未找到该资源'); + if (IS_POST) { + if (empty(I('evaluate_content'))) $this->error('请填写评价内容'); + $data['evaluate'] = I('evaluate', 5); + if($info['type'] == 2) { + $info['process_log'] = json_decode($info['process_log'], true); + $log = [['type'=>3, 'title'=>sprintf('%s于 %s 评价了工单%s为%s分,工单状态%s', get_admin_name(is_login()), date('Y-m-d H:i:s'), $info['order_no'], $data['evaluate'], $this->getOrderStatus($info['status'])), 'detail'=>I('evaluate_content')]]; + $data['process_log'] = json_encode(array_merge($info['process_log'], $log)); + $upt = M('work_order_info', 'tab_')->where(['id'=>$id])->save($data); + return $upt ? $this->success('评价成功', U('WorkOrder/list')) : $this->error('评价失败'); + } + } else { + $this->assign('data', $info); + $this->display('feedbackEvaluate'); + } + } + + // 删除 + public function delete($ids) + { + $delete = M('work_order_info', 'tab_')->where(['id'=>['in', $ids]])->save(['status'=>2]); + return $delete ? $this->success('删除成功') : $this->error('删除失败'); + } + + public function finish($id) + { + $info = M('work_order_info', 'tab_')->where(['id'=>$id])->find(); + if (empty($info)) $this->error('未找到该资源'); + $info['process_log'] = json_decode($info['process_log'], true); + $log = [['type'=>1, 'title'=>sprintf('%s于 %s 完成了工单%s,工单状态完成', get_admin_name(is_login()), date('Y-m-d H:i:s'), $info['order_no'])]]; + $data['process_log'] = json_encode(array_merge($info['process_log'], $log)); + $data['status'] = 1; + $delete = M('work_order_info', 'tab_')->where(['id'=>$id])->save($data); + return $delete ? $this->success('成功完成工单') : $this->error('更新失败'); + } +} \ No newline at end of file diff --git a/Application/Admin/View/TestResource/resources.html b/Application/Admin/View/TestResource/resources.html new file mode 100644 index 000000000..3358bd383 --- /dev/null +++ b/Application/Admin/View/TestResource/resources.html @@ -0,0 +1,261 @@ + + + + + + + + + + + + +
+ + +
+
+ + + +
+
+ +
+
+ +
+
+ + - + +
+ +
+ +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
游戏名区服测试账号手机号角色名申请数实发数
aOh! 暂时还没有内容!
{$data.game_name}{$data.server_name}{$data.user_account}{$data['phone']}{$data['phone']|encryptStr}{$data.role_name}{$data.total_resource_num}{$data.apply_num}
+
+
+
+ + 导出 + + {$_page|default=''} +
+ + + +
+ + + + + + if(C('COLOR_STYLE')=='blue_color') echo ''; + + + + + + + + + + + diff --git a/Application/Admin/View/WorkOrder/feedbackEvaluate.html b/Application/Admin/View/WorkOrder/feedbackEvaluate.html new file mode 100644 index 000000000..7b223af29 --- /dev/null +++ b/Application/Admin/View/WorkOrder/feedbackEvaluate.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + +
+
+
+
    +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • + +
  • hidden> + + +
  • + + + +
  • + + +
  • + +
  • + + +
  • +
+ +
+ +
+
+
+
+ + +
+ + + + + + diff --git a/Application/Admin/View/WorkOrder/feedbackProcessLogStore.html b/Application/Admin/View/WorkOrder/feedbackProcessLogStore.html new file mode 100644 index 000000000..156edfca1 --- /dev/null +++ b/Application/Admin/View/WorkOrder/feedbackProcessLogStore.html @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + + + +
+
+
+
    +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • + + + +
  • + + +
  • +
+ +
+ +
+
+ + hidden> + +
hidden
+
工单进度
+
+ $log):?> +

{$index+1}. {$log['title']}

+ + +

--

+ + +

{$log['detail']}

+ + +
+
+
+ + + +
+ + + + + + diff --git a/Application/Admin/View/WorkOrder/list.html b/Application/Admin/View/WorkOrder/list.html new file mode 100644 index 000000000..67172e616 --- /dev/null +++ b/Application/Admin/View/WorkOrder/list.html @@ -0,0 +1,318 @@ + + + + + + + + + + + + +
+ +
+
+ + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ + - +
+ + +
+
+
+ +
+ +
+ +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + 工单号游戏名区服工单类型状态游戏账号创单人员创建时间评价分数附件操作
aOh! 暂时还没有内容!
{$data.order_no}{$data.game_name}{$data.server_name}{$data.status}{$data.user_account}{:get_admin_nickname($data['creator_id'])}{$data.created_time|date='Y-m-d H:i:s',###}{$data.score} + 编辑 + 申请 + 更新 + 完成 + 评价 + 删除 +
+
+
+
+ + 导出 + + {$_page|default=''} +
+ + + +
+ + + + + + if(C('COLOR_STYLE')=='blue_color') echo ''; + + + + + + + + + + + diff --git a/Application/Admin/View/WorkOrder/modify.html b/Application/Admin/View/WorkOrder/modify.html new file mode 100644 index 000000000..9a690351f --- /dev/null +++ b/Application/Admin/View/WorkOrder/modify.html @@ -0,0 +1,515 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + +
+ + + +
+ +
+
+ +
+ +
+ +
+
+ +
+
+ +
+ +
+
+
+
附件
+
+ +
+
+

已有附件删除下载

+
+
+ +
+
+ +
+
+
hidden> + + + + + + + + + + + + + + + + + + + + + + + +
测试账号密码角色名称资源数量备注
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
    hidden > +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
+ +
+ +
+
+ + hidden> + +
hidden > +
工单进度
+
+ $log):?> +

{$index+1}. {$log['title']}

+ + +

--

+ + +

{$log['detail']}

+ + +
+
+
+
+ + +
+ + + + + + diff --git a/Application/Admin/View/WorkOrder/resourceApply.html b/Application/Admin/View/WorkOrder/resourceApply.html new file mode 100644 index 000000000..703795090 --- /dev/null +++ b/Application/Admin/View/WorkOrder/resourceApply.html @@ -0,0 +1,362 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
    +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • + + +
  • + + +
  • +
  • + + +
  • + +
  • + + +
  • + + + + +
+ +
+ +
+
+
+
+ + +
+ + + + + + diff --git a/Application/Admin/View/WorkOrder/store.html b/Application/Admin/View/WorkOrder/store.html new file mode 100644 index 000000000..67c783cfe --- /dev/null +++ b/Application/Admin/View/WorkOrder/store.html @@ -0,0 +1,513 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + +
+ + + +
+ +
+
+ +
+ +
+ +
+
+ +
+
+ +
+
+
+
+
附件
+
+ +
+
+ +
+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
测试账号密码角色名称资源数量备注操作
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+ +
+ + +
+ +
+
+ + + + +
+
+ + + +
+ + + + + + diff --git a/Data/update.sql b/Data/update.sql index b517e47e9..d55c184a9 100644 --- a/Data/update.sql +++ b/Data/update.sql @@ -1426,4 +1426,28 @@ CREATE TABLE `tab_user_action_log` ( `create_time` int(11) NULL DEFAULT 0 COMMENT '创建时间', `remarks` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL COMMENT '备注', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_unicode_ci ROW_FORMAT = Dynamic; \ No newline at end of file +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_unicode_ci ROW_FORMAT = Dynamic; + +-- 2020-03-05 yulingwei 工单表 +CREATE TABLE `tab_work_order_info` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `order_no` varchar(32) COLLATE utf8mb4_bin NOT NULL DEFAULT '' COMMENT '订单号', + `user_account` varchar(64) COLLATE utf8mb4_bin NOT NULL DEFAULT '' COMMENT '用户账号', + `type` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '工单类型 1资源 2反馈', + `game_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '游戏ID', + `game_name` varchar(255) COLLATE utf8mb4_bin NOT NULL DEFAULT '', + `server_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '区服ID', + `server_name` varchar(255) COLLATE utf8mb4_bin NOT NULL DEFAULT '', + `role_name` varchar(255) COLLATE utf8mb4_bin NOT NULL DEFAULT '', + `score` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '评价分数', + `attachment_url` varchar(1000) COLLATE utf8mb4_bin NOT NULL DEFAULT '' COMMENT '附件ID', + `feedback` varchar(1000) COLLATE utf8mb4_bin NOT NULL DEFAULT '', + `status` tinyint(1) unsigned NOT NULL DEFAULT '3' COMMENT '单号状态 1完成 2失败 3等待', + `remark` varchar(1000) COLLATE utf8mb4_bin NOT NULL DEFAULT '', + `creator_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '创建者', + `handler_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '处理人ID', + `created_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间', + `process_log` json DEFAULT NULL COMMENT '进度日志', + `resource_num` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '资源数', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;