按钮样式

master
zsk 2 years ago
parent b8ba56a9fd
commit 69803b09c7

@ -1792,7 +1792,7 @@ page {
padding: 0;
height: 32px !important;
line-height: 32px !important;
font-size: 16px;
font-size: 14px;
}
.weui-search-bar__box {
height: 32px !important;

File diff suppressed because it is too large Load Diff

@ -1,6 +1,8 @@
// components/recordBill/index.js
Component({
data:{
// jobDetail:{}
},
/**
* 组件的属性列表
*/
@ -18,7 +20,14 @@ Component({
value: ''
}
},
// observers:{
// 'jobDetail': function(newValue){
// console.log(newValue)
// this.setData({
// jobDetail:newValue
// })
// }
// },
/**
* 组件的初始数据
*/
@ -27,6 +36,9 @@ Component({
},
ready () {
console.log(this.data.jobDetail);
// this.setData({
// jobDetail:this.data.jobDetail
// })
},
/**
* 组件的方法列表

@ -6,11 +6,11 @@
<view class="pl32">
<view class="fss">
<view class="mr16 f14">报名岗位</view>
<view class="fw500 f15">{{jobDetail.storeJob.jobName}}</view>
<view class="fw500 f15">{{jobDetail.storeJob.jobName || jobDetail.jobName}}</view>
</view>
<view class="fss mt10">
<view class="mr16 f14">薪资待遇</view>
<view class="fw500 f15 cfred">{{jobDetail.storeJob.monthlyPay + '元/月'}}</view>
<view class="fw500 f15 cfred">{{jobDetail.storeJob.monthlyPay || jobDetail.monthlyPay || '-'}}元/月</view>
</view>
<view class="mt16 tal">
<view class="mr16 f14">
@ -30,7 +30,7 @@
<view class>
<input class="weui-input" type="text" name="userName" data-type="name" value="{{userInfo.name}}" placeholder="手动输入或拍照自动识别" />
</view>
<view class="t-icon t-icon-paizhao4 poa" style="right:12px"></view>
<i class="iconfont icon-paizhao1 poa c9" style="right:12px;font-size: 30px;"></i>
</view>
</view>
<view class="mt16 tal">
@ -47,7 +47,7 @@
</view>
<view class="fsa pl32 pr32 mb24" hover-class="none" hover-stop-propagation="false">
<button class="nobg_Btn normalBtn36 mr16" style type role="button" hover-class="thover" bindtap='hideModal'>我再想想</button>
<button class="bgBtn normalBtn36" style type="primary" hover-class="thover" bindtap>确认报名</button>
<button class="bgBtn normalBtn36" style type="primary" hover-class="thover" bindtap="hideModal">确认报名</button>
</view>
</view>
</view>

@ -1,148 +0,0 @@
module.exports =
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 5);
/******/ })
/************************************************************************/
/******/ ({
/***/ 5:
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Component({
options: {
addGlobalClass: true,
pureDataPattern: /^_/,
multipleSlots: true
},
properties: {
tabs: { type: Array, value: [] },
tabClass: { type: String, value: '' },
swiperClass: { type: String, value: '' },
activeClass: { type: String, value: '' },
tabUnderlineColor: { type: String, value: '#07c160' },
tabActiveTextColor: { type: String, value: '#000000' },
tabInactiveTextColor: { type: String, value: '#000000' },
tabBackgroundColor: { type: String, value: '#ffffff' },
activeTab: { type: Number, value: 0 },
swipeable: { type: Boolean, value: true },
animation: { type: Boolean, value: true },
duration: { type: Number, value: 500 }
},
data: {
currentView: 0
},
observers: {
activeTab: function activeTab(_activeTab) {
var len = this.data.tabs.length;
if (len === 0) return;
var currentView = _activeTab - 1;
if (currentView < 0) currentView = 0;
if (currentView > len - 1) currentView = len - 1;
this.setData({ currentView: currentView });
}
},
lifetimes: {
created: function created() {}
},
methods: {
handleTabClick: function handleTabClick(e) {
var index = e.currentTarget.dataset.index;
this.setData({ activeTab: index });
this.triggerEvent('tabclick', { index: index });
},
handleSwiperChange: function handleSwiperChange(e) {
var index = e.detail.current;
this.setData({ activeTab: index });
this.triggerEvent('change', { index: index });
}
}
});
/***/ })
/******/ });

@ -1,4 +0,0 @@
{
"component": true,
"usingComponents": {}
}

@ -1,20 +0,0 @@
<view class="weui-tabs">
<view class="weui-tabs-bar__wrp">
<scroll-view scroll-x scroll-into-view="item_{{currentView}}" scroll-with-animation="{{animation}}">
<view class="weui-tabs-bar__content">
<block wx:for="{{tabs}}" wx:key="title">
<view id="item_{{index}}" class="weui-tabs-bar__item" style="background-color: {{tabBackgroundColor}}; color: {{activeTab === index ? tabActiveTextColor : tabInactiveTextColor}};" bindtap="handleTabClick" data-index="{{index}}">
<view class="weui-tabs-bar__title {{tabClass}} {{activeTab === index ? activeClass : ''}}" style="border-bottom-color: {{activeTab === index ? tabUnderlineColor : 'transparent'}}">
<text class="">{{item.title}}</text>
</view>
</view>
</block>
</view>
</scroll-view>
</view>
<swiper class="{{swiperClass}}" current="{{activeTab}}" duration="{{duration}}" bindchange="handleSwiperChange">
<swiper-item wx:for="{{tabs}}" wx:key="title">
<slot name="tab-content-{{index}}"></slot>
</swiper-item>
</swiper>
</view>

@ -1 +0,0 @@
.weui-tabs{width:100%}.weui-tabs-bar__wrp{width:100%;background:#fff}.weui-tabs-bar__content{width:100%;white-space:nowrap}.weui-tabs-bar__item{display:inline-block}.weui-tabs-bar__title{display:inline-block;border-bottom-width:2px;border-bottom-style:solid;border-bottom-color:transparent}

@ -1,779 +0,0 @@
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
else if(typeof define === 'function' && define.amd)
define([], factory);
else {
var a = factory();
for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
}
})(window, function() {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 1);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports) {
const hex = (color) => {
let result = null
if (/^#/.test(color) && (color.length === 7 || color.length === 9)) {
return color
// eslint-disable-next-line no-cond-assign
} else if ((result = /^(rgb|rgba)\((.+)\)/.exec(color)) !== null) {
return '#' + result[2].split(',').map((part, index) => {
part = part.trim()
part = index === 3 ? Math.floor(parseFloat(part) * 255) : parseInt(part, 10)
part = part.toString(16)
if (part.length === 1) {
part = '0' + part
}
return part
}).join('')
} else {
return '#00000000'
}
}
const splitLineToCamelCase = (str) => str.split('-').map((part, index) => {
if (index === 0) {
return part
}
return part[0].toUpperCase() + part.slice(1)
}).join('')
const compareVersion = (v1, v2) => {
v1 = v1.split('.')
v2 = v2.split('.')
const len = Math.max(v1.length, v2.length)
while (v1.length < len) {
v1.push('0')
}
while (v2.length < len) {
v2.push('0')
}
for (let i = 0; i < len; i++) {
const num1 = parseInt(v1[i], 10)
const num2 = parseInt(v2[i], 10)
if (num1 > num2) {
return 1
} else if (num1 < num2) {
return -1
}
}
return 0
}
module.exports = {
hex,
splitLineToCamelCase,
compareVersion
}
/***/ }),
/* 1 */
/***/ (function(module, exports, __webpack_require__) {
const xmlParse = __webpack_require__(2)
const {Widget} = __webpack_require__(3)
const {Draw} = __webpack_require__(5)
const {compareVersion} = __webpack_require__(0)
const canvasId = 'weui-canvas'
Component({
properties: {
width: {
type: Number,
value: 400
},
height: {
type: Number,
value: 300
}
},
data: {
use2dCanvas: false, // 2.9.2 后可用canvas 2d 接口
},
lifetimes: {
attached() {
const {SDKVersion, pixelRatio: dpr} = wx.getSystemInfoSync()
const use2dCanvas = compareVersion(SDKVersion, '2.9.2') >= 0
this.dpr = dpr
this.setData({use2dCanvas}, () => {
if (use2dCanvas) {
const query = this.createSelectorQuery()
query.select(`#${canvasId}`)
.fields({node: true, size: true})
.exec(res => {
const canvas = res[0].node
const ctx = canvas.getContext('2d')
canvas.width = res[0].width * dpr
canvas.height = res[0].height * dpr
ctx.scale(dpr, dpr)
this.ctx = ctx
this.canvas = canvas
})
} else {
this.ctx = wx.createCanvasContext(canvasId, this)
}
})
}
},
methods: {
async renderToCanvas(args) {
const {wxml, style} = args
const ctx = this.ctx
const canvas = this.canvas
const use2dCanvas = this.data.use2dCanvas
if (use2dCanvas && !canvas) {
return Promise.reject(new Error('renderToCanvas: fail canvas has not been created'))
}
ctx.clearRect(0, 0, this.data.width, this.data.height)
const {root: xom} = xmlParse(wxml)
const widget = new Widget(xom, style)
const container = widget.init()
this.boundary = {
top: container.layoutBox.top,
left: container.layoutBox.left,
width: container.computedStyle.width,
height: container.computedStyle.height,
}
const draw = new Draw(ctx, canvas, use2dCanvas)
await draw.drawNode(container)
if (!use2dCanvas) {
await this.canvasDraw(ctx)
}
return Promise.resolve(container)
},
canvasDraw(ctx, reserve) {
return new Promise(resolve => {
ctx.draw(reserve, () => {
resolve()
})
})
},
canvasToTempFilePath(args = {}) {
const use2dCanvas = this.data.use2dCanvas
return new Promise((resolve, reject) => {
const {
top, left, width, height
} = this.boundary
const copyArgs = {
x: left,
y: top,
width,
height,
destWidth: width * this.dpr,
destHeight: height * this.dpr,
canvasId,
fileType: args.fileType || 'png',
quality: args.quality || 1,
success: resolve,
fail: reject
}
if (use2dCanvas) {
delete copyArgs.canvasId
copyArgs.canvas = this.canvas
}
wx.canvasToTempFilePath(copyArgs, this)
})
}
}
})
/***/ }),
/* 2 */
/***/ (function(module, exports) {
/**
* Module dependencies.
*/
/**
* Expose `parse`.
*/
/**
* Parse the given string of `xml`.
*
* @param {String} xml
* @return {Object}
* @api public
*/
function parse(xml) {
xml = xml.trim()
// strip comments
xml = xml.replace(/<!--[\s\S]*?-->/g, '')
return document()
/**
* XML document.
*/
function document() {
return {
declaration: declaration(),
root: tag()
}
}
/**
* Declaration.
*/
function declaration() {
const m = match(/^<\?xml\s*/)
if (!m) return
// tag
const node = {
attributes: {}
}
// attributes
while (!(eos() || is('?>'))) {
const attr = attribute()
if (!attr) return node
node.attributes[attr.name] = attr.value
}
match(/\?>\s*/)
return node
}
/**
* Tag.
*/
function tag() {
const m = match(/^<([\w-:.]+)\s*/)
if (!m) return
// name
const node = {
name: m[1],
attributes: {},
children: []
}
// attributes
while (!(eos() || is('>') || is('?>') || is('/>'))) {
const attr = attribute()
if (!attr) return node
node.attributes[attr.name] = attr.value
}
// self closing tag
if (match(/^\s*\/>\s*/)) {
return node
}
match(/\??>\s*/)
// content
node.content = content()
// children
let child
while (child = tag()) {
node.children.push(child)
}
// closing
match(/^<\/[\w-:.]+>\s*/)
return node
}
/**
* Text content.
*/
function content() {
const m = match(/^([^<]*)/)
if (m) return m[1]
return ''
}
/**
* Attribute.
*/
function attribute() {
const m = match(/([\w:-]+)\s*=\s*("[^"]*"|'[^']*'|\w+)\s*/)
if (!m) return
return {name: m[1], value: strip(m[2])}
}
/**
* Strip quotes from `val`.
*/
function strip(val) {
return val.replace(/^['"]|['"]$/g, '')
}
/**
* Match `re` and advance the string.
*/
function match(re) {
const m = xml.match(re)
if (!m) return
xml = xml.slice(m[0].length)
return m
}
/**
* End-of-source.
*/
function eos() {
return xml.length == 0
}
/**
* Check for `prefix`.
*/
function is(prefix) {
return xml.indexOf(prefix) == 0
}
}
module.exports = parse
/***/ }),
/* 3 */
/***/ (function(module, exports, __webpack_require__) {
const Block = __webpack_require__(4)
const {splitLineToCamelCase} = __webpack_require__(0)
class Element extends Block {
constructor(prop) {
super(prop.style)
this.name = prop.name
this.attributes = prop.attributes
}
}
class Widget {
constructor(xom, style) {
this.xom = xom
this.style = style
this.inheritProps = ['fontSize', 'lineHeight', 'textAlign', 'verticalAlign', 'color']
}
init() {
this.container = this.create(this.xom)
this.container.layout()
this.inheritStyle(this.container)
return this.container
}
// 继承父节点的样式
inheritStyle(node) {
const parent = node.parent || null
const children = node.children || {}
const computedStyle = node.computedStyle
if (parent) {
this.inheritProps.forEach(prop => {
computedStyle[prop] = computedStyle[prop] || parent.computedStyle[prop]
})
}
Object.values(children).forEach(child => {
this.inheritStyle(child)
})
}
create(node) {
let classNames = (node.attributes.class || '').split(' ')
classNames = classNames.map(item => splitLineToCamelCase(item.trim()))
const style = {}
classNames.forEach(item => {
Object.assign(style, this.style[item] || {})
})
const args = {name: node.name, style}
const attrs = Object.keys(node.attributes)
const attributes = {}
for (const attr of attrs) {
const value = node.attributes[attr]
const CamelAttr = splitLineToCamelCase(attr)
if (value === '' || value === 'true') {
attributes[CamelAttr] = true
} else if (value === 'false') {
attributes[CamelAttr] = false
} else {
attributes[CamelAttr] = value
}
}
attributes.text = node.content
args.attributes = attributes
const element = new Element(args)
node.children.forEach(childNode => {
const childElement = this.create(childNode)
element.add(childElement)
})
return element
}
}
module.exports = {Widget}
/***/ }),
/* 4 */
/***/ (function(module, exports) {
module.exports = require("widget-ui");
/***/ }),
/* 5 */
/***/ (function(module, exports) {
class Draw {
constructor(context, canvas, use2dCanvas = false) {
this.ctx = context
this.canvas = canvas || null
this.use2dCanvas = use2dCanvas
}
roundRect(x, y, w, h, r, fill = true, stroke = false) {
if (r < 0) return
const ctx = this.ctx
ctx.beginPath()
ctx.arc(x + r, y + r, r, Math.PI, Math.PI * 3 / 2)
ctx.arc(x + w - r, y + r, r, Math.PI * 3 / 2, 0)
ctx.arc(x + w - r, y + h - r, r, 0, Math.PI / 2)
ctx.arc(x + r, y + h - r, r, Math.PI / 2, Math.PI)
ctx.lineTo(x, y + r)
if (stroke) ctx.stroke()
if (fill) ctx.fill()
}
drawView(box, style) {
const ctx = this.ctx
const {
left: x, top: y, width: w, height: h
} = box
const {
borderRadius = 0,
borderWidth = 0,
borderColor,
color = '#000',
backgroundColor = 'transparent',
} = style
ctx.save()
// 外环
if (borderWidth > 0) {
ctx.fillStyle = borderColor || color
this.roundRect(x, y, w, h, borderRadius)
}
// 内环
ctx.fillStyle = backgroundColor
const innerWidth = w - 2 * borderWidth
const innerHeight = h - 2 * borderWidth
const innerRadius = borderRadius - borderWidth >= 0 ? borderRadius - borderWidth : 0
this.roundRect(x + borderWidth, y + borderWidth, innerWidth, innerHeight, innerRadius)
ctx.restore()
}
async drawImage(img, box, style) {
await new Promise((resolve, reject) => {
const ctx = this.ctx
const canvas = this.canvas
const {
borderRadius = 0
} = style
const {
left: x, top: y, width: w, height: h
} = box
ctx.save()
this.roundRect(x, y, w, h, borderRadius, false, false)
ctx.clip()
const _drawImage = (img) => {
if (this.use2dCanvas) {
const Image = canvas.createImage()
Image.onload = () => {
ctx.drawImage(Image, x, y, w, h)
ctx.restore()
resolve()
}
Image.onerror = () => { reject(new Error(`createImage fail: ${img}`)) }
Image.src = img
} else {
ctx.drawImage(img, x, y, w, h)
ctx.restore()
resolve()
}
}
const isTempFile = /^wxfile:\/\//.test(img)
const isNetworkFile = /^https?:\/\//.test(img)
if (isTempFile) {
_drawImage(img)
} else if (isNetworkFile) {
wx.downloadFile({
url: img,
success(res) {
if (res.statusCode === 200) {
_drawImage(res.tempFilePath)
} else {
reject(new Error(`downloadFile:fail ${img}`))
}
},
fail() {
reject(new Error(`downloadFile:fail ${img}`))
}
})
} else {
reject(new Error(`image format error: ${img}`))
}
})
}
// eslint-disable-next-line complexity
drawText(text, box, style) {
const ctx = this.ctx
let {
left: x, top: y, width: w, height: h
} = box
let {
color = '#000',
lineHeight = '1.4em',
fontSize = 14,
textAlign = 'left',
verticalAlign = 'top',
backgroundColor = 'transparent'
} = style
if (typeof lineHeight === 'string') { // 2em
lineHeight = Math.ceil(parseFloat(lineHeight.replace('em')) * fontSize)
}
if (!text || (lineHeight > h)) return
ctx.save()
ctx.textBaseline = 'top'
ctx.font = `${fontSize}px sans-serif`
ctx.textAlign = textAlign
// 背景色
ctx.fillStyle = backgroundColor
this.roundRect(x, y, w, h, 0)
// 文字颜色
ctx.fillStyle = color
// 水平布局
switch (textAlign) {
case 'left':
break
case 'center':
x += 0.5 * w
break
case 'right':
x += w
break
default: break
}
const textWidth = ctx.measureText(text).width
const actualHeight = Math.ceil(textWidth / w) * lineHeight
let paddingTop = Math.ceil((h - actualHeight) / 2)
if (paddingTop < 0) paddingTop = 0
// 垂直布局
switch (verticalAlign) {
case 'top':
break
case 'middle':
y += paddingTop
break
case 'bottom':
y += 2 * paddingTop
break
default: break
}
const inlinePaddingTop = Math.ceil((lineHeight - fontSize) / 2)
// 不超过一行
if (textWidth <= w) {
ctx.fillText(text, x, y + inlinePaddingTop)
return
}
// 多行文本
const chars = text.split('')
const _y = y
// 逐行绘制
let line = ''
for (const ch of chars) {
const testLine = line + ch
const testWidth = ctx.measureText(testLine).width
if (testWidth > w) {
ctx.fillText(line, x, y + inlinePaddingTop)
y += lineHeight
line = ch
if ((y + lineHeight) > (_y + h)) break
} else {
line = testLine
}
}
// 避免溢出
if ((y + lineHeight) <= (_y + h)) {
ctx.fillText(line, x, y + inlinePaddingTop)
}
ctx.restore()
}
async drawNode(element) {
const {layoutBox, computedStyle, name} = element
const {src, text} = element.attributes
if (name === 'view') {
this.drawView(layoutBox, computedStyle)
} else if (name === 'image') {
await this.drawImage(src, layoutBox, computedStyle)
} else if (name === 'text') {
this.drawText(text, layoutBox, computedStyle)
}
const childs = Object.values(element.children)
for (const child of childs) {
await this.drawNode(child)
}
}
}
module.exports = {
Draw
}
/***/ })
/******/ ]);
});

@ -1,4 +0,0 @@
{
"component": true,
"usingComponents": {}
}

@ -1,2 +0,0 @@
<canvas wx:if="{{use2dCanvas}}" id="weui-canvas" type="2d" style="width: {{width}}px; height: {{height}}px;"></canvas>
<canvas wx:else canvas-id="weui-canvas" style="width: {{width}}px; height: {{height}}px;"></canvas>

@ -1,349 +0,0 @@
module.exports = (function() {
var __MODS__ = {};
var __DEFINE__ = function(modId, func, req) { var m = { exports: {}, _tempexports: {} }; __MODS__[modId] = { status: 0, func: func, req: req, m: m }; };
var __REQUIRE__ = function(modId, source) { if(!__MODS__[modId]) return require(source); if(!__MODS__[modId].status) { var m = __MODS__[modId].m; m._exports = m._tempexports; var desp = Object.getOwnPropertyDescriptor(m, "exports"); if (desp && desp.configurable) Object.defineProperty(m, "exports", { set: function (val) { if(typeof val === "object" && val !== m._exports) { m._exports.__proto__ = val.__proto__; Object.keys(val).forEach(function (k) { m._exports[k] = val[k]; }); } m._tempexports = val }, get: function () { return m._tempexports; } }); __MODS__[modId].status = 1; __MODS__[modId].func(__MODS__[modId].req, m, m.exports); } return __MODS__[modId].m.exports; };
var __REQUIRE_WILDCARD__ = function(obj) { if(obj && obj.__esModule) { return obj; } else { var newObj = {}; if(obj != null) { for(var k in obj) { if (Object.prototype.hasOwnProperty.call(obj, k)) newObj[k] = obj[k]; } } newObj.default = obj; return newObj; } };
var __REQUIRE_DEFAULT__ = function(obj) { return obj && obj.__esModule ? obj.default : obj; };
__DEFINE__(1702541404014, function(require, module, exports) {
var has = Object.prototype.hasOwnProperty
, prefix = '~';
/**
* Constructor to create a storage for our `EE` objects.
* An `Events` instance is a plain object whose properties are event names.
*
* @constructor
* @private
*/
function Events() {}
//
// We try to not inherit from `Object.prototype`. In some engines creating an
// instance in this way is faster than calling `Object.create(null)` directly.
// If `Object.create(null)` is not supported we prefix the event names with a
// character to make sure that the built-in object properties are not
// overridden or used as an attack vector.
//
if (Object.create) {
Events.prototype = Object.create(null);
//
// This hack is needed because the `__proto__` property is still inherited in
// some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.
//
if (!new Events().__proto__) prefix = false;
}
/**
* Representation of a single event listener.
*
* @param {Function} fn The listener function.
* @param {*} context The context to invoke the listener with.
* @param {Boolean} [once=false] Specify if the listener is a one-time listener.
* @constructor
* @private
*/
function EE(fn, context, once) {
this.fn = fn;
this.context = context;
this.once = once || false;
}
/**
* Add a listener for a given event.
*
* @param {EventEmitter} emitter Reference to the `EventEmitter` instance.
* @param {(String|Symbol)} event The event name.
* @param {Function} fn The listener function.
* @param {*} context The context to invoke the listener with.
* @param {Boolean} once Specify if the listener is a one-time listener.
* @returns {EventEmitter}
* @private
*/
function addListener(emitter, event, fn, context, once) {
if (typeof fn !== 'function') {
throw new TypeError('The listener must be a function');
}
var listener = new EE(fn, context || emitter, once)
, evt = prefix ? prefix + event : event;
if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;
else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);
else emitter._events[evt] = [emitter._events[evt], listener];
return emitter;
}
/**
* Clear event by name.
*
* @param {EventEmitter} emitter Reference to the `EventEmitter` instance.
* @param {(String|Symbol)} evt The Event name.
* @private
*/
function clearEvent(emitter, evt) {
if (--emitter._eventsCount === 0) emitter._events = new Events();
else delete emitter._events[evt];
}
/**
* Minimal `EventEmitter` interface that is molded against the Node.js
* `EventEmitter` interface.
*
* @constructor
* @public
*/
function EventEmitter() {
this._events = new Events();
this._eventsCount = 0;
}
/**
* Return an array listing the events for which the emitter has registered
* listeners.
*
* @returns {Array}
* @public
*/
EventEmitter.prototype.eventNames = function eventNames() {
var names = []
, events
, name;
if (this._eventsCount === 0) return names;
for (name in (events = this._events)) {
if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);
}
if (Object.getOwnPropertySymbols) {
return names.concat(Object.getOwnPropertySymbols(events));
}
return names;
};
/**
* Return the listeners registered for a given event.
*
* @param {(String|Symbol)} event The event name.
* @returns {Array} The registered listeners.
* @public
*/
EventEmitter.prototype.listeners = function listeners(event) {
var evt = prefix ? prefix + event : event
, handlers = this._events[evt];
if (!handlers) return [];
if (handlers.fn) return [handlers.fn];
for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {
ee[i] = handlers[i].fn;
}
return ee;
};
/**
* Return the number of listeners listening to a given event.
*
* @param {(String|Symbol)} event The event name.
* @returns {Number} The number of listeners.
* @public
*/
EventEmitter.prototype.listenerCount = function listenerCount(event) {
var evt = prefix ? prefix + event : event
, listeners = this._events[evt];
if (!listeners) return 0;
if (listeners.fn) return 1;
return listeners.length;
};
/**
* Calls each of the listeners registered for a given event.
*
* @param {(String|Symbol)} event The event name.
* @returns {Boolean} `true` if the event had listeners, else `false`.
* @public
*/
EventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {
var evt = prefix ? prefix + event : event;
if (!this._events[evt]) return false;
var listeners = this._events[evt]
, len = arguments.length
, args
, i;
if (listeners.fn) {
if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);
switch (len) {
case 1: return listeners.fn.call(listeners.context), true;
case 2: return listeners.fn.call(listeners.context, a1), true;
case 3: return listeners.fn.call(listeners.context, a1, a2), true;
case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;
case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;
case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;
}
for (i = 1, args = new Array(len -1); i < len; i++) {
args[i - 1] = arguments[i];
}
listeners.fn.apply(listeners.context, args);
} else {
var length = listeners.length
, j;
for (i = 0; i < length; i++) {
if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);
switch (len) {
case 1: listeners[i].fn.call(listeners[i].context); break;
case 2: listeners[i].fn.call(listeners[i].context, a1); break;
case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;
case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;
default:
if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {
args[j - 1] = arguments[j];
}
listeners[i].fn.apply(listeners[i].context, args);
}
}
}
return true;
};
/**
* Add a listener for a given event.
*
* @param {(String|Symbol)} event The event name.
* @param {Function} fn The listener function.
* @param {*} [context=this] The context to invoke the listener with.
* @returns {EventEmitter} `this`.
* @public
*/
EventEmitter.prototype.on = function on(event, fn, context) {
return addListener(this, event, fn, context, false);
};
/**
* Add a one-time listener for a given event.
*
* @param {(String|Symbol)} event The event name.
* @param {Function} fn The listener function.
* @param {*} [context=this] The context to invoke the listener with.
* @returns {EventEmitter} `this`.
* @public
*/
EventEmitter.prototype.once = function once(event, fn, context) {
return addListener(this, event, fn, context, true);
};
/**
* Remove the listeners of a given event.
*
* @param {(String|Symbol)} event The event name.
* @param {Function} fn Only remove the listeners that match this function.
* @param {*} context Only remove the listeners that have this context.
* @param {Boolean} once Only remove one-time listeners.
* @returns {EventEmitter} `this`.
* @public
*/
EventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {
var evt = prefix ? prefix + event : event;
if (!this._events[evt]) return this;
if (!fn) {
clearEvent(this, evt);
return this;
}
var listeners = this._events[evt];
if (listeners.fn) {
if (
listeners.fn === fn &&
(!once || listeners.once) &&
(!context || listeners.context === context)
) {
clearEvent(this, evt);
}
} else {
for (var i = 0, events = [], length = listeners.length; i < length; i++) {
if (
listeners[i].fn !== fn ||
(once && !listeners[i].once) ||
(context && listeners[i].context !== context)
) {
events.push(listeners[i]);
}
}
//
// Reset the array, or remove it completely if we have no more listeners.
//
if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;
else clearEvent(this, evt);
}
return this;
};
/**
* Remove all listeners, or those of the specified event.
*
* @param {(String|Symbol)} [event] The event name.
* @returns {EventEmitter} `this`.
* @public
*/
EventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {
var evt;
if (event) {
evt = prefix ? prefix + event : event;
if (this._events[evt]) clearEvent(this, evt);
} else {
this._events = new Events();
this._eventsCount = 0;
}
return this;
};
//
// Alias methods names because people roll like that.
//
EventEmitter.prototype.off = EventEmitter.prototype.removeListener;
EventEmitter.prototype.addListener = EventEmitter.prototype.on;
//
// Expose the prefix.
//
EventEmitter.prefixed = prefix;
//
// Allow `EventEmitter` to be imported as module namespace.
//
EventEmitter.EventEmitter = EventEmitter;
//
// Expose the module.
//
if ('undefined' !== typeof module) {
module.exports = EventEmitter;
}
}, function(modId) {var map = {}; return __REQUIRE__(map[modId], modId); })
return __REQUIRE__(1702541404014);
})()
//miniprogram-npm-outsideDeps=[]
//# sourceMappingURL=index.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1,57 +0,0 @@
const hex = (color) => {
let result = null
if (/^#/.test(color) && (color.length === 7 || color.length === 9)) {
return color
// eslint-disable-next-line no-cond-assign
} else if ((result = /^(rgb|rgba)\((.+)\)/.exec(color)) !== null) {
return '#' + result[2].split(',').map((part, index) => {
part = part.trim()
part = index === 3 ? Math.floor(parseFloat(part) * 255) : parseInt(part, 10)
part = part.toString(16)
if (part.length === 1) {
part = '0' + part
}
return part
}).join('')
} else {
return '#00000000'
}
}
const splitLineToCamelCase = (str) => str.split('-').map((part, index) => {
if (index === 0) {
return part
}
return part[0].toUpperCase() + part.slice(1)
}).join('')
const compareVersion = (v1, v2) => {
v1 = v1.split('.')
v2 = v2.split('.')
const len = Math.max(v1.length, v2.length)
while (v1.length < len) {
v1.push('0')
}
while (v2.length < len) {
v2.push('0')
}
for (let i = 0; i < len; i++) {
const num1 = parseInt(v1[i], 10)
const num2 = parseInt(v2[i], 10)
if (num1 > num2) {
return 1
} else if (num1 < num2) {
return -1
}
}
return 0
}
module.exports = {
hex,
splitLineToCamelCase,
compareVersion
}

@ -18,7 +18,7 @@
<view class="display-flex">
<view class="flex-1 vsb">
<view class="display-flex">
<view class="storeName">{{item.jobName || item.aliasName}}</view>
<view class="storeName" style="max-width: 300px;width: 300px;">{{item.jobName || item.aliasName}}</view>
<!-- <view class="baomingBtn v-center" hover-stop-propagation><i class="iconfont icon-baoming1"></i>报名</view> -->
</view>
<view class="v-center mt12 mb12">

@ -1606,4 +1606,12 @@ Page({
iosDialogTobe: false,
});
},
onShareAppMessage: function () {
// menu:[shareAppMessage,shareTimeline]
// return custom share data when user share.
},
onShareTimeline: function () {},
share(){
this.onShareAppMessage()
},
});

@ -41,7 +41,7 @@
<view class="f14s c045 mb4">
<!-- 深圳丨龙岗区丨16-35岁 -->
<i class="iconfont icon-dingwei2"></i> {{citys}}{{jobDetail.store.distance}}
<i class="iconfont icon-nianling ml12"></i>
<i class="iconfont icon-nianling ml12 mr4"></i>
<block>{{jobDetail.storeJob.genderRestrict}}</block>
丨{{jobDetail.storeJob.age}}
</view>
@ -49,7 +49,7 @@
</view>
</view>
<view class="va-center br8 mt24" style="justify-content: space-between;background-color:rgba(0,188,93,5%);;padding: 12px 16px;">
<view class="va-center br8 mt16" style="justify-content: space-between;background-color:rgba(0,188,93,5%);;padding: 12px 16px;">
<view class="v-center">
<image style="width: 38px;height:38px;border-radius: 100%;" src="//matripe-cms.oss-cn-beijing.aliyuncs.com/1shoudan/yicaigongzuo.png" mode="aspectFit|aspectFill|widthFix" lazy-load="false" binderror bindload />
<text class="f14 c3 ml8">郑州一才工作</text>
@ -113,12 +113,26 @@
<view class="btext" style="margin-top:2px;">微信</view>
</view>
</view>-->
<view class="flex-1">
<!-- <view open-type="share" class="collectBtn">
<view class="mb4">
<icon class="iconfont icon-fenxiang1 lh1" style="font-size:20px;color:#787878;"></icon>
</view>
<view class="btext">分享</view>
</view> -->
<button open-type="share" bind:tap="share" class="collectBtn" style="position:relative;top:3px;flex: 1;width: auto;">
<icon class="iconfont icon-fenxiang1 lh1" style="font-size:20px;color:#787878;"></icon>
<view class="btext">分享</view>
</button>
</view>
<view class="flex-1 mr8">
<view catchtap="collectPaste" data-collected="{{jobDetail.storeJob.collected}}" wx:if="{{isLogin}}" data-jobid="{{jobDetail.storeJob.id}}" class="collectBtn">
<view class="mb4">
<icon class="iconfont icon-shoucang lh1" style="font-size:16px;color:#787878;" wx:if="{{jobDetail.storeJob.collected - 2 == 0}}"></icon>
<icon class="iconfont icon-yishoucang lh1 color-f40" style="font-size:16px;" wx:else></icon>
<icon class="iconfont icon-shoucang lh1" style="font-size:18px;color:#787878;" wx:if="{{jobDetail.storeJob.collected - 2 == 0}}"></icon>
<icon class="iconfont icon-yishoucang lh1 color-f40" style="font-size:18px;" wx:else></icon>
</view>
<view class="btext {{jobDetail.storeJob.collected - 1 == 0 ? 'color-f40' : ''}}">{{jobDetail.storeJob.collected - 1 == 0 ? '已' : ''}}收藏</view>
</view>
@ -127,7 +141,7 @@
<view class="btext">收藏</view>
</button>
</view>
<view wx:if="{{fromShoucangOrBaoming == 'baoming'}}">
<button class="loginOut" type hover-class="none" style="background-color:#ccc;width: 260px;" hover-stop-propagation>已报名</button>
</view>

@ -3,6 +3,7 @@ const app = getApp();
const commonUtil = require("../../utils/commonUtil.js");
Page({
data: {
jobDetail:{},
toped: "1",
chaShowed: false,
isTrigger: false,
@ -3058,5 +3059,19 @@ Page({
wx.navigateTo({
url: "/pages/filterPage/index",
});
},
},
goNewEnroll (e) {
let that = this;
console.log(e.currentTarget.dataset.job);
// this.data.recordBillShow = true
this.setData({
jobDetail:e.currentTarget.dataset.job,
recordBillShow: true
})
// setTimeout(()=>{
// that.setData({
// recordBillShow: true
// })
// },10)
}
});

@ -1,3 +1,6 @@
{
"navigationStyle":"custom"
"navigationStyle":"custom",
"usingComponents": {
"record-bill": "../../components/recordBill/index"
}
}

@ -40,7 +40,7 @@
<view class="flex-1 vsb">
<view class="display-flex">
<view class="storeName">{{item.jobName || item.aliasName}}</view>
<view class="baomingBtn v-center" hover-stop-propagation>
<view class="baomingBtn v-center" data-job="{{item}}" catchtap="goNewEnroll" hover-stop-propagation>
<i class="iconfont icon-baoming1"></i>报名
</view>
</view>
@ -80,3 +80,5 @@
</view>
</scroll-view>
</view>
<record-bill wx:if="{{recordBillShow}}" show="{{recordBillShow}}" jobDetail="{{jobDetail}}"></record-bill>

@ -2421,5 +2421,14 @@ Page({
},
onUnload() {
console.log("destory");
},
},
goNewEnroll (e) {
let that = this;
console.log(e.currentTarget.dataset.job);
// this.data.recordBillShow = true
this.setData({
jobDetail:e.currentTarget.dataset.job,
recordBillShow: true
})
}
});

@ -1,7 +1,9 @@
{
"usingComponents": {},
"navigationBarTitleText": "搜索",
"navigationBarBackgroundColor": "#fff",
"navigationBarTextStyle": "black",
"backgroundColor": "#f5f5f5"
"backgroundColor": "#f5f5f5",
"usingComponents": {
"record-bill": "../../components/recordBill/index"
}
}

@ -1,4 +1,4 @@
<view class="weui-search-bar weui-search-bar_focusing {{fromProject ?'fff' : 'fff'}}" id="searchBar" style="line-height: 1;padding-left:16px;padding-right:16px" wx:if="{{!isFilterPage}}">
<view class="weui-search-bar weui-search-bar_focusing {{fromProject ?'fff' : 'fff'}}" id="searchBar" style="line-height: 1;padding-left:10px;padding-right:10px" wx:if="{{!isFilterPage}}">
<view class="weui-search-bar__form flex-1 fsa">
<view class="weui-search-bar__box flex-1 fsa" style="background-color: #f5f5f5;border-radius: 17px;">
<i class="iconfont icon-sousuo"></i>
@ -88,249 +88,66 @@
<image class catchtap="choosenTop" data-id="{{toped == 2 ? 1 : 2}}" style="width:60px;height: 32px;" src="{{toped == 1 ? '../../assets/images/biao.svg' : '../../assets/images/jian.svg'}}" mode="aspectFit|aspectFill|widthFix" lazy-load="false" binderror bindload></image>
</view>
</view>-->
<view class="xgxg p012" id="menu" wx:if="{{!isWannaShow && !isFilterPage}}">
<view class="display-flex" style="justify-content:space-beteween; height: 44px">
<view class="csbf v-center p0" style="background-color:#fff" hover-class="thover" bindtap="goCity">
<view class="f16 fw500 dib">{{searchCityParamStorage.name == '' ? '全国' : searchCityParamStorage.shortName}}</view>
<i class="iconfont icon-zhankai f12" style="margin: 1px 0px 0 6px"></i>
</view>
<view class="csbf f14 c6 {{whichOneShow == 'gj' ?'active':''}} {{ activez!='' && activez!='all'?'activecolor':''}}" bindtap="chooseNl" data-type="gj">
{{firstMenu}}
<i class="iconfont icon-shouqi f12 {{ activez=='zuigao' || activez=='zuijin' ?'cf40':'c9'}} fst ml4" wx:if="{{whichOneShow == 'gj'}}"></i>
<i class="iconfont icon-zhankai f12 {{ activez=='zuigao' || activez=='zuijin' ?'cf40':'c9'}} fst ml4" wx:else data-type="gj"></i>
<scroll-view class="gjFixed" catchtouchmove="cc" wx:if="{{ whichOneShow == 'gj' }}">
<view class="bgf tl c3 por filter filterprice sort" style="height:240px">
<!-- chooseM -->
<view class="f16 fw500 p016 {{activez=='all'?'cf00 b1 ':''}}" data-id="all" bindtap="choiceFilter" style="line-height: 42px" hover-class="thover">综合排序</view>
<view class="f16 fw500 p016 {{activez=='zuigao'?'cf00 b1 ':''}}" data-id="zuigao" bindtap="choiceFilter" style="line-height: 42px" hover-class="thover">工价优先</view>
<view class="f16 fw500 p016 bb1 {{activez=='zuijin'?'cf00 b1':''}}" data-id="zuijin" bindtap="choiceFilter" style="line-height: 42px" hover-class="thover">距离优先</view>
</view>
</scroll-view>
</view>
<view class="csbf c6 f14 {{whichOneShow == 'sex'?'active':''}} {{ sexid!='' && sexid!='-1'?'activecolor':''}}" bindtap="chooseNl" data-type="sex" style>
{{ secondMenu }}
<i class="iconfont icon-shouqi f12 {{ sexid!='-1' ?'cf40':'c9'}} fst ml4" wx:if="{{whichOneShow == 'sex'}}"></i>
<i class="iconfont icon-zhankai f12 {{ sexid!='-1' ?'cf40':'c9'}} fst ml4" wx:else data-type="sex"></i>
<scroll-view class="gjFixed" catchtouchmove="cc" wx:if="{{whichOneShow == 'sex'}}">
<view class="bgf tl c3 filter filterprice sort" style="height:240px">
<view class="f16 fw500 p016 {{sexid=='-1'?'cf00 b1':''}}" data-id="-1" bindtap="choiceSex" style="line-height: 42px" hover-class="thover">男女不限</view>
<view class="f16 fw500 p016 {{sexid=='1'?'cf00 b1':''}}" data-id="1" bindtap="choiceSex" style="line-height: 42px" hover-class="thover">男生</view>
<view class="f16 fw500 p016 {{sexid=='2'?'cf00 b1':''}}" data-id="2" bindtap="choiceSex" style="line-height: 42px" hover-class="thover">女生</view>
</view>
</scroll-view>
</view>
<view class="csbf f14 c6 fsa {{whichOneShow == 'brand' ?'active':''}} {{ selectBrandList.length > 0 ?'activecolor':''}}" bindtap="chooseNl" data-type="brand">
分类
<i class="iconfont icon-shouqi f12 c9 fst ml4" wx:if="{{whichOneShow == 'brand' && selectBrandList.length <= 0}}"></i>
<i class="iconfont icon-zhankai f12 c9 fst ml4" wx:if="{{whichOneShow != 'brand' && selectBrandList.length <= 0}}" data-type="brand"></i>
<view wx:if="{{selectBrandList.length > 0}}" class="specialnum ml4" data-type="brand">{{selectBrandList.length}}</view>
<scroll-view class="gjFixed" wx:if="{{whichOneShow == 'brand'}}">
<view class="bgf tl c3 filterprice brand" catchtap="cc">
<view class="display-flex content">
<block wx:for="{{brandList}}" wx:for-item="item">
<view bindtap="selectBrand" data-index="{{index}}" class="{{item.checked ? 'brandactive' : ''}}">
<!-- <image class src="{{item.logo}}" mode lazy-load="false" binderror bindload wx:if="{{item.logo}}"></image>
<image class wx:else mode="aspectFit" src="https://matripe.oss-cn-beijing.aliyuncs.com/default.png"></image>-->
{{item.name}}
</view>
</block>
</view>
<view class="btmFix display-flex" style="justify-content: center;">
<view class>
<button class="resetBtn" style catchtap="reset" data-type="2">重置</button>
</view>
<view class>
<button type="primary" class="loginOut ysd-basebg-color" hover-class="thover" style catchtap="loginOut">确定</button>
</view>
</view>
</view>
</scroll-view>
</view>
<!-- <view class="csbf f14 c6 {{whichOneShow == 'brand' ?'active':''}} {{ selectBrandList.length > 0 ?'activecolor':''}}" bindtap="chooseNl" data-type="brand">
品牌
<i class="iconfont icon-shouqi f12 c9 fst ml4" wx:if="{{whichOneShow == 'brand' && selectBrandList.length <= 0}}"></i>
<i class="iconfont icon-zhankai f12 c9 fst ml4" wx:if="{{whichOneShow != 'brand' && selectBrandList.length <= 0}}" data-type="brand"></i>
<span wx:if="{{selectBrandList.length > 0}}" class="specialnum ml4" data-type="brand">{{selectBrandList.length}}</span>
<scroll-view class="gjFixed" wx:if="{{whichOneShow == 'brand'}}">
<view class="bgf tl c3 filterprice brand" catchtap="cc">
<view class="display-flex content">
<block wx:for="{{brandList}}" wx:for-item="item">
<view bindtap="selectBrand" data-index="{{index}}" class="{{item.checked ? 'brandactive' : ''}}">
<image class src="{{item.logo}}" mode lazy-load="false" binderror bindload wx:if="{{item.logo}}"></image>
<image class wx:else mode="aspectFit" src="https://matripe.oss-cn-beijing.aliyuncs.com/default.png"></image>
{{item.name}}
</view>
</block>
</view>
<view class="btmFix display-flex" style="justify-content: center;">
<view class>
<button class="resetBtn" style catchtap="reset" data-type="2">重置</button>
</view>
<view class>
<button type="primary" class="loginOut ysd-basebg-color" hover-class="thover" style catchtap="loginOut">确定</button>
</view>
</view>
</view>
</scroll-view>
</view>-->
<view class="csbf f14 c6 fsa {{whichOneShow == 'special'?'active':''}} {{ selectJobList.length> 0?'activecolor':''}}" bindtap="chooseNl" data-type="special">
筛选
<i class="iconfont icon-shouqi f12 c9 fst ml4" wx:if="{{whichOneShow == 'special' && selectJobList.length <= 0}}"></i>
<i class="iconfont icon-zhankai f12 c9 fst ml4" wx:if="{{whichOneShow != 'special' && selectJobList.length <= 0}}" data-type="special"></i>
<view wx:if="{{selectJobList.length > 0}}" class="specialnum ml4" data-type="special">{{selectJobList.length}}</view>
<scroll-view class="gjFixed" wx:if="{{whichOneShow == 'special'}}">
<view class="bgf tl c3 filterprice filterBox" catchtap="cc">
<scroll-view scroll-y="{{true}}" class="specialtag">
<view class="f18 c3 fw500 mt12" style="text-align:start">薪资福利</view>
<view class="mt10 tagBox">
<block wx:for="{{tagArray1}}" wx:for-item="item" wx:key="index">
<view bindtap="selectJobSpecialLabel" data-index-tag="1" data-index="{{index}}" class="bgAc {{item.checked ? 'active' : ''}}">{{item.name}}</view>
</block>
</view>
<view class="f18 c3 fw500 mt16">食宿保障</view>
<view class="mt10 tagBox">
<block wx:for="{{tagArray3}}" wx:for-item="item" wx:key="index">
<view bindtap="selectJobSpecialLabel" data-index-tag="3" data-index="{{index}}" class="bgAc {{item.checked ? 'active' : ''}}">{{item.name}}</view>
</block>
</view>
<view class="f18 c3 fw500 mt16">班制特色</view>
<view class="mt10 tagBox">
<block wx:for="{{tagArray0}}" wx:for-item="item" wx:key="index">
<view bindtap="selectJobSpecialLabel" data-index-tag="0" data-index="{{index}}" class="bgAc {{item.checked ? 'active' : ''}}">{{item.name}}</view>
</block>
</view>
<view class="f18 c3 fw500 mt16">其它特色</view>
<view class="mt10 tagBox">
<block wx:for="{{tagArray2}}" wx:for-item="item" wx:key="index">
<view bindtap="selectJobSpecialLabel" data-index-tag="2" data-index="{{index}}" class="bgAc {{item.checked ? 'active' : ''}}">{{item.name}}</view>
</block>
</view>
</scroll-view>
<view class="btmFix display-flex" style="justify-content: center;">
<view class>
<button class="resetBtn" style catchtap="reset" data-type="1">重置</button>
</view>
<view class>
<button type="primary" class="loginOut ysd-basebg-color" hover-class="thover" style catchtap="loginOut">确定</button>
</view>
</view>
</view>
</scroll-view>
</view>
</view>
<scroll-view class="filterTag display-flex" scroll-x="true" scroll-y="false" scroll-top="0" scroll-left="0" scroll-into-view scroll-with-animation="false" enable-flex enable-back-to-top="false" bindscrolltoupper bindscrolltolower bindscroll wx:if="{{selectBrandList.length > 0 || selectJobList.length > 0 || activez != 'all' || sexid != '-1'}}">
<view class="display-flex" hover-class="none" hover-stop-propagation="false">
<view class="tc genderTag f14 por {{activez != 'all' && (selectJobList.length > 0 || selectBrandList.length > 0 || sexid != '-1') ? 'hascontent' : ''}}" style="min-width:60px" wx:if="{{activez != 'all'}}" hover-class="none" hover-stop-propagation="false">
<view class hover-class="none" hover-stop-propagation="false">{{firstMenu}}</view>
</view>
<view class="tc genderTag f14 por {{sexid != '-1' && (selectJobList.length > 0 || selectBrandList.length > 0 ) ? 'hascontent' : ''}}" style="min-width:60px" wx:if="{{sexid != '-1'}}" hover-class="none" hover-stop-propagation="false">
<view class hover-class="none" hover-stop-propagation="false">{{secondMenu}}</view>
</view>
<view class="brandTag ml8 {{selectBrandList.length > 0 && selectJobList.length > 0 ? 'hascontent' : ''}}" wx:if="{{selectBrandList.length > 0}}">
<block wx:for="{{selectBrandList}}">
<view class>{{item.name}}</view>
</block>
</view>
<view class="specialTag" wx:if="{{selectJobList.length > 0}}">
<block wx:for="{{selectJobList}}">
<view class>{{item.name}}</view>
</block>
</view>
</view>
<view class="clear" catchtap="clearFilter" hover-class="none" hover-stop-propagation="false">
<i class="iconfont icon-qingkong1 f14"></i>
清除
</view>
</scroll-view>
</view>
</view>
<!-- 标准列表 -->
<block wx:if="{{toped == 1}}">
<view wx:if="{{recordList != null && recordList.length > 0}}" class="standardList" style="padding-top: 0;">
<scroll-view scroll-y="{{true}}" enable-back-to-top="true" bindscrolltolower="onScrollToLower" bindrefresherrefresh="onScrollRefresh" refresher-enabled="{{!isScrollTop}}" refresher-triggered="{{isTrigger}}" class="jobCenterActive" scroll-with-animation="true" scroll-into-view="{{siv}}" style="height:calc(100vh - {{selectBrandList.length > 0 || selectJobList.length > 0 || activez != 'all' || sexid != '-1' ? (navigatorBarHeight + 151) : navigatorBarHeight + (!isFilterPage ? 103 : 95)}}px);">
<view x:if="{{recordList != null && recordList.length > 0}}" class style="padding-top: 0;">
<view class="jcenter bgf br8">
<view class="listcontainer" style="border-top: 1px solid #f3f3f3;">
<view class="jobOne" hover-start-time="50" hover-stay-time="0" wx:for="{{recordList}}" data-id="{{item.id}}" bindtap="goDetail" wx:key="index" hover-class="{{item.recruitment == '1' ? 'ahover':''}}" style="background-color:{{item.recruitment == '1' ? '#fff':'#f5f5f5'}};border-bottom: {{item.recruitment == '1' ? '':'1px solid #ddd'}};">
<view class="p1020 jobIn" hover-class="none">
<image class="markImg" style="width: 80px;height: 80px;position: absolute;right: 100px;" src="http://matripe-cms.oss-cn-beijing.aliyuncs.com/1shoudan/tingzhao.svg" wx:if="{{item.state == 1 && item.recruitment == 2}}"></image>
<image class="markImg" style="width: 72px;height: 72px;position: absolute;right: 100px;" src="http://matripe-cms.oss-cn-beijing.aliyuncs.com/1shoudan/weishangxian.svg" wx:if="{{item.state == 0}}"></image>
<view class="display-flex">
<view class="prImg">
<image src="{{item.logo}}" wx:if="{{item.logo != null && item.logo != ''}}" mode="aspectFit" class="logoClass" alt></image>
<image class="logoClass" wx:else mode="aspectFit" src="https://matripe.oss-cn-beijing.aliyuncs.com/default.png"></image>
<button wx:if="{{isLogin && hasUserInfo - 0 == 0}}" class="collect biggerSize2 v-center {{item.collected - 1 == 0 ? 'collectred':''}}" open-type="getUserInfo" style="width:52px;" catchtap="getUserInfoBtn" data-type="4" data-collected="{{item.collected}}" data-jobid="{{item.id}}" hover-stop-propagation>
<icon class="iconfont icon-shoucang lh12" style="color: #888" wx:if="{{item.collected - 2 == 0}}"></icon>
<icon class="iconfont icon-yishoucang lh12 color-f40" style wx:else></icon>
<text class="f10 {{item.collected - 1 == 0 ? 'color-f40':'c8'}}" style="line-height: 36px; margin-left: 2px">{{item.collected - 2 == 0 ? '收藏' : '已收藏'}}</text>
</button>
<button wx:if="{{isLogin && hasUserInfo - 1 == 0}}" class="collect biggerSize v-center {{item.collected - 1 == 0 ? 'collectred':''}}" catchtap="collectPaste" style="width:52px;" data-collected="{{item.collected}}" data-jobid="{{item.id}}" hover-stop-propagation>
<icon class="iconfont icon-shoucang lh12" style="color: #888" wx:if="{{item.collected - 2 == 0}}"></icon>
<icon class="iconfont icon-yishoucang lh12 color-f40" style wx:else></icon>
<text class="f10 {{item.collected - 1 == 0 ? 'color-f40':'c8'}}" style="line-height: 12px; margin-left: 2px">{{item.collected - 2 == 0 ? '收藏' : '已收藏'}}</text>
</button>
<button wx:if="{{!isLogin}}" style="width:52px;" class="collect biggerSize" open-type="getPhoneNumber" catchgetphonenumber="getPhoneNumber" catchtap="emptyMethod" data-collected="{{item.collected}}" data-jobid="{{item.id}}" hover-stop-propagation>
<icon class="iconfont icon-shoucang" style="color: #888"></icon>
<text class="f10 c8" style="line-height: 18px; margin-left: 2px">收藏</text>
</button>
</view>
<view class="flex-1 vsb">
<scroll-view id="listBox" bindscrolltolower="onScrollToLower" scroll-top="{{topNum}}" enhanced binddragstart="listTouchStart" bindscroll="listTouchMove" style="height:calc(100vh - 60px);background: #f5f5f5;" enable-passive scroll-x="false" scroll-y="true" scroll-into-view="{{scrollTo}}" scroll-with-animation="false" enable-back-to-top="true">
<view class="mt10" hover-class="none" hover-stop-propagation="false">
<view class="sticky" id="sticky" hover-class="none" hover-stop-propagation="false"></view>
<!-- 标准列表 -->
<view style="display:{{toped == 1 ? 'block' : 'none'}}">
<view class="standardList" style="padding-top: 0;min-height: calc(100vh - {{selectBrandList.length > 0 || selectJobList.length > 0 || activez != 'zuigao' || sexid != '-1' ? '170px':'214px'}})">
<view>
<view x:if="{{recordList != null && recordList.length > 0}}" style="padding-top: 0;overflow-x: hidden;">
<view class="jcenter br8">
<view class="listcontainer p010">
<view class="jobOne bgf mb10 br8" hover-start-time="50" hover-stay-time="0" wx:for="{{recordList}}" data-id="{{item.id}}" bindtap="goDetail" wx:key="index" hover-class="{{item.recruitment == '1' ? 'ahover':''}}" style="box-shadow: 0px 2px 9px 0px #eeeeee;">
<view class="p1020 jobIn" hover-class="none">
<view class="display-flex">
<view class="storeName" wx:if="{{item.jobName != null && item.jobName != ''}}">{{item.jobName}}</view>
<view class="storeName" wx:else>{{item.aliasName}}</view>
<view class="hourPay">{{item.salaryClassifyValue}}</view>
</view>
<view class="v-center mt12 mb12">
<view class="f14s c045 flex-1 display-flex">
<view class="overflowOmit" hover-class="none" hover-stop-propagation="false" style="max-width:220px">
{{item.district == "" ?'':item.district + ' | ' }}
<block wx:if="{{item.distance != null && item.distance != '' && storeJobListSearchForm.sortTag == 2}}">{{item.distanceKm}}</block>
<block wx:else>{{item.age}}</block>
<view class="flex-1 vsb">
<view class="display-flex">
<view class="storeName">{{item.jobName || item.aliasName}}</view>
<view class="baomingBtn v-center" data-job="{{item}}" catchtap="goNewEnroll" hover-stop-propagation>
<i class="iconfont icon-baoming1"></i>报名
</view>
</view>
<view class="v-center mt12 mb12">
<view class="f16 c3 flex-1 display-flex">{{item.monthlyPay}}元/月,{{item.age}}</view>
</view>
<view class="display-flex">
<view class="v-center">
<image class="dlLogo" src="//matripe-cms.oss-cn-beijing.aliyuncs.com/1shoudan/yicaigongzuo.png" mode="aspectFit|aspectFill|widthFix" lazy-load="false" binderror bindload />
<text class="f12 c045 ml8">郑州一才工作</text>
</view>
<view>
<text class="f12 c045 ml8">1分钟前</text>
</view>
</view>
<view class="fr f14s c633 fw400">{{item.monthlyPay}}</view>
</view>
</view>
<view class="display-flex">
<scroll-view scroll-x="{{true}}" catchscroll="scroll" catchtap="stoptap" class="tttg {{item.isTagShow==true ?'isTagShow':''}}">
<!-- <view class="t-icon t-icon-ziying1 " wx:if="{{item.signType == 1}}" style="background-repeat:no-repeat"></view> -->
<view class="tagsLi" wx:for="{{item.jobSpecialLabelNameArray}}" wx:for-item="item1" wx:key="index">{{item1}}</view>
<view class="tagsLi" wx:if="{{item.jobSpecialLabelNameArray.length <= 0}}">暂无特色</view>
</scroll-view>
<block wx:if="{{item.state == 1 && item.recruitment == 2}}">
<view class="miniBtn disabled" hover-stop-propagation="false">报名</view>
</block>
<block wx:else>
<view class="miniBtn" bindtap="recordBill" data-job="{{item}}" hover-class="thover" hover-stop-propagation="false">报名</view>
</block>
<!-- <view class="fsa bz f12 fee" wx:if="{{agencyStatus == 1 || corpUserFlag == true}}">
<view class="inner" hover-class="none" hover-stop-propagation="false">费</view>{{item.fuWuFei ? item.fuWuFei : '-' }}
</view>-->
<!-- <view class="fsa bz f12 fee">
<view class="inner" hover-class="none" hover-stop-propagation="false">费</view>
{{!isLogin ? '登录查看' : (agencyStatus == 1 ? (item.fuWuFei ? item.fuWuFei : '-') : '仅代理可见')}}
</view> -->
</view>
</view>
</view>
</view>
</view>
<block wx:if="{{(recordList == null || recordList.length == 0) && (storeJobListSearchForm.keys != null && storeJobListSearchForm.keys != '')}}">
<view class="tc p20 f12 c045">没有符合条件的职位</view>
</block>
<block wx:else>
<view class="tc p20 f12 c045" style="padding-bottom: 40px;" wx:if="{{!hasMoreData && recordList.length != 0}}">已经到底啦~</view>
<view class="tc p20 f12 c045" style="padding-bottom: 40px;" wx:if="{{hasMoreData }}">上滑加载更多</view>
</block>
</view>
<view wx:if="{{(recordList == null || recordList.length == 0) && pageShow}}" class="tc">
<view class="t-icon t-icon-zanwu" style="width: 80px; height: 80px; margin: 80px auto 20px"></view>
<view class="tc f14 c045">暂无记录</view>
</view>
</view>
<block wx:if="{{(recordList == null || recordList.length == 0) && (storeJobListSearchForm.keys != null && storeJobListSearchForm.keys != '')}}">
<view class="tc p20 f12 c045">没有符合条件的职位</view>
</block>
<block wx:else>
<block wx:if="{{isLogin}}">
<view class="tc p20 f12 c045" wx:if="{{!hasMoreData || recordList.length == 0}}">已经到底啦~</view>
<view class="tc p20 f12 c045" wx:else>上滑加载更多</view>
</block>
</block>
</view>
</scroll-view>
</view>
</view>
</scroll-view>
</view>
<view wx:if="{{recordList == null || recordList.length == 0 && pageShow && !isWannaShow}}" style='height:calc(100vh - 95px)' class="tc">
@ -477,3 +294,4 @@
</view>
</view>
</view>
<record-bill wx:if="{{recordBillShow}}" show="{{recordBillShow}}" jobDetail="{{jobDetail}}"></record-bill>

@ -8,12 +8,12 @@
<view class="container">
<view class="tc">
<!-- <image src='https://matripe.oss-cn-beijing.aliyuncs.com/bclogo.png' class='logoPng' mode='aspectFit'></image> -->
<image class="logo" src="https://matripe-cms.oss-cn-beijing.aliyuncs.com/1shoudan/zhiweiyun.png" mode="aspectFit|aspectFill|widthFix" lazy-load="false" binderror bindload></image>
<image class="logo br8" src="https://matripe-cms.oss-cn-beijing.aliyuncs.com/1shoudan/bmzsLogo.png" mode="aspectFit|aspectFill|widthFix" lazy-load="false" binderror bindload></image>
<!-- -->
<!-- <view>
<image src="http://matripe-cms.oss-cn-beijing.aliyuncs.com/1shoudan/title.svg" style="width: 190px;height: 19px;margin-top:20px;"></image>
</view> -->
<view class='logoTxt'>为劳动者创造价值</view>
<!-- <view class='logoTxt'>为劳动者创造价值</view> -->
<!-- <view class='logoTxt'>伯乐找人才啦</view> -->
</view>
<view class="loginForm">
@ -41,7 +41,7 @@
</view>
<!-- 登录按钮 -->
<view class="onlyBtn mb20">
<button type="primary" class="loginBtn" formType="submit">登录/注册</button>
<button type="primary" class="loginBtn" hover-class="thover" formType="submit">登录/注册</button>
</view>
<view class="weui-loadmore weui-loadmore_line" style="margin-bottom:0;">
<text class="weui-loadmore__tips f16" style="color:#999">或</text>

@ -62,7 +62,7 @@
</view>
</view>
</navigator>
<navigator class url="{{isLogin? '/pages/collect/index?from=baoming': '/pages/login/index'}}" hover-class="none" hover-stop-propagation="false">
<navigator class url="{{isLogin? '/pages/collect/index?from=shoucang': '/pages/login/index'}}" hover-class="none" hover-stop-propagation="false">
<view class="bt1" hover-class="none" style="background-color:#fff" hover-stop-propagation="false">
<view class="setting" hover-class="thover">

@ -1,6 +1,6 @@
<view class="trueName" hover-class="none" hover-stop-propagation="false">
<span class='display-flex fw500'>实名认证<view class='iconfont icon-yirenzheng ysd-base-color fw400 f18 ml4' ></view></span>
<span class='display-flex fw500'>实名认证<view class='iconfont icon-yirenzheng color-f40 fw400 f18 ml4' ></view></span>
<span style="align-items:center">{{trueName}}</span>
</view>
<view class="explain" hover-class="none" hover-stop-propagation="false" style="">

@ -1,11 +1,14 @@
<view class="mineAgencyContainer" hover-class="none" hover-stop-propagation="false">
<view class="weui-search-bar__box flex-1 fss" style="background-color: #f5f5f5;border-radius: 17px;">
<i class="iconfont icon-sousuo poa" style="left:12px"></i>
<view class="mineAgencyContainer bt1" hover-class="none" hover-stop-propagation="false">
<view class="weui-search-bar__box flex-1 fss mt12" style="background-color: hsl(0, 0%, 96%);border-radius: 17px;">
<i class="iconfont icon-sousuo poa cccc" style="left:9px"></i>
<input type="text" class="weui-search-bar__input flex-1 c3" style placeholder-style="color:#999;" value="{{inputVal}}" placeholder="{{'搜索代理名称'}}" bindinput="inputTyping" bindconfirm="searchKey" auto-focus confirm-type="search" />
<view class="iconfont icon-qingchu1 biggerSize" wx:if="{{inputVal}}" catchtap="clearInput"></view>
<view class="search f14" catchtap="goSearch" style="color: var(--color-ysd);">搜索</view>
</view>
</view>
<view class="">
<scroll-view class="mineAgencyBody mt10" scroll-x="false" scroll-y="true" scroll-top="0" scroll-left="0" scroll-into-view scroll-with-animation="false" enable-flex enable-back-to-top="false" bindscrolltoupper bindscrolltolower bindscroll>
<view class="fsa subItem" wx:for="{{list}}" hover-class="none" hover-stop-propagation="false">
<view class="fsa subItem bb1 p010" wx:for="{{list}}" hover-class="none" hover-stop-propagation="false">
<view class="fss" hover-class="none" hover-stop-propagation="false">
<image class="logoImg" src="{{item.logo}}" mode="aspectFit|aspectFill|widthFix" lazy-load="false" binderror bindload></image>
<view class="ml16" hover-class="none" hover-stop-propagation="false">{{item.title}}</view>

@ -1,5 +1,6 @@
/* pages/mineAgency/index.wxss */
page {
background-color: #fff !important;
}
.mineAgencyContainer {
background-color: #fff;
@ -11,6 +12,6 @@ page {
border-radius: 50%;
}
.subItem{
padding: 0 6px;
padding: 0 16px;
height: 76px;
}

@ -4,7 +4,7 @@
"urlCheck": false
},
"description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
"projectname": "signupHelper",
"projectname": "报名助手",
"condition": {
"miniprogram": {
"list": [

Loading…
Cancel
Save